OLED(SSD1306+I2C协议显示屏模块)

工具

1.Proteus 8 仿真器

2.keil 5 编辑器

原理图

讲解

简介

OLED(Organic Light-Emitting Diode)显示屏,即有机发光二极管显示屏,是一种新型显示技术。它的工作原理是通过电流驱动有机材料发光,无需背光灯,采用非常薄的有机材料涂层和玻璃基板(或柔性有机基板)。

OLED显示屏具有诸多优点。首先,由于无需背光灯,其结构更轻更薄,可视角度更大。其次,OLED显示屏能够显著节省耗电量,提高能效。此外,它的色彩丰富、分辨率高,响应速度快,图像稳定。同时,OLED自身能够发光,因此其视域范围也要宽很多。

OLED显示屏的应用范围广泛。在博物馆和展览中,OLED透明屏可用于展示文物、艺术品、历史信息等,提供沉浸式的观展体验。在建筑和室内设计领域,OLED透明屏可以应用于建筑物的玻璃幕墙、楼梯扶手和室内装饰等,增强建筑的现代感和创意性。此外,OLED显示屏还广泛应用于汽车内部、户外广告牌、舞台和演艺表演等领域。

OLED本身是没有显存的,它的显存是依赖于SSD1306显存芯片提供的
从使用的角度上,我们驱动该OLED屏幕显示,实际是与驱动芯片SSD1306通信,让SSD1306控制OLED点阵显示。SSD1306相当于一个中介,我们只需要了解SSD1306的功能、寄存器、总线、驱动流程等参数或工作方式,根据SSD1306的工作方式通信即可。

SSD1306

特性

  • 分辨率:128 x 64 点阵
  • 电源:对于集成逻辑电路,VDD=1.65V---3.3V;对于面板驱动,VCC=7V---15V
  • 点阵驱动:OLED驱动输出电压,最大15V;SEG最大源电流:100uA;COM最大汇电流:15mA;256阶对比度亮度电流控制
  • 内置128 x 64位SRAM显示缓冲区
  • 引脚可选择的MCU接口:8位6800/8080串并接口、 3/4线串行外围接口、I2C接口
  • 水平和垂直方向的屏幕保持连续滚动功能
  • RAM写同步信号
  • 可编程帧速率和复用率
  • 行重映射和列重映射
  • 片内内置振荡器
  • COG和COF的芯片封装
  • 工作温度范围广:-40°C至85°C

注意:OLED显示器模块供电电压为:3.3V---5V

内部结构

引脚

MCU接口引脚说明
BS0~BS2MCU总线接口选择脚。通过配置BS0~BS2来选择不同的MCU总线接口。
D0~D7连接到MCU的8位双向数据总线,不同MCU总线接口有不同用法
D/C#数据/命令控制脚,不同MCU总线接口有不同用法
R/W#(WR#)与6800/8080通用并行总线接口相关,使用串行接口时作拉高处理
E (RD#)与6800/8080通用并行总线接口相关,使用串行接口时作拉高处理
RES#复位信号引脚,低电平有效。
CS#芯片片选引脚,低电平有效
驱动器输出引脚说明
SEG0~SEG127列输出脚,OLED关闭时,处于VSS状态
COM0~COM63行输出脚,OLED关闭时,处于高阻抗状态
电源引脚说明
VDD芯片逻辑器件供电引脚 1.65V---3.3V
VCC显示面板驱动电源引脚 7V---15V
VSS接地引脚
VLSS模拟接地引脚,在外部连接到VSS
VCOMH用于COM的高电平电压输出的引脚,与VSS之间应该连接一个电容
其他引脚说明
IREF段输出电流参考脚,VSS间应连接一个电阻,以将IREF电流保持在12.5uA
CL外部时钟输入引脚。用外部时钟时,此引脚输入外部时钟信号。用内部时钟时应连接到VSS
CLS内部时钟启用引脚。拉高时内部时钟启用,拉低时内部时钟禁用
FR用于输出RAM写同步信号,不使用当做NC
TR0~TR6测试保留引脚,当做NC
NC空引脚 不接地 不组合

接口

协议设置
引脚8-bit 80808-bit 68003-wire SPI4-wire SPII2C
BS000100
BS110001
BS211000
引脚配置
接口协议\引脚名称Data\Command接口控制信号
D7D6D5D4D3D2D1D0ER\W#CS#D\C#RES#
8-bit 8080D[7:0]RD#WR#CS#D\C#RES#
8-bit 6800D[7:0]ER\W#CS#D\C#RES#
3-wire SPITie LowNCSDINSCLKTie LowCS#Tie LowRES#
4-wire SPITie LowNCSDINSCLKTie LowCS#D\C#RES#
I2CTie LowSDA outSDA inSCLTie LowSA0RES#

注意:Tie Low (低电平或0状态), NC (无需连接 不接地 不组合)

I2C接口协议

IIC设备在数据传输之前都必须识别从机地址。SSD1306的从机地址有 0111100X0111101X 两种,通过将SA0(D/C#)脚上拉到高电平可以设置从机地址第七位为 1,将SA0(D/C#)脚下拉到低电平可以设置从机地址第七位为 0。通过SA0(D/C#)脚的上拉和下拉来设置从机地址,从而令总线上可以存在最多2个SSD1306驱动器。

B7B6B5B4B3B2B1B0
011110SA0R\W

注意:SDAOUT和SDAIN连接到一起作为SDA。SDAIN引脚必须连接到SDA,SDAOUT引脚可以不连接。当SDAOUT引脚不连接,应答信号将会被12C总线忽略。 

SSD1306 通过 R/W# 和 D/C# 两位来确定:读/写数据,写命令和读状态四种通信行为

一个控制字节主要由CO 和 D/C# 位后面再加上六个0组成的。

如果将Co位设置为逻辑“0”,则传输以下信息将包含仅限数据字节。
D/C# 位决定了下个数据字节是作为命令还是数据。D/C# 为0时,下一个数据被视为命令;DC# 为1时,下一个数据被视为显示数据,存储到GDDRAM中。

 R/W#CoD/C#说明
000写命令
100读状态
001写数据
101读数据
时序 

GDDRAM内部结构

         显示RAM:GDDRAM(Graphic Display Data RAM )内部结构如下所示:
         GDDRAM是位映射静态RAM,大小为 128x64 位。GDDRAM分为8页(PAGE0~PAGE7),每页内 1个SEG对应1Byte数据,一页由 128 Byte 组成。一帧显示数据为 1024 Byte(1KB)。

1个数据字节写入GDDRAM时,数据位D0写入顶行,数据位D7写入底行。(由上到下,由低到高)

寻址模式 
页寻址

        页寻址模式是器件默认选择的GDDRAM寻址模式,通过“20H,02H”命令可以设置寻址模式为页寻址。
  页寻址模式下,寻址只在一页(PAGEn)内进行,地址指针不会跳到其他页。每次向GDDRAM写入1byte显示数据后,列指针会自动+1。当128列都寻址完之后,列指针会重新指向SEG0而页指针仍然保持不变。通过页寻址模式我们可以方便地对一个小区域内数据进行修改。

水平寻址 

       水平寻址模式可以通过指令“20H,00H”来设置。
  水平寻址模式下,每次向GDDRAM写入1byte数据后,列地址指针自动+1。列指针到达结束列之后会被重置到起始列,而页指针将会+1。页地址指针达到结束页之后,将会自动重置到起始页。水平寻址模式适用于大面积数据写入,例如一帧画面刷新

 

垂直寻址

       垂直寻址模式可以通过指令“20H,01H”来设置。
  垂直寻址模式下,每次向GDDRAM写入1byte数据之后,页地址指针将会自动+1。页指针到达结束页之后会被重置到0,而列指针将会+1。列地址指针达到结束页之后,将会自动重置到起始列。

指令
基础指令

1.设置对比度 (81H+A[7:0])
  这是一条双字节指令,由第二条指令指定要设置的对比度级数。
  A[7:0] 从 00H~FFH 分别指定对比度为 1~256 级。SEG(段)输出的电流大小随对比度级数的增加而增加。

2.设置全屏全亮 (A4H / A5H)
  这是一条单字节指令,用于开关屏幕全亮模式。
  A4H 设置显示模式为正常模式,此时屏幕输出GDDRAM中的显示数据。
  A5H 设置显示模式为全亮模式,此时屏幕无视GDDRAM中的数据,并点亮全屏。
  通过A5H设置全屏点亮之后可以通过A4H来回复正常显示。

3.设置正常/反转显示 (A6H / A7H)
  这是一条单字节指令,用于设置屏幕显示
  A6H 设置显示模式为 1亮0灭,而 A7H 设置显示模式为 0亮1灭

4.开关显示屏 (AEH / AFH)
  这是一条单字节指令。
  AEH 关闭屏幕,而 AFH 开启屏幕。
  屏幕关闭时,所有SEG和COM的输出被分别置为Vss和高阻态。

地址指令

1.设置GDDRAM寻址模式 (20H+A[1:0])
  这是一条双字节指令,由 A[1:0] 指定要设置的地址模式。
  A[1:0]=00b时为水平地址模式;A[1:0]=01b时为垂直地址模式;A[1:0]=10b时为页地址模式;A[1:0]=11b时为无效指令;
  由于第二条指令前6位值无规定,所以直接用0替代,得到:00H-水平;01H-垂直;02H页

2.设置起始/终止列地址 (21H+A[6:0]+B[6:0])
  这是一条三字节指令,由A[6:0]指定起始列地址,B[6:0]指定终止列地址。
  同样,由于前1位值无规定,所以:A[6:0] 和 B[6:0] 从 00H~7FH 的取值指定起始/终止列地址为 0~127。
  这条指仅在水平/垂直模式下有效,用来设置水平/垂直模式的初始列和结束列

3.设置起始/终止页地址 (22H+A[2:0]+B[2:0])
  这是一条三字节指令,由A[2:0]指定起始也地址,B[2:0]指定终止页地址。
  由于前5位值无规定,所以:A[2:0]和B[2:0]从 00H~07H 的取值指定起始/终止页地址为 0~7。
  这条指仅在水平/垂直模式下有效,用来设置水平/垂直模式的初始页和结束页

4.设置起始列地址低位 (00H~0FH)
  这是一条单字节指令。
  高4位恒定为0H,低4位为要设置的起始列地址的低4位。这条指令仅用于页寻址模式。

5.设置起始列地址高位 (10H~1FH)
  这是一条单字节指令
  高4位恒定为1H,低4位为要设置的起始列地址的高4位。这条指令仅用于页寻址模式。

6.设置页地址 (B0H~B7H)
  这是一条单字节指令
  高4位恒定为BH,第5位规定为0,低3位用于设置页地址,从 B0H~B7H 分别设置起始页为 0~7。这条指令仅用于页寻址模式。

硬件指令

1.设置GDDRAM起始行 (40H~7FH)
  这是一条单字节指令。
  高2位规定为01b,由低6位的取值来决定起始行。整体指令从 40H~7FH 分别设置起始行为 0~63。

2.设置SEG映射关系 (A0H / A1H)
  这是一条单字节指令。
  A0H 设置GDDRAM的COL0映射到驱动器输出SEG0。
  A1H 设置COL127映射到SEG0

3.设置COM扫描方向 (C0H / C8H)
  这是一条单字节指令。
  C0H 设置 从COM0扫描到COM[N-1],N为复用率
  C1H 设置 从COM[N-1]扫描到COM0

4.设置复用率 (A8H+A[5:0])
  这是一条双字节指令,由A[5:0]指定要设置的复用率
  复用率(MUX ratio)即选通的COM行数,不能低于16,通过A[5:0]来指定。
  A[5:0] 高两位无规定视为0,所以第二条指令从 0FH~3FH 的取值设置复用率为 1~64(即A[5:0]+1)。A[5:0]从0到14的取值都是无效的。

5.设置垂直显示偏移 (D3H+A[5:0])
  这是一条双字节指令,由A[5:0]指定偏移量。
  垂直显示偏移即整个屏幕向上移动的行数,最顶部的行会移到最底行。
  A[5:0] 高两位无规定视为0,所以第二条指令从0FH~3FH的取值设置垂直偏移为 0~636.设置COM硬件配置 (DAH+A[5:4])
  这是一条双字节指令,由A[5:4]进行设置。
  A[5] 位设置COM左右反置,A[4] 用来设置序列/备选引脚配置,其他位有规定,规定如下所示。

 SSD1306的COMn引脚一共有左边 COM32~COM63 和右边 COM0~COM31 共64个(金手指面朝上方)。通过设置A[5]可以让左右COM引脚的输出互换。A[5]=0时禁止左右反置,A[5]=1时启用左右反置。
  COM引脚的排列有序列和奇偶间隔(备选)两种,通过A[4]进行设置。A[4]=0时使用序列COM引脚配置,A[5]=1时使用奇偶间隔(备选)COM引脚配置。

时序和指令

1.设置显示时钟分频数和fosc (D5H+A[7:0])
2.设置预充电周期 (D9H+A[7:0])
3.设置VCOMH输出的高电平 (DBH+A[6:4])
4.空操作 (E3H) 

滚动指令

取模 

图片取模

软件:Image2lcd v4.0

1.打开选择图片

2.输出类型设置(c语言,数据水平字节垂直扫描模式,单色,最大宽度和高度) 

3.字节内像素数据反序(低位在上,高位在下)

4.确认扫描模式与字节数据顺序,确认输出图像(宽48=48列,高48=6行/页)

5.保存(获取取模数据)

文字取模

软件:PCtoLCD2002完美版

1.设置输出格式

2.确认字符大小

3.输入文字---生成字模

4.复制数据或保存到文件

注意:字模是一个字一个字去取模的 应用到oled需要对字模数据进行整理

代码

#include <REGX51.H>
#include <intrins.H>
#include "DELAY.h"
#include "oledce.h"

sbit SDA = P2^1;  //数据
sbit SCL = P2^0;	//时钟
unsigned int i=0;
#define delay();{_nop_();_nop_();_nop_();_nop_();_nop_();} //五个机器周期 5微妙 一周期多长时间与晶振有关


// 开始  SCL高电平状态下 SDA 由高电平变低电平
void start()
{
	SDA=1;
	SCL=1;
	delay();
	SDA=0;
	delay();
	SCL=0;
}
// 结束  SCL高电平状态下 SDA 由低电平变高电平
void end()
{
	SDA=0;	
	SCL=1;
	delay();  //5us
	SDA=1;
	delay_ms(10); //10ms 
}
// 发送
void send_data(unsigned char byte)
{
	unsigned char i;
	for(i=0;i<8;i++) //字节拆分按位传递
	{	//SCL为高电平 读取SDA稳定数据 所以SDA变化在前
		SDA=byte&(0x80>>i); //从最高位依次传递给SDA 
		delay();
		SCL=1;
		delay();
		SCL=0;
	}
}

// 接收
unsigned char read()
{
	unsigned char i,byte=0x00;
	SDA=1; 
	for(i=0;i<8;i++) //字节按位接收
	{	
		SCL=1;
		delay();
		if(SDA){byte|=(0x80>>i);}
		delay();
		SCL=0;
	}
	return byte;
}
//发送应答
void send_sck(bit ACK ) { 
    // 根据ACK的值设置数据线SDA  
	SDA = ACK; // 注意:通常ACK是低电平,NACK是高电平  
    delay();   // 保持SDA状态,等待从机读取 
    SCL = 1;   // 将时钟线SCL拉高 
    delay();   // 等待时钟线稳定 
    SCL = 0;   // 将时钟线SCL拉低,结束应答  
    delay();   // 等待时钟线稳定  
	SDA = 1;   //释放数据线 线权交给从机
}
//接收应答
bit read_sck()
{
	bit ACK;
	SDA=1;
	delay();    //5us
	SCL=1;
	delay();    //5us
	ACK=SDA;
	delay();    //5us
	SCL=0;
	return ACK;
}

//oled初始化
void oled_Init()
{
	start();
	send_data(0x78);	//器件地址
	read_sck();
	send_data(0x00);	//写命令
	read_sck();
	send_data(0xAE);	//进入睡眠状态
	read_sck();
	send_data(0XA4);	//输出GDDRAM内容	
	read_sck();
	send_data(0XA6);	//正常显示(1亮0灭)	
	read_sck();
	send_data(0X81);	//设置对比度		
	read_sck();
	send_data(0X7F);	//第127级对比度
	read_sck();
	send_data(0XD3);	//设置垂直显示偏移(向上)
	read_sck();
	send_data(0X00);	//偏移0行
	read_sck();
	send_data(0X40);	//设置GDDRAM起始行 0	
	read_sck();
	send_data(0XA8);	//设置MUX数 (显示行数)
	read_sck();
	send_data(0X3F);	// MUX=63	 (显示63行)
	read_sck();
	send_data(0XA1);	// 左右反置关(段重映射)
	read_sck();		
	send_data(0XC8);	// 上下反置关(行重映射)		
	read_sck();
	send_data(0XDA);	// 设置COM引脚配置		
	read_sck();
	send_data(0X02);	// 序列COM配置,禁用左右反置
	read_sck();
	send_data(0X20);	// 设置GDDRAM模式
	read_sck();	
	send_data(0X00);	// 水平寻址模式 
	read_sck();	
	send_data(0XAF);	//开OLED显示
	read_sck();	
	end();
}
//显示图片设置
void oled_ImagePage()
{
	start();
	send_data(0x78);	//器件地址
	read_sck();
	send_data(0x00);	//写命令
	read_sck();
	send_data(0X21);	// 设置列起始和结束地址
	read_sck();	
	send_data(0X00);	// 列起始地址 
	read_sck();	
	send_data(0X2F);	// 列终止地址 
	read_sck();	
	send_data(0X22);	// 设置页起始和结束地址
	read_sck();	
	send_data(0X03);	// 页起始地址 0
	read_sck();	
	send_data(0X07);	// 页终止地址 7
	read_sck();	
	end();
}
//写入图片数据
void oled_WriteImage()
{
	unsigned int j=0;
	oled_ImagePage();		//显示图片设置
	start();		// 通信开始
	send_data(0X78);	// 写从机地址'0111 100' 读写符号'0'
	read_sck();	
	send_data(0X40);	// 写数据 Co='0' C/D='100 0000'
	read_sck();	
	for(j;j<288;j++)
	{
		send_data(gImage_oledce[j]);		// 写入数据
		read_sck();	
	}
	end();
}
//oled显示文字设置
void oled_TextPage()
{
	start();
	send_data(0x78);	//器件地址
	read_sck();
	send_data(0x00);	//写命令
	read_sck();
	send_data(0X21);		// 设置列起始和结束地址
	read_sck();	
	send_data(0X40);		// 列起始地址 0
	read_sck();	
	send_data(0X6f);		// 列终止地址 127
	read_sck();	
	send_data(0X22);		// 设置页起始和结束地址
	read_sck();	
	send_data(0X00);		// 页起始地址 0
	read_sck();	
	send_data(0X07);		// 页终止地址 7
	read_sck();	
	send_data(0X27);		// 水平左滚动
	read_sck();	
	send_data(0x00);		// 空比特
	read_sck();	
	send_data(0x00);		// 滚动起始页地址
	read_sck();	
	send_data(0x06);		// 滚动速度
	read_sck();	
	send_data(0x02);		// 滚动结束页地址
	read_sck();	
	send_data(0x00);		// 空比特
	read_sck();	
	send_data(0xff);		// 空比特
	read_sck();	
	send_data(0x2f);		// 启动水平滚动
	read_sck();
	end();
}
void oled_WriteText()
{
	unsigned int j=0;
	oled_TextPage();//文字设置
	start();		// 通信开始
	send_data(0X78);	// 写从机地址'0111 100' 读写符号'0'
	read_sck();	
	send_data(0X40);	// 写数据 Co='0' C/D='100 0000'
	read_sck();	
	for(j;j<96;j++)
	{
		send_data(name_oledce[j]);		// 写入数据
		read_sck();	
	}
	end();
}
void main()
{
	oled_Init();	//初始化
	oled_WriteImage();	//显示图片
	oled_WriteText();	//显示文字
	
	while(1)
	{
		
	}


}

实现

🚀本欧也处于学习阶段,所学所识将以笔记发布。

笔记会根据相关知识的接触而随时更新! 

如果文章对你有帮助,请留下你宝贵的点赞吧👍

V:Werluo  本欧也很喜欢交朋友的哦! 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/582951.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 插件介绍及应用

MyBatis 插件介绍及应用 MyBatis 是一个持久层框架&#xff0c;它允许开发者自定义 SQL 语句并将其映射到 Java 对象中。MyBatis 提供了一种灵活的数据库操作方式&#xff0c;但随着项目的复杂度增加&#xff0c;一些通用功能如分页、缓存、事务管理等可能需要重复编写。为了解…

【网络原理】IP协议的地址管理和路由选择

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

uniapp-vue3-wechat:基于uniapp+vue3仿微信app聊天实例(H5+小程序+App端)

uni-vue3-wchat&#xff1a;基于uni-appvue3pinia2高仿微信app聊天模板。 原创基于最新跨端技术uni-appvue3.xpinia2vite4uv-ui构建三端仿微信app界面聊天实例。实现编辑框多行消息/emoj混合、长按触摸式仿微信语音面板、图片/视频预览、红包/朋友圈等功能。支持编译到H5小程序…

unity3d使用3D WebView播放网页中的视频

Unity2021.3.35f1&#xff0c;硬件ESP32-Cam&#xff0c;3D WebView插件 1.新建工程&#xff0c;导入3D WebView for Winfows和3D WebView for Android 2.打开场景Assets\Vuplex\WebView\Demos\Scenes\2_CanvasWebViewDemo 3.修改Canvas的Render Mode为Screen Space-Camera&am…

Spark持久化、broadcast广播变量和accumulator累加器

持久化操作 什么是持久化&#xff0c;为什么要持久化 Spark中最重要的功能之一是跨操作在内存中持久化&#xff08;或缓存&#xff09;数据集。当您持久化RDD时&#xff0c;每个节点将其计算的任何分区存储在内存中&#xff0c;并在该数据集&#xff08;或从该数据集派生的数…

AI大模型日报#0429:人大多模态Awaker1.0、清华「AI+材料」落地、微软小模型Orca-Math、GenAI黄金法则

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了今日要点以及每条资讯的摘要。AI大模型日报今日要点&#xff1a; 中山大学与重庆大学合作开发的基于Transformer的单细胞注释方法SANGO在跨样本、平台和组织…

平安城市 校园 景区 停车场网络语音对讲立柱SV-11TS

平安城市 校园 景区 停车场网络语音对讲立柱SV-11TS 长方形立柱式设计&#xff0c;外观简约&#xff0c;线条优美&#xff0c;工艺考究&#xff0c;坚固耐用可一键实现在紧急情况下求助报警、事件咨询&#xff0c;与SIP网络对讲主机进行全双工对讲。内置警示灯&#xff0c;呼叫…

接口自动化框架篇:使用python连接数据库 - PySQL介绍!

PySQL介绍&#xff1a;使用Python连接数据库的接口自动化框架 在接口自动化测试中&#xff0c;经常需要使用数据库来操作测试数据&#xff0c;验证接口返回的数据是否正确。Python是一种功能强大的编程语言&#xff0c;可以轻松地连接数据库&#xff0c;并进行各种数据库操作。…

保证接口幂等性(token机制)

现在继续讲一讲保证接口的幂等性——使用token机制&#xff0c;并编写代码实现&#xff01; 1. 概念 Token机制是实现接口幂等性的一种常见策略&#xff0c;尤其是在处理如订单创建、支付确认等敏感操作时&#xff0c;确保即使用户因网络延迟、误操作等原因重复提交请求&#…

【TDengine】mac m1解决no taos in java.library.path

前言 使用macos搭建springbootmybatisplus&#xff0c;通过mqtt将数据更新到tdenigne 3.2.3&#xff0c;数据源使用远程服务器的tdengine。 问题 启动时报错&#xff1a; Caused by: java.lang.UnsatisfiedLinkError: no taos in java.library.path 以下是官方文档 打开本…

动手学深度学习——矩阵

1. 基本概念 1.1 标量 标量由只有一个元素的张量表示。 所以标量计算与程度开发中的普通变量计算没有差异。 import torchx torch.tensor(3.0) y torch.tensor(2.0)x y, x * y, x / y, x**y(tensor(5.), tensor(6.), tensor(1.5000), tensor(9.))1.2 向量 向量泛化自标量…

Hbase学习笔记

Hbase是什么 HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统。它利用Hadoop HDFS作为其文件存储系统,并提供实时的读写的数据库系统。HBase的设计思想来源于Google的BigTable论文,是Apache的Hadoop项目的子项目。它适合于存储大表数据,并可以达到实时级别。HB…

部署YUM仓库及NFS共享服务

YUN仓库服务 YUM概述 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由YUM集中的软件仓库提供 yum软件仓库的常用类型 本地源仓库&#xff1a;baserulfile:// 在线源仓库&#xff1a;baserulhttp:// 或 https:// ftp源仓库&#xff1a;baserulftp:// RPM…

【Java那些事】关于前端收到后端返回的时间格式“2024-04-28T14:48:41“非想要的格式

问题&#xff1a; 后端操作后返回时间格式是"2024-04-28T14:48:41" 而我们想要的是&#xff1a;"2024-04-28 14:48:41", 两个解决方法&#xff1a; 方法一&#xff1a;使用 JsonFormat注解 Data AllArgsConstructor NoArgsConstructor public class Use…

代码随想录算法训练营第五十一天| LeetCode309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

一、LeetCode309.最佳买卖股票时机含冷冻期 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0309.%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.html 状态&#xff1a;已解决 1.思路 …

实验一: 设备密码配置与远程管理

1.实验环境 用路由器和交换机搭建实验环境 2.需求描述 实现管理员主机对交换机和路由器的远程管理 设备上配置的密码都要被加密 3.推荐步骤 对路由器配置的步骤如下&#xff1a; 实现路由器和PC的连通性配置VTY密码和特权模式密码在PC上Telnet 到路由器。 对交换机配置的…

03-JAVA设计模式-观察者模式

观察者模式 什么是观察者模式 Java中的观察者模式是一种常见的设计模式&#xff0c;它允许对象&#xff08;观察者&#xff09;订阅另一个对象&#xff08;被观察者&#xff09;的状态变化&#xff0c;并在状态变化时自动得到通知。 核心&#xff1a; 观察者模式主要用于1&a…

HTML学习笔记(二)

1.HTML图像 图像标签&#xff08;<img>)和源属性&#xff08;src&#xff09; HTML中&#xff0c;图像由<img>标签来定义&#xff0c;<img>是空标签&#xff0c;只包含属性&#xff0c;没有闭合标签。在页面上显示图像需要使用源属性&#xff08;src),src是指…

Docker基本操作 Linux里边操作

docker镜像操作命令: docker images:查看所有镜像; docker rmi:删除镜像 后边可以跟镜像的名字或者id指定要删除的镜像&#xff1b; docker pull:拉取镜像&#xff1b; docker push:推送镜像到服务&#xff1b; docker save :打包镜像 后边有用法; docker load:加载镜像&…

前端JS必用工具【js-tool-big-box】,字符串反转,驼峰转换以及版本号对比

这一小节&#xff0c;我们针对前端工具包&#xff08;npm&#xff09;js-tool-big-box的使用做一些讲解&#xff0c;主要是针对字符串反转&#xff0c;aa-bb-cc转驼峰&#xff0c;以及版本号对比的内容 目录 1 安装和引入 2 字符串反转 3 带有横岗的转驼峰 3.1 转小驼峰 3…