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