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