新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機電子鐘設計

        單片機電子鐘設計

        作者: 時間:2012-12-31 來源:網絡 收藏

        這里給大家介紹一個51設計方法:

        org 00h
        a_bit equ 30h ;秒寄存器
        b_bit equ 31h ;10秒寄存器
        c_bit equ 32h ;分寄存器
        d_bit equ 33h ;10分寄存器
        e_bit equ 34h ;小時寄存器
        f_bit equ 35h ;10小時集存器

        org 0000h
        ajmp star
        org 0030h

        star:
        mov a,#00h ;把各個位全部清0
        mov a_bit,a
        mov b_bit,a
        mov c_bit,a
        mov d_bit,a
        mov e_bit,a
        mov f_bit,a
        stlop: acall display ;51程序的計算部分

        inc a_bit ;秒位加1
        mov a,a_bit ;送a
        cjne a,#10,stlop;如果秒到10那么轉到10秒處理
        mov a_bit,#00h ;秒位清0
        inc b_bit ;10秒位加1
        mov a,b_bit ;送a
        cjne a,#6,stlop ;如果10秒到了6那么到分處理
        mov b_bit,#00h ; 10秒位清0
        inc c_bit
        mov a,c_bit
        cjne a,#10,stlop
        mov c_bit,#00h
        inc d_bit
        mov a,d_bit
        cjne a,#6,stlop
        mov d_bit,#00h
        inc e_bit
        mov a,e_bit
        cjne a,#10,stlop
        mov e_bit,#00h
        inc f_bit
        mov a,f_bit
        cjne a,#3,stlop
        mov f_bit,#00h
        ajmp stlop ;重新開始計算

        display: ;顯示子程序-51直接顯示在七段數碼管上
        mov dptr,#numtab ;指定查表啟始地址
        mov r0,#4
        dpl1: mov r1,#250 ;顯示1000次
        dplop: mov a,a_bit ;取秒位的值
        MOVC A,@A+DPTR ;查秒位數的7段代碼
        mov p0,a ;送出到P0口顯示
        clr p2.6 ;開個位顯示
        acall d1ms ;顯示1ms
        setb p2.6 ;關閉顯示

        mov a,b_bit ;取10秒位的值
        MOVC A,@A+DPTR ;查10秒位的7段代碼
        mov p0,a ;送出10秒位到P0口顯示

        clr p2.5 ;開10秒位顯示
        acall d1ms ;顯示1ms
        setb p2.5

        mov a,c_bit ;取分位
        MOVC A,@A+DPTR ;

        mov p0,a ;
        clr p2.4 ;
        acall d1ms ;

        setb p2.4

        mov a,d_bit ;取10分位
        MOVC A,@A+DPTR ;

        mov p0,a ;

        clr p2.3 ;

        acall d1ms ;

        setb p2.3

        mov a,e_bit ;取小時位
        MOVC A,@A+DPTR ;
        mov p0,a ;
        clr p2.2 ;
        acall d1ms ;

        setb p2.2

        mov a,f_bit ;取10小時位
        MOVC A,@A+DPTR ;
        mov p0,a ;
        clr p2.1 ;
        acall d1ms ;
        setb p2.1

        djnz r1,dplop ;100次沒完循環
        djnz r0,dpl1 ;4個100次沒完循環
        ret
        D1MS: MOV R7,#20 ;1MS延時(按12MHZ算)
        DJNZ R7,$
        RET
        ;七段數碼管各劃的數字排列表-http://www.51hei.com/ 提供
        numtab: db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
        ;0 1 2 3 4 5 6 7 8 9
        end



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 申扎县| 大宁县| 临夏县| 甘泉县| 乡宁县| 富裕县| 湾仔区| 宁武县| 东莞市| 龙井市| 江陵县| 韩城市| 中阳县| 马边| 青冈县| 神池县| 墨江| 新津县| 化州市| 嫩江县| 博野县| 壤塘县| 淮南市| 裕民县| 抚州市| 中超| 洪江市| 昭苏县| 南雄市| 涡阳县| 东兴市| 读书| 金坛市| 凤山县| 宾川县| 平谷区| 万荣县| 萝北县| 金坛市| 汾西县| 科技|