您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于单片机的作息时间控制器设计
单片机原理及系统课程设计专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014年1月13日评语:考勤(10)守纪(10)过程(30)设计报告(30)答辩(20)总成绩(100)单片机原理及系统课程设计报告1基于单片机的作息时间控制器设计1.课程设计目的(1)进一步熟悉和掌握单片机的最小系统结构及其工作原理。(2)掌握单片机的接口技术和键盘扫描、数码管显示的原理及拓展使用方法。(3)通过课程设计,提高综合运用所学知识的能力,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。2.设计方案及原理本设计是作息时间控制器,设计其实现的功能主要有:使用4位七段显示器来显示当前的时间,由LED闪动作为秒计数表示,显示格式为“时分”,并可显示日期,显示格式为“月日”,年份单独显示。由4个按键来作功能设置,可以设置现在的日期、时间及定时设置时间,一旦设置的时间到则作出相应动作:发光二极管闪亮,同时播放音乐。图1系统方框图3.硬件设计3.1单片机AT89C52提供以下标准功能:8K字节FLASH闪存,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。3.2按键控制模块按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。按键控制模块主要有由四个按键按键控制模块单片机最小系统数码管显示模块闹钟模块单片机原理及系统课程设计报告2组成:K1、K2、K3、K4、。其中K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能;K4的作用是减一。K1K2K4K3图2按键控制模块3.3数码管显示模块时间显示模块主要由四位七段数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。时间正常显示时,LED每闪动60次,分钟自动加一;每六十分钟小时自动加一;每24小时天自动加一。图3数码管显示模块3.4闹钟模块闹钟模块快的主要功能即闹铃。当设定时间与当前时间一致时,则闹钟自动闹铃进行提示,同时二极管闪亮一分钟后,自动退出响铃状态,若按K3键,闹钟退出响铃状态。单片机原理及系统课程设计报告3图4闹钟模块4.软件设计单片机作息时间控制的动作利用时间计时处理来做秒计数,当所设置的时间到了,则发出一阵声响。单片机定时器负责定时的计数,不会因为按键处理而中断时间秒数的增加,时,分,秒数据是存在变量内并写入七段显示器的缓冲区内,而由显示器扫描程序中定时扫描而显示出时间。4.1主程序设计在主控程序循环中主要工作为扫描是否有按键,若有按键则应做相应的功能处理,同时也扫描显示器显示时间数据,并检查所设置的时间是否到了,时间计时处理程序是等过了1S后,则更新时间数据,将最新的时,分,秒的数据转换为数字数据并显示在七段显示器上。程序中是这样判断是否过了1S的:设一旧秒数变量,当新旧秒数变量不一样时,则表示已过了1S,要做相关程序时间处理了。单片机原理及系统课程设计报告4开始蜂鸣器初始化定时器初始化显示判断标志位XX=0?X=1,2?X=3,4?X=5,6?X=7?X=0校正时间显示函数设定闹钟显示函数日期显示函数年份显示函数时间显示函数YNYNYNYNYN按键扫描图5主程序流程图4.2中断子程序中断子程序的主要功能:提供时间基准。当连续中断20次时,即为一秒,此时秒加一;当秒值为60时,分钟加一,同时秒清零;当分钟值为60时,小时加一,同时分钟值清零;当小时为24时,天值加一,同时小时清零;由于每月天数不定,1、3、5、7、8、10、12月为31天,当计数到此类月份时,天值为32时,月值加一,同时天值为1;4、6、9、11月为30天,当计数到此类月份时,天值为31时,月值加一,同时天值为1;如果是闰年,则2月为29天,当计数到此类月份时,天值为30时,月值加一,同时天值为一;如果不是闰年,则2月为28天,当计数此类月份时,天值为29时,月值加一,同时天值为一。当月值为13时,则年值加一,同时月值为一。单片机原理及系统课程设计报告5设置定时器初值是否到下一秒秒变量加一是否到60秒秒值清零、分值加一是否到60分分值清零、小时加一是否到24小时小时清零、天值加一是否到一月天值为一、月值加一是否为一年月值为一、年值加一返回主程序YYYYYYNNNNNN开始结束图6中断子程序程序流程图4.3按键扫描子程序按键扫描子程序是程序计中相当重要的一部分。按键扫描子程序的功能是:扫描是否有按键按下,若有键按下,则执行相应功能。5.系统仿真单片机原理及系统课程设计报告6图6系统仿真图6.总结本次课程设计是对所学知识的一次综合性运用。在设计的过程中发现了自身知识的不足。这次课程设计收获很多,体会也很深刻,并且对我们所学的东西也产生了浓厚的兴趣。在设计过程中,也学会了很多新的东西,比如一些仿真软件的应用,最典型的就是PROTEUS软件的应用,以及与KEIL软件的联合使用。当然最重要的是学到了关于基本电子设计的一些基本方法。除此之外,我觉得在这次设计的过程中,很多自己解决不了的问题,只有虚心请教别人才能有效的解决问题,我觉得人与人之间的相互帮助很有必要,这样不仅能帮助大家很快的解决问题,还能提高我们每个人的实际水平。在本次设计过程中遇到不少问题,老师在我们做设计的过程中,给予了我极大的帮助,不仅从知识方面引导了我们的设计思路,同时,在人生观上也给了我们不少的启示。在此,我对老师表示深深的谢意。参考文献[1]王思明,张金敏,苟军年等.单片机原理及应用系统设计[M].北京:科学出版社,2012年[2]吴金.8051单片机实践与应用[M].北京:清华大学出版社,2002年单片机原理及系统课程设计报告7[3]杨子文.单片机原理及应用[M].西安:西安电子科技大学出版社,2006年附1源程序代码#includereg52.h#defineuintunsignedint单片机原理及系统课程设计报告8#defineucharunsignedcharucharcodea[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//*************************************************************************************sbitK1=P1^4;sbitK2=P1^5;sbitK3=P1^6;sbitK4=P1^7;sbitsd=P3^6;sbitBEEP=P3^7;ucharm=0,h=0,sec=0,cnt=0,x,y,qian,bai,shi,ge;ucharset_h=0;ucharset_m=0;ucharmonth=1;ucharday=5;ucharth0_f;uchartl0_f;uintyear=2014;voiddelay(uchart);//延时函数voidscankey(void);//按键扫描函数voidinit(void);//初始化函数voiddisplay(void);//显示函数voidset_time(void);//设定时间显示辅助函数voidset_day(void);//设定日期显示辅助函数voidm_choose(void);//月份选择函数voidbianhuan(void);//年份显示辅助函数voidbianhuan1(void);//时间显示辅助函数changedata(uchar*song,uchar*diao,uchar*jie);//音乐符号串解释函数voidplay(uchar*songdata);//奏乐函数//虫儿飞ucharcodechongerfei[]={33_3_45|3-2-|11_1_23|3.,7_,7_-,632-,632-,6321_1-};ucharcodefreq[36*2]={0xA9,0xEF,//00220HZ,1//00x93,0xF0,//00233HZ,1#0x73,0xF1,//00247HZ,20x49,0xF2,//00262HZ,2#0x07,0xF3,//00277HZ,30xC8,0xF3,//00294HZ,40x73,0xF4,//00311HZ,4#0x1E,0xF5,//00330HZ,50xB6,0xF5,//00349HZ,5#单片机原理及系统课程设计报告90x4C,0xF6,//00370HZ,60xD7,0xF6,//00392HZ,6#0x5A,0xF7,//00415HZ,70xD8,0xF7,//00440HZ1//120x4D,0xF8,//00466HZ1#//130xBD,0xF8,//00494HZ2//140x24,0xF9,//00523HZ2#//150x87,0xF9,//00554HZ3//160xE4,0xF9,//00587HZ4//170x3D,0xFA,//00622HZ4#//180x90,0xFA,//00659HZ5//190xDE,0xFA,//00698HZ5#//200x29,0xFB,//00740HZ6//210x6F,0xFB,//00784HZ6#//220xB1,0xFB,//00831HZ7//230xEF,0xFB,//00880HZ`10x2A,0xFC,//00932HZ`1#0x62,0xFC,//00988HZ`20x95,0xFC,//01046HZ`2#0xC7,0xFC,//01109HZ`30xF6,0xFC,//01175HZ`40x22,0xFD,//01244HZ`4#0x4B,0xFD,//01318HZ`50x73,0xFD,//01397HZ`5#0x98,0xFD,//01480HZ`60xBB,0xFD,//01568HZ`6#0xDC,0xFD,//01661HZ`7//35};//******************************//音乐符号串解释函数changedata(uchar*song,uchar*diao,uchar*jie){uchari,i1,j;chargaodi;ucharbanyin;ucharyinchang;ucharcodejie7[8]={0,12,14,16,17,19,21,23};*diao=*song;for(i=0,i1=0;;){gaodi=0;banyin=0;yinchang=4;if((*(song+i)=='|')||(*(song+i)==''))i++;switch(*(song+i))单片机原理及系统课程设计报告10{case',':gaodi=-12;i++;break;case'`':gaodi=12;i++;break;}if(*(song+i)==0){*(diao+i1)=0;*(jie+i1)=0;return;}j=*(song+i)-0x30;i++;j=jie7[j]+gaodi;yinc:switch(*(song+i)){case'#':i++;j++;gotoyinc;case'-':yinchang+=4;i++;gotoyinc;case'_':yinchang/=2;i++;gotoyinc;case'.':yinchang=yinchang+yinchang/2;i++;gotoyinc;}*(diao+i1)=j;*(jie+i1)=yinchang;i1++;}}//******************************************单片机原理及系统课程设计报告11//奏乐函数voidplay(uchar*songda
本文标题:基于单片机的作息时间控制器设计
链接地址:https://www.777doc.com/doc-4290408 .html