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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機教程:動態(tài)掃描顯示接口電路及程序

          51單片機教程:動態(tài)掃描顯示接口電路及程序

          作者: 時間:2012-08-02 來源:網(wǎng)絡(luò) 收藏

          DISP:

          PUSH ACC ;ACC入棧

          PUSH PSW ;PSW入棧

          MOV A,DISPBUFF ;取第一個待數(shù)

          MOV DPTR,#DISPTAB ;字形表首地址

          MOVC A,@A+DPTR ;取字形碼

          MOV P0,A ;將字形碼送P0位(段口)

          CLR FIRST ;開第一位器位口

          LCALL DELAY ;延時1毫秒

          SETB FIRST ;關(guān)閉第一位器(開始準備第二位的數(shù)據(jù))

          MOV A,DISPBUFF+1 ;取顯示緩沖區(qū)的第二位

          MOV DPTR,#DISPTAB

          MOVC A,@A+DPTR

          MOV P0,A ;將第二個字形碼送P0口

          CLR SECOND ;開第二位顯示器

          LCALL DELAY ;延時

          SETB SECOND ;關(guān)第二位顯示

          POP PSW

          POP ACC

          RET

          DELAY: ;延時1毫秒

          PUSH PSW

          SETB RS0

          MOV R7,#50

          D1: MOV R6,#10

          D2: DJNZ R6,$

          DJNZ R7,D1

          POP PSW

          RET

          DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

          END

          從上面的例程中能看出,顯示必須由CPU持續(xù)地調(diào)用顯示,才能保證持續(xù)持續(xù)的顯示。

          上面的這個能實現(xiàn)數(shù)字的顯示,但不太實用,為什么呢?這里僅是顯示兩個數(shù)字,并沒有做其他的工作,因此,兩個數(shù)碼管輪流顯示1毫秒,沒有問題,實際的工作中,當(dāng)然不可能只顯示兩個數(shù)字,還是要做其他的事情的,這樣在二次調(diào)用顯示之間的時間間隔就不一不定了,如果時間間隔比較長,就會使顯示不連續(xù)。而實際工作中是很難保證所有工作都能在很短時間內(nèi)完成的。況且這個顯示程序也有點“浪費”,每個數(shù)碼管顯示都要占用1個毫秒的時間,這在很多合是不允許的,怎么辦呢?我們能借助于定時器,定時時間一到,產(chǎn)生中斷,點亮一個數(shù)碼管,然后馬上返回,這個數(shù)碼管就會一直亮到下一次定時時間到,而不用調(diào)用延時程序了,這段時間能留給主程序干其他的事。到下一次定時時間到則顯示下一個數(shù)碼管,這樣就很少浪費了。

          DIY機械鍵盤相關(guān)社區(qū):機械鍵盤DIY




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();