收藏 分销(赏)

四位电子钟电路及汇编源程序.doc

上传人:仙人****88 文档编号:7389560 上传时间:2025-01-02 格式:DOC 页数:5 大小:73.50KB
下载 相关 举报
四位电子钟电路及汇编源程序.doc_第1页
第1页 / 共5页
四位电子钟电路及汇编源程序.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
四位电子钟设计与制作 电路原理图: 此作品为四位电子钟,主要由单片机编程实现其功能,所以分有两部分一个硬件,一个是软件,硬件方面的电路图如上图,单片机采用ATMEL公司生产的芯片AT89C2051里面有2K字节的可反复擦写的Flash程序存储器和128字节的随机存取数据存储器。显示部分为0.56共阳极四位数码管,在电路中P1口输出段码数据送入四位数码管,P3口做扫描控制,控制数码管的显示。Q1、Q2、Q3为8550三极管,信号经过放大送入P1、P2、P3、P4也就是数码管显示部分,AN1调整小时,AN2为调整分钟它们都接10脚然后接地.10脚接地,20脚接正电源,它们由3-6V电源供电,可以用两节1.5V的电池供电,也可以接USB接口5V供电. 软件方面,程序里先定义两个中断定时器T0和T1,一个作为秒记数用,另一个作为调整时闪烁用,编程时先将P1和P3口数据清零,然后P1和P3作为动态扫描显示,由于人的眼睛有延迟性,当扫描频率非常高时人就感觉数码管一直亮着,而同时计数器在遵循时间的变化方式执行着分到了60分钟加1,时间为24小时制,就是到了24小时后自动为00:00. 元件清单: 名称 型号 数量 单片机 AT89C2051 1 数码管 0.56四位共阳极 1 三极管 8550 4 电阻 4.7K 4 10K 1 220 8 电容 30PF 2 10uf 1 104 1 石英晶体振荡器 12M 1 电子钟源程序(汇编): MIAO BIT P2.0 ;秒点位 HOU_S BIT P3.0 ;时十位 HOU_G BIT P3.1 ;时个位 MIN_S BIT P3.2 ;分十位 MIN_G BIT P3.3 ;分个位 H_KEY BIT P3.4 ;时调整键 M_KEY BIT P3.5 ;分调整键 SHAN BIT 0 ;秒点闪烁 LEDBUS EQU P1 ;显示数据总线 SECOND EQU 30H ;秒寄存器 MINUTE EQU 31H ;分寄存器 HOUR EQU 32H ;时寄存器 TIM_1 EQU 33H ;定时器0中断次数 TIM_2 EQU 34H ;定时器0中断次数 ;******************************** ORG 0000H ;程序开始 LJMP INIT ORG 000BH ;定时器0中断入口地址 LJMP TIMER0 ORG 0030H ;程序从30H开始 ;******************************** ; 单片机初始化 INIT: MOV SECOND, #0 ;秒置0 MOV MINUTE, #0 ;分置0 MOV HOUR, #0 ;开机后显示0点 MOV TIM_1, #10 ;中断10次为0.5秒 MOV TIM_2, #2 ;0.5*2=1秒 MOV SP, #60H ;堆栈指针指向60H MOV TMOD, #01H ;定时器0为模式1(16位) MOV TH0, #03CH MOV TL0, #0B0H ;50毫秒初值(晶振12M) SETB ET0 ;定时器0中断允许 SETB TR0 ;启动定时器0 SETB EA ;开总中断 ;******************************** ; 主程序 MAIN: JNB H_KEY, HT ;时调整键按下转到HT JNB M_KEY, MT ;分调整键按下转到MT ACALL DISP ;调用显示子程序 AJMP MAIN ;转LOOP继续检测按键状态 ;******************************** ; 时间调整 ;----- 分调整 ----------------- MT: ACALL DISP ;调用显示子程序 JNB M_KEY, MT ;判断按键是否松开 INC MINUTE ;分加一 MOV A, MINUTE CJNE A,#60, MAIN ;判断分是否加到60 MOV MINUTE, #0 ;分到60变为0 MOV SECOND, #0 ;秒置0 AJMP MAIN ;----- 时调整 ----------------- HT: ACALL DISP ;调用显示子程序 JNB H_KEY, HT ;判断按键是否松开 INC HOUR ;时加1 MOV A, HOUR CJNE A,#24, MAIN MOV HOUR, #0 ;判断时是否到24,时到24变0 AJMP MAIN ;******************************** ; 显示子程序 DISP: MOV DPTR, #LEDTAB ;数码管段码表首地址送DPTR MOV A, MINUTE ;分放入ACC MOV B, #10 ;B放入10 DIV AB ;A/B,商在A余数在B MOVC A, @A+DPTR ;查表取分十位段码 MOV LEDBUS, A ;段码送LEDBUS口显示 MOV C, SHAN MOV MIAO, C ;秒点闪烁 CLR MIN_S ;打开分十位显示 ACALL D1MS ;延时1毫秒 SETB MIN_S ;关闭分十位显示 MOV A, B MOVC A, @A+DPTR ;查表取分个位段码 MOV LEDBUS, A MOV C, SHAN MOV MIAO, C ;秒点闪烁 CLR MIN_G ;打开分个位显示 ACALL D1MS ;延时1毫秒 SETB MIN_G ;关闭分十位显示 MOV A, HOUR MOV B, #10 DIV AB ;拆分小时的十位和个位 JZ DISP0 ;十位为0不显示十位 MOVC A, @A+DPTR MOV LEDBUS, A CLR HOU_S ;打开时十位显示 DISP0: ACALL D1MS SETB HOU_S ;关闭时十位显示 MOV A, B MOVC A, @A+DPTR MOV LEDBUS, A CLR HOU_G ;打开时个位显示 ACALL D1MS SETB HOU_G ;关闭时个位显示 RET ;******************************** ; 定时器0中断服务程序 TIMER0: MOV A, #0B1H ;定时器0中断服务子程序 ADD A, TL0 ;同步修正(参考本人的<如何是自制的单片机电子钟走时精准>) MOV TL0, A MOV TH0, #03CH ;重装定时器0初值 PUSH ACC ;入栈保护ACC和PSW PUSH PSW DJNZ TIM_1, RETI_1 MOV TIM_1, #10 ;中断10次为0.5秒 CPL SHAN ;取反闪烁位 DJNZ TIM_2, RETI_1 MOV TIM_2, #2 ;1秒时间到 INC SECOND ;秒加1 MOV A, SECOND CJNE A,#60, RETI_1 MOV SECOND, #0 ;秒到60变0 INC MINUTE ;分加1 MOV A, MINUTE CJNE A,#60, RETI_1 MOV MINUTE, #0 ;分到60变0 INC HOUR ;时加1 MOV A, HOUR CJNE A,#24, RETI_1 MOV HOUR, #0 ;时到24变0 RETI_1: POP PSW ;出栈 POP ACC RETI ;******************************** ; 延时子程序 D1MS: MOV R7, #2 ;延时1毫秒子程序 D_1: MOV R6, #250 ;延时时间估算250*2*2=1000微秒=1毫秒 DJNZ R6, $ DJNZ R7, D_1 RET ;******************************** ; 数码管段码表 LEDTAB: DB 14H,0D7H,4CH,45H,87H ; 0 1 2 3 4 DB 25H,024H,57H,04H,05H ; 5 6 7 8 9 END
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服