單片機總線模式的鍵盤檢測與液晶顯示電路設(shè)計
一、矩陣式鍵盤
1.工作原理
矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上。一個4x4的行、列結(jié)構(gòu)可以構(gòu)成16只按鍵的鍵盤,在按鍵數(shù)量較多的場合,矩陣式鍵盤比獨立式鍵盤,更節(jié)省I/0口。
如圖1所示,每只按鍵在行列線交節(jié)點上,一端接行線,另一端按列線,列線通過上拉電阻RP1接到VCC上,設(shè)QO~Q3為低電平,在沒有動作時行線處于低電平狀態(tài),列線處于高電平狀態(tài),而當(dāng)有按鍵被接下時,該鍵所在的列線的電平由高變低,這也是識別矩陣式鍵盤是否有鍵被接下的關(guān)鍵所在。要將行與列線信號配合起來并作適當(dāng)?shù)奶幚聿判小?br />
2.按鍵識別方法
下面以下圖中9號鍵被接下為例,來說明該按鍵是如何被識別出來的。當(dāng)9號鍵被接下時,與之鍵相連的列線3的電平將由與此鍵相連的行線A的電平?jīng)Q定。由于在天鍵接下時列線處于高電平狀態(tài),如果讓所有行線也處于高電平,那么將不會引起列線電平的變化,也就沒法判斷有無鍵被接下,更不用說是判斷接下的是哪個鍵了。如果將所有行線置為低電平,則接下的鍵所在的列線將變成低電平,根據(jù)此變化能準(zhǔn)確判定該列有按鍵接下,但仍不能確定是哪個鍵被按下,即被接下的鍵在哪一行。若某時刻讓一條行線處于低電平,讓其余所有行線處于高電平,如A行為低電平,其余行為高電平,因為是按鍵9被按下,所以列3立刻變?yōu)榈碗娖?,?jù)此可確定是A行與列3交叉點的按鍵(即9號鍵)被按下。同理可以判斷出矩陣鍵盤中每一個被接下的鍵所在的行、列,即知道被按下的鍵名。
根據(jù)上面的分析,可以總結(jié)出用單片機控制和讀取I/0的狀態(tài)來識別矩陣鍵盤按鍵的方法:
第一步,單片機通過總線地址adr0、adr1、adr2、adr3,分別掃描矩陣鍵盤的四條行線,看是否有按健被接下;
第二步,單片機調(diào)用延時去抖程序排除干擾因素,確認有按鍵被接下,然后通過總線數(shù)據(jù)線ADO、AD1、AD2、AD3,讀回列線電平狀態(tài)再通過軟件讀出行線和列線的交叉點,即找出被接下的鍵。
以上識別按鍵的方法稱為掃描法。
二、液晶顯示器
液晶顯示器微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,在袖珍式儀表和低功耗系統(tǒng)中得到越廣泛的應(yīng)用。字符型液晶模塊采用5×7點陣圖形顯示字符,根據(jù)顯示的容量可以分為1行16個字、2行16個字、2行20個字等,下面以2行16個字的LMl602液晶模塊來介紹其編程方法。
LMl602采用標(biāo)準(zhǔn)的(14)腳接口,其引腳定義及功能如下表所示。VSS為地,VDD按5V正電源;VO為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一只1Oka的電位器來調(diào)整對比度;RS為寄存器選擇,為高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器;RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和RW均為低電平時可以寫入指令或顯示地址,當(dāng)RS為低電平、RW為高電平時可以讀忙信號;當(dāng)RS為高電平、RW為低電平時可以寫入數(shù)據(jù)。E為使能端,當(dāng)E由高電平跳變成低電平時,液晶模塊執(zhí)行命令。DO~D7為8位雙向數(shù)據(jù)線。
LMl602液晶模塊內(nèi)部的字符發(fā)生存儲器CGROM內(nèi)存儲了160個不同的點陣字符圖形,包括阿拉伯?dāng)?shù)字、英文字母的大小寫、常用符號和日文假名等。每個字符都有一個固定的代碼,如大寫英文字母“A”的代碼是O1OOOOO1B(41H),只要顯示地址41H中的點陣字符圖形,使用者就能看到字母“A”。
2.基本操作時序
讀狀態(tài):輸入RS=L、RW=H、E=H輸出DO~D7=狀態(tài)字
寫指令:輸入RS=L、RW=L、DO~D7=指令碼、E=高脈沖輸出無
讀數(shù)據(jù):輸入RS=H、RW=H、E=H輸出DO~D7=數(shù)據(jù)
寫數(shù)據(jù):輸入RS=H、RW=L、DO~D7=數(shù)據(jù)、E=高脈沖輸出無
3.初始化流程
初始化過程(復(fù)位過程)
延時15ms
寫指令38H(不檢測忙信號)
延時5ms寫指令38H
(不檢測忙信號)
延時5ms
寫指令38H(不檢測忙信號)
延時5ms
寫指令38H(不檢測忙信號)
說明:以后每次寫指令、讀/寫數(shù)據(jù)操作之前均需檢測忙信號。
寫指令38H:顯示模式設(shè)置
寫指令08H:顯示關(guān)閉
寫指令01H:顯示清屏
寫指令06H:顯示光標(biāo)移動設(shè)置
寫指令0CH:顯示開及光標(biāo)設(shè)置
給出以上具體操作時序主要是為了幫助大家更好地理解LCD驅(qū)動程序,并按照基本初始化流程書寫驅(qū)動程序。驅(qū)動程序沒不需要每次都編寫,需要使用時,只要把以前編寫的驅(qū)動程序作為頭文件調(diào)用即可。液晶驅(qū)動程序見后邊附程序。
三、單片機總線模式的鍵盤檢測與液晶顯示總體電路
下圖中的總線鍵盤主要是用于制作大鍵盤。單片機通過74LS138與74LS573進行總線模式擴展,使鍵盤掃描和液晶顯示共用數(shù)據(jù)口通過地址信號分別控制與二者間的數(shù)據(jù)傳輸,以充分地利用單片機的I/O口資源。
四、按鍵程序流程圖
按鍵程序流程如下圖所示。
本實驗在已Proteus仿真軟件上驗證通過。通過Keil軟件進行編程,然后將生成的Hex文件加載到51單片機中,就能觀察到液晶屏顯示的實驗現(xiàn)象內(nèi)容。在矩陣鍵盤上按下任意鍵,在液晶顯示器上就會以移位顯示的方式看到軟件定義的鍵值?!?br />
鍵盤和顯示器是單片機應(yīng)用系統(tǒng)經(jīng)常使用的人機交互界面,此實驗可以幫助單片機初學(xué)者了解總線模式,學(xué)會用總線模式實現(xiàn)鍵盤掃描與液晶顯示的技術(shù)。