序言
之前我們分享了,如何使用STM32驅(qū)動(dòng)OLED液晶屏,講了SSD1306控制芯片的驅(qū)動(dòng),對(duì)其驅(qū)動(dòng)時(shí)序和常用命令做了介紹,詳細(xì)請(qǐng)參考下面鏈接:
STM32驅(qū)動(dòng)0.96寸OLED液晶屏
上篇中我們已經(jīng)實(shí)現(xiàn)在OLED屏上顯示出英文字符,除去數(shù)字、字母、符號(hào)等,OLED還能顯示漢字、圖片及任意圖形。今天我們來介紹一下取模軟件的使用,看看如何在OLED屏上顯示中文,具體實(shí)現(xiàn)如下。
字幕顯示原理
我們用的OLED液晶屏是由128*64個(gè)發(fā)光點(diǎn)陣組成,即分辨率是128*64。
ASCII碼可以6*8、8*8、8*16像素,漢字一般顯示像素為16*16。
一般為了顯示效果理想,英文和數(shù)字常選用8*16像素顯示。
取模軟件
推薦使用比較好用的取模軟件:PCtoLCD2002。
字模選項(xiàng)設(shè)置
BLACK
生成字庫
CK
將生成的字庫信息復(fù)制到工程中待用,一般都是把自定義的字庫放到一個(gè)單獨(dú)的.h文件中。
硬件連接
測(cè)試電路連接:
GND---地
VCC---3.3V
D0---接PB9,作為SPI總線的CLK時(shí)鐘引腳,時(shí)鐘
D1---接PB8,作為SPI總線的MOSI數(shù)據(jù)引腳,數(shù)據(jù)輸入
RES---接PB7
D/C---接PB6,高電平為寫數(shù)據(jù),低電平為寫命令
CS---片選,接PB5,接地選中SSD1306
代碼實(shí)現(xiàn)
顯示漢字函數(shù)實(shí)現(xiàn):
其中參數(shù)x為第一個(gè)像素在行中的位置,范圍為0-127;
如果一行占8個(gè)像素,那么參數(shù)y代表行號(hào),范圍為0-7。
參數(shù)no為咱們自定義字庫數(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;
}
}
main函數(shù)實(shí)現(xiàn):
int main(void)
{
int i = 0;
//延時(shí)函數(shù)初始化
delay_init();
OLED_Init();
OLED_Clear();
//OLED_ShowString(0,4,(u8 *)" 0.96 OLED Demo ");
for(i=0;i<8;i++)
{
OLED_ShowCHinese(i*16,0,i+0);
}
for(i=0;i<5;i++)
{
OLED_ShowCHinese(i*16,2,i+8);
}
for(i=0;i<3;i++)
{
OLED_ShowCHinese(i*16,4,i+13);
}
for(i=0;i<7;i++)
{
OLED_ShowCHinese(i*16,6,i+16);
}
while(1)
{
delay_ms(10);
}
}
測(cè)試結(jié)果
有需要工程源碼及相關(guān)軟件的可以加我微信。
微信號(hào):chengxuyuanxiaoha(程序員小哈),
微信好友位名額有限,先到先得哈
推薦閱讀:
STM32單片機(jī)最小系統(tǒng)詳解
基于STM32固件庫的MDK5工程建立
修改Keil工程名稱并添加其他模塊文件
利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈
六月份的“每月一練”內(nèi)容:“基于單片機(jī)的智能風(fēng)扇”
6月1日即將公布作品功能點(diǎn)及所需要的功能模塊鏈接,有什么想法的速速留言給我哈。
你點(diǎn)的每一個(gè)在看,我都認(rèn)真當(dāng)成了喜歡
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!