基于单片机电子时钟设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机原理与应用课程设计与实现实训报告专业:自动化年级/班级:姓名:实训时间:实训地点:指导教师:一、实训题目:基于51单片机电子时钟设计设计要求:(1)可设定时间;(2)可显示当时时间;(3)每小时振铃响一次,并且振铃铃声响次数与时间一致。二、实训目的:(1).学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。(2).设计任务及要求利用实验平台上6个LED数码管,设计带有闹铃功能的数字时钟。三、所用器件工作原理及控制方法:1.89s52AT89S52是一种低功耗、高性能CMOS8位微控制器,使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。并具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.定时软件方法,利用单片机本身的定时计数功能,节省成本,提高稳定性。3.显示采用LED8段数码管,具有耗电低、配置灵活、线路简单、安装方便、耐转动、价格低廉且寿命长等优点。4.74LS24474LS244为3态8位缓冲器,一般用作总线驱动器。74LS244没有锁存的功能。地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。5.简介当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。74ls244图例锁存器是一个很普通的时序电路。一般的,它在时钟上升沿或者下降沿来的时候锁存输入,然后产生输出,在其他的时候输出都不跟随输入变化,这就是所谓边缘触发的D触发器。通常用作单片机的地址锁存器的芯片有74LS373、8282、74LS273、74HC373等。用途它主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等。其真值表如下:74Ls244真值表74LS244真值表:L表示低电平H表示高电平X表示不定状态Z表示高阻态74Ls244技术参数最小典型最大VCC4.25V5V5.25V高电平输出电流-15mA低电平输出电流24mA工作温度0℃70℃四、软硬件设计1.显示模块(1)硬件设计(2)流程图(3)软件设计voidled_dispiay(){wx_0=0;wx_1=0;//小时位选ledbit=smg[time1s/10];//十位显示wx_1=1;delay();wx_1=0;ledbit=smg[time1s%10];//个位显示wx_0=1;delay();wx_0=0;wx_2=0;wx_3=0;//分钟显示ledbit=smg[time1f/10];//十位显示wx_3=1;delay();wx_3=0;ledbit=smg[time1f%10];//个位显示wx_2=1;delay();wx_2=0;wx_4=0;wx_5=0;//分钟显示ledbit=smg[time1x/10];//十位显示wx_5=1;delay();wx_5=0;ledbit=smg[time1x%10];//个位显示wx_4=1;delay();wx_4=0;}2.定时模块(1)流程图(2)软件设计voidtime1()interrupt1{time50ms++;if(time50ms==20)//计数20个50ms为1s{time50ms=0;time1s++;if(time1s==60){time1s=0;time1f++;if(time1f==60){time1f=0;time1x++;if(time1x==24){time1x=0;}}}}TH0=0x3c;TL0=0xb0;}3.键盘控制模块(1)硬件设计(2)流程图(3)软件设计voidshezhi_diaplay(){if(1){if(yiwei==0)delayms(66);if(yiwei==0){TR0=0;++num;}/*..................秒调整......................*/if(num==1&jia==0)delayms(70);if(num==1&jia==0)time1s++;if(num==1&sub==0)delayms(70);if(num==1&sub==0)time1s--;//led_dispiay();/*..................分钟调整......................*/if(num==2&jia==0)delayms(70);if(num==2&jia==0)time1f++;if(num==2&sub==0)delayms(70);if(num==2&sub==0)time1f--;//led_dispiay();/*..................小时调整......................*/if(num==3&jia==0)delayms(70);if(num==3&jia==0)time1x++;if(num==3&sub==0)delayms(70);if(num==3&sub==0)time1x--;//led_dispiay();if(num=4){num=0;TR0=1;}}}4.总设计电路图五、实训总结:经过两周的单片机课程设计,我组基本完成课题要求。虽然还是存在很多不足,但是功能上基本达标。时钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷。硬件设施合乎要求,软件设计可以配合硬件实现要求功能。但是由于时间比较短,出现部分不足:初期时钟不显示数字,经检查是由于硬件连接不完善,存在漏焊,虚焊和错焊等问题。不过,我们相信,如果时间充足,将软件改进,我们完全可以很好实现所有功能。另外,在本次设计的过程中,我们发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提高,我想这就是我们在这次课程设计中的最大收获。最后非常感谢王老师的悉心指导!六、附件:附1:程序代码#includereg52.h#includeintrins.h//有_nop_的头文件/***********变量定义*********************************************/#defineucharunsignedchar#defineuintunsignedintvoidshezhi_display(void);voidled_display(ucharm);voidzhengdian(void);voiddelay(void);voiddelayms(ucharms);uchartime1s=0,time50ms;//定时1s计数器uchartime1f=0,time1x=0;uchara,b,k,m,num=0;#defineledbitP0//P0.0-P0.7--A~Gexternucharcodesmg[]={//共阳极0-9显示代码//-0-----1-----2-----3-----4-----5-----6-----7-----8---9--0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};sbitwx_0=P2^0;sbitwx_1=P2^1;sbitwx_2=P2^2;sbitwx_3=P2^3;sbitwx_4=P2^4;//数码管位选sbitwx_5=P2^5;sbitzd=P1^4;sbitshezhi=P1^1;sbitjia=P1^2;sbitsub=P1^5;sbityiwei=P1^0;voidinit()//对应定时器和外部中断1;{TMOD=0x01;//T0T1方式控制TH0=0x3c;TL0=0xb0;//计时50msEA=1;//开全局中断ET0=1;//开定时中断0TR0=1;}voiddelay(void)//延时函数,延时约0.6ms{unsignedcharj;for(j=0;j200;j++);}voiddelayms(ucharms){uchari;while(ms--)for(i=0;i200;i++);}/**********************************************************/函数名:led_display()/功能:数码管显示数据,驱动芯片74LS244/输入:dat---8位数据/输出:无/说明:输入十进制数。/********************************************************/voidled_dispiay(){wx_0=0;wx_1=0;//小时位选ledbit=smg[time1s/10];//十位显示wx_1=1;delay();wx_1=0;ledbit=smg[time1s%10];//个位显示wx_0=1;delay();wx_0=0;wx_2=0;wx_3=0;//分钟显示ledbit=smg[time1f/10];//十位显示wx_3=1;delay();wx_3=0;ledbit=smg[time1f%10];//个位显示wx_2=1;delay();wx_2=0;wx_4=0;wx_5=0;//分钟显示ledbit=smg[time1x/10];//十位显示wx_5=1;delay();wx_5=0;ledbit=smg[time1x%10];//个位显示wx_4=1;delay();wx_4=0;}/***************定时中断**********************************/voidtime1()interrupt1{time50ms++;if(time50ms==20)//计数20个50ms为1s{time50ms=0;time1s++;if(time1s==60){time1s=0;time1f++;if(time1f==60){time1f=0;time1x++;if(time1x==24){time1x=0;}}}}TH0=0x3c;TL0=0xb0;}voidshezhi_diaplay(){if(1){if(yiwei==0)delayms(66);if(yiwei==0){TR0=0;++num;}/*..................秒调整......................*/if(num==1&jia==0)delayms(70);if(num==1&jia==0)time1s++;if(num==1&sub==0)delayms(70);if(num==1&sub==0)time1s--;//led_dispiay();/*..................分钟调整......................*/if(num==2&jia==0)delayms(7

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功