基于C8051F020和USB的OLED控制系統(tǒng)設(shè)計
1 引言
與傳統(tǒng)的液晶顯示屏相比,OLED顯示模塊具有高亮度、高對比度、寬視角、響應(yīng)速度快、功耗低等特點。因此,隨著電子產(chǎn)品高度集成化的發(fā)展,OLED顯示模塊在移動終端、工業(yè)控制、便攜式電子產(chǎn)品等領(lǐng)域應(yīng)用十分廣泛。本文介紹了一種將USB技術(shù)應(yīng)用于OLED顯示控制系統(tǒng)中的設(shè)計,該系統(tǒng)以C8051F020為核心控制器件。由于USB具有安裝方便、高速、靈活、低成本、易擴(kuò)展、支持熱插拔等優(yōu)點,使得本系統(tǒng)可以輕松地實現(xiàn)在線數(shù)據(jù)更新,并通過外擴(kuò)的Flash實現(xiàn)系統(tǒng)的脫機(jī)顯示。
2 系統(tǒng)簡介
系統(tǒng)的工作和組成原理如圖1所示。
如圖1所示,整個系統(tǒng)由單片機(jī)、OLED顯示模塊、USB模塊、外擴(kuò)數(shù)據(jù)存儲器模塊組成。核心控制芯片是Silicon公司的C8051F020,這是一款功能強(qiáng)大的單片機(jī);用來在線更新顯示數(shù)據(jù)的USB模塊,它以CH375V作為接口控制芯片,支持USB主機(jī)和USB設(shè)備兩種方式;AMD公司的閃存AM29LV081B作為單片機(jī)外部擴(kuò)展數(shù)據(jù)存儲器。96×64像素的全彩色OLED顯示屏,它的驅(qū)動IC采用Solomon公司的SSD1332。
硬件設(shè)計
3.1 主要芯片介紹
(1)核心控制芯片C8051F020 單片機(jī)C8051F020是完全集成的混合信號系統(tǒng)級SCM芯片,具有64個數(shù)字I/O引腳,具有片內(nèi)VDD監(jiān)視器、看門狗定時器和時鐘振蕩器,是真正能獨立工作的片上系統(tǒng),所有模擬和數(shù)字外設(shè)均可由用戶固件配置為使能/禁止和配置。Flash存儲器還具有在系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲,并允許現(xiàn)場更新8051固件。
(2)USB接口芯片CH375
CH375是一個USB總線的通用接口芯片,支持USB-HOST主機(jī)和USB-DEVICE/SLAVE設(shè)備兩種方式。在本地端,CH375具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機(jī)等控制器的系統(tǒng)總線上。在USB主機(jī)方式下,CH375還提供了串行通訊方式,通過串行輸入、串行輸出和中斷輸出與單片機(jī)等相連接。
CH375的USB主機(jī)方式支持常用的USB全速設(shè)備,外部單片機(jī)可以通過CH375按照相應(yīng)的USB協(xié)議與USB設(shè)備通訊。CH375還內(nèi)置了處理Mass-Storage海量存儲設(shè)備的專用通訊協(xié)議的固件,外部單片機(jī)可以直接以扇區(qū)為基本單位讀寫常用的USB存儲設(shè)備。
3.2 USB模塊硬件電路設(shè)計
本文在C8051F020的使用中需要配置交叉開關(guān),為了方便控制OLED的顯示和系統(tǒng)的控制操作,除了CH375必需的一個中斷外,還配置了兩個定時器中斷T1和T2以及一個外部中斷。將USB連接產(chǎn)生的中斷設(shè)置分配到INT0#,再多一個外部中斷INT1#。還考慮到CH375支持串行通信,所以將其和單片機(jī)的串口通信也設(shè)計在內(nèi),使用TX0和RX0。但是在串行方式下工作,數(shù)據(jù)傳輸速度慢,所以本文的研究采取并行接口。根據(jù)單片機(jī)優(yōu)先權(quán)交叉開關(guān)譯碼表,按照優(yōu)先級別,TX0使用P0.0,RX0使用P0.1,INT0#使用P0.2,T1使用P0.3,INT1#使用P0.4,由于P0.5~0.7由外部數(shù)據(jù)存儲器接口驅(qū)動,所以T2使用P1.0。圖2為USB模塊的連接電路圖。
CH375芯片的RD#和WR#分別連接到單片機(jī)的讀選通輸出引腳RD#(P0.6)和寫選通輸出引腳WR#(P0.7)。CS#由地址譯碼電路驅(qū)動,用于當(dāng)單片機(jī)具有多個外圍器件時進(jìn)行設(shè)備選擇。INT#輸出的中斷請求是低電平有效,連接到單片機(jī)的中斷輸入引腳P0.2,單片機(jī)使用中斷方式獲知中斷請求。當(dāng)WR#為高電平并且CS#和RD#及A0都為低電平時,CH375中的數(shù)據(jù)通過D7~D0輸出;當(dāng)RD#為高電平并且CS#和WR#及A0都為低電平時,D7~D0上的數(shù)據(jù)被寫入CH375芯片中;當(dāng)RD#為高電平并且CS#和WR#都為低電平而A0為高電平時,D7~D0上的數(shù)據(jù)被作為命令碼寫入CH375芯片中。
3.3 外部數(shù)據(jù)存儲模塊
對于全彩的 96×64像素的 OLED屏,每個像素由兩個字節(jié)組成,顯示一幅圖片需要的內(nèi)存空間為 96×64×2=12.288KB,而本文采用的單片機(jī)內(nèi)部只有 64KB的 Flash存儲器,最多只能顯示 5幅圖片,如果要顯示圖像是不可能的,所以必須在外部擴(kuò)展數(shù)據(jù)存儲器,使之能夠顯示動態(tài)圖像。圖 3為外擴(kuò)的 Flash與單片機(jī)的連接框圖。
本文的外部存儲器接口工作在復(fù)用方式,通過配置 PRTSEL(EMIOCF.5)的狀態(tài)決定 EMIF工作在低端口或是高端口錯誤!未找到引用源。。本文對外部存儲器Flash的讀寫采用高端口(P4~P7)。地址總線A19~16使用P4.4~P4.1腳,地址總線A15~8使用 P6口,地址總線低 8位A7~0與數(shù)據(jù)總線復(fù)用 P7口,ALE使用P4.5,RD#使用P4.6,WR#使用 P4.7。
在復(fù)用方式下工作時,要用一個外部鎖存器保持 RAM地址的低 8位。本文的外部鎖存器選74LS373。它由ALE(地址鎖存使能)信號控制,ALE信號由單片機(jī)外部存儲器接口邏輯驅(qū)動。在復(fù)用方式工作時,可以根據(jù) ALE信號的狀態(tài)分兩個階段,在第一個階段,ALE為高電平,鎖存器選通,鎖存器的 Q輸出與 D輸入狀態(tài)相同,P7輸出為地址總線的低 8位。ALE由高變低標(biāo)志第二階段開始,鎖存器的輸出保持不變,即與鎖存器的輸入無關(guān)。在第二階段稍后,當(dāng)RD#(P4.6)或 WR#(P4.7)有效時,數(shù)據(jù)總線控制 P7端口的狀態(tài)。
3.4 OLED顯示模塊
此模塊的驅(qū)動電路核心部分應(yīng)用 Solomon公司的SSD1332芯片,在驅(qū)動電路獲得控制信號和顯示數(shù)據(jù)后,由芯片 SSD1332產(chǎn)生 OLED所需的行驅(qū)動和列驅(qū)動的信號,驅(qū)動OLED,并把顯示數(shù)據(jù)傳送到 OLED顯示。
4 讀取顯示數(shù)據(jù)程序設(shè)計
本文研究的該部分的程序主要是顯示數(shù)據(jù)的采集,它是通過中斷響應(yīng)方式進(jìn)行的。CH375的中斷信號INT#連接單片機(jī)的INT0,設(shè)置成外部中斷,配置為下降沿觸發(fā)輸入,由IT0(TCON.0)和IT1(TCON.2)的設(shè)置決定,IE0(TCON.1)為外部中斷INT0的中斷標(biāo)志,產(chǎn)生中斷后即CPU在轉(zhuǎn)向ISR時自動清除響應(yīng)的中斷標(biāo)志。該中斷的初始化程序如下: void INT_Init(void) {
EA = 1; //中斷總允許
EX0 = 1; //INT0中斷允許
IT0 = 1; //INT0設(shè)置為下降沿觸發(fā)
PX0 = 1; //INT0(/UINT)設(shè)置為高優(yōu)先級,可中斷其他正在執(zhí)行的中斷程序 }
程序中將 CH375中斷信號設(shè)為最高優(yōu)先級,一旦有 U盤插入,立即產(chǎn)生中斷,之后進(jìn)入中斷程序入口,執(zhí)行中斷程序,進(jìn)行文件數(shù)據(jù)的讀取操作。軟件實現(xiàn)如錯誤!未找到引用源。所示,首先調(diào)用CH375DiskConnect()查詢是否真的有 U盤插入,否則的話立即返回主程序,繼續(xù)執(zhí)行原來的程序,如果有 U盤插入,接著調(diào)用CH375Init(),進(jìn)行初始化復(fù)位;然后判斷 U盤是否準(zhǔn)備好,等待其準(zhǔn)備好后,即可調(diào)用函數(shù)CH375FileOpen(),根據(jù)參數(shù)(一般是文件名和完整的路徑名)打開指定的文件。文件如果不能正常打開,可能文件并不存在,立即返回主程序,結(jié)束本次讀取,也可以通過調(diào)用CH375FileEnumer()查詢文件是否存在。文件正常打開后,調(diào)用 CH375ByteLocate()函數(shù)執(zhí)行指針定位,以字節(jié)為單位移動當(dāng)前文件指針,進(jìn)入字節(jié)模式。然后調(diào)用CH375ByteRead(),以字節(jié)為基本單位從當(dāng)前文件讀取數(shù)據(jù)。全部讀完后,調(diào)用CH375FileClose()關(guān)閉文件,并返回主程序,最后完成數(shù)據(jù)的讀取。
5結(jié)論
本文所設(shè)計的系統(tǒng)能夠?qū)崿F(xiàn)文字、圖片和圖像的動靜態(tài)顯示。并將USB接口設(shè)計在內(nèi),實現(xiàn)嵌入式USB主機(jī),使系統(tǒng)可以作為USB主機(jī)與U盤通信,通過讀U盤來完成顯示數(shù)據(jù)的更新,使嵌入式系統(tǒng)和移動存儲設(shè)備能夠在脫離PC機(jī)的情況下進(jìn)行數(shù)據(jù)交換。增強(qiáng)了電路系統(tǒng)的實用性,擴(kuò)大了其應(yīng)用范圍。
評論