<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于STC89C55RD+單片機的LED點陣顯示系統(tǒng)的設計

          基于STC89C55RD+單片機的LED點陣顯示系統(tǒng)的設計

          作者: 時間:2010-06-14 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/173308.htm

          3.3驅動及掃描電路 選用8x8模塊,每 4塊排列成一個16x16的,用于顯示一個漢字。每一行的所有共陰極,每一列的所有共陽極。
          因為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ū)是分開的,以使程序不會遭到破壞。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();