新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機8位數碼管電子時鐘(完結)

        51單片機8位數碼管電子時鐘(完結)

        作者: 時間:2016-11-29 來源:網絡 收藏
        利用8位數碼管顯示時間,原理與4位數碼管顯示的基本一樣


        仿真圖:

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

        程序源代碼:
        作者:胡琴
        聯系qq:1257394091
        本程序版本規本人所有可以任意轉載:
        技術支持網站:http://www.51hei.com
        本程序已經通過在線軟件仿真和硬件制作.
        org 0000h ;程序開始入口地址
        sjmp main ;跳轉至主程序
        org 000bh ;T0中斷入口地址
        ljmp inti0 ;跳轉至T0中斷程序
        org 001bh ;T1中斷入口地址
        ljmp inti1 ;跳轉至T1中斷程序
        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 38h,#00 ;鬧鐘分初值
        mov 39h,#00 ;鬧鐘時初值
        mov 31h,#00 ;時間秒初值
        mov 32h,#00 ;時間分初值
        mov 33h,#00 ;時間時初值
        setb tr0 ;啟動定時器T0
        setb tr1 ;啟動定時器T1
        loop:lcall display ;調用時間顯示程序
        lcall keysan ;調用時間調節按鈕
        lcall keynz ;調用鬧鐘控制按鈕
        ajmp loop
        inti0:push psw ;壓入堆棧指針,保護現場
        push acc
        clr ea ;關中斷
        mov th0,#4ch ;重賦T0定時初值
        mov tl0,#00h
        inc 3ah ;3ah為50ms計數單元
        mov a,3ah
        cjne a,#20,out ;1秒計數是否到
        mov 3ah,#00 ;清50ms計數初值
        inc 31h ;秒加1
        mov a,31h
        cjne a,#60,out ;60秒計數是否到
        mov 31h,#00
        inc 32h ;分加1
        mov a,32h
        cjne a,#60,out ;60分計數是否到
        mov 32h,#00
        inc 33h ;時加1
        mov a,33h
        cjne a,#24,out ;24時計數是否到
        mov 33h,#00
        out: setb ea ;開中斷
        pop acc ;彈出堆棧指針,恢復現場
        pop psw
        reti ;中斷返回
        inti1:push psw ;壓入堆棧指針,恢復現場
        push acc
        clr ea
        mov th1,#4ch ;重賦T1定時初值
        mov tl1,#00h
        inc 71h ;71h為50ms計數單元
        mov a,71h
        cjne a,#20,out1
        mov 71h,#00
        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 ;中斷返回
        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的內容+table內容,結果回存給A
        mov p0,a ;將A給P0口
        clr p2.6 ;清p2.6,點亮第7位數碼管
        lcall del1ms ;調用1ms延時子程序
        setb p2.6 ;滅第7位數碼管
        disp2: mov a,21h ;秒個位顯示
        mov dptr,#table
        movc a,@a+dptr
        mov p0,a
        clr p2.7
        lcall del1ms
        setb p2.7
        disp4: mov a,32h ;分顯示
        mov b,#10
        div ab
        mov 22h,a
        mov 23h,b
        disp5: mov a,22h ;分十位顯示
        mov dptr,#table
        movc a,@a+dptr
        mov p0,a
        clr p2.3
        lcall del1ms
        setb p2.3
        disp6: mov a,23h ;分個位顯示
        mov dptr,#table
        movc a,@a+dptr
        mov p0,a
        clr p2.4
        lcall del1ms
        setb p2.4
        disp7: mov a,33h ;時顯示
        mov b,#10
        div ab
        mov 24h,a
        mov 25h,b
        disp8: mov a,24h ;時十位顯示
        mov dptr,#table
        movc a,@a+dptr
        mov p0,a
        clr p2.0
        lcall del1ms
        setb p2.0
        disp9: mov a,25h ;時個位顯示
        mov dptr,#table
        movc a,@a+dptr
        mov p0,a
        clr p2.1
        lcall del1ms
        setb p2.1


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 陵川县| 河津市| 海口市| 连山| 霞浦县| 若羌县| 外汇| 定远县| 阳高县| 攀枝花市| 汪清县| 石渠县| 伊宁县| 民丰县| 南开区| 永康市| 新乡市| 霍州市| 河津市| 宁晋县| 资讯 | 青州市| 土默特右旗| 瓦房店市| 三门县| 商都县| 乌拉特前旗| 漳平市| 长岛县| 南京市| 凤阳县| 体育| 古蔺县| 屏南县| 凤山市| 东源县| 乾安县| 西充县| 沽源县| 上蔡县| 西藏|