新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機4位數碼管電子時鐘

        單片機4位數碼管電子時鐘

        作者: 時間:2016-11-29 來源:網絡 收藏
        經過幾天的努力,第一個51單片機電子時鐘終于出爐了,通過4位數碼管來顯示時間,系統晶振11.0592MHZ,仿真圖中用二極管代替時鐘冒號閃爍,非門代替三極管,讓仿真速度與真實速度達到一致,本設計用了6個按鈕來對時間及鬧鐘時間的調節、關閉,p3.2接時間分加1按鈕,p3.3接時間時加1按鈕,p3.4接鬧鐘時間與當前時間切換按鈕,按住不放顯示鬧鐘的時間,鬧鐘初始化為00:00,放開按鈕則顯示當前時間,p3.5接鬧鐘加1按鈕,p3.6接鬧鐘時加1按鈕,p3.7接關閉鬧鐘按鈕

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

        本文引用地址:http://www.104case.com/article/201611/323565.htm

        仿真圖

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


        作者:胡琴
        聯系qq:1257394091
        本程序版本規本人所有可以任意轉載:
        技術支持網站:http://www.51hei.com
        本程序已經通過軟件仿真和硬件制作.

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


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 衡阳县| 兴安盟| 井研县| 黔西县| 行唐县| 南投县| 远安县| 博野县| 梁山县| 施甸县| 吉隆县| 乌拉特中旗| 阿合奇县| 华安县| 柳江县| 涟源市| 揭东县| 图片| 思茅市| 古浪县| 富民县| 綦江县| 长宁区| 玉树县| 荥经县| 宣城市| 宝鸡市| 泉州市| 彝良县| 徐汇区| 珠海市| 宣化县| 栖霞市| 南木林县| 淄博市| 会泽县| 和田市| 同仁县| 安图县| 宁安市| 绍兴县|