基于STC89C55RD+單片機(jī)的LED點(diǎn)陣顯示系統(tǒng)的設(shè)計
本文引用地址:http://m.butianyuan.cn/article/173308.htm
3.3驅(qū)動及掃描電路 LED點(diǎn)陣選用8x8模塊,每 4塊排列成一個16x16的點(diǎn)陣,用于顯示一個漢字。點(diǎn)陣每一行的所有LED共陰極,每一列的所有LED共陽極。
因?yàn)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/單片機(jī)">單片機(jī)I/O口的驅(qū)動能力有限,所以每一行LED陰極通過一個三極管8550與電源相連,I/O口僅需要提供幾個毫安的灌入電流即可控制其通斷??紤]到本系統(tǒng)可以同時顯示六個漢字,故每一列 LED的陽極都通過一個限流電阻和一個三極管8550與電源相連,當(dāng)六個漢字的同一行漢字字模(即12個字節(jié))通過鎖存器74HC377并行送出后,由移位寄存器 74HC595輸出行選通信號,來點(diǎn)亮該行的LED,接著再送下一行數(shù)據(jù),再選中下一行有效,直到16行全被掃描過一遍。至此,一幅完整的文字信息就顯現(xiàn)出來,然后按這種方式反復(fù)掃描,借助于程序的控制,即可實(shí)現(xiàn)信息從右至左的動態(tài)顯示了。具體電路圖如圖3所示。
該系統(tǒng)的軟件主要實(shí)現(xiàn)的功能包括:上位機(jī)信息(或命令)的發(fā)送和下位機(jī)點(diǎn)陣顯示內(nèi)容及方式的控制兩部分。
4.1上位機(jī)軟件
上位機(jī)信息(或命令)的發(fā)送使用普通的字模提取軟件和串口調(diào)試軟件即可,在與下位機(jī)進(jìn)行通信時,須保證雙方具有相同的數(shù)據(jù)格式和波特率,本設(shè)計采用 RS232通信,波特率為9600bit/s。同時,制定了上下位機(jī)之間的通信協(xié)議,信息包格式如圖4所示。
4.2下位機(jī)軟件
LED點(diǎn)陣的顯示內(nèi)容及方式主要由單片機(jī)的程序進(jìn)行控制。程序采用模塊化結(jié)構(gòu),主要包括有主程序、串口中斷服務(wù)子程序以及掃描顯示子程序等。
(1)主程序?yàn)轫樞蚪Y(jié)構(gòu),主要完成系統(tǒng)對 I/O口和一些變量的初始化,定時器初始值、串行通信工作方式、以及波特率的設(shè)置[2],然后循環(huán)調(diào)用掃描顯示子程序,顯示原來Data Flash區(qū)中已存在的漢字信息。
(2)串口中斷服務(wù)子程序采用接收中斷啟動[3],主要負(fù)責(zé)接收來自上位機(jī) PC發(fā)送的信息,包括欲顯示的內(nèi)容以及命令字節(jié),并根據(jù)命令完成相應(yīng)的信息寫入、擦除等操作,最后開中斷返回主程序。其流程圖入圖5所示。
其中信息的寫入、擦除等操作主要由單片機(jī)的IAP功能來完成。 IAP,即在應(yīng)用可編程,是指在程序運(yùn)行時程序存儲器可由程序自身進(jìn)行擦寫。通過IAP功能的相關(guān)指令,既可以將欲顯示的數(shù)據(jù)寫入到程序存儲器指定的扇區(qū)中,也可以根據(jù)需要擦除相應(yīng)扇區(qū)中的數(shù)據(jù)。這樣,數(shù)據(jù)就如同燒入的程序一樣,掉電不會丟失。當(dāng)然寫入數(shù)據(jù)的區(qū)域與程序存儲區(qū)是分開的,以使程序不會遭到破壞。
評論