秋葉通商的H8板搭載的LCD是M1632和SC1602BS,因其為字符式單色顯示器所以操作非常簡(jiǎn)單。在電路設(shè)計(jì)上,其允許盡可能的節(jié)約端口而設(shè)計(jì)為4Bit和8Bit兩種模式,也就說只需要連接4個(gè)I\O口就可以給這個(gè)LCD輸出數(shù)據(jù)。
上圖中的In0,In1,In2,In3,In4,In7對(duì)應(yīng)PB端口的0,1,2,3,4,7號(hào)端口。而從芯片的1-14號(hào)編碼可以從硬件式樣中找到對(duì)應(yīng)的邏輯功能號(hào)
PB0 PB1 PB2 PB3 PB4 PB7
DB4 DB5 DB6 DB7 RS E
DB4-DB7為數(shù)據(jù)/命令輸入端口,RS為數(shù)據(jù)/命令控制位,E為電平控制位。
由電路圖可以看出,5號(hào)口德R/W端口被硬性的鏈接到了GND端,始終輸入為0,所以始終為寫入模式,LCD的狀態(tài)信息無法獲取。
(1):初始化
本片從硬件上要求在達(dá)到4.5V電壓時(shí)三次執(zhí)行數(shù)據(jù)長(zhǎng)度為8的申請(qǐng)(原因不明),在之后再根據(jù)本開發(fā)板把位寬調(diào)整為4.有個(gè)要注意的地方,硬件在8位寬模式的時(shí)候,它是不知道這時(shí)板子上的情況是另外四個(gè)沒有鏈接芯片的事實(shí)的,它只管按照8位來接受,那么第四位永遠(yuǎn)都是0.只有上表的DB4-DB7有效。
在調(diào)整位寬為4后就可以讓LCD在極端的時(shí)間里分兩次接收輸入,一次為低4位一次為高四位,就可以開始詳細(xì)的設(shè)置LCD的工作模式。
for(i=0;i《3;i++)
{
LCDOut8(0,0x3); /* 三次申請(qǐng)8位寬模式 */
}
LCDOut8(0,0x2); /* 申請(qǐng)4位寬模式 */
LCDOut4(0,0x28); /* 4Bit模式,shift模式 */
LCDOut4(0,0x0e); /* 標(biāo)示開,光標(biāo)開,ブリンク關(guān)*/
LCDOut4(0,0x06); /* 以增量方式使用內(nèi)存 */
LCDOut4(0,0x01); /* 清除LCD顯示 */
LCDOut4(0,0x02); /* 移動(dòng)光標(biāo)到起始位 */
根據(jù)廠家的源碼得到的結(jié)論仍然有很不明確的地方,為什么在8位模式的時(shí)候仍然要使用0x3,0x2的數(shù)字,他們應(yīng)該不被8位模式下的LCD接收才對(duì)。
(2)寫入LCD
到目前為止都沒有談到E的重要之處,而它幾乎存在在LCD的每一個(gè)地方,因?yàn)椴还苁裁葱薷亩家贓控制的電平從1到0的變化時(shí)被修改,也就是說不管是什么設(shè)置都要調(diào)用對(duì)E修改的函數(shù)代碼才可以實(shí)現(xiàn)。
另外,在四位的模式下,是分兩次將高地位傳遞給LCD的。
static void LCDOut4(int rs,int code)
2 {
3 int stat;
int pb;
char lb,hb;
pb = PB.DR;
if( rs ) stat = (pb & LCDMASK) | LCD_RS;
else stat = (pb & LCDMASK);
hb = ((code》》4)&0xf) | stat;
lb = (code&0xf) | stat;
PB.DR = hb | LCD_E;
PB.DR = hb;
PB.DR = lb | LCD_E;
PB.DR = lb;
PB.DR = pb;
wait(4);
}
編輯:hfy
-
顯示器
+關(guān)注
關(guān)注
21文章
4933瀏覽量
139753 -
lcd
+關(guān)注
關(guān)注
34文章
4407瀏覽量
166950 -
電路設(shè)計(jì)
+關(guān)注
關(guān)注
6660文章
2421瀏覽量
202898 -
邏輯功能
+關(guān)注
關(guān)注
0文章
14瀏覽量
3095
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論