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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 單片機4位數(shù)碼管電子時鐘

          單片機4位數(shù)碼管電子時鐘

          作者: 時間:2016-11-29 來源:網(wǎng)絡(luò) 收藏

          display:mov a,31h ;秒顯示
          mov b,#10
          div ab
          mov 20h,a ;將秒十位存20h
          mov 21h,b ;將秒個位存21h
          disp1: mov a,20h ;秒十位顯示
          mov dptr,#table ;查表
          movc a,@a+dptr ;將A與查表的值相加,回存給A
          mov p0,a ;將A的值賦給P0口
          clr p2.0 ;點亮秒十位
          lcall del1ms ;調(diào)用延時1MS子程序
          setb p2.0 ;滅秒十位
          disp2: mov a,21h ;秒個位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.1
          lcall del1ms
          setb p2.1
          disp3: mov a,32h ;分顯示
          mov b,#10
          div ab
          mov 22h,a
          mov 23h,b
          disp4: mov a,22h ;分十位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.6
          lcall del1ms
          setb p2.6
          disp5: mov a,23h ;分個位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.7
          lcall del1ms
          setb p2.7
          disp6: mov a,33h ;時顯示
          mov b,#10
          div ab
          mov 24h,a
          mov 25h,b
          disp7: mov a,24h ;時十位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.4
          lcall del1ms
          setb p2.4
          disp8: mov a,25h ;時個位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.5
          lcall del1ms
          setb p2.5
          ret
          display1:mov a,38h ;鬧鐘分顯示
          mov b,#10
          div ab
          mov 26h,a
          mov 27h,b
          dispnz1:mov a,26h ;鬧鐘分十位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.6
          lcall del1ms
          setb p2.6
          dispnz2:mov a,27h ;鬧鐘分個位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.7
          lcall del1ms
          setb p2.7
          dispnz3:mov a,39h ;鬧鐘時顯示
          mov b,#10
          div ab
          mov 28h,a
          mov 29h,b
          dispnz4:mov a,28h ;鬧鐘時十位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.4
          lcall del1ms
          setb p2.4
          dispnz5:mov a,29h ;鬧鐘時個位顯示
          mov dptr,#table
          movc a,@a+dptr
          mov p0,a
          clr p2.5
          lcall del1ms
          setb p2.5
          ret
          table:db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;數(shù)字0-9的十六進制數(shù)
          del1ms:mov r7,#10 ;1ms延時子程序
          del1: mov r6,#50
          del2:djnz r6,del2
          djnz r7,del1
          ret
          del20ms:mov r5,#40 ;20ms延時子程序
          del3:mov r4,#250
          del4:djnz r4,del4
          djnz r5,del3
          ret
          key:jnb p3.2,key1 ;時間分加1按鈕
          jnb p3.3,key2 ;時間時加1按鈕
          sjmp keyout
          key1:lcall del20ms ;20ms延時消抖
          jb p3.2,keyout
          jnb p3.2,$ ;等待按鍵放開
          inc 32h ;分加1
          mov a,32h
          cjne a,#60,keyout ;判分是否加到60,沒有就返回
          mov 32h,#00
          sjmp keyout
          key2:lcall del20ms ;20ms延時消抖
          jb p3.3,keyout
          jnb p3.3,$ ;等待按鍵放開
          inc 33h ;時加1
          mov a,33h
          cjne a,#24,keyout ;判時是否加到24,沒有就返回
          mov 33h,#00 ;時加到24,時清零
          sjmp keyout
          keyout:ret
          keynz:jnb p3.4,keynz1 ;鬧鐘時間和當前時間切換按鈕
          jnb p3.5,keynz2 ;鬧鐘加分1按鈕
          jnb p3.6,keynz3 ;鬧鐘時加1按鈕
          jnb p3.7,keynz4 ;關(guān)閉鬧鐘按鈕
          sjmp nzout
          nz1:lcall display1 ;調(diào)用顯示鬧鐘時間子程序
          jnb p3.5,keynz2
          jnb p3.6,keynz3
          keynz1:jnb p3.4,nz1 ;按住按鍵不放開顯示鬧鐘時間并可以調(diào),放開則顯示當前時間
          sjmp nzout
          keynz2:lcall del20ms
          jb p3.5,nzout
          jnb p3.5,$ ;等待按鍵放開
          inc 38h ;鬧鐘分加1
          mov a,38h
          cjne a,#60,nzout ;判鬧鐘分是否加到60,沒有就返回
          mov 38h,#00 ;鬧鐘分加到60,將鬧鐘分清零
          sjmp nzout
          keynz3:lcall del20ms
          jb p3.6,nzout
          jnb p3.6,$ ;等待按鍵放開
          inc 39h ;鬧鐘時加1
          mov a,39h
          cjne a,#24,nzout ;判鬧鐘時是否加到24,沒有就中斷返回
          mov 39h,#00 ;鬧鐘時加到24,鬧鐘時清零
          sjmp nzout
          keynz4:jb p3.7,nzout
          jnb p3.7,$ ;等待按鍵放開
          setb p1.0 ;關(guān)閉鬧鐘
          sjmp nzout
          nzout:ret
          end

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

          上一頁 1 2 下一頁

          評論


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