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