盧方杰
?
16*16 LED顯示屏控制系統(tǒng)的設(shè)計(jì)研究
盧方杰
(漳州電視臺(tái) 技術(shù)制作部,福建 漳州 363000)
基于串行通信的16*16 LED顯示屏控制系統(tǒng)的設(shè)計(jì),利用Visual Basic提供的MSComm控件建立PC機(jī)與單片機(jī)的串行通信,設(shè)計(jì)友好的操作界面,實(shí)現(xiàn)控制LED顯示屏。上位機(jī)采用VB編程,通過(guò)按鍵向單片機(jī)輸送控制信號(hào),控制顯示屏的循環(huán)次數(shù)、顯示方式。單片機(jī)采用MCS-51單片機(jī)指令系統(tǒng)進(jìn)行編程實(shí)現(xiàn)串口數(shù)據(jù)接收,并控制驅(qū)動(dòng)16*16 LED顯示屏做出相應(yīng)的顯示。經(jīng)測(cè)試該系統(tǒng)能實(shí)現(xiàn)良好的自動(dòng)控制,功能滿意。
16*16LED顯示屏;電平轉(zhuǎn)換;AT89C51單片機(jī);MSComm控件;串行通信
LED(發(fā)光二極管的英文Light Emitting Diode縮寫(xiě))憑借其亮度高、工作電壓低、功耗小等優(yōu)點(diǎn)已廣泛應(yīng)用于商場(chǎng)、車站、銀行以及各類辦事窗口等其它公共場(chǎng)所。隨著信息產(chǎn)業(yè)的高速發(fā)展,LED的顯示控制方式也變得多樣化。
在本設(shè)計(jì)系統(tǒng)中,上位機(jī)采用一臺(tái)標(biāo)配的計(jì)算機(jī),下位機(jī)由AT89C51單片機(jī)及其外圍電路組成,通過(guò)RS-232C串行通信方式交換上位機(jī)下發(fā)的控制命令,并返回下位機(jī)的工作狀態(tài)。因RS-232信號(hào)電平與單片機(jī)的串口TTL電平不一樣,所以PC機(jī)與單片機(jī)之間的通信接口電路必須經(jīng)過(guò)電平轉(zhuǎn)換,芯片MAX232正好可以完成這個(gè)功能。同時(shí)單片機(jī)要對(duì)接收到的控制信號(hào)進(jìn)行檢測(cè),然后再通過(guò)驅(qū)動(dòng)電路對(duì)點(diǎn)陣的行、列進(jìn)行驅(qū)動(dòng),繼而控制點(diǎn)陣顯示屏做出相應(yīng)的顯示。
2.2.1行驅(qū)動(dòng)電路模塊
行驅(qū)動(dòng)電路如圖1所示,由單片機(jī)的輸入輸出口生成數(shù)據(jù)信號(hào),而51單片機(jī)的灌電流(1.6mA左右)和拉電流(-10mA)很小無(wú)法直接驅(qū)動(dòng)二極管,所以必須經(jīng)過(guò)驅(qū)動(dòng)器才能驅(qū)動(dòng)點(diǎn)陣二極管。由于系統(tǒng)是16*16點(diǎn)陣顯示屏,因此剛好可以利用P0和P2口共16個(gè)輸入輸出口來(lái)生成數(shù)據(jù)信號(hào),再經(jīng)過(guò)16個(gè)驅(qū)動(dòng)器三極管并列分別驅(qū)動(dòng)16*16點(diǎn)陣顯示屏的16行線。
2.2.2參數(shù)計(jì)算選擇
一條行線上有16個(gè)LED,因采用的是動(dòng)態(tài)掃描方式進(jìn)行顯示,每一個(gè)LED以7.5mA電流計(jì)算,那么瞬時(shí)流經(jīng)電路的電流為16x7.5mA=120mA,驅(qū)動(dòng)管選用9012可滿足要求。由于VCC接+5V,而三極管處于開(kāi)關(guān)狀態(tài)下其集電極與發(fā)射極之間的壓降約為0.3V,又發(fā)光二極管的壓降為0.7V,從而集電極電阻的阻值選用(5V-0.3V-0.7V)/0.12A=33Ω。因51單片機(jī)灌電流約為1.6mA,同時(shí)為了使三極管工作在開(kāi)關(guān)狀態(tài)下,所以在此電路中I/O口輸出必須接4.7K的限流電阻。
2.2.3列選通電路模塊
列選通電路由集成電路74HC154構(gòu)成,74HC154是4線-16線高性能存儲(chǔ)器的譯碼器。當(dāng)兩個(gè)選通輸入G1和G2為低時(shí), 它可將4個(gè)二進(jìn)制編碼的輸入譯成16個(gè)互相獨(dú)立的輸出之一。本設(shè)計(jì)的行選通電路用51單片機(jī)P1口的P1.1-P1.4位輸出的二進(jìn)制編碼經(jīng)4/16線譯碼器74LS154譯碼后生成16條列選通信號(hào)線,再經(jīng)過(guò)驅(qū)動(dòng)對(duì)應(yīng)的列線。
每一個(gè)字均由16行16列的點(diǎn)陣組成顯示。一般我們把它拆分為上部和下部,上部由8*16點(diǎn)陣組成,下部也由8*16點(diǎn)陣組成。其原理如圖3所示,單片機(jī)首先顯示的是左上角的第一列的上半部分,即第0列的p00-p07口。方向?yàn)閜00到p07,顯示漢字“大”時(shí),p05點(diǎn)亮,由上往下排列,為p0.0滅,p0.1滅,p0.2滅,p0.3滅,p0.4滅,p0.5 亮,p0.6滅,p0.7滅。即二進(jìn)制00000100,轉(zhuǎn)換為16進(jìn)制為04h。
上半部第一列完成后,繼續(xù)掃描下半部的第一列,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由上往下掃描,即從p27向p20方向掃描,從圖可以看到,這一列全部為不亮,即為00000000,16進(jìn)制則為00h。然后單片機(jī)轉(zhuǎn)向上半部第二列,仍為p05點(diǎn)亮,為00000100,即16進(jìn)制04h。這一列完成后繼續(xù)進(jìn)行下半部分的掃描,p21點(diǎn)亮,為二進(jìn)制00000010,即16進(jìn)制02h。由這個(gè)原理可以看出,無(wú)論顯示何種字體或圖像,都可以用這個(gè)方法來(lái)分析出它的掃描代碼從而顯示在屏幕上。
本設(shè)計(jì)的處理系統(tǒng)采用AT89C51單片機(jī)匯編語(yǔ)言編寫(xiě)。采用12M晶振,串行口定義為8 位異步串行通信口,波特率由定時(shí)器T1所確定,為9600。主程序部分主要進(jìn)行T1定時(shí)器初值設(shè)置,還有串口中斷控制字的設(shè)置和各個(gè)存儲(chǔ)器的初始化等。子程序部分實(shí)現(xiàn)的功能是:接收計(jì)算機(jī)串口發(fā)送過(guò)來(lái)的數(shù)據(jù);單片機(jī)對(duì)接收到的按鍵標(biāo)志位進(jìn)行掃描;單片機(jī)根據(jù)相應(yīng)的按鍵情況轉(zhuǎn)向相應(yīng)的分支進(jìn)行處理。各個(gè)功能模塊分別為串口中斷、停止?fàn)顟B(tài)、移動(dòng)顯示模塊、逐字顯示模塊。
VB控制界面如圖4所示。其界面主要是依據(jù)本系統(tǒng)的具體控制要求,本著控制簡(jiǎn)單、快捷,一目了然等特點(diǎn)來(lái)設(shè)計(jì)的。VB界面設(shè)計(jì)由一些按鈕、菜單、標(biāo)簽和文本框經(jīng)過(guò)合理的布局構(gòu)成。同時(shí)附加文字說(shuō)明,這樣有利于提高系統(tǒng)的交互性。
CommPort屬性:該屬性設(shè)置并返回通信連接的串行端口號(hào),Windows將會(huì)利用該串口和外界通信,默認(rèn)值為1。但是如果用PortOpen屬性打開(kāi)一個(gè)并不存在的端口時(shí),MSComm控件會(huì)產(chǎn)生錯(cuò)誤。
Settings屬性:該屬性用于設(shè)置并返回?cái)?shù)據(jù)傳輸速率、奇偶校驗(yàn)、數(shù)據(jù)比特、停止比特參數(shù)。
RThreshold屬性:該屬性為一閾值,它確定當(dāng)接收緩沖區(qū)內(nèi)的字節(jié)個(gè)數(shù)達(dá)到或超過(guò)該值后就產(chǎn)生代碼為ComEvReceive的OnComm事件。若RThreshold屬性設(shè)置為0,則不會(huì)產(chǎn)生OnComm事件。
SThreshold屬性:該屬性為一閾值,當(dāng)發(fā)送緩沖區(qū)內(nèi)字節(jié)個(gè)數(shù)達(dá)到或超過(guò)該值后就產(chǎn)生代碼為ComEvSend的OnComm事件。若SThreshold屬性設(shè)置為0,則不會(huì)產(chǎn)生OnComm事件。
PortOpen屬性:PortOpen屬性用于打開(kāi)或者關(guān)閉端口。一般情況下在程序開(kāi)始時(shí)打開(kāi)端口,在程序結(jié)束時(shí)關(guān)閉端口。當(dāng)應(yīng)用程序終止時(shí),MSComm控件將自動(dòng)關(guān)閉串口。
CommEvent屬性:這是一個(gè)非常重要的屬性。一旦串口發(fā)生通信事件或產(chǎn)生錯(cuò)誤,依據(jù)產(chǎn)生的事件和錯(cuò)誤,MSComm控件為CommEvent屬性賦不同的代碼,同時(shí)產(chǎn)生OnComm事件。用戶程序就可在OnComm事件處理程序中針對(duì)不同的代碼,進(jìn)行相應(yīng)的處理。
本設(shè)計(jì)操作簡(jiǎn)單便捷、交互性強(qiáng),在利用開(kāi)發(fā)的控制平臺(tái)上輸入控制數(shù)據(jù),使用事先約定好的握手協(xié)議實(shí)現(xiàn)LED點(diǎn)陣顯示屏按設(shè)定的循環(huán)次數(shù)和顯示方式進(jìn)行顯示。此外,VB還設(shè)計(jì)有滾動(dòng)字幕、實(shí)時(shí)時(shí)鐘、菜單等功能進(jìn)一步充實(shí)美化界面。
[1]鬲淑芳.模擬電子技術(shù)基礎(chǔ)[M].西安:陜西師范大學(xué)出版社,1997,第2版.
[2]張俊謨.單片機(jī)中級(jí)教程[M].北京:北京航空航天大學(xué)出版社,2002,第2版.
[3]胡輝.單片機(jī)原理及應(yīng)用設(shè)計(jì)[M].北京:中國(guó)水利水電出版社,2005.
[4]《電腦編程技巧與維護(hù)》雜志社.Visual Basic編程技巧典型案例解析[M].北京:中國(guó)電力出版社,2005.
[5]范逸之.陳文元.Visual Basic與RS-232串行通信控制[M].北京:清華大學(xué)出版社,2002.
[6]崔武子.界面設(shè)計(jì)與Visual Basic實(shí)訓(xùn)百例[M].北京:清華大學(xué)出版社,2006.
圖1 行驅(qū)動(dòng)電路模塊
圖2 單片機(jī)接口電路
圖3 漢字的點(diǎn)陣顯示原理
圖4 VB控制界面
Research on the Design of 16*16 LED Display Control System
LU Fang-jie
(Technology Department of Zhangzhou Television Station, Zhangzhou 363000,China)
The design of 16*16 LED display control system makes use of the MSComm control widget provided by Visual Basic to establish the serial communication between PC and MCU, and to create friendly interface, in order to realize the control of the LED display. Serial procedures programmed by Visual Basic control the cycle and the mode of the LED display by pressing the key on the interface to send control signals to MCU. The MCS-51 code system is adopted to program to receive the serial data.The driver circuit is used for controlling and driving the dispaly of the LED display by the assembler codes. After being tested, the system can carry out automatic control satisfiably.
16*16 LED Display; Electrical level transform; AT89C51MCU; MSComm control widget; serial communication
2010-05-15
盧方杰(1982-),男,福建南靖人,助理工程師,學(xué)士,研究方向:電子圖形圖像多媒體。
TN141
A
1673-1417(2010)03-0004-04