<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

8位數碼管電子時鐘仿真圖及程序源代碼

2oON_changxuemc ? 來源:cc ? 2019-01-21 16:24 ? 次閱讀

利用8位數碼管顯示時間,原理與4位數碼管顯示的基本一樣

仿真圖:

程序源代碼:

本程序已經通過在線軟件仿真和硬件制作.

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 ;關中斷www.dgzj.com

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

p 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

p 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

p 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

disp10: mov 34h,#0bfh ;"-"顯示

mov a,34h

mov p0,a

clr p2.5

lcall del1ms

setb p2.5

disp11: mov 35h,#0bfh ;"-"顯示

mov a,35h

mov p0,a

clr p2.2

lcall del1ms

setb p2.2

ret

display1:mov a,38h ;鬧鐘分顯示

mov b,#10

p ab

mov 26h,a

mov 27h,b

d1:mov a,26h ;鬧鐘分十位顯示

mov dptr,#table

movc a,@a+dptr

mov p0,a

clr p2.3

lcall del1ms

setb p2.3

d2:mov a,27h ;鬧鐘分個位顯示

mov dptr,#table

movc a,@a+dptr

mov p0,a

clr p2.4

lcall del1ms

setb p2.4

dispnz: mov a,39h ;鬧鐘時顯示

mov b,#10

p ab

mov 28h,a

mov 29h,b

d5: mov a,28h ;鬧鐘時十位顯示

mov dptr,#table

movc a,@a+dptr

mov p0,a

clr p2.0

lcall del1ms

setb p2.0

d6: mov a,29h ;鬧鐘時個位顯示

mov dptr,#table

movc a,@a+dptr

mov p0,a

clr p2.1

lcall del1ms

setb p2.1

mov 35h,#0bfh ;"-"顯示

mov a,35h

mov p0,a

clr p2.2

lcall del1ms

setb p2.2

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

keysan:jnb p3.1,key1 ;秒加1按鈕

jnb p3.2,key2 ;分加1按鈕

jnb p3.3,key3 ;時加1按鈕

sjmp keyout

key1: lcall del20ms

jb p3.1,keyout

jnb p3.1,$

inc 31h ;秒加1

mov a,31h

cjne a,#60,keyout

mov 31h,#00

sjmp keyout

key2:lcall del20ms

jb p3.2,keyout

jnb p3.2,$

inc 32h ;分加1

mov a,32h

cjne a,#60,keyout

mov 32h,#00

sjmp keyout

key3:lcall del20ms

jb p3.3,keyout

jnb p3.3,$

inc 33h ;時加1

mov a,33h

cjne a,#24,keyout

mov 33h,#00

sjmp keyout

keyout:ret

keynz:jnb p3.4,keynz4 ;顯示鬧鐘并可修改和顯示當前時間

jnb p3.7,keynz5

jnb p3.5,nz3

jnb p3.6,nz4

sjmp nzout

nzout:ret

nz2:lcall display1

jnb p3.5,nz3

jnb p3.6,nz4

keynz4:jnb p3.4,nz2

sjmp nzout

nz3:lcall del20ms

jb p3.5,nzout

jnb p3.5,$

inc 38h

mov a,38h

cjne a,#60,nzout

mov 38h,#00

sjmp nzout

nz4:lcall del20ms

jb p3.6,nzout

jnb p3.6,$

inc 39h

mov a,39h

cjne a,#24,nzout

mov 39h,#00

sjmp keyout

keynz5:jb p3.7,nzout

jnb p3.7,$

setb p1.0

sjmp nzout

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6002

    文章

    43990

    瀏覽量

    621188
  • 數碼管
    +關注

    關注

    31

    文章

    1827

    瀏覽量

    89962

原文標題:51單片機8位數碼管電子時鐘仿真圖及源代碼

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    數碼管仿真問題

    仿真一個時鐘程序,用一個8位數碼管顯示正常,2個4的并聯就亂碼,并聯是abcdef并到一個I/
    發表于 03-08 23:20

    AT89C51數碼管電子時鐘源代碼

    AT89C51數碼管電子時鐘源代碼
    發表于 08-13 23:30

    595驅動8位數碼管

    最近想做一個用595芯片來驅動8位數碼管,數碼管顯示為1,2,3...8。請高手指點一下程序怎么寫,謝謝!
    發表于 12-05 14:24

    開源~~電子時鐘資料原理,源代碼

    `開源~~電子時鐘資料原理,源代碼!有時,分 加功能按鍵分別為P1.0 與P1.1 C源程序仿真文件也分享給大家!希望大家多多交流另外加以
    發表于 06-15 17:30

    位數碼管電子時鐘

    用單片機型號STC89C52RC,六位數碼管的驅動器不同,所編寫的C程序也要求不同嗎
    發表于 06-27 00:18

    關于數碼管電子時鐘的制作

    關于數碼管電子時鐘的制作
    發表于 04-11 22:09

    位數碼管動態掃描原理分析

    位數碼管控制完成后,按照相同的辦法讓第2、第3、直到第8位數碼管亮,間隔時間要和人眼視覺暫留時間進行比較,這樣才可以滿足顯示要求,可以實
    發表于 09-11 09:15

    如何利用數碼管驅動芯片max7221實現8位數碼管顯示

    MAX7221是什么?有何功能?怎樣在keil c51中新建工程ex67?其代碼如何去實現?怎樣在proteus中新建仿真文件ex67.dsn?如何利用數碼管驅動芯片max7221實現8
    發表于 08-03 07:10

    位數碼管動態掃描八位數碼管+流水燈的相關資料分享

    位數碼管+流水燈八位數碼管滾動顯示可變亮度的數碼管顯示八位數碼管動態掃描其實驗現象為:從左到右8數碼
    發表于 12-03 06:55

    8位數碼管實現10學號動態顯示的代碼如何去實現

    8位數碼管實現10學號動態顯示的原理是什么?8位數碼管實現10學號動態顯示的
    發表于 02-23 06:36

    8位數碼管顯示的電子時鐘

    采用8位數碼管顯示,DS1302時鐘芯片,89S51單片機。 四個輸入按鍵,已加入調時程序。電路已運行測試走時穩定。
    發表于 05-18 09:08 ?43次下載

    基于數碼管電子時鐘代碼設計詳細資料免費下載

    本文檔的主要內容詳細介紹的是基于數碼管電子時鐘代碼設計資料免費下載。
    發表于 07-04 08:00 ?34次下載

    基于51單片機的8位數碼管電子時鐘仿真圖及源代碼詳細資料概述

    利用8位數碼管顯示時間,原理與4位數碼管顯示的基本一樣
    的頭像 發表于 07-19 17:13 ?2.4w次閱讀

    使用51單片機設計的六位數碼管電子時鐘程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計的六位數碼管電子時鐘程序免費下載。
    發表于 09-26 14:58 ?120次下載
    使用51單片機設計的六<b class='flag-5'>位數碼管</b><b class='flag-5'>電子時鐘</b><b class='flag-5'>程序</b>免費下載

    基于51單片機的數碼管顯示電子時鐘例程源代碼

    基于51單片機的數碼管顯示電子時鐘例程源代碼
    發表于 05-12 16:33 ?40次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>