新聞中心

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

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

        作者: 時間:2016-11-29 來源:網絡 收藏

        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 ;調用延時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 ;數字0-9的十六進制數
        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 ;關閉鬧鐘按鈕
        sjmp nzout
        nz1:lcall display1 ;調用顯示鬧鐘時間子程序
        jnb p3.5,keynz2
        jnb p3.6,keynz3
        keynz1:jnb p3.4,nz1 ;按住按鍵不放開顯示鬧鐘時間并可以調,放開則顯示當前時間
        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 ;關閉鬧鐘
        sjmp nzout
        nzout:ret
        end

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

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 普宁市| 海阳市| 东至县| 蒲江县| 龙门县| 崇州市| 遵义市| 育儿| 新昌县| 财经| 额敏县| 余姚市| 长沙县| 苗栗市| 嘉荫县| 云梦县| 德兴市| 绥宁县| 肥城市| 雷山县| 青河县| 汝南县| 牙克石市| 肇州县| 华宁县| 芜湖县| 正安县| 莱州市| 德钦县| 湖口县| 当雄县| 阿荣旗| 布拖县| 崇礼县| 微山县| 贺州市| 陇西县| 望奎县| 北安市| 昌乐县| 岳西县|