基于MCS-51单片机的电子钟设计

上传人:笛音 文档编号:36252098 上传时间:2018-03-27 格式:DOC 页数:27 大小:118.50KB
返回 下载 相关 举报
基于MCS-51单片机的电子钟设计_第1页
第1页 / 共27页
基于MCS-51单片机的电子钟设计_第2页
第2页 / 共27页
基于MCS-51单片机的电子钟设计_第3页
第3页 / 共27页
基于MCS-51单片机的电子钟设计_第4页
第4页 / 共27页
基于MCS-51单片机的电子钟设计_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基于MCS-51单片机的电子钟设计》由会员分享,可在线阅读,更多相关《基于MCS-51单片机的电子钟设计(27页珍藏版)》请在金锄头文库上搜索。

1、防防化化 学学 院院嵌嵌入入式式系系统统课课程程 设设计计 ( (论论文文) )题 目: 基于 MCS-51 单片机的电子钟设计系 别: 队 别: 姓名: 学 号: 指导教师: 2011 年 12 月 29 日2目目 录录摘要摘要33第一章第一章 电子时钟的设计电子时钟的设计331.1 电子时钟简介1.2 电子时钟的工作原理第二章第二章 设计方案设计方案442.1 电子钟功能简介2.2 计时方案2.3 键盘/显示方案第三章第三章 硬件设计方案硬件设计方案55第四章第四章 电子时钟的程序设计电子时钟的程序设计77 3.1 程序流程图3.2 程序设计第五章第五章 实验缺点及优化思路实验缺点及优化思

2、路99 第六章第六章总结及心得体会总结及心得体会1111附:程序代码附:程序代码3摘要摘要随着现代生活的推进,电子时钟在人们的生活中已经普及,本课题的主要内容就是结合 MCS-51 单片机的强大功能,在一块普通的电子时钟集成多种功能,方便人们的日常生活,该功能是通过单片机、8 段数码管以及一些简单辅助电路实现的。由于之前没有独立做过单片机实现多功能电子时钟方面的内容,所以在做设计时总会遇见很多问题,本次设计是在结合老师的指导帮助下完成的。 单片计算机即单片微型计算机。由 RAM ,ROM,CPU 构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动

3、化上。而 51 系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。本设计主要设计了一个基于 MCS-51 单片机的电子时钟。并在数码管上显示相应的时间。并通过 4X4 键盘来控制电子钟的运行该方法仿真效果真实、准确,节省了硬件资源。关键字:MCS-51 单片机、8279 芯片、电子钟第一章第一章 电子时钟的设计电子时钟的设计1.11.1 电子时钟简介电子时钟简介电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善

4、和美化,在许多场合都用到电子时钟。 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用 LED 显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示4时间的功能,还可以进行时和分的校对,片选的灵活性好。1.21.2 电子时钟的工作原理电子时钟的工作原理电子时钟由 MCS-51,七段数码管等构成,采用晶振电路作为驱动电路,由循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。第二章第二章

5、 设计方案设计方案2.12.1 电子钟功能简介电子钟功能简介所设计的电子钟功能有:上电后或按键复位后能自动显示 00:00:00,进入时钟准备状态当按下 A 键后,电子钟开始运行,显示格式为:;当按下键后,时钟暂停,可对时钟进行设定;当按下键时,时加一,按二十四进制循环;当按下键时,分加一,按六十进制循环;当按下键时,秒加一,按六十进制循环;当按下键时,时钟清零,显示 00:00:002.12.1 计时方案计时方案利用-单片机内部的定时器计数器进行中断定时,配合软件延时实现实现时,分,秒的计时实现时钟计时的基本方法为:()计数初值计算把定时器设为工作方式,定时时间为ms,则计数溢出520 次即

6、得到时钟计时最小单位秒,而 100 次计数可用软件方法实现.假设使用定时/计数器 T0,方式 1,50ms 定时,=12MHZ.则初值 X 满足(65536-X)1/12MHZ12us=5000usX=0011110010110000,换算成十六进制为 3CB0H(2)采用中断方式进行溢出次数累计,计数满 20 次为秒计时1s.(3)从秒到分和从分到时的计时是通过累加和数值比较实现2.22.2 键盘键盘/ /显示方案显示方案本实验采用查询式键盘扫描是否有按键按下,内部利用 8279 芯片进行送显和读取数据,再通过比较读取的值是否与要求的值相同.若相同则调用相关子程序,对单片机进行操作;若不相同

7、,则继续扫描.LED0LED1LED2LED3LED4LED5LED6LED730H31H32H33H34H35H时十位时个位分隔分十位分个位分隔秒十位秒个位第三章第三章 硬件设计方案硬件设计方案根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LED 显示器电路。图 1 为硬件电路设计框图。MC5182796显示电路和可编程键盘/显示接口 8279 控制实验相同(62 页)所示.第四章第四章 控制系统的软件设计控制系统的软件设计3.13.1 程序流程图程序流程图LED 显示电路按键电路NY开始定义堆栈区定时器 0、数据缓 冲区初始化调用键扫描 子程序是否有键按下 键?地址指针指

8、向 计时缓冲区调用时间设置 程序(a)主程序流程程图7(b)计时程序流程图YYYYNNNN时间校正重装定时器 0 初值循环次数减 1满 10 次秒单元加 160s 到秒单元清 0分单元加 160 分到分单元清 0小时单元加 1返回24 小时到恢复现场小时单元清 0初始化8开始A 键按下?F 键按下?B 按键?C 按键?D 按键?E 按键?Y返回YYYYNNNNNN时加一子程序分加一子程序秒加一子程序复位子程序(c)按键查询子程序按键查询子程序运行子程序9开始显示区数据更新显示数据拆字节查表取字型码字型码送段选口位选码送位选口延时子程序显示完?返回查表设置更新YN(e)显示子程序显示子程序第四章

9、第四章 实验缺陷及改进思路实验缺陷及改进思路实验主要缺点是:程序冗长,导致运行缓慢。还有就是占用键盘资源太多,从 A 到 F 全占用了。实验改进思路:参照电子秒表,该实验还可以进一步优化,即()按奇数次 A 开始运行,按偶数次 A 电子钟停止10()按 B 键开始进入调整状态,并且时位闪动(表示时调整) ,此时按下 D 加一;再按下 B 时,分位调整并闪动;同理得秒位,依次循环。()按下 C 键复位()子程序的优化问题,许多程序(如显示子程序的反复调用浪费了大量时间) ,导致系统运行缓慢。这样就大大节约了资源,留作他用。第五章第五章 总结及心得体会总结及心得体会由于第一次做这么大的工程,刚开始

10、就遇到了许许多多的问题。在教员的指导之下,先理清思路,再动手实验。慢慢的由易到难,由浅入深。先进行整体规划再分步进行调试。下面将基本的步骤及遇到的问题总结如下:a) 首先开始是实验的一系列初始化,主要包括堆栈的设定,时钟初始化,显示的初始化,8279 芯片的初始化(有些可以照搬书上的程序代码) 。在编写时,对于这些初始化最好封装成子模块。还有很重要的是,内部 RAM 区各部分功用最好别混用,堆栈作堆栈,显示区作显示用,R0R7 作临时数据存储也要分清,否则后边时钟和显示会出问题,很难调试。11b)b) 简单的时钟试验,先不限制显示格式。这步可结合课本上的时钟试验和 8279 芯片接口实验。要注

11、意的问题是显示时,单片机的加一时,显示出来的却不是加一,必须通过查表(即 0 至 9 的七段显示代码) ,送显解决。c)c) 把格式 XX:XX:XX 加进去。即按复位键后就开始运行。中间两个横杠可单独提出来,再对另外六个位进行操作。容易出现的问题是超出 60 后,还继续加。主要问题是对累加器 A 的混用,调用子程序时未进行保护,导致在比较时出现问题。要分清十位和个位,还有就是进位的问题。d)d) 按键子程序的调用。这步比较复杂。可以先调用一个小程序,如 A(运行单片机) ,看能否实现。容易出现的问题是无法进入中断,在程序未出错的情况下,可以检查一下实验箱,看键盘开关是否打开。然后再把所有子程

12、序加进去。这步容易出现的问题有:虽然按 A 开始运行,但再按下其他任何键时都会清零,再就是按下 B(或 C,D) ,加到一定程度后,不继续往上加了,这些问题原因主要是子程序调用太混乱,导致返回时出现错误,再就是跳转的位置,要返回到从新运行扫描键盘的位置。12附:程序代码附:程序代码;-KEY_VALUE DATA 3EH ;键盘值存放的单元KEY_FLAGBIT 00H ;有键的标志位;-主程序-ORG 0000HLJMP STARTORG000BHLJMPINTT0ORG0100HSTART: MOV SP,#60H ;设定堆栈区MOVPSW,#00HMOVR0,#20HMOVR7,#5FH

13、MOVTMOD,#01H;设定工作方式 1MOVTH0,#3CHMOVTL0,#0B0HLCALL INITIAL_8279LCALL OUTTLCALL DISPAGAIN: CLR KEY_FLAG ;清除标志13KEY$: LCALL KEYINJNB KEY_FLAG,KEY$ ;判断是否有按键MOVA,KEY_VALUELCALL ANKEYSJMPAGAIN;=扫描键盘=KEYIN: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#8101HMOVX A,DPTR ;读取 8279 的状态ANL A,#00000111BJZ NEXT_K ;检查 FIFO 中是否有字元MOV DPTR,#8101HMOV A,#40H ;下 “读取 FIFO“ 的命令MOVX DPTR,AMOV DPTR,#8100HMOVX A,DPTR ;读取 FIFO 的资料(读按键码值)MOV KEY_VALUE,A ;将新键码值存入 KEY_VALUESETB KEY_FLAG ;设定 KEY_FLAGNEXT_K: POP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号