黃克亞
(南京鐵道職業(yè)技術(shù)學(xué)院,江蘇 蘇州 215137)
數(shù)字電子鐘系統(tǒng)設(shè)計(jì)已經(jīng)成熟,但是目前系統(tǒng)設(shè)計(jì)時(shí)基本都是采用LED作為顯示電路,造成硬件電路復(fù)雜、功耗高、產(chǎn)品體積龐大等特點(diǎn);液晶顯示模塊由于具有低功耗、壽命長、體積小、顯示內(nèi)容豐富、價(jià)格低、接口控制方便等優(yōu)點(diǎn),因此在各類電子產(chǎn)品中被極廣泛地推廣和應(yīng)用。字符型液晶顯示模塊是一類專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式液晶顯示模塊。本系統(tǒng)設(shè)計(jì)采用字符型液品顯示模塊LCD1602作為顯示器件,這樣不僅簡化了系統(tǒng)的硬件設(shè)計(jì),而且極大地提高了系統(tǒng)的可靠性。
字符型液晶顯示模塊 LCD1602已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件。LCD1602可以顯示兩行,每行16個(gè)字符,采用+5V電源供電,外圍電路配置簡單,價(jià)格便宜,具有很高的性價(jià)比。
LCD1602采用標(biāo)準(zhǔn)14腳(無背光)或16腳(帶背光)接口,各引腳功能見表1。
表1 引腳功能表
LCD1602讀寫指令較多且較復(fù)雜,具體使用可以查相關(guān)資料,下面僅列出最常用的的一些命令:①寫指令 38H:顯示模式設(shè)置;②寫指令08H:顯示關(guān)閉;③寫指令01H:顯示清屏;④寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置;⑤寫指令0CH:顯示開及光標(biāo)設(shè)置。
LCD1602讀寫操作時(shí)序總體上來說是比較簡單的,掌握其有兩種方法:一種是直看時(shí)序圖,另外一種方法是直接記憶和總結(jié)讀寫時(shí)電平高低和變化。很顯然第二種更簡單和直接,下面就列出典型讀寫的時(shí)序要求,以方便編寫程序。
(1)讀狀態(tài):輸入:RS=L,RW=H,E=H。
輸出:D0-D7=狀態(tài)字。
(2)寫指令:輸入:RS=L,RW=L,D0-D7=指令碼,E=上升沿。
輸出:無。
(3)讀數(shù)據(jù):輸入:RS=H,RW=H,E=H。
輸出:D0-D7=數(shù)據(jù)。
(4)寫數(shù)據(jù):輸入:RS=H,RW=L,D0-D7=數(shù)據(jù),E=上升沿。
輸出:無。
液晶顯示模塊是慢速顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平(即不忙),否則該指令失效。顯示字符時(shí),要先輸入顯示字符地址,即告訴模塊在哪里顯示字符。因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平,所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是要顯示地址值加上80H,即將最高位D7置為1。在使用此顯示模塊時(shí)一般要對其進(jìn)行初始化,設(shè)置所需要的顯示參數(shù)。液晶模塊在顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需人工干預(yù)。每次輸入指令前,都要判斷液晶模塊是否處于忙狀態(tài)。
硬件電路系統(tǒng)設(shè)計(jì)主要由單片機(jī)最小系統(tǒng)、輸入電路、輸出電路等組成。單片機(jī)最小系統(tǒng)同所有單片機(jī)系統(tǒng),在此不作討論。輸入電路主要時(shí)間調(diào)節(jié)電路,為簡化系統(tǒng)我們使兩個(gè)外部中斷來調(diào)節(jié)“時(shí)”和“分”數(shù)值,即將 INT0、INT1分別接兩個(gè)按鈕。LCD顯示器和單片機(jī)接口電路可以采用總線方式或者是模擬口線方式,本設(shè)計(jì)采用第二種方式,即以單片機(jī) I/O模擬控制信號。具體電路見圖1,P0口作為數(shù)據(jù),并接上拉電阻提升電壓,P2.0接LCD的RS端、P2.1接LCD的R/W端、P2.2接LCD的E端,“分”調(diào)節(jié)按鈕接INT0,“時(shí)”調(diào)節(jié)按鈕接INT1,圖1省略了電源和單片機(jī)最小系統(tǒng)電路。
圖1 數(shù)字電子鐘硬件電路
整個(gè)系統(tǒng)軟件設(shè)計(jì)主要包括主程序、中斷服務(wù)程序、顯示程序等幾個(gè)部分。各個(gè)模塊均寫成函數(shù)形式,便于結(jié)構(gòu)化程序設(shè)計(jì)。各個(gè)模塊之間可能需要交換數(shù)據(jù),我們采取定義公共變量的方法來實(shí)現(xiàn),這樣就不必通過形參和實(shí)參方式來交換數(shù)據(jù),簡化了程序設(shè)計(jì)。主程序主要完成系統(tǒng)初始化,中斷初始化和構(gòu)建一個(gè)循環(huán)不得地顯示當(dāng)前時(shí)間。本系統(tǒng)采用的是顯示芯片來實(shí)現(xiàn)系統(tǒng)顯示的。顯示時(shí)主要根據(jù)LCD芯片時(shí)序要求,模擬產(chǎn)生相應(yīng)的時(shí)序,選中芯片,向LCD芯片送相應(yīng)的控制字設(shè)定其工作方式,再送相應(yīng)數(shù)據(jù)完成顯示工作。由于LCD1602是兩行顯示,一般要操作兩次。本系統(tǒng)共有3個(gè)中斷,一個(gè)定時(shí)中斷,兩個(gè)外部中斷。定時(shí)中斷,主要是完成時(shí)間的統(tǒng)計(jì),當(dāng)外部晶振為12 MHz,設(shè)定為工作方式1,其最大定時(shí)間為65ms多一點(diǎn),不能進(jìn)行1S計(jì)時(shí),所以將定時(shí)器定時(shí)間設(shè)定為50ms,這樣中斷20次為1S。當(dāng)“秒”計(jì)至60時(shí),“分”加1,當(dāng)“分”計(jì)到60時(shí),“時(shí)”加1,當(dāng)“時(shí)”計(jì)到24時(shí),“時(shí)”清0,完成一天計(jì)時(shí)。兩個(gè)外部中斷程序比較簡單,分別完成“時(shí)”加 1和“分”加1,當(dāng)加到上限時(shí)歸0。
1 張志良.單片機(jī)原理與控制技術(shù)[M].北京:機(jī)械工業(yè)出版社,2009
2 何立民.Mcs-51單片機(jī)應(yīng)用系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,1999