液晶顯示控制器SED1330與DSP的接口應(yīng)用
dsp與液晶顯示模塊sed1330的接口設(shè)計(jì)
tms320lf2407a對(duì)sed1330接口控制板的訪問(wèn)有直接訪問(wèn)和間接訪問(wèn)兩種方式。直接訪問(wèn)方式是將dsp的讀寫信號(hào)線與sed1330接口控制板引出的讀寫信號(hào)線直接相連,其時(shí)序由dsp內(nèi)部讀寫邏輯控制,但是由于液晶顯示模塊是dsp的一個(gè)慢速外設(shè),要使兩者的速度達(dá)到匹配,還必須加入一定的等待狀態(tài)才能滿足要求,考慮到dsp內(nèi)部等待狀態(tài)發(fā)生器所能插入的等待周期非常有限(只能給指定的存儲(chǔ)空間插入一個(gè)等待狀態(tài)),在不添加額外的硬件設(shè)備的情況下,很難滿足設(shè)備的要求,所以設(shè)計(jì)中只采用間接訪問(wèn)方式,即用dsp的i/o口來(lái)控制seed1330,而通過(guò)軟件編程來(lái)模擬sed1330的接口時(shí)序。
在此設(shè)計(jì)中,dsp的主頻一般為30mhz,液晶顯示模塊接口控制時(shí)序采用m8080時(shí)序,它與dsp之間的接口電路如圖2所示,其中,tms320lf2407的iopb0-iopb7用作數(shù)據(jù)接口,與液晶顯示模塊的數(shù)據(jù)線db0-db7相連,以完成與sed1330間的數(shù)據(jù)傳送,iopa6與wr相連時(shí),可在寫sed1330時(shí)置為低,iopa7則與rd相連時(shí),則在讀sed1330時(shí)置為低;cs接地將時(shí)鐘使能sed1330,iopa5與a0相連可決定是數(shù)據(jù)(a0=0),還是指令(a0=1)。背光電壓由逆變器提供,調(diào)節(jié)電位器可以調(diào)節(jié)液晶顯示屏的對(duì)比度。
dsp與sed1330的軟件接口設(shè)計(jì)
為了使液晶屏能夠正常工作,還必須編寫硬件驅(qū)動(dòng)程序,軟件設(shè)計(jì)的關(guān)鍵是對(duì)液晶顯示模塊的初始化,以及對(duì)dsp與sed1330間接口時(shí)序的匹配。
液晶顯示模塊的初始化
初始化程序的主要任務(wù)是根據(jù)所控制的液晶顯示模塊的特性和用戶的顯示要求,寫入適當(dāng)?shù)拿詈蛥?shù),通常以參數(shù)表的形式送入,這些命令和參數(shù)必須首先寫入,如果指令設(shè)置出現(xiàn)錯(cuò)誤,則顯示必定不正常,圖3所示為sed1330的初始化流程,其參數(shù)分別有:system
set(30h、87h、07h、28h、42h、0f0h、28h、00h),scroll(00h、00h、0f0h、80h、25h、0f0h、00h、4bh、00h、00h),hdot
scr(00h),ovlay (1ch),csrform(5dh、07h),csrw(02h、00h),csrdir(指令4ch),disp
on(指令59h)。其中system set的驅(qū)動(dòng)系統(tǒng)結(jié)構(gòu)設(shè)置為單屏,選用外部字符發(fā)生器,字符格式為8×8,字符代碼為80h-9fh,內(nèi)部cgram有效,顯示字符寬度和高度都是8,lcd每行需要的字節(jié)數(shù)為40,點(diǎn)行數(shù)為240,lcd的工作頻率為70hz,顯示內(nèi)存內(nèi)分配給一個(gè)顯示行的單元數(shù)為40字節(jié)。
若需要把文本和圖形混合顯示,則只能設(shè)為二重合成顯示,而三重合成顯示只能用于圖形方式。在雙屏結(jié)構(gòu)下,四個(gè)顯示區(qū)同時(shí)參加二重合成顯示時(shí),一、二顯示區(qū)位于上半屏,三、四顯示區(qū)位于下半屏,并且此時(shí)一、三顯示區(qū)合成為第一層,二、四顯示區(qū)合成為第二層。
sed1330的讀寫時(shí)序
由于本設(shè)計(jì)中的液晶顯示沒(méi)有用dsp的數(shù)據(jù)線,而是用dsp的io口來(lái)模擬液晶控制器的時(shí)序,因此,在設(shè)計(jì)中,用io口來(lái)模擬sed1330的讀寫時(shí)序是重中之重。
sed1330的讀寫時(shí)序有m8080和m6800兩種,本設(shè)計(jì)選用m8080時(shí)序,其時(shí)序如圖4所示,其中的時(shí)間限定如表1所列。
由于dsp的處理速度遠(yuǎn)遠(yuǎn)快于sed1330的顯示速度,所以每次向sed1330送出待顯示的數(shù)據(jù)后,dsp應(yīng)產(chǎn)生一定的延遲以等待響應(yīng)sed1330的顯示,所以在讀寫子程序中,要利用軟件來(lái)產(chǎn)生如上時(shí)序才能對(duì)液晶進(jìn)行正確操作,否則液晶將來(lái)不及顯示而導(dǎo)致錯(cuò)誤,在設(shè)計(jì)過(guò)程中,dsp的讀寫時(shí)序使用軟件模擬,而不是靠dsp的引腳r/w、rd、we與地址數(shù)據(jù)線的定來(lái)保證時(shí)序,這一點(diǎn)在設(shè)計(jì)中應(yīng)特別注意,下面給出筆者在設(shè)計(jì)過(guò)程中縮寫的讀寫子程序:
wr_command:;入口參數(shù)為command
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=1
or #0e020h
sacl padatdir
ldp #4h
lacl command
or #0ff00h
sacl pbdatdir
;iopa6--/wr=0(寫使能)
ldp #mcra>>7
lacl padatdir
or #0e000h
and #0e0b0h
sacl padatdir
rpt #10
nop
;iopa6--/wr=1(寫不使能)
lacl padatdir
or #0e40h
sacl padatdir
ldp #4h
splk #100,yanshi1
call delays1;延時(shí)100us
ret
wr_data:入口參數(shù)為data
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=0
or #0e000h
and #0e0d0h
sacl padatdir
ldp #4h
lacl data1
or #0ff00h
ldp #mcra>>7
sacl pbdatdir
;iopa6--/wr=0(寫使能)
lacl padatdir
or #0e000h
and #0e0b0h
sacl padatdir
rpt #10
nop
;iopa6--/wr=1(寫不使能)
lacl padatdir
or #0e40h
sacl padatdir
ldp #4h
splk #100,yanshi1
call delays1;延時(shí)100us
ret
rd_data;
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=1
or #0e020h
sacl padatdir
;iopa7--/rd=0(讀使能)
lacl padatdir
or #0e000h
and #0e070h
sacl padatdir
lacl pbdatdir
ldp #4h
sacl data2
rpt #10
nop
;iopa7--/rd=1(讀不使能)
ldp #mcra>>7
lacl padatdir
or #0e80h
sacl padatdir
ldp #4h
splk #100,yanshi1
call delaysi;延時(shí)100us
ret
rd_busy:
ldp #mcra>>7
lacl padatdir;配置iopa5--a0=0
or #0e000h
and #0e0d0h
sacl padatdir
;iopa7--/rd=0(讀使能)
lacl padatdir
or #0e000h
and #0e070h
sacl padatdir
lacl pbdatdir
ldp #4h
sacl data3
;iopa7--/rd=1(讀使能)
ldp #mcra>>7
lacl padatdir
or #0e80h
sacl padatdir
ldp #4h
splk #100.yanshi1
call delays1;延時(shí)100us
;判斷是否忙
ldp #4h
bit data2,9
bcnd rd_busy,tc
ret
顯示軟件設(shè)計(jì)程序流程
圖形顯示方式可以顯示數(shù)字、漢字以及各種能繪制出來(lái)的圖形,但是事先必須生成相應(yīng)的點(diǎn)陣文件,實(shí)際上,顯示字符、漢字和圖形都是對(duì)液晶屏上的特定區(qū)域?qū)懭胂鄳?yīng)的數(shù)據(jù),本質(zhì)上沒(méi)有區(qū)別,這些數(shù)據(jù)都存儲(chǔ)在程序中,待顯示時(shí)再將這些數(shù)據(jù)寫入顯示ram中,不過(guò),在顯示漢字字符時(shí),可以將需要顯示的字模提取出來(lái)存儲(chǔ),進(jìn)行顯示時(shí)再直接調(diào)用更為簡(jiǎn)單,想要顯示一幅圖畫時(shí),可以通過(guò)windows附帶的畫圖工具制作一幅320×240象素的黑白位圖,并先將位圖反色,再將處理過(guò)的圖片以16進(jìn)制文件的形式和程序一起燒入外部24lc256中,注意:位圖應(yīng)存入一個(gè)起始地址。設(shè)置三層圖形疊加方式顯示的方法是一樣的,圖5所示是一個(gè)軟件設(shè)計(jì)程序流程圖。需要說(shuō)明的是,當(dāng)dsp上電后,sed1330要能正確復(fù)位,否則將不能正確顯示。
結(jié)束語(yǔ)
sed1330控制器有64kb大容量緩存區(qū),能適用多種規(guī)格的顯示屏,其內(nèi)部固化的字符發(fā)生器可產(chǎn)生160種字模并可外擴(kuò)字符發(fā)生器,而且通過(guò)改變指令參數(shù)可以實(shí)現(xiàn)圖像的閃爍、翻轉(zhuǎn)、移動(dòng)等,從總體性能方面而言,sed1330大大強(qiáng)于同類型的其他控制器,非常適用于各種液晶顯示屏控制系統(tǒng)的設(shè)計(jì)需求。
本文介紹的由該控制器構(gòu)成的液晶顯示方案已成功地通過(guò)了調(diào)試,它與同類型的其他圖形點(diǎn)陣液晶顯示模塊相比,其硬件電路結(jié)構(gòu)簡(jiǎn)單,顯示功能強(qiáng)大,同時(shí)這對(duì)于其他型號(hào)的接口芯片,也有很好的參考價(jià)值。
評(píng)論