




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机报告 任务 实现年 月 日 时间 星期的显示 通过单键转换实现日期与时间的调换调整 同时可通过按键来调整日期与时间 硬件 STC89C52 型单片机 一片频率为 11 0592MHz 的晶振片 三片 74HC573 锁存器 6 块共阴极数码管 8 个发光二极管 4 个按键 一个压电式蜂鸣器等 硬件参数 1 发光二极管采用共阳极排列方式 一般普通发光二极管的工作电压为 1 6 2 1V 工作电流为 5 20mA 在这个单片机系统上 发光二极管的工作电压约为 1 8V 工作电流约为 4 5mA 2 74HC573 为 8 输入 8 输出锁存器 工作电压为 5 伏 OE 为片选端 LE 为锁存允许 端 OE 为低电平 LE 为高电平时锁存数据 当 LE 变为低电平时不允许新数据输入 输 出不变 当 OE 为高电平时 不选中此芯片 3 压电式蜂鸣器是以压电陶瓷的压电效应 来带动金属片的振动而发声的 压电式蜂鸣 器是以方波来驱动 所以在程序中改变 P2 5 引脚输出波形的频率 就可以调整控制蜂鸣器 音调 产生各种不同音色 音调的声音 另外 改变输出电平的高低电平占空比 则可以 控制蜂鸣器的声音大小 4 LED 数码管中各段发光二极管的伏安特性和普通二极管类似 只是正向压降较大 正向电阻也较大 在一定范围内 其正向电流与发光亮度成正比 由于常规的数码管起辉 电流只有 1 2 mA 最大极限电流也只有 10 30 mA 所以它的输入端在 5 V 电源的电路 信号相接时 一定要串加限流电阻 以免损坏器件 此板用的是共阴 7 段数码管 由公共 端控制位 操作说明 上电后 6 个数码管显示为时间 12 00 00 8 个数码管显示为星期一 按下按键 2 不动 数码管转而显示日期 00 01 01 前两位表示年份 中间两位表示月份 后面两位表 示日 松开按键 2 回到时间显示 按下按键 3 不动 数码管转而显示设置闹钟的时间 00 00 0 前两位为闹钟的小时 中间为闹钟的分 后面一位为是否开启闹铃的标志 0 表示关 闹钟 1 表示开闹钟 松开按键 3 回到时间显示 按键 4 供用户调整时间 按下按键 4 大约 1 秒钟 当听到 嘀 的一声说明已进入时间调整程序 此时按键 1 用来调整小时 按一下小时加 1 按键 2 用来调整分钟 按一下分钟加 1 按键 3 用来调整星期 按一下星 期加 1 继续按一下按键 4 则进入调整日期程序 此时按键 1 用来调整年份 按键 2 用来 调整月份 按键 3 用来调整日 按下其中一个按键相应的位加 1 继续按一下按键 4 则进 入设置闹钟程序 按键 1 用来调整闹钟的小时 按键 2 用来调整闹钟的分钟 按键 3 用来 开启或是关闭闹钟 按下其中一个按键相应的位加 1 再按一下按键 4 则跳出调整时间程 序 在此情况下如果时间到达设定的闹铃时间 闹铃响起 要想关掉闹铃可按一下按键 1 即可停止闹铃 硬件图 总程序流程图如下 本组总程序如下 SECOND EQU 30H MINITE EQU 31H HOUR EQU 32H DAY EQU 33H MOON EQU 34H YEAR L EQU 35H YEAR H EQU 36H MINCLK EQU 37H HOURCLK EQU 38H XQ EQU 39H TZK1 BIT P3 4 位 P3 4 为按键 1 TZK2 BIT P3 5 位 P3 5 为按键 2 TZK3 BIT P3 6 位 P3 6 为按键 3 SWITCH BIT P3 7 位 P3 7 为按键 4 DISPBUF1 EQU 40H DISPBIT EQU 48H T2SCNTA EQU 49H T2SCNTB EQU 4AH DISPBUF2 EQU 50H DISPBUF3 EQU 60H dula BIT P2 6 wala BIT P2 7 ORG 0000H LJMP MAIN ORG 000BH LJMP INT T0 START MOV SECOND 0 设置初始时间值 MOV MINITE 0 MOV HOUR 12 MOV DAY 1 MOV MOON 1 MOV YEAR L 00H MOV YEAR H 20H MOV HOURCLK 0 MOV MINCLK 0 MOV DISPBIT 6 MOV T2SCNTA 0 MOV T2SCNTB 0 MOV 60H 0 MOV 61H 0 LCALL DISP MOV TMOD 01H 定时器 0 工作在方式 1 MOV TH0 0F7H 定时器初值设置 MOV TL0 0AH SETB TR0 开启定时器 SETB ET0 SETB EA MOV XQ 0 CLR F0 显示标志位 MAIN JB TZK1 CHANGE1 LCALL DELY10MS JB TZK1 CHANGE1 SETB P2 3 按键 1 按下停止响铃 CHANGE1 JB TZK2 CHANGE2 年月日切换 LCALL DELY10MS JB TZK2 CHANGE2 MOV 60H 1 JNB TZK2 MOV 60H 0 CHANGE2 JB TZK3 ADJUST 闹钟切换 LCALL DELY10MS JB TZK3 ADJUST MOV 60H 2 JNB TZK3 MOV 60H 0 ADJUST JB SWITCH MAIN LCALL DELAY1S JB SWITCH MAIN 按键 4 按下 1 秒确定要调整时间 CLR P2 3 发出提示音可开始调整时间 ACALL DELY10MS SETB P2 3 ACALL ADJUST 1 ACALL ADJUST 2 ACALL ADJUST 3 AJMP MAIN 返回主程序 小时 分 星期键盘调整程序 ADJUST 1 JNB SWITCH 小时调整 JB TZK1 NK4 LCALL DELY10MS JB TZK1 NK4 按键 1 按下 INC HOUR 小时寄存器加 1 MOV A HOUR CJNE A 24 NH24 MOV HOUR 0 小时寄存器满 24 变为 0 NH24 LCALL DISP 调用时间变更子程序 JNB TZK1 NK4 JB TZK2 NK5 分调整 LCALL DELY10MS JB TZK2 NK5 按键 2 按下 INC MINITE 分钟寄存器加 1 MOV A MINITE CJNE A 60 NM60 MOV MINITE 0 分钟满 60 变为 0 NM60 LCALL DISP 调用时间变更子程序 JNB TZK2 NK5 JB TZK3 NK6 星期调整 LCALL DELY10MS JB TZK3 NK6 按键 3 按下 INC XQ 星期寄存器加 1 MOV A XQ CJNE A 7 NXQ7 MOV XQ 0 星期寄存器满 7 变为 0 NXQ7 LCALL DISP 调用时间变更子程序 JNB TZK3 NK6 JB SWITCH ADJUST 1 LCALL DELY10MS JB SWITCH ADJUST 1 退出小时 分 星期调整程序 INC 60H 显示标志寄存器加 1 RET 年 月 日键盘调整程序 ADJUST 2 JNB SWITCH 年低两位调整 JB TZK1 NK1 LCALL DELY10MS JB TZK1 NK1 按键 1 按下 INC YEAR L 年低位加 1 MOV A YEAR L CJNE A 64H NY100 MOV YEAR L 00H 年低位到 100 变为 0 NY100 LCALL DISP 调用时间变更子程序 JNB TZK1 NK1 JB TZK2 NK2 月调整 LCALL DELY10MS JB TZK2 NK2 按键 2 按下 INC MOON 月寄存器加 1 MOV A MOON CJNE A 13 NM12 MOV MOON 01H 月寄存器满 13 变为 0 NM12 LCALL DISP JNB TZK2 NK2 JB TZK3 NK3 日调整 LCALL DELY10MS JB TZK3 NK3 按键 3 按下 INC DAY 日寄存器加 1 MOV A MOON CJNE A 2 N1 LCALL JUDGE Y1 2 月则调用润 平年判断子程序 AJMP NS N1 LCALL JUDGE M1 不是 2 月则调用月判断子程序 NS LCALL DISP 调用时间变更子程序 JNB TZK3 NK3 JB SWITCH ADJUST 2 LCALL DELY10MS JB SWITCH ADJUST 2 退出年 月 日调整程序 INC 60H 显示标志寄存器加 1 RET 闹钟小时 分钟调整程序 ADJUST 3 JNB SWITCH 设置闹钟小时 JB TZK1 NK7 LCALL DELY10MS JB TZK1 NK7 按键 1 按下 INC HOURCLK 闹钟小时寄存器加 1 MOV A HOURCLK CJNE A 24 NHC24 MOV HOURCLK 0 闹钟小时寄存器满 24 清 0 NHC24 LCALL DISP JNB TZK1 NK7 JB TZK2 NK8 设置闹钟分钟 LCALL DELY10MS JB TZK2 NK8 按键 2 按下 INC MINCLK 闹钟分钟寄存器加 1 MOV A MINCLK CJNE A 60 NMC60 MOV MINCLK 0 闹钟分钟寄存器满 60 清 0 NMC60 LCALL DISP JNB TZK2 NK8 JB TZK3 NK9 设置是否开启闹钟 1 表示开 0 表示关 LCALL DELY10MS JB TZK3 NK9 按键 3 按下 JB F0 CLOSE SETB F0 闹钟标志位置 1 MOV 61H 1 闹钟开启显示 1 LCALL DISP 调用时间变更子程序 JNB TZK3 AJMP NK9 CLOSE CLR F0 MOV 61H 0 LCALL DISP JNB TZK3 NK9 JB SWITCH ADJUST 3 LCALL DELY10MS JB SWITCH ADJUST 3 MOV 60H 0 RET 键盘抖动 10 毫秒延时子程序程序 DELY10MS MOV R6 10 D1 MOV R7 248 DJNZ R7 DJNZ R6 D1 RET 延时 1 秒子程序 DELAY1S MOV R5 30 D2 MOV R4 100 D3 MOV R3 248 DJNZ R3 DJNZ R4 D3 DJNZ R5 D2 RET 时间变更子程序 DISP MOV A DISPBUF1 小时 分 秒的顺序存储 ADD A 6 MOV R1 A MOV A HOUR MOV B 10 DIV AB MOV R1 A 小时高位数据存到 46H DEC R1 MOV A B ORL A 10H MOV R1 A 小时低位数据存到 45H DEC R1 MOV A MINITE MOV B 10 DIV AB MOV R1 A 分钟高位数据存到 44H DEC R1 MOV A B ORL A 10H MOV R1 A 分钟低位数据存到 43H DEC R1 MOV A SECOND MOV B 10 DIV AB MOV R1 A 秒高位数据存到 42H DEC R1 MOV A B MOV R1 A 秒低位数据存到 41H MOV A DISPBUF2 年月日的顺序存储 ADD A 6 MOV R1 A MOV A YEAR L MOV B 10 DIV AB MOV R1 A 年份高位数据存到 56H DEC R1 MOV A B ORL A 10H MOV R1 A 年份低位数据存到 55H DEC R1 MOV A MOON MOV B 10 DIV AB MOV R1 A 月份高位数据存到 54H DEC R1 MOV A B ORL A 10H MOV R1 A 月份低位数据存到 53H DEC R1 MOV A DAY MOV B 10 DIV AB MOV R1 A 日高位数据存到 52H DEC R1 MOV A B MOV R1 A 日低位数据存到 51H MOV A DISPBUF3 闹钟小时 分的顺序存储 ADD A 6 MOV R1 A MOV A HOURCLK MOV B 10 DIV AB MOV R1 A 闹钟小时高位存到 66H DEC R1 MOV A B ORL A 10H MOV R1 A 闹钟小时低位存到 65H DEC R1 MOV A MINCLK MOV B 10 DIV AB MOV R1 A 闹钟分钟高位存到 64H DEC R1 MOV A B MOV R1 A 闹钟分钟低位存到 63H RET 中断程序 INT T0 MOV TH0 0F7H 重新设置初值 MOV TL0 0AH INC T2SCNTA MOV A T2SCNTA CJNE A 40 DISPLAY MOV T2SCNTA 00H INC T2SCNTB MOV A T2SCNTB CJNE A 10 DISPLAY MOV T2SCNTB 00H 到达 1 秒 T2SCNTB 清 0 LCALL DISP INC SECOND 秒寄存器加 1 MOV A SECOND CJNE A 60 DISPLAY MOV SECOND 00H 秒寄存器满 60 清 0 SETB P2 3 INC MINITE 分钟寄存器加 1 JNB F0 NEXT 闹钟标志位为 0 则跳转至 NEXT MOV 27H HOUR MOV A HOURCLK CJNE A 27H NEXT 时间小时与闹钟小时不一样则跳 NEXT MOV 28H MINITE MOV A MINCLK CJNE A 28H NEXT 时间分钟与闹钟分钟不一样则跳 NEXT CLR P2 3 符合设定时间则响铃 NEXT MOV A MINITE CJNE A 60 DISPLAY MOV MINITE 00H 分钟寄存器满 60 清 0 INC HOUR 小时寄存器加 1 MOV A HOUR CJNE A 24 DISPLAY MOV HOUR 00H 小时寄存器满 24 清 0 INC DAY 日寄存器加 1 INC XQ 星期寄存器加 1 MOV A XQ CJNE A 7 NEXT1 MOV XQ 0 星期寄存器清 0 NEXT1 MOV A MOON CJNE A 2 NEXT2 不是二月则跳到 NEXT2 LCALL JUDGE Y 二月则跳到 JUDGE Y 子程序 AJMP NEXT3 NEXT2 LCALL JUDGE M 跳到 JUDGE M 子程序 NEXT3 MOV A MOON CJNE A 13 DISPLAY 月份寄存器不等于 13 则跳 DISPLAY MOV MOON 1 月份到 13 变为 1 INC YEAR L 年份低位寄存器加 1 MOV A YEAR L CJNE A 100 DISPLAY 不到 100 则跳 DISPLAY INC YEAR H 年份高位寄存器加 1 MOV A YEAR H CJNE A 100 DISPLAY MOV YEAR H 20 AJMP DONE DISPLAY CLR P2 5 MOV A XQ MOV DPTR TABLEXQ MOVC A A DPTR MOV P1 A SETB P2 5 CLR P2 5 MOV A 60H CJNE A 0 Y1 小时 分 秒显示程序 MOV A DISPBUF1 ADD A DISPBIT MOV R0 A MOV A R0 MOV DPTR TABLE MOVC A A DPTR MOV P0 A SETB dula CLR dula MOV A DISPBIT MOV DPTR TAB MOVC A A DPTR MOV P0 A SETB wala CLR wala DEC DISPBIT MOV A DISPBIT CJNE A 00H DONE MOV DISPBIT 06H AJMP DONE 年月日显示程序 Y1 CJNE A 1 Y2 MOV A DISPBUF2 ADD A DISPBIT MOV R0 A MOV A R0 MOV DPTR TABLE MOVC A A DPTR MOV P0 A SETB dula CLR dula MOV A DISPBIT MOV DPTR TAB MOVC A A DPTR MOV P0 A SETB wala CLR wala DEC DISPBIT MOV A DISPBIT CJNE A 00H DONE MOV DISPBIT 06H AJMP DONE 闹钟显示程序 Y2 MOV A DISPBUF3 ADD A DISPBIT MOV R0 A MOV A R0 MOV DPTR TABLE MOVC A A DPTR MOV P0 A SETB dula CLR dula MOV A DISPBIT MOV DPTR TAB1 MOVC A A DPTR MOV P0 A SETB wala CLR wala DEC DISPBIT MOV A DISPBIT CJNE A 00H DONE MOV DISPBIT 06H DONE RETI 判断闰年子程序 JUDGE Y MOV A YEAR L ANL A 01H 年低位寄存器数值存到 A 中 CJNE A 00H L1 不为 0 跳 L1 MOV A YEAR H MOV B 4 为 0 判断是否能被 4 整除 DIV AB MOV A B CJNE A 0 PINGNIAN 年份不能被 4 整除即平年则跳 PINGNIAN1 LJMP L2 闰年则跳到 L22 L1 MOV A YEAR L MOV B 4 DIV AB MOV A B CJNE A 0 PINGNIAN L2 MOV A DAY 为 0 则为闰年 CJNE A 30 L3 闰年为 29 天 MOV DAY 1 INC MOON PINGNIAN MOV A DAY CJNE A 29 L3 平年为 28 天 MOV DAY 1 INC MOON L3 RET 判断月份大小 JUDGE M MOV A MOON CJNE A 4 V1 不是 4 月则跳到 V1 AJMP V0 V1 CJNE A 6 V2 不是 6 月则跳到 V2 AJMP V0 V2 CJNE A 9 V3 不是 9 月则跳到 V3 AJMP V0 V3 CJNE A 11 V4 不是 11 月则跳 V4 V0 MOV A DAY CJNE A 31 V5 小月为 30 天 MOV DAY 1 INC MOON 月寄存器加 1 AJMP V5 V4 MOV A DAY CJNE A 32 V5 大月为 31 天 MOV DAY 1 INC MOON 月寄存器加 1 V5 RET 调整 2 月份里日子程序 1 JUDGE Y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024秋四年级英语上册 Module 3 Unit 2 What's the elephant doing第3课时说课稿 外研版(三起)
- 第二节 法国的《人权宣言》教学设计-2025-2026学年高中历史北师大版2010选修2近代社会的民主思想与实践-北师大版2010
- 2025年初中道德与法治教师招聘考试模拟试卷及答案
- 2025年中考地理试题分类汇编:居民与文化、发展与合作(第1期)解析版
- 第六单元 第3章 保护生物的多样性(新说课稿)2023-2024学年八年级上册生物(人教版)
- 2025初中一年级历史期中考试试卷两套
- 2025全国注册造价工程师执业资格考试试卷建设工程合同计价
- 像素解谜题目及答案下载
- 香港初二语文题目及答案
- 线性规划模型题目及答案
- 员工个人职业健康监护档案
- 《护理伦理学》教学大纲
- 老年学概论(第3版)PPT完整全套教学课件
- (完整版)Hamilton汉密尔顿焦虑量表
- 浙江大学高分子化学第章课件绪论
- 大学体育:轮滑教案
- DB31-T 1380-2022 社会消防技术服务机构质量管理要求
- 景观生态学课件
- 常见天气系统课件
- 丁苯橡胶乳液聚合生产工艺
- 深基坑钢板桩支护方案
评论
0/150
提交评论