《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于EZ-USB FX2的LED圖文顯示系統(tǒng)
基于EZ-USB FX2的LED圖文顯示系統(tǒng)
來源:微型機(jī)與應(yīng)用2012年第14期
楊晶菁1, 張 浩2
(1. 福州大學(xué) 電氣工程與自動(dòng)化學(xué)院,,福建 福州350002; 2. 福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)
摘要: 以USB2.0接口芯片CY7C68013A為核心,分別采用74HC138和74HC595構(gòu)成行列控制電路驅(qū)動(dòng)16×64 LED顯示屏,實(shí)現(xiàn)高速,、動(dòng)態(tài)的顯示圖文信息,。詳細(xì)介紹了硬件電路、固件程序和應(yīng)用程序的設(shè)計(jì),。實(shí)驗(yàn)結(jié)果表明,,通過調(diào)用不同的字庫,本系統(tǒng)可以動(dòng)態(tài)地顯示HZK16中的漢字,、ASC16中的字符和對應(yīng)尺寸的自定義圖片,。
Abstract:
Key words :

摘   要:USB2.0接口芯片CY7C68013A為核心,分別采用74HC138和74HC595構(gòu)成行列控制電路驅(qū)動(dòng)16×64 LED顯示屏,實(shí)現(xiàn)高速,、動(dòng)態(tài)的顯示圖文信息,。詳細(xì)介紹了硬件電路、固件程序和應(yīng)用程序的設(shè)計(jì),。實(shí)驗(yàn)結(jié)果表明,,通過調(diào)用不同的字庫,本系統(tǒng)可以動(dòng)態(tài)地顯示HZK16中的漢字,、ASC16中的字符和對應(yīng)尺寸的自定義圖片,。
關(guān)鍵詞: USB; LED; 圖文顯示

    LED顯示屏可以動(dòng)態(tài)地顯示各種文字和圖形圖像,,具有亮度高、功耗低,、壽命長和性能穩(wěn)定等優(yōu)點(diǎn),,正受到廣泛的重視并得到迅速的發(fā)展[1]。本系統(tǒng)的LED顯示屏采用異步控制方式,,即在PC上編輯好圖文,通過USB總線傳入LED屏,,實(shí)現(xiàn)脫機(jī)自動(dòng)播放。
   USB自提出以來便得到各PC,、PC外設(shè)和芯片制造廠商的廣泛支持,。USB最大的特點(diǎn)是支持即插即用和熱插拔,,允許多達(dá)127個(gè)外設(shè)同時(shí)連接至PC的一個(gè)USB接口上,。目前,USB接口主要有USB1.1和USB2.0兩種,。本系統(tǒng)采用USB2.0接口,支持速率最高達(dá)480 Mb/s,,實(shí)現(xiàn)數(shù)據(jù)高速傳輸。
    本系統(tǒng)由硬件和軟件組成,硬件包括USB2.0接口芯片外圍電路和LED屏控制電路;軟件包括固件程序和應(yīng)用軟件,其中,固件程序與系統(tǒng)硬件緊密相關(guān),,二者配合控制LED點(diǎn)陣的亮滅,。由于設(shè)備CPU運(yùn)行速度較慢且內(nèi)存較小,因此固件程序應(yīng)盡量簡單,。USB設(shè)備與PC的通信以及復(fù)雜的運(yùn)算(如圖文字模的提取等)都交由運(yùn)行在PC的應(yīng)用軟件來實(shí)現(xiàn),。本系統(tǒng)采用了Cypress公司提供的通用驅(qū)動(dòng)程序,也可用相關(guān)驅(qū)動(dòng)程序開發(fā)工具自行定制,。
1 硬件設(shè)計(jì)
1.1 接口芯片選擇和外圍電路

    USB接口芯片大致可以分為單獨(dú)運(yùn)作的USB接口芯片,、內(nèi)含USB單元的微處理器和特定的接口轉(zhuǎn)換芯片3類。其中,前兩種芯片需要自行開發(fā)驅(qū)動(dòng)程序,,接口轉(zhuǎn)換芯片可以利用虛擬串口等驅(qū)動(dòng)程序縮短開發(fā)周期,,但數(shù)據(jù)傳輸速率較低。與第二種芯片相比,,第一種芯片的開發(fā)者需要面對應(yīng)用和如何使用USB2.0兩方面的工作,,開發(fā)周期長,硬件集成度較低,。
    本系統(tǒng)采用內(nèi)含USB單元的微處理器CY7C68013A,其優(yōu)點(diǎn)是集成了USB2.0收發(fā)器,、智能SIE、增強(qiáng)的8051微控制器和可編程的外圍接口,數(shù)據(jù)傳輸率達(dá)到56 MB/s,,可以硬件處理USB1.1和USB2.0協(xié)議,從而減少開發(fā)時(shí)間,、確保USB的兼容性、提高硬件的集成度和可靠性[2],。
    由于CY7C68013的集成度高,,所以它的外圍電路比較簡單,,主要有供電電路、串行I2C總線電路以及復(fù)位和喚醒電路,。
    串行I2C總線電路圖1所示,。其中,SDA和SCL分別為I2C總線的數(shù)據(jù)線和時(shí)鐘線,,因?yàn)槭荗C輸出,,所以需經(jīng)2.2 kΩ上拉電阻接電源[4]。SDA接選擇開關(guān)SW2,,這是因?yàn)樵诠碳绦蛘{(diào)試初期,,需要多次修改,可將編譯好的HEX文件下載到CY7C68013A中的RAM中, 數(shù)據(jù)斷電消失,,調(diào)試比較方便,,此時(shí)SW2處于斷開位置;到后期,,固件程序調(diào)試完畢,,可將I2C文件固化在EEPROM中,利用I2C上電后自動(dòng)從EEPROM中讀入進(jìn)行枚舉,,此時(shí)SW2處于圖1所示位置,即接通,。另外,EEPROM是電可擦除的,SW2與專用固件配合可以利用PC擦除已有數(shù)據(jù),,重新編程,,提高了硬件的利用率。由于芯片已經(jīng)將I2C總線集成,,且采用的是24LC64(8 KB)的EEPROM,,因此相應(yīng)的地址線A2~A0為001。

1.2 LED屏驅(qū)動(dòng)電路
    LED顯示屏可以采用點(diǎn)掃描,、行掃描或列掃描[1],。本系統(tǒng)選用行掃描,即顯示屏是一行一行地被點(diǎn)亮,。雖然每次都只有一行亮,,但由于人眼視覺暫留效應(yīng),看到的仍然是全屏穩(wěn)定的圖像,。本系統(tǒng)需要分時(shí)驅(qū)動(dòng)16行和64列LED點(diǎn)陣,,若采用I/O口直接驅(qū)動(dòng)的方法比較簡單,但需要大量的I/O口,。由于控制芯片 的I/O口個(gè)數(shù)有限,,也考慮到今后擴(kuò)展的需要,顯示屏的行驅(qū)動(dòng)選用3線-8線譯碼器74HC138,,列驅(qū)動(dòng)選用8 bit串行輸入轉(zhuǎn)并行輸出移位寄存器芯片74HC595,。這樣就可以采用很少的I/O口控制盡量多的行和列,。
    行驅(qū)動(dòng)由2片74HC138級(jí)聯(lián)組成,共16個(gè)并行數(shù)據(jù)輸出端,,分別控制點(diǎn)陣模塊的16個(gè)同名行,。列驅(qū)動(dòng)由8片74HC595組成,共64個(gè)輸出端,,分別控制點(diǎn)陣模塊的同名列,。部分電路如圖2所示。

    行驅(qū)動(dòng):U2為低位片,,U3為高位片,,A3~A0為4 bit譯碼輸入端。列驅(qū)動(dòng): 4片74HC595一組,,共兩組,。以第一組為例,DS1為串行數(shù)據(jù)輸入端,;第1片的Q7與第2片的DS連接,,第2片的Q7與第3片的DS連接,以此類推至第4片,。由于I/O口的驅(qū)動(dòng)能力有限,列驅(qū)動(dòng)采用了PNP型晶體管,。晶體管發(fā)射極接電源,,集電極接LED陽極,基極經(jīng)限流電阻接74HC595輸出端,,這樣利用晶體管的電流放大作用,,僅需提供幾毫安的驅(qū)動(dòng)電流就可控制對應(yīng)LED的亮滅了。
    以顯示第一行為例,,首先,,CY7C68013A將行驅(qū)動(dòng)使能端置0,輸出”0000”到行驅(qū)動(dòng)的譯碼輸入端,。此時(shí)選通低位片,,而高位片不工作,輸出16 bit二進(jìn)制為0xFFFE,,使得第一行LED的陰極為低電平,,其他行LED的陰極均為高電平。然后,,CY7C68013A在SH_CP端產(chǎn)生64個(gè)連續(xù)的時(shí)鐘脈沖上升沿,,將本行對應(yīng)的圖文字模依次送入8個(gè)列移位寄存器中,并鎖存在鎖存器中,,再在ST_CP端產(chǎn)生1個(gè)時(shí)鐘脈沖上升沿,,將字模并行輸出到對應(yīng)的64根列控制引腳線上,,若該列的LED陽極為高電平,則對應(yīng)的LED被點(diǎn)亮,;若該列的LED陽極為低電平,,則對應(yīng)的LED為暗。同理,,依次選擇第2~16行,,點(diǎn)亮對應(yīng)的LED并循環(huán),此時(shí)顯示屏就會(huì)顯示相應(yīng)的圖文,。
2 軟件設(shè)計(jì)
2.1 固件程序設(shè)計(jì)

    固件程序是指運(yùn)行在設(shè)備CPU中的程序,只有在該程序運(yùn)行時(shí),,外設(shè)才能被稱為具有給定功能的外部設(shè)備[2]。CY7C68013A開發(fā)包提供了固件程序框架和固件函數(shù)庫[2],,在Keil C51環(huán)境下編寫,,降低了開發(fā)難度,縮短了開發(fā)周期,。本系統(tǒng)固件程序流程圖如圖3所示,。

 

 

    USB設(shè)備上電/復(fù)位后,工作分配器函數(shù)TD_Init()完成系統(tǒng)的初始化,,主要包括對CY7C68013A 的I/O口和EP2端口,、74HC138和74HC595的使能端的初始化。然后通過調(diào)用工作分配器函數(shù)TD_Poll()啟動(dòng)采樣,,判斷是否有EP2OUT中斷發(fā)生,。若有中斷發(fā)生,則首先判斷EP2FIFOBUF[0],若等于0x00,則調(diào)用靜態(tài)顯示函數(shù)displaystatic(),將PC通過USB總線傳來的數(shù)據(jù)放在EP2OUTBUF[1]~EP2OUTBUF[128]中,,根據(jù)這些數(shù)據(jù)依次驅(qū)動(dòng)LED顯示屏的行和列,更新LED顯示,;若不等于0x00則調(diào)用對應(yīng)的動(dòng)態(tài)顯示子函數(shù),目前包括上下左右移動(dòng),,今后還可以根據(jù)需要增加相應(yīng)的效果函數(shù),。若沒有中斷發(fā)生,則繼續(xù)等待,,同時(shí)保持LED屏的顯示,。其中靜態(tài)顯示函數(shù)displaystatic()部分程序如下:
    for(n=1;n<=16;n++)
    {       chooseraw_138(n);//選擇行
         chooseline_5951(EP2FIFOBUF[i], EP2FIFOBUF[i+1]);
                                         //第1個(gè)字模
    chooseline_5951(EP2FIFOBUF[i+32],EP2FIFOBUF[i+
            33]);                        //第2個(gè)字模
    chooseline_5952(EP2FIFOBUF[i+64],EP2FIFOBUF[i+
            65]);                          //第3個(gè)字模
    chooseline_5952(EP2FIFOBUF[i+96],EP2FIFOBUF[i+
            97]);                        //第4個(gè)字模
            stcp1=0;stcp2=0; stcp1=1;stcp2=1;
                             //產(chǎn)生1個(gè)時(shí)鐘脈沖上升沿
        ……}
2.2 應(yīng)用軟件設(shè)計(jì)
    本系統(tǒng)涉及與USB通信的問題,因此采用了動(dòng)態(tài)鏈接庫(DLL)和應(yīng)用程序相結(jié)合的方式編寫應(yīng)用軟件,。動(dòng)態(tài)鏈接庫通過調(diào)用相應(yīng)的API函數(shù),,利用驅(qū)動(dòng)程序建立與底層硬件的通信,應(yīng)用程序?yàn)橛脩籼峁┮粋€(gè)直觀的軟件界面方便操作[3],。本系統(tǒng)部分應(yīng)用程序流程圖如圖4所示,。
     初始化后,調(diào)用DLL函數(shù)OPEN()打開USB設(shè)備。若要顯示ASC16或HZK16字庫中的文字,,則首先判斷首字節(jié)的ASCII碼qh,若qh<128則以只讀方式打開ASC16,,代入式子offset=qh×16+1,根據(jù)offset(字庫中字模的起始地址)將16 bit字模數(shù)據(jù)讀入內(nèi)存,;若qh≥128,則接著讀取第2個(gè)字節(jié)的ASCII碼wh,,打開HZK16,代入式子offset=(94×(qh-0xa0-1)+(wh-0xa0-1))×32,,根據(jù)offset將32 bit字模數(shù)據(jù)讀入內(nèi)存,。然后在軟件界面上顯示文字點(diǎn)陣,同時(shí)調(diào)用DLL函數(shù)OUTPUT()將處理好的字模數(shù)據(jù)以點(diǎn)陣信息的形式通過USB總線發(fā)送至下位機(jī)顯示,。若要顯示自定義的圖形(圖中未畫出),,可以用鼠標(biāo)左鍵單擊的形式在軟件界面上直接設(shè)計(jì)圖形,或是讀取自定義圖文庫ZDK16,,將處理好的字模數(shù)據(jù)發(fā)送給下位機(jī)顯示,。最后調(diào)用DLL函數(shù)CLOSE()關(guān)閉USB設(shè)備。
    本文設(shè)計(jì)的LED動(dòng)態(tài)圖文顯示系統(tǒng)符合USB2.0協(xié)議標(biāo)準(zhǔn),,LED顯示屏為16×64條屏(2塊16×32條屏級(jí)聯(lián))它可以方便地與同類條屏級(jí)聯(lián)組成更大的LED顯示屏,。通過調(diào)用不同的字庫,本系統(tǒng)可以動(dòng)態(tài)顯示各種圖文信息,顯示效果如圖5所示,。

參考文獻(xiàn)
[1] 諸昌鈐.LED 顯示屏系統(tǒng)原理及工程技術(shù)[M].成都: 電子科技大學(xué)出版社,2000.
[2] 許永和.EZ-USB FX系列單片機(jī)USB外圍設(shè)備設(shè)計(jì)與應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2002.
[3] 張立科.Windows API程序設(shè)計(jì)參考大全[M].北京:人民郵電出版社, 2006.
[4] EZ-USB FX2 CY68013 Technical Reference Manual[DB/OL].Cypress Semiconductor 2001.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。