基于STC89C52和HT1621D的液晶顯示系統(tǒng)的設計
液晶顯示器(LCD)具有功耗低、體積小、重量輕、超薄、可視面積大,畫面效果好、分辨率高,抗干擾能力強等許多其他顯示器無法比擬的優(yōu)點,近幾年來被廣泛應用于單片機控制的智能儀器、儀表和低功耗電子系統(tǒng)中。在以單片機為核心的微控制系統(tǒng)中,單片機與顯示器件的接口是一個必不可少的環(huán)節(jié),具體工作包括選擇顯示器件的類型,接口采用串行方式還是并行方式等問題。本文針對單片機控制的智能化工業(yè)設備對人機對話接口簡單、便捷的要求,詳細討論段式液晶模塊HT1621D與單片機STC89C52的一種硬件接口電路和軟件編程方法。
1 HT1621液晶模塊與STC89CS2單片機
HT1621是128點內(nèi)存映像和多功能的LCD驅(qū)動器,HT1621的軟件配置特性使它適用于多種LCD應用場合,包括LCD模塊和顯示子系統(tǒng)。靜態(tài)顯示內(nèi)存RAM以32×4位的格式儲存所顯示的數(shù)據(jù)。RAM的數(shù)據(jù)直接映像到LCD驅(qū)動器,可以用READ,WRITE和READ-MODIFY-WRITE命令訪問。HT1 621D引腳圖如圖1所示。
圖1 HT1621D引腳圖
各引腳功能如下:
COM0~COM2:LCD公共輸出口。
SEG1~SEG31:LCD段輸出口。
?。浩x輸入,接一上拉電阻。當為為高電平,讀寫HT1621的數(shù)據(jù)和命令無效,串行接口電路復位;當為低電平和作為輸入時,讀寫HT1621的數(shù)據(jù)和命今有效。
?。篟EAD脈沖輸入,接一上拉電阻。在信號的下降沿,HT1621內(nèi)存的數(shù)據(jù)被讀到DATA線上,主控制器可以在下一個上升沿時鎖存這些數(shù)據(jù)。
?。篧RITE脈沖輸入,接一上拉電阻。在信號的上升沿,DATA線上的數(shù)據(jù)寫到HT1621。
DATA:外接上拉電阻的串行數(shù)據(jù)輸入/輸出。
VSS:負電源;地。
VLCD:LCD電源輸入。
VDD:正電源。
:時基或看門狗定時器溢出標志,NMOS開漏輸出?! Z:聲音頻率輸出。
STC89C52是一種低功耗、高性能CMOS 8位單片機,最突出的優(yōu)點是片內(nèi)集成了8 KB可重復編程的FLASH程序存儲器。具有ISP功能,可直接通過串口下載用戶程序,方便調(diào)試程序,內(nèi)部8 KB的FLASH E2PROM使用戶編制的程序及需要顯示的字母、數(shù)字、漢字和圖形都可以存儲在里面,免去了擴展外部存儲器的麻煩,使以STC89C52單片機為核心的控制系統(tǒng)電路更簡單,十分適用于液晶顯示,在智能儀器、儀表和低功耗電子產(chǎn)品中被廣泛選用。
2 硬件電路設計
考慮到單片機的外圍擴展電路盡可能少,硬件結(jié)構(gòu)越簡單越好。如果液晶顯示器的8位數(shù)據(jù)線與單片機采用并行接口的話,數(shù)據(jù)線就占用了8位,再加上其他的一些控制線,將占用較多的I/O口線,因此在很多儀器儀表的應用中,將液晶顯示器的8位數(shù)據(jù)線與單片機通過串行輸入并行輸出器件進行串行接口,實現(xiàn)實用準確的數(shù)據(jù)傳輸方式。HT1621與微控制器之間只需三根線進行連接,即將HT1621的三個管腳,DATA和分別與單片機的P3.4,P3.3和P3.5相連。
HT1621D只有四根管腳用于接口,管腳用于初始化串行接口電路和結(jié)束主控制器與HT1621之間的通訊。管腳設置為“1”時,主控制器和HT1621之間的數(shù)據(jù)和命令無效并初始化。在產(chǎn)生模式命令或模式轉(zhuǎn)換之前,必須用一個高電平脈沖初始化HT1621的串行接口。管腳DATA是串行數(shù)據(jù)輸入/輸出管腳,讀/寫數(shù)據(jù)和寫命令通過管腳DATA進行。管腳是讀時鐘輸入管腳,在信號的下降沿時,數(shù)據(jù)輸出到管腳DATA上,在信號上升沿和下一個下降沿之間,主控制器應讀取相應的數(shù)據(jù)。管腳是寫時鐘輸入管腳,在信號上升沿時,管腳DATA上的數(shù)據(jù)、地址和命令被寫入HT1621??蛇x的管腳可用作主控制器和HT1621之間的接口,可用軟件設置作為定時器輸出或WDT溢出標志輸出。主控制器與HT1621的相連接后,可以實現(xiàn)時基或WDT功能。其硬件電路如圖2所示。
圖2 LCD顯示電路
3 軟件設計
3.1 LCD驅(qū)動器相關(guān)命令
HT1621可以用軟件設置。兩種模式的命令可以配置HT1621和傳送LCD所顯示的數(shù)據(jù)。HT1621的配置模式稱為命令模式,命令模式類型碼為100。命令模式包括一個系統(tǒng)配置命令,一個系統(tǒng)頻率選擇命令,一個LCD配置命令,一個聲音頻率選擇命令,一個定時器設置命令和一個操作命令。數(shù)據(jù)模式包括READ,WRITE和READ-MODIFY-WRITE操作,數(shù)據(jù)和命令模式類型如下:
模式命令應在數(shù)據(jù)或命令傳送前運行。如果執(zhí)行連續(xù)的命令,命令模式代碼即100,將被忽略。當系統(tǒng)在不連續(xù)命令模式或不連續(xù)地址數(shù)據(jù)模式下,管腳應設為“1”,而且先前的操作模式將復位。當管腳返回“0”時,新的操作模式類型碼應先運行。
3.2 工作時序
只看掌握和熟悉了HT1621的工作時序圖才能更好地進行軟件編程。HT1621的命令模式時序圖如圖3所示,寫模式的時序圖如圖4所示。
圖3 命令模式時序圖
圖4 WRITE模式的時序圖
WRITE101
a5 a4 a3 a2 a1 a0 d0 d1 d2 d3寫數(shù)據(jù)到RAM
a5~a0 RAM地址;d3~d0 RAM數(shù)據(jù)
3.3 LCD顯示程序的編寫
要正確的編寫出LCD顯示程序,需要知道HT1621的段與液晶顯示屏的對應情況。RAM的數(shù)據(jù)直接映像到LCD驅(qū)動器,RAM可看成是由SEG1~SEG31和COM0~COM2對應組成的映像圖。HT1621的RAM段碼映射如表1所示。
表1 HT1621的RAM段碼映射表
液晶顯示屏上要顯示的每一個符號都對應于RAM中的一位,要顯示哪位只需將該位對應的單元即SEG和COM相交的地方置“1”就可以了,若不要顯示則將該位送“0”。對于0~9的數(shù)字顯示是采用七段碼來顯示的。在編寫顯示程序時可以將要顯示內(nèi)容的顯示代碼放在一個表中,然后在程序中可以通過查表的方式根據(jù)此顯示代碼查出對應要顯示的內(nèi)容。LCD顯示子程序流程如圖5所示。
圖5 LCD顯示子程序流程圖
4 結(jié)語
本文詳細地介紹了段式液晶顯示模塊HT1621與單片機STC89C52的一種實用的硬件接口電路和軟件編程方法,該設計不但硬件電路簡單可靠,可方便顯示漢字、字符和圖形,而且節(jié)約了單片機的口線,使系統(tǒng)資源得到了充分利用,實現(xiàn)了交互式顯示和圖文并茂的人機界面效果,并且已成功應用在多種家用電器和工業(yè)設備中,有很好的實用價值。