摘 要:介紹了一種利用嵌入式系統仿真軟件Proteus實現對16×16 LED點陣漢字分批顯示的仿真設計。詳細介紹點陣漢字分批顯示的硬軟件設計原理,給出了主要的C語言源程序,并給出了仿真運行結果。該LED顯示屏系統結構簡潔、功耗低、成本低、擴展性能好。通過Proteus軟件的前期仿真,LED顯示系統設計大大縮短了實際開發周期,降低開發成本。
關鍵詞:LED點陣; 分批顯示; Proteus; AT89C51
中圖分類號:TP312 文獻標識碼:B
文章編號:1004-373X(2010)12-0029-04
Proteus Design and Simulation of LED Chinese-Character Display in Batches
LI Ping
(Zhejiang Water Conservancy and Hydropower College,Hangzhou 310018,China)
Abstract:The simulation of 16 × 16 LED dot-matrix display of Chinese character in batches with an embedded system simulation software Proteus is introduced. The hardware and software design principles about dot-matrix Chinese character display in batches are proposed in detail, the main C-language source codes and the simulation results are given. The LED display system has simple architecture, low power consumption, low cost and good scalability. LED display system significantly reduces the actual development cycle and the development cost through the pre-simulation on Proteus.
Keywords:LED dot matrix; batch display; Proteus; AT89C51
0 引 言
近年來,LED顯示屏由于具有亮度高,壽命長,功耗小,性能穩定,驅動簡單以及可視距離遠等優點[1],已經成為新一代的信息傳播媒體工具。目前,LED顯示屏應用十分廣泛,如證券交易顯示、金融信息顯示、體育場館顯示比賽信息、廣告,城市廣場群顯示、道路交通信息顯示等領域。顯示漢字信息時,一般需要多個LED點陣顯示組合,最常見的組合方式有8×8,16×16,32×16等。由于顯示屏的顯示信息有限,當顯示信息較多時,一般需要進行分批顯示或者滾動顯示。
Proteus是目前最先進、最完整的多種型號微處理器系統的仿真設計平臺,由ISIS和ARES 兩個構成,其中ISIS是一款智能電路原理圖輸入系統軟件,可作為電子系統仿真平臺,ARES是一款高級布線編輯軟件,用于制作PCB印制電路板。開發者可以在無硬件條件下直接使用Proteus進行電路設計和仿真調試,真正實現了在計算機中完成電路原理圖設計、電路分析與仿真、系統測試到形成印制電路板的完整電子設計、研發過程[2]。因此,本課題利用AT89C51單片機作為主控制器,采用Proteus軟件實現對16×16 LED點陣漢字的分批顯示,仿真運行通過后再進行點陣顯示電路制作,大大縮減實際開發周期,節約了開發成本。
1 硬件電路設計
在很多LED顯示的場合,需要實現一系列LED點陣漢字的分批顯示,為簡化設計,每批只顯示2個漢字,分若干次完成全部顯示。利用Proteus ISIS 平臺畫出的硬件電路如圖1所示。
該硬件電路的核心是利用單片機讀取顯示字型碼,通過驅動電路對16×16共陰極 LED 點陣進行動態列掃描,以實現點陣漢字的分批顯示。設計選用的單片機為Atmel公司的AT89C51,它是一種低功耗,高性能CMOS 8位單片機,片內含4 KB可反復擦寫的FLASH ROM,采用Atmel公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及8051引腳結構,內置看門狗電路。功能強大的AT89C51可為許多嵌入式控制應用系統提供高性價比的解決方案。時鐘電路用于產生單片機工作時所必需的時鐘信號,其中晶振頻率為12 MHz。上電復位電路可保證單片機的在程序運行出錯或操作錯誤使系統處于死鎖狀態時,重啟運行。
顯示單元是LED漢字顯示屏,由2片16×16 LED 點陣模塊組成。但由于Proteus 軟件目前版本中還沒有16×16 點陣模塊,設計中采用Proteus 軟件中的4個8×8點陣模塊組合成1個16×16 點陣模塊[3-4]。點陣漢字的陽極驅動是由單片機的P0口和P2口各自經過一片輸出緩沖器74LS273向4個8×8 LED點陣輸出字型碼作為行驅動信號;點陣的陰極驅動由P1.0~P1.3經過4-16線譯碼器74HC154譯碼后輸出列選信號[5],對4個8×8點陣進行列掃描,從而控制LED點陣的相應像素點亮。2個LED點陣漢字中的列選信號則分別由P3.0和P3.1控制來選擇相應的74HC154,因此需要兩片74HC154譯碼器。RP1為排阻,含有8個電阻,作為P0口各位的上拉電阻,以保證P0口能夠輸出高電平。
圖1 硬件電路原理圖
2 點陣漢字分批顯示原理與軟件設計
16×16共陰極LED點陣由4個8×8點陣構成,需要顯示漢字字符串“單片機仿真!”,可通過建立數據表格的形式進行[6]。通過16×16點陣漢字字模提取軟件,可提取各顯示漢字的字模數據[2,7],詳見程序設計中的顯示字符代碼表1。
在進行漢字分批輸出顯示時采用動態掃描驅動方式,可按行或列進行掃描。當按“列”掃描時,需要建立列的掃描代碼表如下:
const uchar tab2[ ]={0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08}
現以列掃描為例,闡述16×16 LED點陣漢字分批顯示原理。在初始化設置(關顯示)后,首先,P1送出第1列掃描代碼,同時使P3=0xFD選中U2的74HC154和U4,對P0輸出段碼給左邊漢字上半部的第1列以驅動相應段點亮;接著,使P3=0xFA選中U2的74HC154和U5,對P2輸出段碼值給左邊漢字下半部的第1列以驅動相應段點亮,即送出了第一個漢字“單”的第1列的字模數據(16位段碼值);再設置P3=0xF5選中U3的74HC154和U4,對P0輸出段碼給右邊漢字的上半部的第1列以驅動相應段點亮。接著,使P3=0xF9亦選中U3的74HC154和U5,對P2輸出段碼值給由邊漢字下半部的第1列以驅動相應段點亮,即送出了第2個漢字“片”的第1列的字模數據(16位段碼值)。然后,給P1送第2列的掃描代碼,同理再送出第1個漢字“單”、第2個漢字“片”的各自第2列的字模數據,…如此進行,經過16次列掃描,分時送完兩個漢字的各自16個段碼值,就可顯示第1批漢字“單”、“片”;再進行第2批漢字“機”、“仿”的顯示;…,直到漢字字符串顯示完成。若字符顯示完畢,又從頭開始循環顯示。LED點陣漢字分批顯示的程序流程如2所示。在某一時刻,只有1行或1列發光二極管被對應的字模數據驅動點亮,但只要掃描間隔時間合適(一般為數毫秒),利用人眼的視覺暫留特性,看上去整批字符就顯示在LED點陣顯示器上。
主要的C語言源程序如下:
#include \"reg51.h\"
#define uint unsigned int
#define uchar unsigned char
code uchar tab1[ ]={ //顯示的字符代碼表
0x00,0x10,0x00,0x10,0x1f,0xd0,0x14,0x90, //“單”
0x94,0x90,0x74,0x90,0x54,0x90,0x1f,0xff,
0x14,0x90,0x34,0x90,0xd4,0x90,0x54,0x90,
0x1f,0xd0,0x00,0x10,0x00,0x10,0x00,0x00,
0x00,0x01,0x00,0x02,0x00,0x0c,0x7f,0xf0, //“片”
0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,
0x08,0x80,0xF8,0x80,0x08,0x80,0x08,0xff,
0x08,0x00,0x18,0x00,0x08,0x00,0x00,0x00,
0x10,0x20,0x10,0xc0,0x03,0x00,0xff,0xff,//“機”
0x12,0x00,0x11,0x82,0x10,0x0C,0x00,0x30,
0x7F,0xc0,0x40,0x00,0x40,0x00,0x40,0x00,
0x7F,0xfc,0x00,0x02,0x00,0x1e,0x00,0x00,
0x02,0x00,0x04,0x00,0x08,0x00,0x37,0xfe, //“仿”
0xe0,0x02,0x50,0x04,0x10,0x18,0x10,0x60,
0x9f,0x80,0x51,0x08,0x71,0x04,0x11,0x02,
0x11,0x04,0x33,0xf8,0x11,0x00,0x00,0x00,
… }; “真”,“!”字符代碼此處略
const uchar tab2[]={0x07,0x06,0x05,0x04,0x03,//掃描代碼表
0x02,0x01,0x00,0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08};
void delay(uint n)//延時函數
{uint i;
for (i;i void main( )//主函數 {int j=0,q=0,y=0; ucharr,t=0; P0=0x00; P3=0xff;//初始化設置 while(1) {for(r=0;r<200;r++) //控制每批字符顯示的時間 for (j=q;j<32+q;j++) { P1=tab2[t]; //輸出列掃描碼 P3=0xf6; P0=tab1[j]; //選中U2和U4,輸出段碼給左邊漢字的上半部某列 j++; P3=0xfa; P2=tab1[j];//選中U2和U5,輸出段碼給左邊漢字的下半部某列 delay(250); y=j+31; P3=0xf5; P0=tab1[y]; //選中U3和U4,輸出段碼給右邊漢字的上半部某列 y++; P3=0xf9; P2=tab1[y]; //選中U3和U5,輸出段碼給右邊漢字的下半部某列 t++; delay(250); if(t==16)t=0;} //判斷是否顯示完兩個漢字的各自16列 q=q+64; //指向下一批漢字字符,準備顯示 if(q==192) q=0; }}//判斷是否顯示完該字符串 3 程序調試與仿真 (1) 生成目標代碼文件。利用Proteus 平臺在進行仿真時,需要加載程序到單片機中,加載的程序為目標代碼文件.HEX。方法是:利用單片機軟件仿真系統Keil UVsion3,在新建項目中選擇AT89C51單片機作為CPU,同時將創建C語言源程序文件并將其加載到新建項目中。在“Project”下拉菜單中,選擇“Options for Target”對話框,在對話框中選中“Output”選項卡中的“Create HEX File”選項。在“Project”下拉菜單中選擇“Rebuild all Target Files”選項,編譯成功后將生成.HEX目標代碼文件[8]。 (2) 調試與仿真: 在Proteus ISIS 平臺中,按圖1畫出硬件電路,單擊鼠標右鍵將AT89C51單片機選中并單擊鼠標左鍵,彈出“Edit Component”對話框,在其中的“Clock Frequency”欄中設置單片機晶振頻率為12 MHz,在“Program File”欄選擇生成的.HEX文件。保存設計,生成.DSN文件。在“Debug”菜單中選擇“Execute”,可得到仿真運行效果[9]。仿真調試成功后,可看見“單片機仿真!”點陣漢字的分批顯示。顯示次序為“單片-機仿-真!”,其中“機仿”如圖3所示。通過Keil 與Proteus 的聯合調試取得了良好的效果。 圖2 程序流程圖 圖3 仿真效果圖 4 結 語 在嵌入式系統仿真平臺Proteus 的基礎上,實現對16×16 LED點陣漢字分批顯示的仿真設計,實現了“單片機仿真! ”六個漢字的分批顯示,達到了良好的設計效果。該仿真電路接近于實際電路,再使用Proteus ARES軟件在仿真原理圖的基礎上直接繪制PCB電路板,即可以制作出實際的點陣式LED 分批漢字顯示屏。該顯示屏電路結構簡潔,可靠性高,成本低且易于實現,軟件通過適當修改即可實現其他顯示功能如滾動顯示等[10],顯示靈活,適用領域廣泛。通過Proteus的前期仿真為LED顯示屏系統的設計開發大大縮短了開發周期,降低了開發成本,同時也為單片機應用系統、電子電 路的開發設計等提供了一種嶄新的設計方法和有效手段。 參考文獻 [1]靳桅,鄔芝權,李騏,等.基于51系列單片機的LED顯示屏開發技術[M].北京:北京航空航天大學出版社,2009. [2]侯玉寶,陳忠平,李成群,等.基于Proteus的51系列單片機設計與仿真[M].北京:電子工業出版社, 2008. [3]鐘蔚,袁臣虎.點陣LED滾動漢字顯示屏的Proteus仿真設計[J].微計算機信息,2008,24(6):106-107. [4]王猛,陳林.基于Proteus的LED大屏幕的設計與仿真[J].微計算機信息,2008,24(6):233-235. [5]游達章,黃勁.簡易LED點陣漢字顯示控制模塊設計[J].現代顯示,2008(5):43-45. [6]楊延寧,劉立軍,張志勇.基于Proteus的單片機漢字點陣顯示電路設計[J].液晶與顯示,2009,24(1):98-102. [7]汪建,張麗娟.嵌入式LED點陣漢字顯示系統的驅動與編碼[J].微處理機,2007(1):119-121. [8]朱清慧,王志奎.Proteus在LED點陣滾動顯示屏設計中的應用[J].液晶與顯示,2009,24(2):232-235. [9]丁明亮,唐前輝.51單片機應用設計與仿真 基于Keil C與Proteus [M].北京:北京航天航空大學出版社,2009. [10]遠飛.基于Proteus的LED滾幕設計與仿真[J].電子元器件應用,2009,11(6):38-40.