摘 要:介紹一種基于EZ-USB FX2單片機的LED點陣顯示屏控制系統(tǒng)的實現(xiàn)方法,討論USB 控制器EZ_ USB FX2(CY7C68013)的性能,給出該系統(tǒng)的軟硬件實現(xiàn)方案,包括CY7C68013的固件程序和計算機主機用戶程序。將系統(tǒng)讀取的上位機數(shù)據(jù)通過USB接口傳輸?shù)紽X2單片機,由單片機端點2緩沖區(qū)寄存器進行存儲,再對數(shù)據(jù)進行讀取和顯示,從而實現(xiàn)由FX2單片機完成USB通信及顯示控制,省去額外的單片機當控制器。具有友好的人機交互界面和快速實時顯示的特點。經(jīng)過實踐證明,該方案實現(xiàn)的LED點陣顯示屏系統(tǒng)能基本滿足符號和文字顯示的需要。
關(guān)鍵詞:EZ-USB FX2;LED點陣顯示屏;點陣漢字庫;固體程序
中圖分類號:TP368.1文獻標識碼:A
文章編號:1004-373X(2010)02-034-04
LED Dot_matrix Display Based on EZ-USB FX2
HUANG Jianbin,QIU Hebo,DAI Xiang,CHENG Shuying,LIN Peijie
(College of Physics and Information Engineering,F(xiàn)uzhou University,F(xiàn)uzhou,350108,China)
Abstract:An implementation of LED dot_matrix display based on EZ-USB FX2 MCU is introduced.The performance of USB controller EZ_ USB FX2 (CY7C68013 ) and its hardware and software implementation are discussed,including firmware design of CY7C68013 MCU and computer host user program.The display data from computer are transmitted to FX2 MCU through USB interface and stored in endpoint 2 register,the data can be read and displayed.Thus the FX2 MCU can complete USB communication and display control,while it can get rid of additional MUC controller.The system has characteristics of fast real_time display and it can provide a friendly interface between human and machine.It is proved that the LED dot_matrix display system based on this solution can satisfy the requirement of symbol and word display.
Keywords:EZ-USB FX2;LED dot_matrix display;dot_matrix Chinese character library;firmware program
0 引 言
LED顯示屏能直觀形象地顯示各種不同的圖案、文本等信息,是現(xiàn)代都市的一種常用信息發(fā)布手段。它廣泛用于證券交易、金融、交通、體育、商場導(dǎo)購促銷顯示、新聞及廣告顯示、車站機場班次時間資訊顯示,比賽電子記分牌等。當前市場上流行的脫機LED顯示屏控制系統(tǒng)的特點可以概括為兩點:
(1) 人機交互系統(tǒng)由計算機控制,每一種顯示屏控制系統(tǒng)對應(yīng)著一種控制軟件,LED顯示屏用戶將要顯示的文本或圖片通過上位機程序輸入計算機,然后由上位機程序提取文本或圖片的點陣信息并保存;
(2) 通信傳輸系統(tǒng)為有線控制,采用有線電纜作為傳輸介質(zhì)——多數(shù)為RS 232總線或是RS 485總線,根據(jù)PC機配置的標準串行接口,進行電平轉(zhuǎn)換。計算機通過上述總線將點陣信息送給顯示屏掃描控制系統(tǒng)掃描顯示[1]。
這兩種方式都需要單片機控制器,增加了成本,而且采用RS 232總線,插拔不方便,會給用戶帶來不便。本文介紹的方案是可將EZ-USB作為USB接口與PC相連,通過PC機將要顯示的漢字字模提取出來,利用EZ-USB內(nèi)置的8051處理器控制點陣LED顯示在屏上,省去了單片機控制器。具有人機界面好、速度快、可實時熱插拔、成本低等優(yōu)點。
1 系統(tǒng)硬件設(shè)計
1.1 CY7C68013芯片介紹
這里選用的CY7C68103[2]芯片屬于Cypress公司的EZ-USB FX2系列。該芯片的封裝為56_pin SSOP,它是該系列中功耗最低的。考慮到EZ-USB FX2系列芯片的內(nèi)部結(jié)構(gòu)相同,這里將主要介紹FX2的特點。Cypress EZ-USB FX2是世界上第一款USB 2.0集成微控制器。它在一個芯片內(nèi)集成了USB收發(fā)器、串行接口引擎(SIE),增強型8051微控制器(CPU)和一個通用可編程接口(GPIF)。圖1是EZ-USB FX2的56_pin封裝結(jié)構(gòu)簡圖\\。
圖1 EZ-USB FX2內(nèi)部結(jié)構(gòu)圖
集成的USB收發(fā)器通過USB電纜的D+和D-線連接到主機,再經(jīng)串行接口引擎(SIE)進行數(shù)據(jù)的編碼和解碼,完成錯誤校驗、位填充等與USB協(xié)議有關(guān)的功能。最終,SIE傳輸來自或者送往USB接口的數(shù)據(jù)。EZ-USB FX2的SIE可以在12 Mb/s和480 Mb/s兩種速率下運行。CPU采用具有更快執(zhí)行速度和更多特點的增強型8051,它的內(nèi)部RAM可用于程序和數(shù)據(jù)存儲。對于典型的基于EZ-USB FX2的USB設(shè)備,CY7C68013的CPU具有雙重功能[2]。
(1) 它執(zhí)行高級的USB協(xié)議。該功能通過控制端點(端點0)服務(wù)與主機請求實現(xiàn);
(2) 通常的系統(tǒng)應(yīng)用。對于CPU來說,由于USB 2.0支持的數(shù)據(jù)傳輸速率太高,使其不能直接處理USB數(shù)據(jù)。所以,CPU只是簡單的配置接口,當EZ-USB FX2的FIFO在USB與外部接口之間開始傳輸數(shù)據(jù)后就退出該通信通路。
1.2 USB控制電路設(shè)計
USB控制器及其外圍電路組成了LED點陣顯示屏的控制和數(shù)據(jù)傳輸模塊,這部分電路主要負責傳輸來自PC上位機的數(shù)據(jù)到LED點陣顯示屏顯示,并負責與PC通信。由于CY7C68013集成了多重功能,所以外部電路就顯得相對簡單,減少了一般電路復(fù)雜的外部數(shù)據(jù)線和信號線的連接。USB控制器部分外圍電路原理圖如圖2所示。
CY7C68013用自帶的片內(nèi)晶振電路和一個外部24 MHz晶振組成系統(tǒng)的時鐘電路。它有一個片內(nèi)鎖相環(huán)(PLL)電路,利用PLL可以把24 MHz振蕩器頻率倍頻至48 MHz,供收發(fā)器使用[4]。CY7C68013內(nèi)部計數(shù)器把24 MHz的頻率分頻為內(nèi)部8051需要默認的12 MHz的時鐘頻率。SCL和SDA分別為I2C總線的時鐘線和數(shù)據(jù)線,在CY7C68013中,I2C控制器的漏極是開路的,因此將這兩個引腳分別通過一個2.2 kΩ的上拉電阻連接到3.3 V電源上。RESERVED引腳通過一個10 kΩ電阻接地,否則不能正確找到USB設(shè)備。該設(shè)計沒有使用WAKEUP引腳,所以可通過100 kΩ上拉電阻連接到3.3 V電壓[5]。
圖2 USB控制器的部分外圍電路原理圖
1.3 LED點陣顯示屏電路設(shè)計
LED顯示屏是采用8塊8×8點陣顯示屏連接而成的16×32的點陣顯示屏,其中搭接的晶體管用于驅(qū)動LED點陣顯示屏;利用并行接口向該點陣顯示屏傳送數(shù)據(jù),還有利用74154譯碼器對點陣顯示屏進行列選,再利用7404芯片對兩塊74154進行片選,這樣可以節(jié)省24個并行接口,其電路如圖3所示。
圖3 LED點陣顯示屏電路
由于點陣顯示需要較大的驅(qū)動電流,所以將16位行選數(shù)據(jù)線經(jīng)兩塊74LS245芯片進行電流放大來驅(qū)動LED點陣顯示屏顯示。
2 系統(tǒng)軟件設(shè)計
2.1 固件程序設(shè)計
固件程序是指運行在設(shè)備CPU中的程序。固件程序負責初始化,處理標準USB設(shè)備請求及LED點陣顯示控制。Cypress公司為CY7C68013提供了固件程序框架和固件函數(shù)庫,在Keil C環(huán)境下進行開發(fā)。由于開發(fā)框架的引入,大大提高了用戶開發(fā)的效率。固件程序由以下幾部分組成:
(1) Fw.C固件框架程序。用于完成USB設(shè)備的基本功能,主要包含初始化、處理標準USB設(shè)備請求以及USB掛起時的電源管理等[6]。
(2) bulkloop.C是執(zhí)行USB外設(shè)功能的程序。固件的設(shè)計主要針對這個文件,本設(shè)計中主要實例化 TD_Init函數(shù)、TD_Poll函數(shù)和端點2中斷服務(wù)程序,實現(xiàn)了讀取上位機數(shù)據(jù)和控制LED點陣顯示的功能。
① TD_Init()。該函數(shù)負責整體狀態(tài)變量的初始化,規(guī)定各種端點資源、中斷的使用以及配置外圍接口的輸入/輸出等。本設(shè)計中對PA,PB和PD初始化為輸出方式,將端點2配置成傳輸方式為Bulk,傳輸方向為out,每個數(shù)據(jù)包為512 B的數(shù)據(jù)塊,并開啟端點2的中斷,在接收到數(shù)據(jù)時,在端點2的中斷服務(wù)子程序中對數(shù)據(jù)進行讀取和處理。
② TD_Poll()。該函數(shù)在設(shè)備工作期間被反復(fù)調(diào)用。它主要用于執(zhí)行外設(shè)功能,在處理完高優(yōu)先級的任務(wù)后返回。本設(shè)計中LED顯示屏需要實時動態(tài)掃描,所以利用框架在空閑時對TD_Poll的不斷調(diào)用實現(xiàn)。在TD_Poll中寫入點陣顯示屏的驅(qū)動程序,實現(xiàn)了顯示屏的靜止顯示和滾動顯示。
(3) DSCR.A51是描述表文件。負責設(shè)備的描述工作,CY7C68013在上電后自動利用其中的VID和PID取代默認的VID和PID。
框架程序首先調(diào)用TD_Init()做初始化工作,然后開始重枚舉設(shè)備直到端口0檢測到Setup包。一旦檢測到setup包,框架程序就開始執(zhí)行任務(wù)調(diào)度程序。流程如圖4所示[5]。
圖4 固件程序框圖
2.2 PC方主控軟件設(shè)計
主控軟件包括兩個部分:一個是對漢字字庫的提取,實現(xiàn)漢字點陣轉(zhuǎn)換;另一個是通過USB口實現(xiàn)計算機對顯示屏的顯示控制。
2.2.1 漢字字庫的提取
在不同的計算機操作環(huán)境下實現(xiàn)漢字字模提取方法的原理不同。傳統(tǒng)方法為使用UCDOS 的點字庫,即在計算機系統(tǒng)中,利用二個字節(jié)的代碼表示一個漢字。在計算機系統(tǒng)內(nèi)部,處理和存儲漢字使用的是兩個字節(jié)的機內(nèi)碼。為了保證中西文兼容,即與ASCII 碼的使用不發(fā)生沖突,漢字中兩個字節(jié)的最高位均為1。1981年我國正式發(fā)布國家標準:《信息交換用漢字編碼字符集——基本集》(GB2312_80)。在這個標準中,GB2312國標字符集構(gòu)成一個三維平面,分成94行,94列行號稱為區(qū)號,列號稱為位號,每一個漢字或字符在碼表中都有各自的位置,因此各有一個惟一的位置編碼,該編碼就是字符所在區(qū)號(行號) 及位號(列號) 的二進制代碼(7 位區(qū)號在左,7位位號在右,共14 位) ,這就叫漢字的區(qū)位碼。區(qū)位碼指出該漢字集中的位置[7]。
UCDOS為用戶提供了大多數(shù)漢字的16點陣和24點陣字庫。本設(shè)計采用16點陣的漢字庫,其字庫文件為HZK16。漢字點陣字模代碼是按照區(qū)位碼的順序在文件HZK16中存放的。在程序中容易獲得漢字的機內(nèi)碼,如果知道區(qū)位碼和機內(nèi)碼之間的關(guān)系,就可以編程得到字模代碼[1]。
區(qū)位碼和機內(nèi)碼的關(guān)系為:
機內(nèi)碼高字節(jié)=區(qū)碼+ A0H;機內(nèi)碼低字節(jié)=位碼+ A0H。
經(jīng)上述分析可得,獲取漢字字模的基本步驟是獲取漢字的機內(nèi)碼;通過漢字的機內(nèi)碼推算出區(qū)位碼;由區(qū)位碼計算出漢字在字庫中的位置偏移地址offset:offset=[(區(qū)碼-1)×94+(位碼-1)]×32;
從該偏移地址讀取 32 個字節(jié),就是相關(guān)漢字的點陣字模代碼[6]。
2.2.2 USB傳輸控制
PC端主機應(yīng)用程序是操作系統(tǒng)與用戶之間的接口,Windows系統(tǒng)把每一個設(shè)備都抽象為文件,應(yīng)用程序通過調(diào)用對文件操作的應(yīng)用編程接口(API)函數(shù)實現(xiàn)與USB設(shè)備的通信[8]。本程序?qū)崿F(xiàn)EZ-USB FX2與計算機的通信,在界面軟件中輸入所要顯示的漢字,經(jīng)USB傳輸?shù)絾纹瑱C中,使顯示屏可固定、平移地顯示漢字。
該應(yīng)用程序采用VC 6.0編譯器進行編譯[9],界面程序使用C++語言編寫[10]。當下位機上電并與計算機連接后,應(yīng)用程序首先檢測USB設(shè)備是否與上位機連接成功,直到設(shè)備重枚舉,程序與設(shè)備能正常通信為止,如圖5所示。數(shù)據(jù)通過塊傳輸方式向USB設(shè)備的端點2傳送數(shù)據(jù)。軟件工作具體過程是打開應(yīng)用程序,應(yīng)用程序首先進行初始化查找USB設(shè)備,獲得設(shè)備句柄。當啟動傳輸后,程序先檢測是否已輸入要顯示的漢字;若檢測到已輸入,則提取輸入漢字的字模數(shù)據(jù)。通過USB發(fā)送字模數(shù)據(jù)到下位機端點2緩沖區(qū)。程序流程框圖如圖6所示。
圖5 上位機程序界面
圖6 應(yīng)用程序流程圖
通過USB 2.0芯片Cy7C68013的硬件連接設(shè)計和系統(tǒng)軟件設(shè)計,實現(xiàn)了LED顯示屏的滾動顯示。硬件調(diào)試效果見圖7。
3 結(jié) 語
該方案在實現(xiàn)將USB控制芯片進行傳輸控制的同時,實現(xiàn)了LED顯示屏的顯示控制。相比其他USB系統(tǒng)省去了單片機控制器,節(jié)約了成本。相比于使用其他串行傳輸方式,使用USB傳輸方式更方便易用。經(jīng)過實際制作證明,該方案實現(xiàn)的LED點陣顯示屏能基本滿足圖片文字顯示的需要。
圖7 硬件調(diào)試效果圖
參考文獻
[1]鄧宏貴,汪龍峰,李志堅,等.基于USB_host技術(shù)顯示控制系統(tǒng)的擴展研究[J].光電子技術(shù),2008,28(1):55_59.
[2]賈寶金,王寶珠,李曉玲.基于USB的數(shù)據(jù)采集系統(tǒng)的設(shè)計與研究[J].現(xiàn)代電子技術(shù),2007,30(24):187_190.
[3]許永和.USB外圍設(shè)備設(shè)計與應(yīng)用——EZ-USB FX 系列單片機應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2002.
[4]陳茜,劉文怡,熊繼軍,等.基于EZ-USB與FX2的通用數(shù)據(jù)傳輸模塊[J].微計算機信息,2006,22(35):74_76.
[5]錢峰.EZ-USB FX2單片機原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.
[6]王保華.利用VC++實現(xiàn)漢字字模的提取與小漢字庫的生成[J].單片機與嵌入式系統(tǒng)應(yīng)用,2002(1):41_42.
[7]黃金龍.點陣漢字字模提取軟件設(shè)計[J].南昌職業(yè)技術(shù)師范學(xué)院學(xué)報,2001(5):3_18,25.
[8]李波,劉嘉勇,蔣瑜,等.基于EZ-USB FX2的單向傳輸系統(tǒng)設(shè)計與實現(xiàn)[J].信息與電子工程,2008,6(1):46_50.
[9]王艷平,張錚.Windows程序設(shè)計[M].2版.北京:人民郵電出版社,2008.
[10]錢能.C++程序設(shè)計教程[M].2版.北京:清華大學(xué)出版社,2008.
[11]劉振波,熊慶國,唐明濤.FPGA和EZ-USBFX2在采集圖像數(shù)據(jù)中的應(yīng)用\\.現(xiàn)代電子技術(shù),2009,32(8): 31_32.
[12]韓昌,賴松林,程樹英.基于USB接口的電化學(xué)沉積儀器數(shù)據(jù)采集系統(tǒng)的研究\\.現(xiàn)代電子技術(shù),2009,32(9):149_152.
作者簡介 黃建斌 男,1988年出生,福建福安人。研究方向為電子科學(xué)與技術(shù)。
邱河波 男,1988年出生,福建漳州人。研究方向為電子科學(xué)與技術(shù)。
戴 祥 男,1987年出生,福建泉州人。研究方向為電子科學(xué)與技術(shù)。
程樹英 女,1966年出生,福建武夷山人,教授。研究方向為光電薄膜材料、光電器件及應(yīng)用。