有了前面使用GPIO口控制LED等的基礎(chǔ),下面再利用GPIO口模擬I2C接口來(lái)實(shí)現(xiàn)一下I2C接口的OLED屏。由于LPC51U68開發(fā)板上配備了Arduino接口,這樣就可以利用插排來(lái)連接OLED屏了,省去了導(dǎo)線的連接既牢靠,又看上去整齊不少。
為了對(duì)位的需要,OLED屏的I2C引腳的連接情況為:
SCL --- P0.19
SDA --- P0.18
引腳輸出高低電平的定義為:
#define OLED_SCLK_Set() GPIO_PortSet(GPIO, 0,1U <<19U)
#define OLED_SCLK_Clr() GPIO_PortClear(GPIO, 0, 1U<< 19U)
#define OLED_SDIN_Set() GPIO_PortSet(GPIO, 0,1U <<18U)
#define OLED_SDIN_Clr() GPIO_PortClear(GPIO, 0, 1U<< 18U)
通過程序的移植,即可在OLED屏上顯示出信息,詳見圖1所示。
圖1
為了在OLED屏上顯示中文信息,還可通過構(gòu)建中文小字庫(kù)的方法來(lái)實(shí)現(xiàn)。
構(gòu)建中文小字庫(kù)可使用工具軟件PCtoLCD2002,其提取字模的格式可按圖2來(lái)設(shè)置。
完成設(shè)置后,輸入需要的中文即可達(dá)到相應(yīng)的字模,參見圖3所示。
圖2
圖3
相應(yīng)的漢字顯示函數(shù)為:
void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
{
uint8_t t,adder=0;
OLED_Set_Pos(x,y);
for(t=0;t<16;t++)
{
OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
adder+=1;
}
OLED_Set_Pos(x,y+1);
for(t=0;t<16;t++)
{
OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
adder+=1;
}
}
圖4