OELD顯示模塊思路 驅動燒錄分三步: 初始化 顯示位置 顯示內容 大小:0.96(例) 像素:128x64(8192個像素點組成)
控制第幾排、第幾列的LED是亮還是滅來表達控制內容
理解方法:可以拆分成128x64的表格(表格的點控制LED的亮滅)
一、初始化 Oled.c文件(最下面)void OLED_Init(void) \\初始化函數 0xB0--set page address 頁面地址 \\初始化只需要這個函數
進入解釋
我們用是的IIC (愛放C):
從頭開始學 S表示:start; 01110 w/r表示地址讀寫地址從計; ACK 表示回復一個應答信號 Co字節判斷 D/C 命令、數據判斷(命令:是void) ACK回復應該應答信號 Conntrol byte 控制字節信息發送完成 ACK回復應該應答信號 Data byte 數據信息發送 ACK回復應該應答信號 P stop 停止信號
*b7-b1是高七位; **b0是讀寫位,1=R(讀)、0=w(寫、發送指令); ***b7-b4是四位,b3-b0是四位,所以是0x78 //0表示寫 ****Co字節判斷 *****D/C 命令、數據判斷
如果Co是0的話表示的是字節 如果D/C是0的話表示的是命令;是1的話表示數據;
Void Write_IIC_Data(unsigned char IIC_Data) IIC_Start(); \\第一步-開始信號 Write_IIC_Byte(0x78); \\網上叫從地址,我自己叫讀寫重新歸零 IIC_Wait_Ack(); \\回復一個應答信號 Write_IIC_Byte(0x00); \\這里我們發的是數據所以用0 IIC_Wait_Ack(); \\這里是應該應答序號 Write_IIC_Byte(IIC_Data); //發送數據信息,也就是剛剛開始函數后面的IIC Data IIC_Wait_Ack(); //回復應該應答信號 IIC_Stop(); //停止信號 初始化源碼:
寫入數據源碼:
對比:命令是0x00;數據是0x40.
二、位置和內容
1亮、0滅。 有64行=0~63;128行=0~127.
行:把0~7做為page0;以此類推有八個page;最后面是page7。 解釋:八行有把個格,剛剛好代表八個字節。
例如:0x40,0x20 十六進制40=二進制1000000;20=0100000 0x40它是第一個,第一列的第一個led亮;第二個0x20就是第二排的第二個燈亮;(也可能是第二列的第二個led亮,因為我們沒有加尋址,下面也會講到);
這是一個水平尋址模式,自動增加方向; 方向:第一個page尋址到頭后,跳到第二個page開始
這是垂直尋址模式,……自己想象;這兩個模式尋址較慢,我們選用頁尋址模式
整體顯示思路:1、選模式(頁尋址) 2、確定第幾行page 3、確定第幾列(col) 4、顯示內容(數據、高低位)
1、選尋址模式
Command(命令)下來的Set Memory Addressing Mode(設置內存尋址模式) D/C#中的0 0,代表它是雙字節;先要發送20這個命令在發送A[1:0]來判斷模式;我們要是第三個模式:頁尋址模式,so:0x20;0x02一起發送; 代碼展示: Oled_write_Cmd(0x20); Oled_write_Cmd(ox02);
2、確定第幾行page
Command中的Set PageStart、Address Address for Page、Addressing Mode(設置頁面開始、頁面地址、尋址模式)
一共有8個page;前面5個是固定的(也就是1、0、1、1、0);后面的3個剛好對著8個page;
Oled_Write_Cmd(oxbo+i); //設置頁地址是(0~7)
3、確定第幾列(col)
同上 4、內容 Oled_Write_Cmd(ox00); 低電平全亮 Oled_Write_Cmd(oxff); 高電平全滅
|