串口通信協議的缺點
- 串口通信通常需要至少三條線(TX、RX和GND),而 I2C 總線僅需要兩條信號線(SDA和SCL);
- 串口通信僅支持一對一通信,而 I2C 總線支持多機通信,允許單個主機與多個從機設備進行通信;
- 串口通信通常無應答機制,而 I2C 必須有應答機制;
- ?串口通訊一般是異步通信,而 I2C 使用同步傳輸方式,數據在時鐘信號(SCL)的控制下傳輸。
?(上述中,黑體加粗是串口的一些特點,紅色是IIC的通信特點)
?IIC總線介紹
I2C總線,全稱Inter-Integrated Circuit(互連集成電路),是一種由Philips(現NXP半導體)公司在1980年代初開發的同步 串行 半雙工通信總線。
說明:一個主機可以控制多個從機,每個從機都有一個編號,通過編號指定從機的通信。?
IIC也支持多主多從,但是這個比較復雜不常用。
下節課介紹的OLED顯示器就是通過IIC進行通信的。
工作原理:?
- 主從關系:主器件用于?啟動總線傳送數據,并產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件。在總線上主和從、發和收的關系不是恒定的,而取決于此時數據傳送方向。
(主機的作用:啟動總線傳輸數據,產生時鐘用來開放傳送的器件)
- 數據傳輸:
- 如果主機要發送數據給從器件,則主機首先尋址從器件,然后主動發送數據至從器件,最后由主機終止數據傳送。
- 如果主機要接收從器件的數據,首先由主器件尋址從器件,然后主機接收從器件發送的數據,最后由主機終止接收過程。
- 時鐘同步: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.96寸OLED屏幕介紹
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)?
框圖:
?簡圖:
?在哪里(GDDRAM)Graphic 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文件代碼的流程:
- 進行SDL和SDA的GPIO口初始化;
- 封裝函數,配置IIC的時序圖:開始,停止,應答,寫時序。
- 配置利用I2C協議,對OLED寫數據或指令的函數;
- 封裝OLED初始化函數:GPIO初始化函數,OLED初始化命令;
- 封裝設置坐標的函數;
- 封裝清除屏幕的函數;
- 封裝顯示一個字符的函數;
- 封裝一個顯示字符串的函數;
- 封裝一個顯示漢字的函數;
- 封裝一個顯示圖像的函數。
#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;
- 對于二維數組來說,列數一定要設置正確,否則顯示會出問題。
- 字符,漢字是二維數組,圖像是一維數組。