GME12864-12
OLED寫入指令數據:
1、start()開始
2、slave address 存積地址:011110 xx
寫入:b 0111 1000 (0x78)(R / W位置為0時,表示寫入)
3、ACK
4、cotrol byte:(Co) (D / C)000000
(Co置為0時,接下來傳輸的信息包含數據字節data byte)
(D / C位置為0時,表示為命令;為 1 時,表示為數據)
0000 0000 寫入命令
0100 0000 寫入數據
5、ACK
6、寫入指令/數據
7、ACK
8、STOP
//寫入命令
void Oled_Write_Cmd(char dataCmd)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x00); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataCmd); // 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}//寫入數據
void Oled_Write_Data(char dataData)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x40); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataData);// 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}
OLED顯示點:
VDD = 1.65V——3.3V
VCC = 7V —— 15V
128x64個點陣組成:
64=8Page*8bit
自動右移
橫向:SEG0——SEG127
豎向:Page0——Page7
尋址模式:
頁地址模式:
水平橫向尋址,寫到127時,他會返回到該行的頭部。
1、發送cmd:0x20
2、發送cmd:0x02;(默認為頁模式)
水平地址模式:
水平橫向尋址,寫到127時,他會返回到下一行的頭部
垂直地址模式:
豎向尋址,到尾部時,會返回下一列的頭部繼續
頁模式:顯示一個點
配置頁地址模式:
Oled_Write_Cmd(0x20);
Oled_Write_Cmd(0x02);
配置顯示地址:
Oled_Write_Cmd(0xB0);//配置page1-8
Oled_Write_Cmd(0x00);//列地址,從頭開始
Oled_Write_Cmd(0x10);
主函數:
1、OLED初始化
2、選擇一個位置
2.1、確認為頁面尋址模式
Oled_Write_Cmd(0x20);
Oled_Write_Cmd(0x02);
2.2、選擇PAGE0
Oled_Write_Cmd(0xB0);//1011 0000(0xB0)配置page1-8.
3、顯示一個點
#include "reg52.h"
#include "intrins.h"sbit SCL = P0^1;
sbit SDA = P0^3;void ICC_Start()
{SDA = 1;SCL = 1;_nop_(); //一個nop用時5usSDA = 0;_nop_();
}void ICC_Stop()
{SDA = 0;SCL = 1;_nop_();SDA = 1;_nop_();
}char ICC_ACK()
{char flag;SDA = 1; //在時鐘脈沖9期間釋放_nop_();SCL = 1;_nop_();flag = SDA;_nop_();SCL = 0;_nop_();return flag;
}void IIC_Send_Byte(char dataSend)
{int i;for(i = 0;i < 8;i++){SCL = 0; //SCL低電平,讓SDA做好數據準備SDA = dataSend & 0x80; //與上1000 0000 獲得dataSend的最高位,給SDA_nop_(); //發送數據建立的時間SCL = 1; //SCL高電平,開始發送數據_nop_(); //發送數據需要時間SCL= 0; //發送完畢,SCL拉回低電平_nop_();dataSend = dataSend << 1;}
}//寫入命令
void Oled_Write_Cmd(char dataCmd)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x00); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataCmd); // 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}//寫入數據
void Oled_Write_Data(char dataData)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x40); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataData);// 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}void Oled_Init()
{Oled_Write_Cmd(0xAE);//--display offOled_Write_Cmd(0x00);//---set low column addressOled_Write_Cmd(0x10);//---set high column addressOled_Write_Cmd(0x40);//--set start line addressOled_Write_Cmd(0xB0);//--set page addressOled_Write_Cmd(0x81); // contract controlOled_Write_Cmd(0xFF);//--128Oled_Write_Cmd(0xA1);//set segment remapOled_Write_Cmd(0xA6);//--normal / reverseOled_Write_Cmd(0xA8);//--set multiplex ratio(1 to 64)Oled_Write_Cmd(0x3F);//--1/32 dutyOled_Write_Cmd(0xC8);//Com scan directionOled_Write_Cmd(0xD3);//-set display offsetOled_Write_Cmd(0x00);//Oled_Write_Cmd(0xD5);//set osc divisionOled_Write_Cmd(0x80);//Oled_Write_Cmd(0xD8);//set area color mode offOled_Write_Cmd(0x05);//Oled_Write_Cmd(0xD9);//Set Pre-Charge PeriodOled_Write_Cmd(0xF1);//Oled_Write_Cmd(0xDA);//set com pin configuartionOled_Write_Cmd(0x12);//Oled_Write_Cmd(0xDB);//set VcomhOled_Write_Cmd(0x30);//Oled_Write_Cmd(0x8D);//set charge pump enableOled_Write_Cmd(0x14);//Oled_Write_Cmd(0xAF);//--turn on oled panel}void main()
{Oled_Init(); //OLED初始化Oled_Write_Cmd(0x20); //選擇一個位置,確認為頁面尋址模式Oled_Write_Cmd(0x02);Oled_Write_Cmd(0xB0); //1011 0000(0xB0)配置page1-8.//顯示一個點while(1);
}
頁模式:顯示字符
選擇列地址顯示
主函數:
1、OLED初始化
2、選擇一個位置
2.1、確認為頁面尋址模式
Oled_Write_Cmd(0x20);
Oled_Write_Cmd(0x02);
2.2、選擇PAGE0
Oled_Write_Cmd(0xB0);//1011 0000(0xB0)配置page1-8.
Oled_Write_Cmd(0x00);//列地址,從頭開始
Oled_Write_Cmd(0x10);
3、顯示屏寫入數據
用點陣液晶取模工具取模
要勾選縱向取模,文字倒序
顯示字符A:
#include "reg52.h"
#include "intrins.h"sbit SCL = P0^1;
sbit SDA = P0^3;void ICC_Start()
{SCL = 0; //防止雪花屏SDA = 1;SCL = 1;_nop_(); //一個nop用時5usSDA = 0;_nop_();
}void ICC_Stop()
{SCL = 0; //防止雪花屏SDA = 0;SCL = 1;_nop_();SDA = 1;_nop_();
}char ICC_ACK()
{char flag;SDA = 1; //在時鐘脈沖9期間釋放_nop_();SCL = 1;_nop_();flag = SDA;_nop_();SCL = 0;_nop_();return flag;
}void IIC_Send_Byte(char dataSend)
{int i;for(i = 0;i < 8;i++){SCL = 0; //SCL低電平,讓SDA做好數據準備SDA = dataSend & 0x80; //與上1000 0000 獲得dataSend的最高位,給SDA_nop_(); //發送數據建立的時間SCL = 1; //SCL高電平,開始發送數據_nop_(); //發送數據需要時間SCL= 0; //發送完畢,SCL拉回低電平_nop_();dataSend = dataSend << 1;}
}//寫入命令
void Oled_Write_Cmd(char dataCmd)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x00); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataCmd); // 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}//寫入數據
void Oled_Write_Data(char dataData)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x40); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataData);// 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}void Oled_Init(void)
{Oled_Write_Cmd(0xAE);//--display offOled_Write_Cmd(0x00);//---set low column addressOled_Write_Cmd(0x10);//---set high column addressOled_Write_Cmd(0x40);//--set start line addressOled_Write_Cmd(0xB0);//--set page addressOled_Write_Cmd(0x81); // contract controlOled_Write_Cmd(0xFF);//--128Oled_Write_Cmd(0xA1);//set segment remapOled_Write_Cmd(0xA6);//--normal / reverseOled_Write_Cmd(0xA8);//--set multiplex ratio(1 to 64)Oled_Write_Cmd(0x3F);//--1/32 dutyOled_Write_Cmd(0xC8);//Com scan directionOled_Write_Cmd(0xD3);//-set display offsetOled_Write_Cmd(0x00);//Oled_Write_Cmd(0xD5);//set osc divisionOled_Write_Cmd(0x80);//Oled_Write_Cmd(0xD8);//set area color mode offOled_Write_Cmd(0x05);//Oled_Write_Cmd(0xD9);//Set Pre-Charge PeriodOled_Write_Cmd(0xF1);//Oled_Write_Cmd(0xDA);//set com pin configuartionOled_Write_Cmd(0x12);//Oled_Write_Cmd(0xDB);//set VcomhOled_Write_Cmd(0x30);//Oled_Write_Cmd(0x8D);//set charge pump enableOled_Write_Cmd(0x14);//Oled_Write_Cmd(0xAF);//--turn on oled panel}//清屏
void Oled_Clear()
{int i,j;//unsigned char i,j; char范圍-128——127,定義char類型會產生越界for(i = 0;i < 8;i++){Oled_Write_Cmd(0xB0 + i); //Page0——Page7Oled_Write_Cmd(0x00); //每個Page從0開始Oled_Write_Cmd(0x10);for(j = 0;j < 128;j++){ //0——127列,依次寫入0,每寫入數據列地址自動偏移。Oled_Write_Data(0); }}
}/*-- 文字: A --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 (一個Page為8位)--*/
char A1[8] = {0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00};char A2[8] = {0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20};void main()
{int i;Oled_Init(); //OLED初始化Oled_Write_Cmd(0x20); //選擇一個位置,確認為頁面尋址模式Oled_Write_Cmd(0x02);Oled_Clear(); //清屏Oled_Write_Cmd(0xB0); //1011 0000(0xB0)配置page1-8.//顯示一個點Oled_Write_Cmd(0x00); //列地址,從頭開始Oled_Write_Cmd(0x10);for(i = 0;i < 8;i++){Oled_Write_Data(A1[i]);}Oled_Write_Cmd(0xB1); Oled_Write_Cmd(0x00);Oled_Write_Cmd(0x10);for(i = 0;i < 8;i++){Oled_Write_Data(A2[i]);}while(1);
}
各數據類型大小和取值范圍:
https://blog.csdn.net/weixin_42856843/article/details/81989737
頁模式:顯示圖片
大小:128x64像素
保存模式:bmp模式
位圖(Bitmap)模式:它沒有進行數據壓縮,其內部存儲的色彩信息(灰度圖,RGB 或 ARGB)直接以二進制的形式暴露在外,也十分方便借助計算機軟件進行簡單或深入的分析。
#include "reg52.h"
#include "intrins.h"sbit SCL = P0^1;
sbit SDA = P0^3;void ICC_Start()
{SCL = 0; //防止雪花屏SDA = 1;SCL = 1;_nop_(); //一個nop用時5usSDA = 0;_nop_();
}void ICC_Stop()
{SCL = 0; //防止雪花屏SDA = 0;SCL = 1;_nop_();SDA = 1;_nop_();
}char ICC_ACK()
{char flag;SDA = 1; //在時鐘脈沖9期間釋放_nop_();SCL = 1;_nop_();flag = SDA;_nop_();SCL = 0;_nop_();return flag;
}void IIC_Send_Byte(char dataSend)
{int i;for(i = 0;i < 8;i++){SCL = 0; //SCL低電平,讓SDA做好數據準備SDA = dataSend & 0x80; //與上1000 0000 獲得dataSend的最高位,給SDA_nop_(); //發送數據建立的時間SCL = 1; //SCL高電平,開始發送數據_nop_(); //發送數據需要時間SCL= 0; //發送完畢,SCL拉回低電平_nop_();dataSend = dataSend << 1;}
}//寫入命令
void Oled_Write_Cmd(char dataCmd)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x00); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataCmd); // 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}//寫入數據
void Oled_Write_Data(char dataData)
{ICC_Start(); // 1、start()開始IIC_Send_Byte(0x78); // 2、slave address 存積地址:011110 xx// 寫入:b 0111 1000(0x78)(R/W位置為0時,表示寫入)ICC_ACK(); // 3、ACKIIC_Send_Byte(0x40); // 4、cotrol byte:(Co) (D/C)000000 //(Co置為0時,接下來傳輸的信息包含數據字節data byte)//(D / C位置為0時,表示為命令;為 1 時,表示為數據)// 0000 0000 寫入命令// 0100 0000 寫入數據ICC_ACK(); // 5、ACKIIC_Send_Byte(dataData);// 6、寫入指令/數據ICC_ACK(); // 7、ACKICC_Stop(); // 8、STOP
}void Oled_Init(void)
{Oled_Write_Cmd(0xAE);//--display offOled_Write_Cmd(0x00);//---set low column addressOled_Write_Cmd(0x10);//---set high column addressOled_Write_Cmd(0x40);//--set start line addressOled_Write_Cmd(0xB0);//--set page addressOled_Write_Cmd(0x81); // contract controlOled_Write_Cmd(0xFF);//--128Oled_Write_Cmd(0xA1);//set segment remapOled_Write_Cmd(0xA6);//--normal / reverseOled_Write_Cmd(0xA8);//--set multiplex ratio(1 to 64)Oled_Write_Cmd(0x3F);//--1/32 dutyOled_Write_Cmd(0xC8);//Com scan directionOled_Write_Cmd(0xD3);//-set display offsetOled_Write_Cmd(0x00);//Oled_Write_Cmd(0xD5);//set osc divisionOled_Write_Cmd(0x80);//Oled_Write_Cmd(0xD8);//set area color mode offOled_Write_Cmd(0x05);//Oled_Write_Cmd(0xD9);//Set Pre-Charge PeriodOled_Write_Cmd(0xF1);//Oled_Write_Cmd(0xDA);//set com pin configuartionOled_Write_Cmd(0x12);//Oled_Write_Cmd(0xDB);//set VcomhOled_Write_Cmd(0x30);//Oled_Write_Cmd(0x8D);//set charge pump enableOled_Write_Cmd(0x14);//Oled_Write_Cmd(0xAF);//--turn on oled panel}//清屏
void Oled_Clear()
{int i,j;//unsigned char i,j; char范圍-128——127,定義char類型會產生越界for(i = 0;i < 8;i++){Oled_Write_Cmd(0xB0 + i); //Page0——Page7Oled_Write_Cmd(0x00); //每個Page從0開始Oled_Write_Cmd(0x10);for(j = 0;j < 128;j++){ //0——127列,依次寫入0,每寫入數據列地址自動偏移。Oled_Write_Data(0); }}
}code unsigned char bmpImager[] = {/*-- 調入了一幅圖像:12864演示圖片.bmp --*/
/*-- 寬度x高度=128x64 (有128x8x8個數據)--*/
0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,
0xF0,0xE0,0xE0,0x60,0x70,0x70,0x30,0x30,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x1C,
0x0C,0x1C,0x1C,0x1C,0x18,0x18,0x18,0x18,0x18,0x30,0x30,0x30,0x60,0x60,0xE0,0xE0,
0xE0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xE0,0xC0,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,0x3E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x1F,0x07,0x07,0x03,
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,
0x01,0x01,0x03,0x07,0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,
0x7F,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x70,0x30,0x30,0x30,0xF0,0xE0,0x00,0x00,
0x40,0xE0,0x70,0x30,0x30,0x30,0x70,0xF0,0xE0,0x00,0x00,0x00,0xF0,0xF0,0x70,0x30,
0x30,0x70,0xF0,0xE0,0x00,0x00,0xC0,0xE0,0x70,0x30,0x30,0x30,0x30,0x74,0xFF,0xFF,
0x00,0x00,0x00,0xE0,0xF0,0x30,0x30,0x30,0x70,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x07,0x0F,0x1F,0xFF,0xFF,0x0F,0x01,0x00,0x00,0x00,0x80,0xE0,0xF0,
0xF8,0xF8,0xFC,0xFC,0x7E,0x7E,0x7E,0xFE,0xFC,0xF8,0x60,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0xFC,0xFC,0xFE,0x7E,0xFE,0xFC,0xF8,
0xF8,0xF0,0xE0,0x80,0x00,0x00,0x00,0x01,0x0F,0xFF,0xFF,0x1F,0x0F,0x07,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x60,0x60,0xE0,0x60,0x7F,0x3F,0x02,0x00,
0x38,0x7D,0xFE,0x66,0xE6,0x66,0x76,0x7F,0x7F,0x00,0x00,0x00,0x7F,0x7F,0x00,0x00,
0x00,0x00,0x7F,0x7F,0x00,0x00,0x1F,0x3F,0x7A,0x60,0xE0,0xE0,0x60,0x78,0x7F,0x7F,
0x00,0x00,0x38,0x7D,0x7F,0xE6,0x46,0x66,0x76,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xE0,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x03,0x00,0x00,0x00,0x60,0xF0,0xF8,
0xF8,0xF8,0xF0,0xF0,0x70,0x00,0x00,0x00,0x07,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x80,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x03,0x0F,0x1C,0x38,0x60,0xE0,0xC1,0x81,
0x83,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x83,
0x83,0x83,0xC1,0xE0,0x70,0x38,0x1C,0x0F,0x03,0x80,0x80,0xA0,0xB0,0xB8,0xFC,0xF7,
0xF7,0x92,0x94,0xDC,0xF8,0xD0,0xC0,0x40,0x00,0x00,0x00,0xC0,0xC2,0x46,0xFC,0x40,
0x00,0x10,0x70,0xC7,0x9E,0xC0,0xFE,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF0,
0xA0,0xB0,0xB3,0xFF,0xB2,0x90,0xB0,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x84,0x84,0x84,0x86,0xB6,0xE6,0x96,0x8E,0x86,0x86,0xC0,0xC0,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x3F,0xFF,0xFF,0x7F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7C,0x0C,0x0C,0x0C,0x0C,0x0C,
0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFC,0xFC,0xFE,0xFE,0xFE,0xFE,0xFF,0x7F,0xFF,
0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x89,0x8C,0x96,0xB7,0xD5,0xD6,
0xD6,0xD6,0xDF,0xD7,0xCE,0x5C,0x18,0x18,0x08,0x00,0x00,0x00,0x00,0x40,0x7F,0xB0,
0xD8,0x6C,0x30,0x19,0x0F,0x1F,0x78,0xE0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x08,0x1F,
0x0C,0x0D,0x0C,0x7F,0xC4,0x84,0x86,0x87,0x80,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,
0x01,0x01,0x01,0x01,0x31,0x60,0xC0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0x7F,0xF8,0xE1,0xE1,0xC1,0xC1,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0xC1,0x81,0xC1,0xE1,0xF5,0xFE,0x1F,
0x01,0x00,0x00,0xE0,0xC0,0x60,0x60,0xC0,0xC0,0x00,0x01,0xE1,0xC1,0x61,0x61,0xC1,
0xC1,0x81,0x01,0x01,0xE1,0xE0,0x60,0x60,0xC0,0x80,0x00,0x60,0xF8,0xF8,0x40,0x01,
0xC1,0xE0,0x60,0x60,0xE0,0xC0,0x00,0x01,0xFD,0xF9,0x00,0xF8,0xFC,0x80,0xC0,0xE0,
0x60,0x00,0x00,0x00,0x01,0x01,0x01,0xC1,0xC1,0x61,0x61,0x61,0xE0,0xC0,0x00,0xC0,
0xE0,0x60,0x60,0x60,0xC0,0x00,0x01,0xE1,0xE0,0x60,0x60,0xE0,0xC0,0x60,0x60,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x0F,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x03,0x07,0x03,0x03,
0x03,0x03,0x02,0x03,0x03,0x07,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0x07,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0x10,0x30,0x1F,0x0F,0x00,0x00,0xFF,0xBC,0x10,0x30,0x1F,
0x1F,0x0F,0x00,0x22,0xFF,0x18,0x10,0x10,0x1F,0x0F,0x00,0x00,0x1F,0x1F,0x10,0x08,
0x1E,0x1E,0x13,0x1B,0x1F,0x1F,0x00,0x00,0x1F,0x1F,0x00,0x1F,0x1F,0x03,0x07,0x1E,
0x18,0x00,0x00,0x18,0x18,0x00,0x04,0x0F,0x1D,0x30,0x10,0x10,0x1C,0x1C,0x00,0x0F,
0x1F,0x10,0x30,0x18,0x1F,0x07,0x00,0x1F,0x1F,0x00,0x00,0x1F,0x1F,0x00,0x00,0x1F,};void Oled_Show_Image(unsigned char *image)
{unsigned int j;unsigned char i; //char范圍-128——127,定義char類型會產生越界for(i = 0;i < 8;i++){Oled_Write_Cmd(0xB0 + i); //Page0——Page7Oled_Write_Cmd(0x00); //每個Page從0開始Oled_Write_Cmd(0x10);for(j = 128 * i;j < (128 * (i + 1));j++){ //0——127列,依次寫入0,每寫入數據列地址自動偏移。Oled_Write_Data(image[j]); }}
}void main()
{Oled_Init(); //OLED初始化Oled_Write_Cmd(0x20); //選擇一個位置,確認為頁面尋址模式Oled_Write_Cmd(0x02);Oled_Clear(); //清屏Oled_Show_Image(bmpImager);while(1);
}