STM32中的IIC协议和OLED显示屏

串口通信协议的缺点

  1. 串口通信通常需要至少三条线(TXRXGND,而 I2C 总线仅需要两条信号线(SDA和SCL)
  2. 串口通信仅支持一对一通信,而 I2C 总线支持多机通信,允许单个主机与多个从机设备进行通信
  3. 串口通信通常无应答机制,而 I2C 必须有应答机制
  4.  串口通讯一般是异步通信,而 I2C 使用同步传输方式,数据在时钟信号(SCL)的控制下传输。

 (上述中,黑体加粗串口的一些特点,红色IIC的通信特点)

 IIC总线介绍

I2C总线,全称Inter-Integrated Circuit(互连集成电路),是一种由Philips(现NXP半导体)公司在1980年代初开发的同步 串行 半双工通信总线。

说明:一个主机可以控制多个从机,每个从机都有一个编号,通过编号指定从机的通信。 

IIC也支持多主多从,但是这个比较复杂不常用。

下节课介绍的OLED显示器就是通过IIC进行通信的。

工作原理: 

  • 主从关系:主器件用于 启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。

主机的作用:启动总线传输数据,产生时钟用来开放传送的器件)

  • 数据传输:
  1. 如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送。
  2. 如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终止接收过程。
  • 时钟同步:SCL用于数据的时钟同步,确保主从设备之间的数据传输同步进行。

主要特点:

  • 硬件简单I2C总线只需要 一根数据线 和 一根时钟线 两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路。
  • 多主机总线I2C总线是一个真正的 多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏。
  • 在线检测I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试。
  • 数据传输与地址设定数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。
  • 负载能力:由于线路中电容会影响总线传输速度,I2C总线的负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。

应用领域

        I2C总线广泛应用于各种设备和应用领域,例如传感器、存储器(如EEPROM)、显示屏温度传感器实时时钟(RTC、扩展IO芯片等。

一般是软件配置IIC:引脚进行分配。一般不设有硬件的IIC

总线上会挂载两个上拉电阻的原因?(面试的时候可能会问到)

答:设备输出的模式要配置成开漏输出,只能输出低电平,上拉电阻是为了输出低电平。

IIC上的设备要配置的输出模式?为什么?(面试的时候可能会问到)

答:要配置成开漏输出,不能是推挽输出。

原因:当没有上拉电阻的时候,一个设备配置成推挽输出且输出高电平,另一个设备配置成开漏输出,输出低电平,两个设备间会形成回路,严重时会造成设备烧毁。

若一个设备的输出模式配置成开漏输出会发生什么?

答:由于总线上的上拉电阻作用,会强制将这一线路的电平拉成0伏,使开漏输出不能正常的工作。是为了安全考虑,避免多个设备间的烧毁。因此,输出模式要配置成开漏输出。(一主一从的时候,推挽输出和开漏输出都可以,若配置成开漏输出的时候,确保总线上有上拉电阻,要不无法输出高电平。)

IIC总线时序

 起始信号

  • 起始信号由主设备发起,用于通知总线上的所有设备即将开始数据传输。
  • SCL为高电平时SDA由高电平变为低电平,产生一个下降沿,表示起始信号的开始。

停止信号 

  • 停止信号也由主设备发起,用于通知总线上的所有设备数据传输已经结束。
  • SCL为高电平时,SDA由低电平变为高电平,产生一个上升沿,表示停止信号的开始。

 应答信号

  • 每当一个字节的数据传输完成后,接收方会向发送方发送一个应答信号(ACK)或非应答信NACK)。
  • 应答信号在SCL的第9个时钟周期(当SCL为高电平时)发送,传输一个字节是8位,需要八个时钟周期
  • SCL高电平,若SDA线为低电平,则表示ACK(有效应答),表示接收方已成功接收该字节。
  • SCL高电平,SDA线为高电平,则表示NACK(非应答),通常表示接收方接收该字节没有成功。

 读写时序

  • 发送一个字节:SCL低电平期间主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。
  • 接收一个字节:SCL低电平期间从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)。

 一次完整的I2C时序

注意:IIC传输数据的过程中, 是 高位先行,与串口传输数据不同,串口传输数据是 低位先行

模块:OLED显示器

 0.96OLED屏幕介绍

0.96 4P(支持IIC协议) 7P(既支持IIC协议又支持SPI协议)OLED 屏幕模块是一种显示屏模块,它包括一个 0.96 英寸的 OLED 显示屏 和 四个引脚。这种OLED 屏幕模块通常用于嵌入式系统和小型电子设备中,可以显示文本、图像和其他类型的信息。由于其小尺寸和低功耗,也常用于智能手表、健康追踪器和其他便携式设备中。

0.96寸OLED 参数

驱动芯片
SSD1306
分辨率
128 (横向像素点)× 64(纵向像素点)
显示尺寸
0.96 英寸
外形尺寸
27.5 × 27.8 mm
玻璃尺寸
26.7 × 19.26 × 1.4 mm
显示区域
21.74 W × 10.864 mm
视角
全视角
工作电压
3.3V ~ 5V
工作温度
-20 ~ 70
存储温度
-30 ~ 80
使用寿命
>=16000 小时
支持接口
I2C(4p仅支持,7p支持SPI和I2C)

0.96OLED 屏幕模块的优点有:

1. 高对比度和高亮度:OLED 屏幕模块可以提供深黑色背景和明亮的字色,因此可以实现高对比度和高亮度的显示效果;

2. 自发光OLED 屏幕模块不需要背光灯,因此可以实现更薄、更轻的设计;

3. 响应速度快OLED 屏幕模块的响应速度非常快,可以实现流畅的动画和视频效果;

4. 视角宽OLED 屏幕模块的视角非常宽,即使从不同角度观察,图像和文字也能保持清晰。

0.96OLED 屏幕模块的缺点有:

1. 显示寿命短: LCD 显示屏相比,OLED 的显示寿命相对较短,因为它的有机材料会随着时间的推移而逐渐失效;

2. 显示面积小:0.96 OLED 屏幕模块的显示面积相对较小,因此不适合用于需要大屏幕的应用。

如何驱动OLED屏幕显示内容?

告诉(OLED通讯协议)

        The I2C-bus interface gives access to write data and command into the device. Please refer to Figure 8-7 for the write mode of I2 C-bus in chronological order.

告诉哪一个设备,执行的命令和数据。 

OLED显示屏(SSD1306) 

框图:

 简图:

 在哪里(GDDRAMGraphic Display Data RAM

说明:这个显示器128x64,一个字节占8位,64个纵向像素点,可以分成8个PAGE(PAGE0~PAGE7) 。

输入数据时的模式 

说明:这个是最常用的模式。指定某一行,数据从第一列到最后一列写入,最后一列写完之后开始从第一列写入。 

水平地址模式:

说明: 当最后一列输入完成后自动跳到下一列的第一行开始输入。

垂直地址模式:

说明: 指定一列,数据从page0到page7依次输入数据,输入完成后开始从第二列的page0输入,不断重复。

OLED命令 

Software Configuration 

        SSD1306 has internal command registers that are used to configure the operations of the driver IC. After reset, the registers should be set with appropriate values in order to function well. The registers can be accessed by MPU interface in either 6800, 8080, SPI type with D/C# pin pull low or using I2C interface. Below is an example of initialization flow of SSD1306. The values of registers depend on different condition and application.

        SSD1306 内置有用于配置驱动 IC 操作的命令寄存器。复位后,应将寄存器设置为适当的值以确保其正常工作。这些寄存器可通过 MPU 接口以 6800、8080 或 SPI 类型(D/C# 引脚拉低)访问,也可通过 I2C 接口访问。以下是 SSD1306 初始化流程的一个示例。寄存器的值取决于不同的条件和应用。

如何取模 

 小实验:OLED实验

实验目的

驱动OLED屏幕驱动 OLED 屏幕,显示点、线、字符、字符串、汉字、图片等内容。

硬件清单

OLED屏幕、开发板、ST-Link、USB转TTL

硬件接线 

文件代码: 

  • oled.c文件代码:

.c文件代码的流程:

  1. 进行SDL和SDA的GPIO口初始化;
  2. 封装函数,配置IIC的时序图:开始,停止,应答,写时序。
  3. 配置利用I2C协议,对OLED写数据或指令的函数;
  4. 封装OLED初始化函数:GPIO初始化函数,OLED初始化命令;
  5. 封装设置坐标的函数;
  6. 封装清除屏幕的函数;
  7. 封装显示一个字符的函数;
  8. 封装一个显示字符串的函数;
  9. 封装一个显示汉字的函数;
  10. 封装一个显示图像的函数。
#include "oled.h"
#include "delay.h"
#include "font.h"void oled_gpio_init(void){GPIO_InitTypeDef gpio_initstruct;OLED_I2C_SCL_CLK();OLED_I2C_SDA_CLK();gpio_initstruct.Pin = OLED_I2C_SCL_PIN;gpio_initstruct.Mode = GPIO_MODE_OUTPUT_OD;gpio_initstruct.Pull = GPIO_PULLUP;gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(OLED_I2C_SCL_PORT,&gpio_initstruct);gpio_initstruct.Pin = OLED_I2C_SDA_PIN;HAL_GPIO_Init(OLED_I2C_SDA_PORT,&gpio_initstruct);}void oled_i2c_start(void){OLED_SCL_SET();OLED_SDA_SET();OLED_SDA_RESET();OLED_SCL_RESET();
}void oled_i2c_stop(void){OLED_SCL_RESET();OLED_SDA_RESET();OLED_SCL_SET();OLED_SDA_SET();
}
void oled_i2c_ack(void){OLED_SCL_SET();OLED_SCL_RESET();
}void oled_i2c_write_byte(uint8_t data){uint8_t i,temp;temp = data;for(i = 0;i < 8 ;i++){if((temp & 0x80) == 0x80)OLED_SDA_SET();elseOLED_SDA_RESET();temp = temp << 1;OLED_SCL_SET();OLED_SCL_RESET();}
}void oled_write_cmd(uint8_t cmd){oled_i2c_start();oled_i2c_write_byte(0x78);oled_i2c_ack();oled_i2c_write_byte(0x00);oled_i2c_ack();oled_i2c_write_byte(cmd);oled_i2c_ack();oled_i2c_stop();
}void oled_write_date(uint8_t data){oled_i2c_start();oled_i2c_write_byte(0x78);oled_i2c_ack();oled_i2c_write_byte(0x40);oled_i2c_ack();oled_i2c_write_byte(data);oled_i2c_ack();oled_i2c_stop();}void oled_init(void){oled_gpio_init();//初始化后要发送一系列的命令要进行发送。delay_ms(100);oled_write_cmd(0xAE);    //设置显示开启/关闭,0xAE关闭,0xAF开启oled_write_cmd(0xD5);    //设置显示时钟分频比/振荡器频率oled_write_cmd(0x80);    //0x00~0xFFoled_write_cmd(0xA8);    //设置多路复用率oled_write_cmd(0x3F);    //0x0E~0x3Foled_write_cmd(0xD3);    //设置显示偏移oled_write_cmd(0x00);    //0x00~0x7Foled_write_cmd(0x40);    //设置显示开始行,0x40~0x7Foled_write_cmd(0xA1);    //设置左右方向,0xA1正常,0xA0左右反置oled_write_cmd(0xC8);    //设置上下方向,0xC8正常,0xC0上下反置oled_write_cmd(0xDA);    //设置COM引脚硬件配置oled_write_cmd(0x12);oled_write_cmd(0x81);    //设置对比度oled_write_cmd(0xCF);    //0x00~0xFFoled_write_cmd(0xD9);    //设置预充电周期oled_write_cmd(0xF1);oled_write_cmd(0xDB);    //设置VCOMH取消选择级别oled_write_cmd(0x30);oled_write_cmd(0xA4);    //设置整个显示打开/关闭oled_write_cmd(0xA6);    //设置正常/反色显示,0xA6正常,0xA7反色oled_write_cmd(0x8D);    //设置充电泵oled_write_cmd(0x14);oled_write_cmd(0xAF);    //开启显示 
}void oled_set_cursor(uint8_t x,uint8_t y){oled_write_cmd(0xB0 + x);oled_write_cmd((y & 0x0F) | 0x00);   //取x的低位oled_write_cmd(((y & 0xF0) >> 4) | 0x10);  //取高位
}//清屏函数
void oled_fill(uint8_t data){uint8_t i,j;for (i = 0;i < 8 ;i++){oled_set_cursor(i,0);for(j = 0;j < 128;j++)oled_write_date(data);} 
}//封装一个函数,显示任意字符,
void oled_show_char(uint8_t x ,uint8_t y,uint8_t number ,uint8_t size){         //size代表的是高度number = number - ' ';uint8_t i,j,page;                       //page:表示输入的字符总共需要的PAGEpage = size / 8;if(size % 8 != 0)page ++;for (i = 0;i < page; i++){oled_set_cursor(x+i,y);for (j = size / 2 * i;j < size / 2 * (i + 1); j++){              //size/2:高度的一半是宽度if(size == 16)oled_write_date(ascii_8X16[number][j]);                   }}
}void oled_show_string(uint8_t x,uint8_t y,char *p ,uint8_t size){while(*p != '\0'){oled_show_char(x,y,*p,size);      //*p:取出数组中的首元素y += size / 2;p++;                               //p++:代表的是数组指针递增,指向下一个元素地址。}
}void oled_show_chinese(uint8_t x,uint8_t y, uint8_t N ,uint8_t size){uint8_t i,j;for (i = 0 ; i < size / 8 ;i++){oled_set_cursor(x+i,y);for(j = size * i;j < size * (i + 1);j++){if(size == 16)oled_write_date(chinese_16X16[N][j]);
//            if(size == 24)
//                oled_write_date(chinese_24X24[N][j]);}}
}void oled_show_image(uint8_t x,uint8_t y, uint8_t width ,uint8_t highth ,uint8_t * bpm){uint8_t i,j;for(i = 0; i < highth ;i++){oled_set_cursor(x+i,j);for(j = 0;j < width;j++)oled_write_date(bpm[ width * i + j ]);}}

 注意:

  • 关于写一个字节的函数中,使用的是&位运算符和<<位运算符;
  • 写坐标的函数,取高四位和第四位的写法;
  • 要多看写一个字符的函数中,for循环函数中的写法;
  • 和函数图像函数中的,for循环的函数中的写法。
  • olde.h文件代码
#ifndef __OLED_H__
#define __OLED_H__
#include "stm32f1xx.h"#define OLED_I2C_SCL_CLK()       __HAL_RCC_GPIOB_CLK_ENABLE()
#define OLED_I2C_SCL_PORT       GPIOB
#define OLED_I2C_SCL_PIN        GPIO_PIN_6#define OLED_I2C_SDA_CLK()      __HAL_RCC_GPIOB_CLK_ENABLE()
#define OLED_I2C_SDA_PORT       GPIOB
#define OLED_I2C_SDA_PIN        GPIO_PIN_7#define OLED_SCL_RESET()          HAL_GPIO_WritePin(OLED_I2C_SCL_PORT,OLED_I2C_SCL_PIN,GPIO_PIN_RESET)
#define OLED_SCL_SET()            HAL_GPIO_WritePin(OLED_I2C_SCL_PORT,OLED_I2C_SCL_PIN,GPIO_PIN_SET)#define OLED_SDA_RESET()          HAL_GPIO_WritePin(OLED_I2C_SDA_PORT,OLED_I2C_SDA_PIN,GPIO_PIN_RESET)
#define OLED_SDA_SET()            HAL_GPIO_WritePin(OLED_I2C_SDA_PORT,OLED_I2C_SDA_PIN,GPIO_PIN_SET)void oled_init(void);
void oled_set_cursor(uint8_t x,uint8_t y);
void oled_fill(uint8_t data);
void oled_write_date(uint8_t data);
void oled_show_char(uint8_t x ,uint8_t y,uint8_t number ,uint8_t size);
void oled_show_string(uint8_t x,uint8_t y,char *p ,uint8_t size);
void oled_show_chinese(uint8_t x, uint8_t y, uint8_t N, uint8_t size);
void oled_show_image(uint8_t x,uint8_t y, uint8_t width ,uint8_t highth,uint8_t * bpm);#endif

注意:在.h文件中进行宏定义,便于后续的修改,和代码的书写方便。 

  • mian.c文件代码 
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "uart1.h"
#include "oled.h"extern const unsigned char image_date[];
extern const unsigned char tigger_image[];int main(void)
{HAL_Init();                         /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */led_init();                         /* LED初始化 */oled_init();uart1_init(115200);printf("hello,world");oled_fill(0x00);/* 显示一个字母A */
//    oled_set_cursor(0,0);
//    oled_write_date(0x00);
//    oled_write_date(0x00);
//    oled_write_date(0xC0);
//    oled_write_date(0x38);
//    oled_write_date(0xE0);
//    oled_write_date(0x00);
//    oled_write_date(0x00);
//    oled_write_date(0x00);
//    
//    oled_set_cursor(1,0);
//    oled_write_date(0x20);
//    oled_write_date(0x3C);
//    oled_write_date(0x23);
//    oled_write_date(0x02);
//    oled_write_date(0x27);
//    oled_write_date(0x38);
//    oled_write_date(0x20);/*封装一个写任意字符的函数,每一个字符占的宽度是8个像素点*/
//oled_show_char(1,1,'B',16);
//oled_show_char(1,10,'{',16);
//oled_show_char(1,20,'?',16);
//oled_show_char(1,30,'1',16);
//oled_show_char(1,40,'x',16);/*封装一个函数,显示字符串*/
//oled_show_string(3,0,"xys handsome !!!",16);/*封装一个函数,显示字符串*/
//uint8_t i;
//for(i = 0; i < 2; i++){
//    oled_show_chinese(0,i*16,i,16);
//}/*封装一个函数,显示字符串*/oled_show_image(0,0,128,8,(unsigned char *)image_date);while(1){ 
//        for(uint8_t i = 0;i < 128;i++)
//            oled_write_date(0x80);
//            break;
//        led1_on();
//        led2_off();
//        delay_ms(500);
//        led1_off();
//        led2_on();
//        delay_ms(500);}
}

若要显示字符,图像,汉族等内容,需创建一个font.h文件用来存储取模后的十六进制的数据,如下所示:

  • font.h文件代码
#ifndef __FONT_H__
#define __FONT_H__//汉字
const unsigned char chinese_16X16[][32] = {0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,/*"你",0*/0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/*"好",1*/};//图像
const unsigned char image_date[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x04,0x02,0xE2,
0x32,0x12,0x92,0x72,0x22,0x14,0x0C,0x04,0x04,0x82,0x42,0x21,0x21,0xA0,0x20,0x20,
0x40,0x80,0x02,0x12,0x52,0x7E,0x53,0x50,0x80,0x40,0x40,0x40,0x40,0x40,0x41,0x81,
0x02,0x06,0x06,0x0A,0x11,0x39,0x49,0x89,0x09,0x09,0x19,0xB1,0xE1,0x86,0x78,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,
0x40,0xE0,0xF0,0x90,0x18,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x38,0xE1,
0x1F,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x81,0x02,0x02,0x02,0x02,0x02,
0x01,0xE0,0x20,0x20,0xE0,0x00,0x00,0x01,0x02,0x04,0x06,0x04,0x04,0x04,0x04,0x02,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x3B,0xC1,0x61,0x1C,0x83,0x80,0x80,
0x80,0x80,0x80,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xF8,0x87,0x81,0x80,0x00,
0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
0xC0,0x00,0x00,0x00,0x00,0x00,0x12,0x13,0x11,0x19,0x08,0x08,0x00,0x00,0x00,0x00,
0x03,0x05,0x18,0x08,0x05,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x94,
0x34,0x24,0x66,0x42,0x02,0x00,0x00,0x00,0x00,0xE0,0x9F,0x01,0x01,0x01,0x00,0x00,
0x0C,0x10,0x08,0x18,0x10,0x00,0x04,0x1C,0x00,0x00,0x0C,0x18,0x00,0x0C,0x19,0x83,
0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x0E,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x0C,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x01,
0x01,0x03,0x02,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x61,0x21,0x31,0x19,0x0E,0x02,
0x02,0x02,0x02,0x7E,0x42,0x02,0x02,0x02,0x02,0x02,0x06,0x1E,0x71,0x41,0x03,0x03,
0x04,0x08,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x08,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x08,0x04,0x04,0x02,
0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"C:\Users\86182\Desktop\小老虎.bmp",0*/};const unsigned char ascii_8X16[][16]=      
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 00x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 10x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 20x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 30x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 40xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 50x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 60x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 70x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 80x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 90x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 100x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 110x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 120x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 130x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 140x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 150x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 160x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 170x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 180x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 190x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 200x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 210x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 220x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 230x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 240x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 250x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 260x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 270x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 280x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 290x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 300x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 310xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 320x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 330x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 340xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 350x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 360x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 370x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 380xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 390x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 400x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 410x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 420x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 430x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 440x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 450x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 460xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 470x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 480xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 490x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 500x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 510x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 520x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 530x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 540xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 550x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 560x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 570x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 580x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 590x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 600x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 610x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 620x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 630x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 640x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 650x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 660x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 670x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 680x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 690x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 700x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 710x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 720x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 730x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 740x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 750x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 760x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 770x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 780x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 790x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 800x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 810x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 820x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 830x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 840x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 850x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 860x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 870x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 880x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 890x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 900x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 910x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 920x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 930x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};#endif

 注意:

  • 关于数据的数据类型是 const unsigned char;
  • 对于二维数组来说,列数一定要设置正确,否则显示会出问题。
  • 字符,汉字是二维数组,图像是一维数组。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30个性能优化方案

1.用String.format拼接字符串 不知道你有没有拼接过字符串&#xff0c;特别是那种有多个参数&#xff0c;字符串比较长的情况。 比如现在有个需求&#xff1a;要用get请求调用第三方接口&#xff0c;url后需要拼接多个参数。 以前我们的请求地址是这样拼接的&#xff1a; S…

docker中部署Universal Media Server (UMS)

Universal Media Server (UMS) 本身主要是作为桌面服务程序开发的&#xff08;主要面向 Java GUI DLNA 播放&#xff09;&#xff0c;但确实可以通过 Docker 进行部署。虽然官方没有提供 Docker 镜像&#xff0c;但社区有一些可用的方式可以在 Docker 中运行它。 下面是一个可…

配置文件,xml,json,yaml,我该选哪个?

文章目录 一、核心特性对比二、性能与生态系统三、适用场景与选型建议四、替代方案与趋势五、总结 在软件开发中&#xff0c;配置文件格式的选择直接影响开发效率和维护成本。XML、JSON、YAML 是目前主流的三种格式&#xff0c;但它们各有适用场景和局限性。本文将从语法特性、…

产品迭代与放弃的判断:MVP、PMF 与 Scale Fit 的三重验证

在创业和产品管理的世界里&#xff0c;一个永恒的难题是&#xff1a;什么时候应该继续投入资源进行产品迭代&#xff1f;什么时候又该果断放弃&#xff1f; 这是一个既关乎战略方向&#xff0c;又涉及资源分配的核心命题。许多初创公司或产品团队往往在错误的方向上坚持太久&a…

DAY 35 模型可视化与推理

知识点回顾&#xff1a; 三种不同的模型可视化方法&#xff1a;推荐torchinfo打印summary权重分布可视化进度条功能&#xff1a;手动和自动写法&#xff0c;让打印结果更加美观推理的写法&#xff1a;评估模式 作业&#xff1a;调整模型定义时的超参数&#xff0c;对比下效果。…

20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)

BUG&#xff1a;E1696&#xff1a;无法打开元数据文件“platform.winmd&#xff08;已解决&#xff09; 最近在用VisualStudio2022打开一个VisualStudio2017的C老项目后报了这个错&#xff0c;几经周折终于解决了&#xff0c;以下是我用的解决方法&#xff1a; 将Debug从Win32改…

Hellorobot 移动操作机器人开源实践:HPR 模型 + 全栈资源,降低家庭机器人开发门槛

Hellorobot在DobbE框架中扮演了重要的技术支柱角色。通过其尖端的模块化设计和高效算法优化&#xff0c;Hellorobot为家庭机器人领域注入了强大的创新动力。DobbE框架的核心技术——Home Pretrained Representations (HPR) 模型&#xff0c;得益于Hellorobot的技术支持&#xf…

onnx模型转入rknn3399平台上工作记录

1.rknn虚拟环境使用时报错问题 使用rknn17环境的报错&#xff1a; ImportError: libdc1394.so.22: cannot open shared object file: No such file or directory 参考链接&#xff1a;https://blog.csdn.net/2301_80032564/article/details/142316410 创作软连接&#xff1a; …

杰发科技AC7840——CSE硬件加密模块使用(1)

1. 简介 2. 功能概述 3. 简单的代码分析 测试第二个代码例程 初始化随机数 这里的CSE_CMD_RND在FuncID中体现了 CSE_SECRET_KEY在17个用户KEY中体现 最后的读取RNG值&#xff0c;可以看出计算结果在PRAM中。 总的来看 和示例说明一样&#xff0c;CSE 初次使用&#xff0c;添加…

AI要掌握的知识

AI&#xff08;人工智能&#xff09;是一个跨学科的复杂领域&#xff0c;其知识体系涵盖理论基础、技术工具和实践应用等多个层面。以下从核心知识模块、技术工具、实践方向等角度&#xff0c;详细梳理 AI 从业者需要掌握的知识体系&#xff1a; 一、数学基础&#xff1a;AI 的…

Python Click库:轻松构建优雅的命令行工具

Python Click库&#xff1a;轻松构建优雅的命令行工具 引言一、Click 适用场景二、安装 Click三、基础使用1. 第一个 Click 程序2. 添加位置参数3. 使用选项参数 四、高级功能1. 子命令分组&#xff08;多级命令&#xff09;2. 参数类型验证3. 彩色终端输出 五、实用功能示例&a…

三种常见脉冲神经网络编码方式解读

速率编码&#xff08;rate coding) 速率编码使用输入特征来确定尖峰频率&#xff0c;例如将静态输入数据&#xff08;如 MNIST 图像&#xff09;转换为时间上的脉冲&#xff08;spike&#xff09;序列。它是将神经元发放脉冲的频率与输入值&#xff08;如像素强度&#xff09;…

Selenium 测试框架 - Python

🚀Selenium Python 实战指南:从入门到进阶 Selenium 是 Web 自动化测试中最受欢迎的工具之一,支持多种浏览器和语言。本文将从环境搭建到多浏览器兼容、测试框架集成、元素定位方式、常用操作、浏览器配置等多个方面进行详细讲解,并分享常见的最佳实践建议。 📦一、环境…

第四十九节:图像分割-基于深度学习的图像分割

1. 引言 在计算机视觉领域,图像分割(Image Segmentation)是一项基础且关键的技术,其目标是将图像划分为多个具有特定语义的区域。随着深度学习技术的突破,基于神经网络的图像分割方法在精度和效率上都实现了质的飞跃。本文将重点介绍如何利用OpenCV结合深度学习模型实现高…

【GESP】C++三级真题 luogu-B4039 [GESP202409 三级] 回文拼接

GESP三级真题&#xff0c;字符串相关题目&#xff0c;难度★★✮☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-3-luogu-b4039/ 【GESP】C三级真题 luogu-B4039 [GESP202409 三级] 回文拼接 | OneCoderGESP三级真题&#xff0c;字符串相关题目&#xff0c;难…

什么是深度学习中的层次分类问题?

深度学习中的层次分类问题&#xff08;Hierarchical Classification&#xff09;是指分类任务中存在类别间的层次结构&#xff0c;且模型需要根据这种层次关系进行预测的问题。与传统的扁平分类&#xff08;Flat Classification&#xff09;不同&#xff0c;层次分类要求模型在…

黑马点评-乐观锁/悲观锁/synchronized/@Transactional

文章目录 全局ID生成器超卖乐观锁 一人一单悲观锁 当我们确认订单时&#xff0c;系统需要给我们返回我们的订单编号。这个时候就会出现两个大问题。 1.订单id采用数据库里的自增的话&#xff0c;安全性降低。比如今天我的订单是10&#xff0c;我明天的订单是100&#xff0c;那…

python下通过wmic设置程序的优先级~~~

在开发过程中&#xff0c;经常会碰到需要设置程序优先级&#xff0c;这时候可以手动到任务管理器中调整&#xff0c;但是这多多少少有些不方便&#xff0c;那么这时候我们就可以通过subprocess调用wmic命令来实现&#xff0c;方法如下: step 1 必要的引用: import subprocess…

在Mac中使用pyenv管理Python版本:从安装到虚拟环境的全流程指南

# 在Mac中使用pyenv管理Python版本&#xff1a;从安装到虚拟环境的全流程指南 ## 一、为什么选择pyenv&#xff1f; 在开发过程中&#xff0c;不同项目往往需要不同的Python版本&#xff08;如3.8 vs 3.10&#xff09;&#xff0c;而系统默认的Python环境难以满足灵活切换的需…

FFT Shift

在频域图像处理中,交换四个象限实现FFT移位(也称为FFT Shift)是一种将频域图像的低频成分移动到中心的标准化操作。 1. 为什么需要FFT移位? 原始FFT输出特性: 二维FFT的直接计算结果中: 低频分量(图像的整体亮度和平滑部分)位于频谱图的四个角落 高频分量(边缘、细节…