51單片機實(shí)現多級液晶顯示中文菜單
一、引言
本文引用地址:http://dyxdggzs.com/article/201809/388566.htm目前小型的顯示器主要有LCD和LED,LED顯示器只能顯示數字和有限個(gè)英文字符,不能顯示漢字,顯示內容不直觀(guān),操作人員只能根據約定格式了解顯示內容。而LCD則可顯示各種漢字和圖形,尤其能實(shí)現中文菜單顯示,為操作者提供方便友好的操作界面,并且功耗低,因此LCD得到廣泛應用。而現在市面上帶中文字庫的LCD比比皆是,價(jià)格適中,且大部分具有與MCU統一的標準接口,為使用LCD實(shí)現中文菜單操作提供了很大的方便。相信更多的電子產(chǎn)品在提升性能的同時(shí),設計更加人性化的中文菜單交互界面,將會(huì )使產(chǎn)品具有更廣闊的前景。
二、YM12864液晶顯示模塊簡(jiǎn)介
YM12864漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,內置8192個(gè)中文漢字(16X16點(diǎn)陣)、128個(gè)字符(8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)。
主要技術(shù)參數和顯示特性:
電源:VDD 3.3V~+5V(內置升壓電路,無(wú)需負壓)顯示內容:128列×64行與MCU接口:8位或4位并行/3位串行多種軟件功能:光標顯示、畫(huà)面移位、自定義字符、睡眠模式等。
其引腳功能為通用20腳LCD接口,用戶(hù)指令集也為通用128*64LCD用戶(hù)指令集,相關(guān)資料很容易獲取。因其內置中文字庫,省去了自己造字庫的工作量,而只需寫(xiě)入相應的漢字和字符內碼即可顯示所需要的漢字和字符,這在許多程序開(kāi)發(fā)軟件中很容易實(shí)現,如:WAVE、KEIL等。所以使用帶中文字庫的LCD來(lái)實(shí)現中文菜單操會(huì )更加簡(jiǎn)便。
三、原理分析
通常的人機交互界面有兩種方式,選擇菜單和輸入參數,為了便于分析,本文使用三級樹(shù)狀菜單結構。因YM12864滿(mǎn)屏能顯示四行、每行八個(gè)漢字,故將四個(gè)選擇或參數輸入菜單項編為一頁(yè),不足一頁(yè)的補空格。補空格的目的是為了歸一化操作,可大大簡(jiǎn)化程序。每一個(gè)菜單、參數輸入、空格都為固定的八個(gè)漢字空間。當頂級菜單1、頂級菜單2、頂級參數輸入3、頂級4構成一級菜單,四個(gè)菜單項為一頁(yè)同時(shí)顯示在液晶屏幕上;一級菜單1-1、一級菜單1-2、一級參數輸入1-3、一級空格1-4構成了頂級菜單1下的二級菜單,也組成一頁(yè)同時(shí)顯示在液晶屏幕上,三級菜單也是如此。使用4*4鍵盤(pán)進(jìn)行操作,其中“0-9”為數字鍵,“Esc”為刪除/返回鍵,“Down”為向下選擇健,“Enter”為確定健,剩余三個(gè)按鍵預留備用,為了不與其他程序的通用寄存器混淆,而使用89C51的第二組通用寄存器R0和R2來(lái)記錄菜單的頁(yè)碼和行碼(光標所在的菜單行)。
現通過(guò)按鍵的功能來(lái)分析多級中文菜單的原理。當按下“Down”鍵后,光標移動(dòng)一行(光標所在的行表示此行顯示的菜單處于激活狀態(tài))行碼加1,即(R2)=(R2)+1;當光標已在本級菜單的最后一項,此時(shí)按下“Down”鍵,光標回到本級菜單的首項,行碼為0,即(R2)=0.例如:光標處于二級菜單1-1-1,按下“Down”鍵,則光標移動(dòng)到二級菜單1-1-2.
按下“Enter”,分兩種情況處理,如為選擇菜單,則根據頁(yè)碼和行碼的值:R0*4+R2調用下一級子菜單顯示,同時(shí)將子菜單的頁(yè)碼賦值給R0,得到子菜單的頁(yè)碼,并且使行碼R2=0,表示處于此級菜單的首項。例如:光標處于頂級菜單1,按下“Enter”鍵,則液晶顯示屏上顯示一級菜單1-1、一級菜單1-2、一級參數輸入1-3、一級空格1-4.如為參數輸入菜單,則進(jìn)入相應的參數輸入對話(huà)框。例如:光標處于參數輸入1-3,按下“Enter”健,則液晶顯示屏上顯示對應的要求輸入參數的對話(huà)框(一般為數字,為了簡(jiǎn)化程序,可采用統一的參數輸入對話(huà)框),此時(shí)輸入符合要求的參數,再按下“Enter”鍵,菜單將返回到上一級菜單,同時(shí)將輸入到YM12864液晶顯示器的數據讀出,送到相應的單元存儲,以備使用。
“Esc”鍵起到返回上一級菜單和刪除參數輸入時(shí)的錯誤輸入雙重功能,程序中只需使用一標志位來(lái)區分選擇菜單和參數輸入菜單即可,同時(shí)修改頁(yè)碼和行碼值,即R0和R1的值。例如:液晶屏上顯示二級菜單1-1-1、二級菜單1-1-2、二級菜單1-1-3、二級空格1-1-4,此時(shí)按下“Esc”鍵,則返回到一級,屏幕上顯示一級菜單1-1、一級菜單1-2、一級參數輸入1-3、一級空格1-4.
四、硬件設計
使用89C51的P1口作為液晶顯示器的數據口,使用P0口作為鍵盤(pán)掃描端口,當然這些端口也可以使用擴展口,只需在程序的開(kāi)頭修改端口的值便可。電路圖如圖1所示。

五、軟件設計
重點(diǎn)在于軟件的設計,而程序的關(guān)鍵又在于使用了分頁(yè)的操作方式。以下為菜單數據,按頁(yè)的方式存放,不足一頁(yè)的補空格。

由于篇幅有限,不能將所有的程序都寫(xiě)出,只是將程序的框架列出,其它程序如:按鍵掃描子程序、YM12864顯示子程序可參照其它資料。實(shí)際應用時(shí)需要根據具體情況加以補充。
六、結語(yǔ)
本方法設計的多級中文菜單易于實(shí)現、可靠性高,并且具有一定的通用性和使用價(jià)值,實(shí)際應用時(shí)根據產(chǎn)品的操作要求修改上述的菜單名稱(chēng)即可。當某級菜單的項目數有多頁(yè)時(shí),為方便操作,可增加翻頁(yè)按鍵;所有菜單的頁(yè)數最大為256頁(yè),共1024個(gè)菜單項,對于一般的系統完全夠用。
評論