免费预览已结束,剩余22页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
防化学院嵌入式系统课程设计(论文)题 目: 基于MCS-51单片机的电子钟设计 系别: 队 别: 姓名: 学 号: 指导教师: 2011年12月29日目 录摘要3第一章 电子时钟的设计31.1电子时钟简介1.2电子时钟的工作原理第二章 设计方案42.1电子钟功能简介2.2计时方案2.3键盘/显示方案第三章 硬件设计方案5第四章 电子时钟的程序设计7 3.1程序流程图3.2程序设计第五章 实验缺点及优化思路9 第六章总结及心得体会11附:程序代码摘要随着现代生活的推进,电子时钟在人们的生活中已经普及,本课题的主要内容就是结合MCS-51单片机的强大功能,在一块普通的电子时钟集成多种功能,方便人们的日常生活,该功能是通过单片机、8段数码管以及一些简单辅助电路实现的。由于之前没有独立做过单片机实现多功能电子时钟方面的内容,所以在做设计时总会遇见很多问题,本次设计是在结合老师的指导帮助下完成的。 单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于MCS-51单片机的电子时钟。并在数码管上显示相应的时间。并通过4X4键盘来控制电子钟的运行该方法仿真效果真实、准确,节省了硬件资源。关键字:MCS-51单片机、8279芯片、电子钟第一章 电子时钟的设计1.1电子时钟简介电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。1.2电子时钟的工作原理电子时钟由MCS-51,七段数码管等构成,采用晶振电路作为驱动电路,由循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。第二章 设计方案2.1电子钟功能简介所设计的电子钟功能有:上电后或按键复位后能自动显示00:00:00,进入时钟准备状态当按下A键后,电子钟开始运行,显示格式为:;当按下键后,时钟暂停,可对时钟进行设定;当按下键时,时加一,按二十四进制循环;当按下键时,分加一,按六十进制循环;当按下键时,秒加一,按六十进制循环;当按下键时,时钟清零,显示00:00:002.1计时方案利用-单片机内部的定时器计数器进行中断定时,配合软件延时实现实现时,分,秒的计时实现时钟计时的基本方法为:() 计数初值计算把定时器设为工作方式,定时时间为ms,则计数溢出20次即得到时钟计时最小单位秒,而100次计数可用软件方法实现.假设使用定时/计数器T0,方式1,50ms定时,fosc=12MHZ.则初值X满足(65536-X)1/12MHZ12us=5000usX=0011110010110000,换算成十六进制为3CB0H(2)采用中断方式进行溢出次数累计,计数满20次为秒计时1s.(3)从秒到分和从分到时的计时是通过累加和数值比较实现2.2键盘/显示方案本实验采用查询式键盘扫描是否有按键按下,内部利用8279芯片进行送显和读取数据,再通过比较读取的值是否与要求的值相同.若相同则调用相关子程序,对单片机进行操作;若不相同,则继续扫描.LED0LED1LED2LED3LED4LED5LED6LED730H31H32H33H34H35H时十位时个位分隔分十位分个位分隔秒十位秒个位第三章 硬件设计方案8279MC51根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LED显示器电路。图1 为硬件电路设计框图。LED显示电路按键电路显示电路和可编程键盘/显示接口8279控制实验相同(62页)所示.第四章 控制系统的软件设计3.1 程序流程图调用时间设置程序地址指针指向计时缓冲区调用键扫描子程序定时器0、数据缓冲区初始化定义堆栈区开始YN是否有键按下键?(a)主程序流程程图初始化小时单元清0恢复现场24小时到返回小时单元加1分单元清060分到分单元加1秒单元清060s到秒单元加1满10次循环次数减1重装定时器0初值时间校正NNNNYYYY(b)计时程序流程图开始A键按下?F键按下?B按键?C按键?D按键?E按键?Y返回YYYYNNNNNN时加一子程序分加一子程序秒加一子程序复位子程序(c)按键查询子程序运行子程序开始显示区数据更新显示数据拆字节查表取字型码字型码送段选口位选码送位选口延时子程序显示完?返回查表设置更新YN(e)显示子程序第四章 实验缺陷及改进思路实验主要缺点是:程序冗长,导致运行缓慢。还有就是占用键盘资源太多,从A到F全占用了。实验改进思路:参照电子秒表,该实验还可以进一步优化,即() 按奇数次A开始运行,按偶数次A电子钟停止() 按B键开始进入调整状态,并且时位闪动(表示时调整),此时按下D加一;再按下B时,分位调整并闪动;同理得秒位,依次循环。() 按下C键复位() 子程序的优化问题,许多程序(如显示子程序的反复调用浪费了大量时间),导致系统运行缓慢。这样就大大节约了资源,留作他用。第五章 总结及心得体会由于第一次做这么大的工程,刚开始就遇到了许许多多的问题。在教员的指导之下,先理清思路,再动手实验。慢慢的由易到难,由浅入深。先进行整体规划再分步进行调试。下面将基本的步骤及遇到的问题总结如下:a) 首先开始是实验的一系列初始化,主要包括堆栈的设定,时钟初始化,显示的初始化,8279芯片的初始化(有些可以照搬书上的程序代码)。在编写时,对于这些初始化最好封装成子模块。还有很重要的是,内部RAM区各部分功用最好别混用,堆栈作堆栈,显示区作显示用,R0R7作临时数据存储也要分清,否则后边时钟和显示会出问题,很难调试。b) 简单的时钟试验,先不限制显示格式。这步可结合课本上的时钟试验和8279芯片接口实验。要注意的问题是显示时,单片机的加一时,显示出来的却不是加一,必须通过查表(即0至9的七段显示代码),送显解决。c) 把格式XX:XX:XX加进去。即按复位键后就开始运行。中间两个横杠可单独提出来,再对另外六个位进行操作。容易出现的问题是超出60后,还继续加。主要问题是对累加器A的混用,调用子程序时未进行保护,导致在比较时出现问题。要分清十位和个位,还有就是进位的问题。d) 按键子程序的调用。这步比较复杂。可以先调用一个小程序,如A(运行单片机),看能否实现。容易出现的问题是无法进入中断,在程序未出错的情况下,可以检查一下实验箱,看键盘开关是否打开。然后再把所有子程序加进去。这步容易出现的问题有:虽然按A开始运行,但再按下其他任何键时都会清零,再就是按下B(或C,D),加到一定程度后,不继续往上加了,这些问题原因主要是子程序调用太混乱,导致返回时出现错误,再就是跳转的位置,要返回到从新运行扫描键盘的位置。附:程序代码;-KEY_VALUE DATA 3EH ;键盘值存放的单元KEY_FLAGBIT 00H ;有键的标志位;-主程序-ORG 0000H LJMP STARTORG000BHLJMPINTT0ORG0100HSTART: MOV SP,#60H ;设定堆栈区MOVPSW,#00HMOVR0,#20HMOVR7,#5FHMOVTMOD,#01H;设定工作方式1MOVTH0,#3CHMOVTL0,#0B0HLCALLINITIAL_8279LCALLOUTTLCALLDISPAGAIN: CLR KEY_FLAG ;清除标志KEY$: LCALL KEYIN JNB KEY_FLAG,KEY$ ;判断是否有按键MOVA,KEY_VALUELCALLANKEYSJMPAGAIN;=扫描键盘=KEYIN: PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#8101H MOVX A,DPTR ;读取 8279 的状态 ANL A,#00000111B JZ NEXT_K ;检查 FIFO 中是否有字元 MOV DPTR,#8101H MOV A,#40H ;下 读取 FIFO 的命令 MOVX DPTR,A MOV DPTR,#8100H MOVX A,DPTR ;读取 FIFO 的资料(读按键码值) MOV KEY_VALUE,A ;将新键码值存入 KEY_VALUE SETB KEY_FLAG ;设定 KEY_FLAGNEXT_K: POP ACC POP DPL POP DPH RET;=8279初始化=INITIAL_8279: PUSH DPLPUSH DPH PUSH ACCMOV DPTR,#8101H ;8279的命令口MOV A,#00h ;双键锁定MOVX DPTR,A ;左边进入显示,编码方式.MOV A,#34H ;时钟分频MOVX DPTR,AMOV A,#0DFH ;清除显示存储器MOVX DPTR,AINIT1:MOVX A,DPTR ;等待清除结束JB ACC.7,INIT1POP ACCPOP DPHPOP DPLRET;=初始化显示=OUTT:MOV30H,#00H;初始显示00:00:00MOV31H,#00HMOV32H,#00HMOV33H,#00HMOV34H,#00HMOV35H,#00HRET;=运行电子钟=TIME:SETBEAMOVIP,#02HSETBET0MOVTL0,#0B0H;计数器初值MOVTH0,#3CHMOVR4,#20SETBTR0RET;=按键子程序=ANKEY:PUSHDPHPUSHDPLPUSHACCMOVDPTR,#KEYTABMOVA,KEY_VALUEANLA,#00011111bMOVCA,A+DPTR;取键值JBTR0,KBKA:CJNEA,#0AH,KB;是否按下,按下则调用A子程序,否则跳转LCALL PROCESSASJMPOUTKB:CJNEA,#0BH,KCLCALLPROCESSBSJMPOUTKC:CJNEA,#0CH,KDLCALLPROCESSCSJMPOUTKD:CJNEA,#0DH,KELCALLPROCESSDSJMPOUTKE:CJNEA,#0EH,KFLCALLPROCESSESJMPOUTKF:CJNEA,#0FH,OUTLCALLPROCESSFSJMPOUTOUT:POPACCPOPDPLPOPDPHRETPROCESSA:;开启运行时钟LCALLTIMELCALLDISP;LJMPAGAINRETPROCESSB:;时加一子程序PUSHACCCLRTR0MOVR0,#30HLCALLADD1CLRAMOVR6,ALCALLDISPCJNER6,#60H,KBBCLRAmovr6,#00HLCALLCLR0LCALLDISPKBB:POPACCRETPROCESSC:;分加一子程序CLRTR0MOVR0,#32HLCALLADD1CLRCLCALLDISPCJNEA,#60H,KCCLCALLCLR0LCALLDISPKCC:RETPROCESSD:;秒加一子程序CLRTR0MOVR0,#34HLCALLADD1CLRCLCALLDISPCJNEA,#60H,KDDLCALLCLR0LCALLDISPKDD:RETPROCESSE:;复位子程序CLRTR0MOVR0,#35HLCALLCLR0MOVR0,#33HLCALLCLR0MOVR0,#31HLCALLCLR0LCALLDISPRETPROCESSF:;暂停子程序CLRTR0LCALLDISPRET;=时钟中断子程序=INTT0:CLR TR0PUSH ACCPUSH BINC R4CJNE R4,#20,OUT1MOV R4,#00HLJMP INTT1OUT1:POP BPOP ACCMOV TH0,#3CHMOV TL0,#0B0HSETB TR0RETIINTT1:INC 35H;秒处理 MOV A,35H CJNE A,#10,OUT2 ;如果秒个位等于10,清零 MOV 35H,#00H INC 34H MOV A,34H CJNE A,#6,OUT2 ;如果秒十位等于6,清零 MOV 34H,#00H INC 33H ;分处理 MOV A,33H CJNE A,#10,OUT2 ;如果分个位等于10,清零 MOV33H,#00H INC 62H MOV A,32H CJNE A,#6,OUT2 ;如果分十位等于6,清零 MOV 32H,#00H INC 31H ;时处理 MOV A,30H CJNE A,#2,LOOP ;如果时十位等于2,检查时个位 MOV A,31H CJNE A,#4,OUT2 ;如果时个位等于4,清零 MOV 31H,#00H ;清零时个位 MOV 30H,#00H ;清零时十位 LJMP OUT2 LOOP: MOV A,31H CJNE A,#10,OUT2 ;如果时个位等于10,清零 MOV 34H,#00H INC 35HOUT2: LCALL DISP ;刷新完毕,跳转到显示POP BPOP ACCMOV TH0,#3CHMOV TL0,#0B0HSETB TR0RETI;=时间清零子程序=CLR0:PUSHACCCLRAMOVR0,AINCR0MOVR0,APOPACCRET;=加一子程序=ADD1:PUSHACCMOVA,R0;取十位INCR0SWAPAORLA,R0;组合十位与个位ADDA,#01;加一DAA;十进制调整门MOVR3,AANLA,#0FH;屏蔽十位MOVR0,A;放入个位单元MOVA,R3;取值DECR0SWAPAANLA,#0FH;屏蔽个位MOVR0,A;放入十位单元MOVA,R3;数值放入A中等待判断POPACCRET;=显示子程序=DISP:PUSHDPHPUSHDPLPUSHACCMOVR1,#30H;显示时十位MOVA,R1MOVDPTR,#DISTABMOVCA,A+DPTRMOVDPTR,#8100HMOVXDPTR,AINCR1;显示时个位MOVA,R1MOVDPTR,#DISTABMOVCA,A+DPTRMOVDPTR,#8100HMOVXDPTR,AMOVA,#0BFH;显示横杠MOVXDPTR,AINCR1;显示分十位MOVA,R1MOVDPTR,#DISTABMOVCA,A+DPTRMOVDPTR,#8100HMOVXDPTR,AINCR1;显示分个位MOVA,R1MOVDPTR,#DIST
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030药品流通行业考察分析与管理模式研究与治疗成本产生报告
- 2025-2030药品流通行业信息化建设需求分析电子发药系统与医院供应链管理改进报告
- 2025-2030药品审评加速通道申报材料准备及PKPD数据有效性认证的讨论成果报告
- 2025-2030药品制造行业市场全面考察及药品设计与质量保证与行业研发方向报告
- 2025-2030茶油行业供需态势及未来前景深度分析研究报告
- 2025-2030茶叶市场白茶黄茶青茶市场消费偏好品牌排行分析报告
- 2025-2030肥料化工厂业市场供需分析及投资评估规划分析研究报告
- 2025-2030纺织机械行业智能制造分析及产品竞争力策略报告
- 高中物理实验课手机应用辅助教学效果评估教学研究课题报告
- 江西省赣州市重点中学2026年高三下学期动态性教学质量检测试题考前适应卷英语试题含解析
- 2026四川成都市简阳市招聘四级城乡社区工作者65人考试备考题库及答案解析
- (2026春新版本) 苏教版科学三年级下册全册教学设计
- 2026年1月浙江省高考(首考)化学试题(含标准答案及解析)
- 2025年河北省公务员考试行测试卷真题附答案详解
- 中国移动社会招聘在线笔试题
- 全屋定制讲解方案
- 上海市奉贤区2026届初三一模英语试题(含答案)
- 《电力系统继电保护及应用》课件-110kv线路保护配置-双语
- 餐饮厨房消防安全培训
- 天津市和平区天津一中2026届高二上数学期末学业水平测试试题含解析
- GB/T 19275-2025材料在特定微生物作用下潜在生物分解和崩解能力的评价
评论
0/150
提交评论