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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 利用80C31單片機串行口實現(xiàn)多個LED顯示的一種簡單方法

          利用80C31單片機串行口實現(xiàn)多個LED顯示的一種簡單方法

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

          系統(tǒng)中,常常用數(shù)碼管()做器。一般的器為4位或8位,即需要4個或8個。這種比較多,也比較。但是,對于顯示,就必須采取必要的措施才能。本文介紹一種設計,設計的多路LED顯示系統(tǒng)具有硬件結構,軟件編程方便,價格低廉的特點,經(jīng)在儲蓄所大屏幕利率顯示屏中應用,效果很好。

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

          1 硬件電路

          是MCS-51系列的一種,它廣泛應用于各種小型控制系統(tǒng)中。我們知道,單片機有一個口可用于通訊,筆者發(fā)現(xiàn)它在方式0狀態(tài)下,還可以擴展并行I/O口,從而LED顯示,其硬件原理如圖1所示。其中,74HC164為輸入、并行輸出移位寄存器,74HC164為單向總線驅動器,LED采用5EF1183KR型共陰極數(shù)碼管。

          59.jpg

          單片機復位時,串行口為方式0狀態(tài),即工作在移位寄存器方式,波特率為振蕩頻率的十二分之一。參看圖2,器件執(zhí)行任何一條將SBUF作為目的寄存器的命令時,數(shù)據(jù)便開始從RXD端發(fā)送。在寫信號有效時,相隔一個機器周期后發(fā)送控制端SEND有效,即允許RXD發(fā)送數(shù)據(jù),同時,允許從TXD端輸出移位脈沖。第一幀(8位)數(shù)據(jù)發(fā)送完畢時,各控制信號均恢復原狀態(tài),只有TI保持高電平,呈中斷申請狀態(tài)。第一個74HC164把第一幀數(shù)據(jù)并行輸出,LED1顯示該數(shù)據(jù)(發(fā)送時序如圖2所示)。然后,用軟件將TI清零,發(fā)送第二幀數(shù)據(jù)。第二幀數(shù)據(jù)發(fā)送完畢,LED1顯示第二幀數(shù)據(jù),第一幀數(shù)據(jù)串行輸入給第二個 74HC164,LED2顯示第一幀數(shù)據(jù)。依此類推,直到把數(shù)據(jù)區(qū)內(nèi)所有數(shù)據(jù)發(fā)送出去。應該注意,數(shù)據(jù)全部發(fā)送完后,第一幀數(shù)據(jù)在最后一個LED顯示。由于TXD端最多可以驅動8個TTL門,當LED顯示器超過8個時,我們采用74HC244芯片驅動。每個74HC244有8路驅動,每一路可驅動8個 LED,即每增加一個74HC244,可增加64個LED驅動。

          2 軟件編程

          該軟件程序采用MCS-51系列單片機匯編語言編制,并把顯示程序作為一個子程序,以便在主程序中調用。設LED為共限極顯示器,共有64個,顯示區(qū)首地十在內(nèi)部RAM 20H單元,需顯示的數(shù)據(jù)以BCD碼依次存放在顯示區(qū),軟件清單如下:


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(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); })();