毕业设计论文基于at89s52单片机数字时钟的实现内容摘要:

本身或其它编辑器编辑 C或汇编源 文件然后分别由 C51及 A51编译器编译生成目标文件 obj 目标文件可由 LIB51 创建生成库文件也可以与库文件一起经 BL51 连接定位生成绝对目标文件 abs ABS 文件由 OH51 转换成标准的 Hex 文件以供调试器 dScope51或 tScope51 使用进行源代码级调试也可由仿真器使用直接对目标板进行调试也可以直接写入程序存贮器如 EPROM 中 图 41 Keil uVision 软件模块 uVision 集成开发环境 uVision 集成开发环境包括一个工程管理器一个功能丰富并有交互式错误提示的编译器选项设置工具以及在线 帮助可以使用 uVision2 创建源文件并将多个文件组成应用工程加以管理 uVision 可以自动完成编译汇编连接程序的操作使开发人员只专注于开发工作的结果 C51 编译器和 A51 编译器 由 uVision2 集成开发环境创建的源文件可以被 C51 编译器或 A51 编译器处理生成可重定位的 object 文件 Keil C51 编译器遵照 ASCII C 语言标准支持 C语言的所有标准特性另外还增加了几个可以直接支持 MCS51 结构的特性 Keil A51 宏汇编器支持 MCS51 及其派生系列的所有指令集 LIB51 库管理器 LIB51 库管理 器可以从汇编器和编译器创建的目标文件建立相对应的目标库这些库是按规定格式排列的目标模块可在以后被连接器所使用当连接器处理一个库的时候仅仅使用了库中程序的目标模块而不是全部加以引用 RTX51 实时操作系统 RTX51 实时操作系统是针对 MCS51 单片机系列的一个多任务内核 RTX51 实时内核简化了需要对实时事件进行反应的复杂应用的系统设计编程和调试这个内核完全集成在 C51 编译器中使用非常简单任务描述表和操作系统的一致性由BL51 连接器定位器自动进行控制 BL51 连接器定位器 BL51 连接器使用从库管理器中提取 出来的目标模块以及由编译器汇编生成的目标模块创建一个含有绝对地址的目标模块绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都被固定在具体的存储单元内绝对地址目标文件可以用于以下目的 编程 EPROM 或其他存储设备 由 uVision 调试器对目标进行测试和模拟 使用在线仿真器对程序进行测试 uVision 软件调试器 uVision 软件调试器可以进行快速可靠的程序调试该调试器包含一个高速的模拟器开发人员可以使用它模拟整个 MCS51 系统包括片上的外围器件和外部硬件当开发人员从器件数据库中选择单片机硬 件的时候这个器件的属性就会自动被配置 uVision 硬件调试器 uVision 硬件调试器向开发者提供了集中在实际目标硬件上测试程序的方法 安装 MON51 目标监控器到开发者的目标系统并通过 Monitor51 接口下载源程序 使用高级 GDI接口将 uVision调试器同类似于 TKS系列仿真器的硬件系统连接通过 uVision 的人机交换环境连接的硬件完成仿真操作 42 421 系统仿真 图 42 系统仿真图 422 仿真问题解决 在本设计调试中遇到了很多的问题以下为主要的问题 LED 数码管的断码错乱原因出于没有认真看清 ab c 等引脚信息 解决重新排列 74HC154的输出端相应接入 LED数码管即可解决出现在的断码或乱码对数字时钟修改时间或日期时有时 LED 数码管被屏蔽掉造成不亮现象解决根据仪器的测试发现电路的驱动能力不足最后在输入端接入 1K 的上拉电阻后电路的驱动能力才能满足即可解决不亮现象烧入程序后 LED 数码管显示闪动而且亮度不均匀解决首先对调用的延时进行逐渐修改可以解决显示闪动问题其次由于本作品使作动态扫描方式显示的数字动态扫描很快人的肉眼是无法看出但是调用的显示程序时如果不在回时屏蔽掉最后的附值则会出现很亮的现象所以在显示 的后面加了屏蔽子令最后解决了此问题没有考虑到闰年时的情况 解决首先是将闰年判断程序流程图设计好之后编写闰年判断程序并作为一个子程序在执行主程序时进行调用最后解决了此问题 4Keil uVision3 编译系统可以与 Proteus 联调这一点在虚拟开发中是非常实用的 Proteus 仿真毕竟不是硬件运行只是在软件上模拟且对计算机配置要求较高因此运行并不非常稳定但总体而言是可以满足仿真要求的 第五章 总结与展望 13 本设计采用的 Keil 编译系统是现在使用比较多的 ARM 编译系统与 ADS 编译系统相比 Keil 编译系统不需要模版自动生成启动文件且 Keil For Arm Keil uVision3 编译系统可以与 Proteus 联调这一点在虚拟开发中是非常实用的在设计的过程中我掌握了汇编语言编程知识并对这种成熟并 广泛应用的技术进行了深入的学习设计的过程也是一个再学习的过程在遇到问题的时候我尽量自己想办法解决这在很大程度上激发了我的自学能力 2 工作展望 单片机的应用目前已经渗透到我们工作生活的各个领域几乎很难找到哪个领域没有单片机的踪迹了在其增加一些外围电路之后就能成为一个完整的应用系统当然这个数字时钟系统的设计不是很完美经过不断的完善和修改补充会实现更多的功能比如采用数字式温度传感器 DS18B20 此类传感器为数字式传感器而且仅需要一条数据线进行数据传输易于与单片机连接便可实现测温功能 参考文献 [1] 李朝青单片机 学习原理及接口技术 [M] 第 3 版北京 北京航空航天大学出版社 2020 [2] 王法能 单片机原理及应用 [M] 科学出版社 2020 [3] 陈 宁 单片机技术应用基础 [M] 南京南京信息职业技术学院 2020 [4] 刘 勇数字电路 [M] 电子工业出版社 2020 [5] 杨子文单片机原理及应用 [M] 西安电子科技大学出版社 2020 [6]孙育才等 ATMEL 新型 AT89S52系列单片机及其应用 [M]北京清华大学出版社 2020 []岂兴明唐杰等 51 单片机 [M] 人民邮电出版社 2020 [8] 李 单片机接口技术 [M]北京 出版社 [9] 张毅刚 新编 MCS51 单片机 [M] 哈尔滨 哈尔滨工业大学出版社 200[10] 朱定华等 单片机原理 [M] 北京 北京大学出版社 北京 北京大学出版 2020 [11] 李单片机原理 [M] 天津 天津大学出版社 200[12] 钱逸秋 单片机原理 [M] 北京 出版社 200[13]李广弟单片机基础 [M] 北京航空航天大学出版社 199910 []胡汉才 单片机原理及其接口技术 [M] 清华大学出版社 202020 [15]张毅刚 彭喜元 董继成 单片机原理及应用 [M] 北京 高等教育出版社 2020 [16]吴金戌 沈庆阳 郭庭吉 8051 单片机实践与应用 [M] 北京清华大学出版社 2020 188191 [17]刘盛雄 周奇 韦云隆 基于单片机的数字式电子钟的设计与制作 [J] 重庆工学院学报 2020 20 8 9092 [18]卢超 基于单片机的数字电子钟的设计与制作 [J] 大庆师范学院学报 2020 26 5 4853 [19]张迎新编著单片机应用设计培训教程 理论篇 [M]北京北京航空航天大学出版社 2020 [20]夏继强 邢春香编著单片机应用设计培训教 程 实践篇 [M]北京北京航空航天大学出版社 2020 [21]张军谟 单片机中级教程原理与应用 [M] 第 2 版北京 北京航空学院出版社 2020226 [22]周润景 袁伟亭 景晓松 Proteus 在 MCS51ARM7 系统中的应用百例 [M]北京电子工业出版社 2020 127133A 所示系统电路图由单片机控制模块数码管显示模块和整点提醒模块等组成 附录图 A 系统电路图 2.系统程序清单 Authorchenyi cy_ujs163 外部中断 0 服务子程序 _ExternInterrupt0 显示初始化 _ShowInit 定时器 1 中断函数 _time1 扫描显示 LED_ ScanLed 12MHZ _delay10ms _delay300ms 主程序 ORG 0000H AJMP _MAIN 跳转到 _MAIN 标号处执行 ORG 0003H 外部中断 0 LJMP _int0 ORG 001BH 定时器中断 1 LJMP _time1 变量定义区 YEAR_H EQU 30H 年变量 YEAR_L EQU 31H MONTH EQU 32H 月变量 DAY EQU 33H 日变量 HOUR EQU 34H 时变量 MINUTE EQU 35H 分变量 SECOND EQU 36H 秒变量 KEY_SET EQU P32 按键端口 KEY_UP EQU P20 KEY_DOWN EQU P21 BEEP EQU P22 蜂鸣器端口 DISPLAY EQU 40H 404F 共 16 个字节分别存放 16个 LED 要显 示的数字段码作为 LED 显示的缓冲的区 scan_i EQU 50H 存放扫描显示 led 顺序的变量 CountForTimer1 EQU 51H 为定时器 1 中断计数 KEY_SET_TIMES EQU 52H 调整时间时作为待调整变量的标号 由它的值确定待调的变量 BELL_DELAY EQU 53H 闹玲响的时间 参数初始化 _init_para MOV SP 60H 堆栈指针指向 60H MOV YEAR_H 21 初始化时间 MOV YEAR_L 00 MOV MONTH 02 MOV DAY 28 MOV HOUR 23 MOV MINUTE 59 MOV SECOND 56 MOV BELL_DELAY1 响铃时间定为 1 秒 MOV scan_i 0 从第 0 个数码管开始扫描一直 到第 15 个共 16 个数码管 MOV CountForTimer10 定时器 1 中断次数初始化为 0 MOV ADISPLAY 以下四行是将 显示 的编码存放 到第 2 个数码管对应的缓冲区 ADD A2 MOV R0A MOV R00AH MOV ADISPLAY 以下四行是将显示 的编码存放 到第 5 个数码管对应的缓冲区 ADD A5 MOV R0A MOV R00AH SETB IT0 设定外部中断 0 为边沿触发方式 SETB IT1 设定外部中断 1 为边沿触发方式 SETB EX0 打开外部中断 0 的中断小门 CLR EX1 外部中断 1 为关闭 SETB ET1 打开定时器 1 的中断小门 SETB ET0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。