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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82222.shtml
英文地址,請注明出處:http://en.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的直接計算結果中: 低頻分量(圖像的整體亮度和平滑部分)位于頻譜圖的四個角落 高頻分量(邊緣、細節…