《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于EZ-USB FX2的LED圖文顯示系統(tǒng)
基于EZ-USB FX2的LED圖文顯示系統(tǒng)
來(lái)源:微型機(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é)果表明,通過(guò)調(diào)用不同的字庫(kù),本系統(tǒng)可以動(dòng)態(tài)地顯示HZK16中的漢字、ASC16中的字符和對(duì)應(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é)果表明,通過(guò)調(diào)用不同的字庫(kù),本系統(tǒng)可以動(dòng)態(tài)地顯示HZK16中的漢字、ASC16中的字符和對(duì)應(yīng)尺寸的自定義圖片。
關(guān)鍵詞: USB; LED; 圖文顯示

    LED顯示屏可以動(dòng)態(tài)地顯示各種文字和圖形圖像,具有亮度高、功耗低、壽命長(zhǎng)和性能穩(wěn)定等優(yōu)點(diǎn),正受到廣泛的重視并得到迅速的發(fā)展[1]。本系統(tǒng)的LED顯示屏采用異步控制方式,即在PC上編輯好圖文,通過(guò)USB總線(xiàn)傳入LED屏,實(shí)現(xiàn)脫機(jī)自動(dòng)播放。
   USB自提出以來(lái)便得到各PC、PC外設(shè)和芯片制造廠(chǎng)商的廣泛支持。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)盡量簡(jiǎn)單。USB設(shè)備與PC的通信以及復(fù)雜的運(yùn)算(如圖文字模的提取等)都交由運(yùn)行在PC的應(yīng)用軟件來(lái)實(shí)現(xiàn)。本系統(tǒng)采用了Cypress公司提供的通用驅(qū)動(dòng)程序,也可用相關(guān)驅(qū)動(dòng)程序開(kāi)發(fā)工具自行定制。
1 硬件設(shè)計(jì)
1.1 接口芯片選擇和外圍電路

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

1.2 LED屏驅(qū)動(dòng)電路
    LED顯示屏可以采用點(diǎn)掃描、行掃描或列掃描[1]。本系統(tǒng)選用行掃描,即顯示屏是一行一行地被點(diǎn)亮。雖然每次都只有一行亮,但由于人眼視覺(jué)暫留效應(yīng),看到的仍然是全屏穩(wěn)定的圖像。本系統(tǒng)需要分時(shí)驅(qū)動(dòng)16行和64列LED點(diǎn)陣,若采用I/O口直接驅(qū)動(dòng)的方法比較簡(jiǎn)單,但需要大量的I/O口。由于控制芯片 的I/O口個(gè)數(shù)有限,也考慮到今后擴(kuò)展的需要,顯示屏的行驅(qū)動(dòng)選用3線(xiàn)-8線(xiàn)譯碼器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連接,以此類(lèi)推至第4片。由于I/O口的驅(qū)動(dòng)能力有限,列驅(qū)動(dòng)采用了PNP型晶體管。晶體管發(fā)射極接電源,集電極接LED陽(yáng)極,基極經(jīng)限流電阻接74HC595輸出端,這樣利用晶體管的電流放大作用,僅需提供幾毫安的驅(qū)動(dòng)電流就可控制對(duì)應(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í)鐘脈沖上升沿,將本行對(duì)應(yīng)的圖文字模依次送入8個(gè)列移位寄存器中,并鎖存在鎖存器中,再在ST_CP端產(chǎn)生1個(gè)時(shí)鐘脈沖上升沿,將字模并行輸出到對(duì)應(yīng)的64根列控制引腳線(xiàn)上,若該列的LED陽(yáng)極為高電平,則對(duì)應(yīng)的LED被點(diǎn)亮;若該列的LED陽(yáng)極為低電平,則對(duì)應(yīng)的LED為暗。同理,依次選擇第2~16行,點(diǎn)亮對(duì)應(yīng)的LED并循環(huán),此時(shí)顯示屏就會(huì)顯示相應(yīng)的圖文。
2 軟件設(shè)計(jì)
2.1 固件程序設(shè)計(jì)

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

 

 

    USB設(shè)備上電/復(fù)位后,工作分配器函數(shù)TD_Init()完成系統(tǒng)的初始化,主要包括對(duì)CY7C68013A 的I/O口和EP2端口、74HC138和74HC595的使能端的初始化。然后通過(guò)調(diào)用工作分配器函數(shù)TD_Poll()啟動(dòng)采樣,判斷是否有EP2OUT中斷發(fā)生。若有中斷發(fā)生,則首先判斷EP2FIFOBUF[0],若等于0x00,則調(diào)用靜態(tài)顯示函數(shù)displaystatic(),將PC通過(guò)USB總線(xiàn)傳來(lái)的數(shù)據(jù)放在EP2OUTBUF[1]~EP2OUTBUF[128]中,根據(jù)這些數(shù)據(jù)依次驅(qū)動(dòng)LED顯示屏的行和列,更新LED顯示;若不等于0x00則調(diào)用對(duì)應(yīng)的動(dòng)態(tài)顯示子函數(shù),目前包括上下左右移動(dòng),今后還可以根據(jù)需要增加相應(yīng)的效果函數(shù)。若沒(méi)有中斷發(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通信的問(wèn)題,因此采用了動(dòng)態(tài)鏈接庫(kù)(DLL)和應(yīng)用程序相結(jié)合的方式編寫(xiě)應(yīng)用軟件。動(dòng)態(tài)鏈接庫(kù)通過(guò)調(diào)用相應(yīng)的API函數(shù),利用驅(qū)動(dòng)程序建立與底層硬件的通信,應(yīng)用程序?yàn)橛脩?hù)提供一個(gè)直觀的軟件界面方便操作[3]。本系統(tǒng)部分應(yīng)用程序流程圖如圖4所示。
     初始化后,調(diào)用DLL函數(shù)OPEN()打開(kāi)USB設(shè)備。若要顯示ASC16或HZK16字庫(kù)中的文字,則首先判斷首字節(jié)的ASCII碼qh,若qh<128則以只讀方式打開(kāi)ASC16,代入式子offset=qh×16+1,根據(jù)offset(字庫(kù)中字模的起始地址)將16 bit字模數(shù)據(jù)讀入內(nèi)存;若qh≥128,則接著讀取第2個(gè)字節(jié)的ASCII碼wh,打開(kāi)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)陣信息的形式通過(guò)USB總線(xiàn)發(fā)送至下位機(jī)顯示。若要顯示自定義的圖形(圖中未畫(huà)出),可以用鼠標(biāo)左鍵單擊的形式在軟件界面上直接設(shè)計(jì)圖形,或是讀取自定義圖文庫(kù)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))它可以方便地與同類(lèi)條屏級(jí)聯(lián)組成更大的LED顯示屏。通過(guò)調(diào)用不同的字庫(kù),本系統(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)載。
主站蜘蛛池模板: 日韩在线视频不卡一区二区三区 | 成人播放 | 欧美呦呦在线 | 狠狠色丁香婷婷综合精品视频 | 小黄漫画激情四射在线观看 | 毛片在线不卡 | 国产japanese孕妇孕交 | 一本久久综合亚洲鲁鲁五月天 | 麻豆大豆行情一区 | 日本h片在线 | 污视频免费观看网站 | 黄色视屏在线免费播放 | 天天舔天天干 | 国产精品一区二区不卡 | 亚洲欧美日韩高清 | 婷婷国产| 天天操天天干天天拍 | 天天拍拍夜夜出水 | 人人狠人人透人人爱 | 小毛片在线观看 | 国产欧美精品 | 九九亚洲精品自拍 | 人人爱天天做夜夜爽88 | 日日干天天干 | 波多野结衣国产一区二区三区 | 美女丝袜控 | 国产丝袜视频在线观看 | 国产日韩精品欧美一区视频 | 免费视频你懂得 | 中文国产在线观看 | 九草在线免费观看 | 日韩高清一区二区三区不卡 | 国产成人在线视频网站 | 亚洲 中文 欧美 日韩 在线人 | 国产成人综合在线观看 | 两性午夜又粗又大又爽视频 | 波多野结衣不卡 | 天天操夜夜爱 | 久久国产免费观看精品1 | 人人看人人搞 | 色老汉首页 |