历史上的今天
返回首页

历史上的今天

今天是:2025年02月07日(星期五)

正在发生

2021年02月07日 | 51单片机8位数码管电子时钟仿真图及源代码

2021-02-07 来源:eefocus

利用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

end


推荐阅读

史海拾趣

东晨(DC)公司的发展小趣事

在电子行业中,合作与竞争并存。东晨(DC)公司善于在合作中寻求共赢,与产业链上下游企业建立了紧密的合作关系。同时,公司也积极参与市场竞争,通过不断创新和优化产品,提高市场竞争力。在与国内外同行的竞争中,东晨(DC)公司始终保持着领先地位,赢得了市场的广泛认可。

地博电子(DIBO)公司的发展小趣事

随着公司业务的不断发展,地博电子在2010年成功投产了2条全自动化PC薄膜生产线。这一举措不仅大大提高了生产效率,降低了生产成本,还确保了产品质量的稳定性和一致性。全自动化生产线的投产,为地博电子在电子材料行业中的竞争地位奠定了坚实的基础。

CET Technology公司的发展小趣事

在数字化转型的大背景下,CET Technology积极探索数字孪生技术在园区管理中的应用。公司提供的数字孪生与3D可视化服务,通过创建园区的虚拟实体,模拟、验证、预测和控制园区的运营状态,帮助园区实现智慧化管理、优化服务和提高生产效率。此外,CET的数字孪生服务还能监控园区内人员和车辆的通行情况,提升园区内部的交通效率,为园区的可持续发展提供了有力支持。

华润微(CRMICRO)公司的发展小趣事

华润微的前身可以追溯到1983年成立的香港华科电子公司。这家公司在电子行业中默默耕耘,逐渐积累了技术实力和市场份额。1999年,公司开始涉足6英寸晶圆代工业务,标志着其向半导体制造领域的进军。经过数年的发展和积累,华润微于2002年收购了中国华晶电子集团公司,进一步扩大了其业务范围和市场份额。此后,华润微不断壮大,逐步成为电子行业的佼佼者。

ELINA INDEK公司的发展小趣事

因美纳始终将创新与研发作为公司的核心竞争力。随着技术的不断进步,公司不断推出更先进、更便捷的基因测序产品,满足市场的多样化需求。同时,因美纳还积极与全球各大科研机构合作,共同推动基因测序技术的发展和应用。这种持续的创新和研发精神使得因美纳在电子行业中保持领先地位。

Cofan Usa Inc公司的发展小趣事

在电子行业的早期,Cofan Usa Inc公司以其敏锐的市场洞察力和技术创新能力,成功研发出一款具有革命性的电子产品,这款产品凭借其出色的性能和用户体验,迅速在市场上获得认可。公司不断投入研发资源,持续推出新产品,逐渐在电子行业中树立起了技术领先的形象。

问答坊 | AI 解惑

求助大家

请问大家型号为2407的DSP与一个四位共阴数码管(如GEM5461AE)的硬件电路应该怎么连? 中间是否需要接驱动芯片?…

查看全部问答>

想用cy7c68013a 读取1M SRAM 怎么实现?

各位:       想用cy7c68013a 读取1M SRAM 怎么实现?…

查看全部问答>

电子设计竞赛系列指导之二--怎么准备这次竞赛

本帖最后由 paulhyde 于 2014-9-15 04:00 编辑  …

查看全部问答>

“没有门”的微型生态浴室 你敢用吗?

“没有门”的微型生态浴室 这个浴室设计的亮点在于他所使用的是真正的植物作为净化水源的装置,他利用大自然的过滤原则,将淋浴与植物之间构成了一个小的生态系统,可以对废水进行回收和再利用。作为解决偏远地区用水困难的问题…

查看全部问答>

硬件微分电路

实用微分电路对于高频信号检测比较敏感,特别适合于检测脉冲信号;但对于低频信号微分作用效果就不那么理想。我想请问诸位高手,如何精确的实现对低频信号的微分????(需要检测低频信号频率大概是50HZ。)…

查看全部问答>

请问大家都开始用4月份新的V3.0.0固件库么??

                                 问问!!!…

查看全部问答>

【MSP430共享】IAR+kegen++MSP430_V5.3

IAR+kegen++MSP430_V5.3,很常用的软件,也是430使用率很高的软件!!! [ 本帖最后由 鑫海宝贝 于 2011-10-12 09:37 编辑 ]…

查看全部问答>

uCOS-II移植到Cortex-M4问题

今天把uCOS-II移植到Cortex-M4上面,由于M4和M3内核相似,M3的程序直接拿到M4上面就可以用,我用的是KeilMDK V4.23,硬件是STM32的stm32f4discovery开发套件需要注意的只有一点,不要选择使用FPU,就没有问题了。虽然uCOS-II是不支持浮点运算的。但 ...…

查看全部问答>

你怎么看?--电源设计中铝电解电容器常见缺陷的规避方法

TI电源设计小贴士 50:铝电解电容器常见缺陷的规避方法 因其低成本的特点,铝电解电容器一直都是电源的常用选择。但是,它们寿命有限,且易受高温和低温极端条件的影响。铝电解电容器在浸透电解液的纸片两面放置金属薄片。这种电解液会在电容器寿 ...…

查看全部问答>