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

          新聞中心

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

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

          作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
          經(jīng)過(guò)幾天的努力,第一個(gè)51單片機(jī)電子時(shí)鐘終于出爐了,通過(guò)4位數(shù)碼管來(lái)顯示時(shí)間,系統(tǒng)晶振11.0592MHZ,仿真圖中用二極管代替時(shí)鐘冒號(hào)閃爍,非門代替三極管,讓仿真速度與真實(shí)速度達(dá)到一致,本設(shè)計(jì)用了6個(gè)按鈕來(lái)對(duì)時(shí)間及鬧鐘時(shí)間的調(diào)節(jié)、關(guān)閉,p3.2接時(shí)間分加1按鈕,p3.3接時(shí)間時(shí)加1按鈕,p3.4接鬧鐘時(shí)間與當(dāng)前時(shí)間切換按鈕,按住不放顯示鬧鐘的時(shí)間,鬧鐘初始化為00:00,放開(kāi)按鈕則顯示當(dāng)前時(shí)間,p3.5接鬧鐘加1按鈕,p3.6接鬧鐘時(shí)加1按鈕,p3.7接關(guān)閉鬧鐘按鈕

          有沒(méi)有人會(huì)問(wèn) ,怎么沒(méi)有減的按鈕呢???
          為了不用那么多按鈕,所以只設(shè)置了加1的按鈕,那減的怎么辦??
          程序的設(shè)計(jì)是這樣的,當(dāng)分加到59的時(shí)候,再加一次就變00,當(dāng)時(shí)加到23的時(shí)候,再加一次就變00,從而實(shí)現(xiàn)了減的效果,O(∩_∩)O,附帶仿真圖和程序源代碼及實(shí)物圖.........

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

          仿真圖

          實(shí)物圖目前還差3個(gè)按鈕,準(zhǔn)備補(bǔ)上(^o^)/~,電源的指示燈太亮了╮(╯▽╰)╭,準(zhǔn)備把它拆了


          作者:胡琴
          聯(lián)系qq:1257394091
          本程序版本規(guī)本人所有可以任意轉(zhuǎn)載:
          技術(shù)支持網(wǎng)站:http://www.51hei.com
          本程序已經(jīng)通過(guò)軟件仿真和硬件制作.

          程序源代碼:
          org 0000h
          ajmp main ;調(diào)至主程序
          org 000bh ;T0中斷入口地址
          ljmp inti0
          org 001bh ;T1中斷入口地址
          ljmp inti1
          org 0030h
          main:mov tmod,#11h ;設(shè)T0、T1為模式1
          mov ie,#8ah ;開(kāi)T0、T1中斷允許
          mov th0,#4ch ;賦T0 50ms初值
          mov tl0,#00h
          mov th1,#4ch ;賦T1 50ms初值
          mov tl1,#00h
          mov sp,#60h ;設(shè)置堆棧指針
          mov r0,#20 ; T0 50ms計(jì)數(shù)20次
          mov 31h,#00 ;時(shí)間秒初始化
          mov 32h,#00 ;時(shí)間分初始化
          mov 33h,#00 ;時(shí)間時(shí)初始化
          mov 38h,#00 ;鬧鐘分初始化
          mov 39h,#00 ;鬧鐘時(shí)初始化
          setb tr0 ;啟動(dòng)T0
          setb tr1 ;啟動(dòng)T1
          loop:lcall display ;調(diào)用時(shí)間顯示子程序
          lcall key ;調(diào)用時(shí)間調(diào)節(jié)按鍵子程序
          lcall keynz ;調(diào)用鬧鐘按鍵子程序
          ajmp loop
          inti0:push psw ;保護(hù)現(xiàn)場(chǎng)
          push acc
          clr ea ;關(guān)中斷
          mov th0,#4ch ;重賦50ms初值
          mov tl0,#00h
          djnz r0,out ;對(duì)50ms計(jì)數(shù)判斷
          mov r0,#20 ;重賦50ms計(jì)數(shù)值
          inc 31h ;秒加1
          cpl p2.2 ;P2.2取反輸出
          mov a,31h
          cjne a,#60,out ;判秒是否加到60,沒(méi)有加到中斷返回
          mov 31h,#00 ;秒加到60,對(duì)秒清零
          inc 32h ;分加1
          mov a,32h
          cjne a,#60,out ;判分是否加到60,沒(méi)有加到就中斷返回
          mov 32h,#00 ;分加到60,對(duì)分清零
          inc 33h ;時(shí)加1
          mov a,33h
          cjne a,#24,out ;判時(shí)是否加到24,沒(méi)有就中斷返回
          mov 33h,#00 ;時(shí)加到24,對(duì)時(shí)清零
          out: setb ea ;開(kāi)中斷
          pop acc ;恢復(fù)現(xiàn)場(chǎng)
          pop psw
          reti ;中斷返回
          inti1:push psw ;保護(hù)現(xiàn)場(chǎng)
          push acc
          clr ea ;關(guān)中斷
          mov th1,#4ch ;賦50ms初值
          mov tl1,#00h
          inc 3ah
          mov a,3ah
          cjne a,#20,out1 ;判斷50ms計(jì)數(shù)是否到20,沒(méi)到就中斷返回
          mov 3ah,#00 ;50ms計(jì)數(shù)到20,將計(jì)數(shù)單元清零
          mov a,32h
          cjne a,38h,out1 ;鬧鐘分與時(shí)間分判斷
          mov a,33h
          cjne a,39h,out1 ;鬧鐘時(shí)與時(shí)間時(shí)判斷
          clr p1.0 ;相等就清p1.0輸出
          out1: setb ea ;開(kāi)中斷
          pop acc ;恢復(fù)現(xiàn)場(chǎng)
          pop psw
          reti ;中斷返回


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


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