ADSP2181與液晶顯示模塊SMC1602B的接口設(shè)計
引言
常用液晶顯示模塊的種類有筆段式、字符式和圖形式等,可方便地用于各種嵌入式系統(tǒng)的液晶顯示。字符式液晶顯示模塊SMC1602B是長沙太陽人電子有限公司的8位并行接口、內(nèi)藏控制器HD44780的背光式兩行液晶顯示模塊。
本文使用的DSP是AD公司的一種低價格、高性能的16位定點運算DSP—ADSP2181。它集成度高,在ADSP21XX基礎(chǔ)上,把24x16KB的程序存儲器,16x16KB的數(shù)據(jù)存儲器,兩路串行接口和兩路DMA都集成在一個芯片上,運行速度快,指令周期可達25ns。它具有2048個存儲單元的I/O口,支持并行的外圍設(shè)備以及相應(yīng)的可編程等待狀態(tài)發(fā)生器,適合與不同速度的外設(shè)接口,可擴展性強。
SMC1602B的原理
字符式液晶顯示模塊SMC1602B由一塊5x7點陣液晶屏和控制芯片HD44780及其輔助電路組成。它可以顯示字母、數(shù)字、符號等,顯示容量為16x2 個字符,芯片工作電壓為4.5~5.5V,工作電流為2mA(5V),模塊最佳工作電壓為5V,字符尺寸為4.95x7.95(W×H)mm。
接口信號說明
SMC1602B液晶顯示模塊具有16條接口信號線,包括8條三態(tài)數(shù)據(jù)線,使能信號線E,讀寫選擇信號線R/W,命令/數(shù)據(jù)選擇信號線RS等,其詳細的接口信號說明如表1所示。
其中,VL為液晶屏的參考電源,外接可調(diào)電阻可用來調(diào)節(jié)液晶屏的對比度。R/W為讀寫選擇信號,R/W=1為讀狀態(tài),R/W=0為寫狀態(tài)。RS為寄存器選擇信號,RS=1為指令寄存器,RS=0為數(shù)據(jù)寄存器。E為使能信號,讀狀態(tài)在高電平有效,寫狀態(tài)在高脈沖下降沿有效。這三條控制線用于主控CPU訪問模塊內(nèi)部控制器HD44780使用。
讀寫操作時序
SMC1602B模塊接口控制時序適合M6800系列MPU,具有較寬的適應(yīng)能力,其具體讀、寫操作時序如圖1所示。
圖1 SMC1602B讀、寫操作時序圖[!--empirenews.page--]
RAM地址映射圖
模塊SMC1602B內(nèi)部的控制器是日立公司的HD44780,它是專用于字符顯示的液晶顯示控制驅(qū)動集成電路,集驅(qū)動器與控制器于一體,內(nèi)藏有顯示緩沖區(qū) DDRAM和用戶自定義的字符發(fā)生器CGRAM。其中,顯示緩沖區(qū)DDRAM是用來存儲顯示字符代碼的,共有80x8位(80個字節(jié)),CPU可對 DDRAM進行讀、寫操作,讀、寫單元的地址由內(nèi)部地址計數(shù)器AC提供。DDRAM各個單元均對應(yīng)著顯示屏上的各個字符位,他們的對應(yīng)關(guān)系如圖2所示。即使顯示屏沒有這么大,但他們的對應(yīng)關(guān)系依然存在,由HD44780內(nèi)定的,是不可更改的。因此,當(dāng)需要在屏幕上某行某列顯示某個字符時,CPU只需將字符對應(yīng)的數(shù)據(jù)寫入顯示DDRAM相應(yīng)的地址處即可,該模塊會自動將顯示DDRAM內(nèi)容送往液晶屏,完成相應(yīng)的顯示。可見,SMC1602B模塊能根據(jù)主控 CPU寫入到該模塊的各種命令字及顯示RAM數(shù)據(jù),自行對液晶屏進行一系列操作,而不再需要主控CPU的參與。
圖2 RAM地址映射圖
圖3 ADSP2181與SMC1602B的接口電路
指令說明
液晶模塊SMC1602B具有特定的指令,指令格式非常簡單,主控CPU只需通過接口將指令寫入到液晶模塊就可設(shè)置工作方式,或者控制液晶模塊實現(xiàn)某種功能。常用的指令如表2所示。
狀態(tài)字說明
液晶顯示模塊SMC1602B內(nèi)有一個忙標(biāo)志位STA7,它反映了控制器HD44780內(nèi)部運行時序狀態(tài)。當(dāng)STA7=1時,表示內(nèi)部操作正在運行,不能接受外部數(shù)據(jù);當(dāng)STA7=0時,表示已準(zhǔn)備好接收,可以隨時接收CPU發(fā)來的數(shù)據(jù)和命令,這是SMC1602B向CPU發(fā)出的唯一聯(lián)絡(luò)信號。CPU對模塊的讀操作(RS=0,R/W=1),讀出來的狀態(tài)字是忙標(biāo)志位與7位當(dāng)前數(shù)據(jù)地址指針值的組合,其格式如表3所示。因此,對控制器每次進行讀寫操作之前,都必須進行讀寫檢測,確保STA7為0。
圖4 液晶顯示流程圖[!--empirenews.page--]
ADSP2181與SMC1602B硬件接口設(shè)計
一般地,主控CPU與SMC1602B液晶模塊的硬件接口有總線方式和模擬口線方式兩種,這里,我們以ADSP2181作為主控CPU,使用總線接口方式,如圖3所示。通過數(shù)據(jù)總線與控制總線,直接采用I/O設(shè)備訪問形式控制該液晶顯示模塊。
根據(jù)液晶模塊的讀寫時序要求,使能信號E由適合的邏輯器件組合控制,同時也可增加適當(dāng)?shù)挠布訒r。由于液晶顯示模塊SMC1602B是8位μP接口的,故只須將ADSP2181的低8位數(shù)據(jù)總線與之相連即可。工作時,地址線A9為低電平,同時,地址線A1和A0分別控制模塊的讀寫選擇信號R/W與命令數(shù)據(jù)選擇信號RS,相應(yīng)的操作即可直接對DSP的I/O存儲器空間進行。根據(jù)接口電路設(shè)計,相應(yīng)的I/O操作口地址有四種:寫指令為IO(0X000),寫數(shù)據(jù)為IO(0X001),讀狀態(tài)為IO(0X010),讀數(shù)據(jù)為IO(0X011)。
ADSP2181與SMC1602B軟件接口設(shè)計
相對快速的DSP而言,SMC1602B是一慢速的外設(shè),但ADSP2181內(nèi)置有可編程等待狀態(tài)產(chǎn)生器,等狀態(tài)控制寄存器映射于數(shù)據(jù)存儲區(qū)DM (0X3FFE)。在CPU讀寫I/O端口時,通過增加0~7個等待狀態(tài),可以加長CPU等待外部I/O口響應(yīng)的時間,完全滿足SMC1602B的時序要求。另外,在連續(xù)向液晶模塊寫數(shù)據(jù)時,為了解決LCD反應(yīng)太慢的問題,在連續(xù)寫之間調(diào)用了延時5ms子程序。在系統(tǒng)DSP程序中,液晶顯示模塊子程序流程圖如圖4所示,其中,對LCD讀寫位于I/O存儲器地址0X000~0X003。(部分主要程序略,詳見本刊網(wǎng)站www.eaw.com.cn)
結(jié)語
本文以ADSP2181為主控CPU,實現(xiàn)了與液晶模塊SMC1602B的接口,較好地解決了兩者之間的速度匹配問題,類似地,51系列、96系列、 M6800系列等單片機以及其他系列的DSP器件都可以實現(xiàn)液晶顯示。以液晶模塊SMC1602B作為某測控系統(tǒng)的顯示部分,具有工作電壓低,顯示清晰可靠,受干擾小等優(yōu)點,同時也要注意到其反應(yīng)較慢的缺陷。