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

摘   要:USB2.0接口芯片CY7C68013A為核心,分別采用74HC138和74HC595構成行列控制電路驅動16×64 LED顯示屏,實現高速、動態的顯示圖文信息。詳細介紹了硬件電路、固件程序和應用程序的設計。實驗結果表明,通過調用不同的字庫,本系統可以動態地顯示HZK16中的漢字、ASC16中的字符和對應尺寸的自定義圖片。
關鍵詞: USB; LED; 圖文顯示

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

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

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

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

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

 

 

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

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产高清免费吃奶在线观看 | 国产成人精品日本亚洲语音2 | 操欧美女| 精品樱空桃一区二区三区 | 国产精品青草久久福利不卡 | 国产精品久久福利网站 | 国产高清久久99 | 色婷婷丁香六月 | www.huangse| 久久精品久久久久久久久人 | 天天干天天干天天干天天干 | 激情五月婷婷综合 | 2022男人天堂 | 国内精品久久久久久中文字幕 | 男人天堂伊人 | 国产2021中文天码字幕 | 久久曰 | 99久久这里只有精品 | 五月综合色| 国产精品久久现线拍久青草 | 免费一级在线观看 | 成人亚洲精品7777 | 成人亚洲国产 | 婷婷性| 国产精品深夜福利免费观看 | 加勒比伊人 | 经典三级一区二区三区视频 | 国产在线观看免费完整版中文版 | 99精品久久久久久久 | 久久久久久亚洲精品不卡 | 97国内精品久久久久久久影视 | 国产日产一区二区三区四区五区 | 国产成人精品免费视频下载 | 天堂视频在线观看免费完整版 | 激情六月丁香婷婷四房播 | www.米奇777.com | 日本久久久久中文字幕 | 精彩视频一区二区三区 | 久久久久毛片成人精品 | 99re在线视频免费观看 | 国产在线精品成人一区二区三区 |