单片机电子钟-2.doc

上传人:李司机 文档编号:1135507 上传时间:2022-07-01 格式:DOC 页数:11 大小:122.50KB
返回 下载 相关 举报
单片机电子钟-2.doc_第1页
第1页 / 共11页
单片机电子钟-2.doc_第2页
第2页 / 共11页
单片机电子钟-2.doc_第3页
第3页 / 共11页
单片机电子钟-2.doc_第4页
第4页 / 共11页
单片机电子钟-2.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《单片机电子钟-2.doc》由会员分享,可在线阅读,更多相关《单片机电子钟-2.doc(11页珍藏版)》请在三一办公上搜索。

1、 单片机原理与应用课程设计任务书14系(部):电信系 专业: 指导教师:课题名称数码管显示电子钟设计设计容与要求1、课题容:设计一种基于AT89S52单片机的数码管显示电子时钟,要求如下:1、能正确显示时间,时钟由数码管显示,显示格式为:#小时#分#秒。2、时间能够由按键调整,误差小于1S。3、闹钟功能:时间运行到与闹钟设定时间时,闹钟响持续响5秒。4、报时功能:时间运行到正点时间时,闹钟响,几点钟就响几声每声持续响2秒,每两声之间时间间隔2秒。 2、要求:完成该系统的硬件和软件的设计,在Proteus软件上仿真通过,提交一篇课程设计说明书。设计工作量1、汇编或C51语言程序设计;2、程序调试

2、;3、在Proteus上进展仿真成功;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、调试过程,参考文献、设计总结等。进度安排起止日期或时间量设计容或预期目标备注第一天课题介绍,答疑,收集材料,C51介绍第二天设计方案论证,练习编写C51程序第三天第六天程序设计第六天第八天 程序调试、仿真第九天第十天系统测试并编写设计说明书教研室意见年 月 日系部主管领导意见年 月 日目 录摘 要51、 设计任务与要求51.1 根本设计任务51.2 功能要求说明52、 方案论证与选择62.1 单片机的型号选择62.2 控制选择方案63、 总体设计63.1 主程序63.2 显示子程

3、序83.3 定时闹钟与整点报时程序93.4 定时器T0中断服务程序93.5 按键功能设置104、系统主要元件介绍114.1 AT89C51单片机的介绍114.2 LED数码管介绍115、 仿真与测试125.1 程序调试与仿真125.2 程序测试与结果分析126、程序设计体会13参考文献13摘 要该电子时钟由AT89C51,BUTTON,七段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时重新计时。而电路中的四个控制键拥有多种不同的功能,可以实现电子钟准确到秒的调整和闹钟的调整,应用Proteus的ISI

4、S软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、准确,节省了硬件资源。关键词:数码管;单片机;电子钟;键盘控制1、 设计任务与要求本任务为:数码管显示电子钟。设计任务具体容如下:1.1 根本设计任务依据命题题意,本设计采用AT89C51进展24小时计时并用数码管显示。要求其显示时间围是00:00:0023:59:59,具备有时分秒校准功能。电子钟上面要带有闹钟,闹钟与时钟之间能随时切换,闹钟具备时分秒设置功能。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟具有设定闹钟持续响5秒,与整点报时功能。时间运行到正点时间时,闹钟响,几点钟就响几声每声持续响2秒,每两声之间时

5、间间隔2秒。2、 方案论证与选择2.1 单片机的型号选择通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保存时间为10年等特点,是最好的选择。2.2 控制选择方案直接加减:使用7按键,1按键切换闹钟

6、,6按键对时分秒分别加减,控制方式相当简单,但需要较多按键与I/O口,功能一般,本钱较高。矩阵键盘:使用16按键对时分秒直接设置,能最为灵活的对数字钟进展设置,功能强大,但控制方式相对困难,本钱较高,需要较多按键与I/O口。换位加减:使用4按键,1键切换闹钟,1键换位,另两键加减,控制方式相对简单,占用I/O口少,本钱低廉,但功能一般。经过反复比拟,在3种方案中选取了第3种换位加减,此方案本钱低,功能已经足够满足电子钟的需要,而且硬件软件均比拟简单。3、 总体设计3.1 主程序 设计中计时采用定时器T0中断完成。主程序循环调用显示子程序和查键,当端口有开关按下时,转入相应的功能程序。流程图如图

7、3-1所示。 图3-1 主程序流程/*主函数*/void main(void)TMOD=0x11; /time0为定时器,方式1TH0=0x3c; /预置计数初值,50msTL0=0xb0;TH1=(65535-50000)/256;TL1=(65535-50000)%256;EA=1; /总中断开ET0=1; /允许定时器0中断TR0=1;ET1=1;TR1=1;buzz=0; /开启定时器0 while (1) keyscan(); /按键扫描 dinshi(); /定时闹钟 switch(temp2) /显示时间 case 0:display(hour1,minite1,seconde1

8、);break; case 1:display(hour2,minite2,seconde2);break; 3.2 显示子程序显示子程序每次显示6个连续存单元的十进制BCD码数据。由于采用7段共阳LED数码管动态扫描实现数据显示,显示十进制BCD码数据对应段码存放在ROM中。 显示时取存地址中数据,然后查表得对应显示段码从P0口输出,P2口将为对应的数码管供电,于是数码管就会显示该地址单元的数据。void display(uchar hour,uchar minite,uchar seconde)/*显示子程序*/ uchar h1,h2,m1,m2,s1,s2;s2=seconde/10;

9、s1=seconde%10; m2=minite/10;m1=minite%10; h2=hour/10;h1=hour%10;P2=0XFE; /1111 1110if(temp1=1)/功能选项,通过点提醒来调节相应位的时间P0=dispcodes1|0x80;/点提醒elseP0=dispcodes1;/秒个位delay(1);P2=0XFD;/1111 1101P0=dispcodes2;/秒十位delay(1);P2=0XFB; /1111 1011P0=dispcode10;/间隔符 -delay(1);P2=0XF7; /1111 0111 if(temp1=2)/P0=disp

10、codem1|0x80;elseP0=dispcodem1;/分个位delay(1);P2=0XEF; /1110 1111 P0=dispcodem2;/分十位delay(1);P2=0XDF; /1101 1111P0=dispcode10;/间隔符 -delay(1);P2=0XBF; /1011 1111if(temp1=3)P0=dispcodeh1|0x80;/时个位elseP0=dispcodeh1;delay(1);P2=0X7F; /0111 1111P0=dispcodeh2;/时十位delay(1);3.3 定时闹钟与整点报时程序void dinshi( ) /*定时闹钟

11、 */uint i; if(hour1=hour2&minite1=minite2&(seconde1=seconde2&seconde1seconde2+5) for(i=0;i20;i+) buzz=1; buzz=0; void zhengdian (void)/*整点报警*/if(seconde1=0&minite1=0)temp=hour1;flag=1; /标记buzz=1;3.4 定时器T0中断服务程序 定时溢出中断周期设为50MS,中断进入后先进展定时中断初值校正,当中断累加到20次时,对秒计数单元进展加1操作。时钟最大计时值为23时59分59秒。#7FH存放“熄灭符数据,用于

12、时间调整时的闪烁功能。在计数单元中,采用十进制BCD码计数,满十进位。 在程序中采用12MHZ晶振频率,精度为1MS,定时初值为50MS,用循环程序进展20次循环可到1S。当1S到时调用加1程序并判断秒、分是否为60,当秒为60时,秒清零,分加1;当分为60时,分清零。终端完毕时,分时计时单元数据移入对应显示单元。void timer0(void) interrupt 1 /定时器0方式1,50ms中断一次 TH0=0x3c; /手动加载计数脉冲次数 TL0=0xb0; mstcnt+; zhengdian(); /用于计算时间,每隔50ms加1 if(mstcnt=20) /mstcnt满2

13、0即为一秒 seconde1+; /秒+1time_pro( ); /时间处理mstcnt=0; /对计数单元的清零,重新开始计 图3-4 定时器T0中断服务流程图3.5 按键功能设置电子时钟设置4个按键通过程序控制来完成电子时钟的时间调整。调整时钟时只设计了加键、减键、模式键、闹钟键。K1键为模式设置;k2键加一键;K3键减一键;k4键闹钟设置键。 1、k1键:模式设置键,直接按下模式键时可以调节时间,屡次按键时,调节在秒、分、时之间变换。 2、k2键:进入模式后,调节位出现一个标志点,按一下k2键那么该位加一。同理,按下k3键该位减一。 3、k4键:按下k4键,数码管显示程序既定的闹钟时刻

14、,按下模式键,出现标志点后按k2、k3调节闹钟。4、系统主要元件介绍4.1 AT89C51单片机的介绍AT89C51单片机是把那些作为控制应用所必需的根本容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器CPU、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统与特殊功能存放器。它们都是通过片单一总线连接而成,其根本结构依旧是微处理器CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能存放器的集中控制方式,以实现不同的功能。AT89C51单片机如图4-1所示。图4-1 单片机4.

15、2 LED数码管介绍 LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴

16、极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。ED的7段数码管利用单只LED组合排列成“8字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。在这次的设计中采用的均是共阴极的LED显示,当I/O口输出为高电平的时候,对应段就被点亮。 图4-2 LED数码管5、 仿真与测试5.1 程序调试与仿真本程序通过Keil单片机开发平台实现程序的编译,生成HEX文件。程序再编译过程中可以发现错位,并与时改正,在设计时非常重要,使错误被扼杀在摇篮中。通过Keil和硬件仿真平台Proteus的联合

17、,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。仿真图如下:图5-1 电子钟仿真图5.2 程序测试与结果分析测试步骤:1) 加载程序。2) 设定闹钟为05:01:00,并试听闹钟是否准确。3) 试听每次整点报时是否准确。4) 试验各按键功能是否正常。测试结果如下 闹钟与整点报时功能均正确无误,各按键功能均正常。测试结果分析通过对测试数据的分析,可以看出,数字钟能实现时钟计时,并带有闹钟与整点报时功能,即数字钟已经实现了题目所给出的所有要求。6、程序设计体会通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和

18、运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗了过多的存资源。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践根底,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。 我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到计算机专业的路的不平坦,但我会以一种良好的态度去迎接每一个挫折和挑战。参考文献1 自美电子线路设计实验测试M:华中理工大学,1992.2 何立民单片机应用系统设计M:航空航天大学,1993.3 楼然笛单片机开发M:人民邮电,1994.4 付家才单片机控制工程实践技术M:化学工业 2004.3.5 光才单片机课程设计 实例指导M :航空航天大学 2004.6 朱定华单片机原理与接口技术实验M:北方交通大学2002.11.7 湘涛江世明单片机原理与应用M. :电子工业,2006.11 / 11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号