基于51单片机的定时控制系统设计说明_第1页
基于51单片机的定时控制系统设计说明_第2页
基于51单片机的定时控制系统设计说明_第3页
基于51单片机的定时控制系统设计说明_第4页
基于51单片机的定时控制系统设计说明_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . . . 信息职业技术学院毕业设计说明书设计题目:基于51单片机的定时控制系统设计专 业: 电子信息工程技术 班 级: 电信09-1 学 号:0819050 姓 名: 王 丹 指导教师: 曾 宝 国 二O一一年十二月十五日31 / 34信息职业技术学院毕业设计任务书学生肖阳学号0819019班级电信09-1专业电子信息工程技术设计(或论文)题目基于51单片机的定时控制系统设计指导教师职 称工作单位与所从事专业联系方式备注曾宝国讲师/工程师信息职业技术学院电子系教师设计(论文)容:以AT89C51单片机为核心,设计一款定时控制系统,可用于电饭煲定时煮饭控制,要求:1. 能以24小时方式显示时

2、间,并能修改系统时钟基准和设定定时时间;2. 定时时间自动报警,并完成继电器通断控制;3. 完成仿真或制作实物,并撰写设计报告。进度安排:1.收集有关资料并消化吸收-9月25日10月15日;2.制定设计方案-10月16日10月30日;3.硬件设计-11月1日11月15日;4.软件设计-11月16日11月30日;5.硬件制作-12月1日12月5日; 5.撰写设计报告-12月6日12月15日;6.准备毕业答辩-12月16日12月25日。主要参考文献、资料(写清楚参考文献名称、作者、出版单位):1戴佳.戴卫.51单片机C语言应用程序设计实例精讲电子工业.20062余宏生.吴建设.电子CAD技能实训.

3、人民邮电.20063贵庭.单片机应用技术与项目化训练.西南交通大学.20094建清.从零开始学单片机C语言.国防工业.20065钟富昭等.8051单片机典型模块设计与应用M.人民邮电,2007.6平等.单片机入门与开发M.机械工业,2008.审批意见教研室负责人:年 月 日备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份目录摘要1第1章方案设计2第2章硬件设计32.1单片机最小系统32.2 DS1302时钟电路42.3按键电路42.4中断触发电路52.5LCD1602液晶显示电路52.6继电器控制电路52.7报警电路62.8整机工作原理6第3章软件设计7第4章系统仿真测试84.

4、1仿真测试方法84.2仿真测试结果8总结9致10参考文献11附录1主要程序代码12附录2整机原理图29摘要在这个智能社会,对以往的很多设备都进行了智能化改进,比如降温系统等都从手动改进到了自动控制。在这里我们将常见的做饭工具电饭煲也进行了智能化控制,这里主要运用51单片机对原有非智能化电饭煲进行智能化控制,该系统具有定时功能,并且当时间到达定时时间时会自动报警,并且在报警一分钟后如果没有人操作电饭煲,会通过继电器将电饭煲的电源切断让并点亮绿灯提示它的工作完成。关键词AT89C51;DS1302;继电器第1章方案设计采用51单片机可以实现一些功能不多的控制环境,即节约经济又达到了我们所需的职能化

5、控制。本课题主要从以下三个方面入手:一是实现时间显示功能,可以查看日期时间星期;二是实现定时功能,当时间到达设定值时可以报警提示,并通过继电器控制电饭煲的电源,并通过指示灯提示任务的完成;三是考虑时间的准确性,在这里主要使用DS1302芯片进行时间计时。设计的总体方案如图1-1所示,由单片机最小系统、LCD1602液晶显示、继电器、DS1302时钟电路、报警电路、按键电路与5V直流供电电路组成。为了实现智能控制和简化设计,选用了AT89C52、DS1302等集成芯片。图1-1基于51单片机的定时控制系统框图第2章硬件设计2.1单片机最小系统1振荡电路AT89C51是部具有振荡电路的单片机,只需

6、在18脚和19脚之间接上石英晶体,给单片机加工作所需直流电源,振荡器就开始振荡起来。振荡电路就为单片机工作提供了所需要的时钟脉冲信号,是单片机的部电路、单片机的部程序(若有)开始工作。振荡电路不工作,整个单片机电路都不能正常工作。AT89C51常外接6MHz、12MHz的石英晶体,18脚和19脚分别对地接了一个30pF的电容,目的是防止单片机自激。若从18脚输入外部时钟脉冲,则19脚接地。2复位电路复位电路就是在RST端(9脚)外接的一个电路,目的是使单片机上的电开始工作时,部电路从初始状态开始工作,或者在工作中人为让单片机重新从初始状态开始工作。在时钟工作的情况下,只要复位引脚高电平保持在两

7、个机器周期以上的时间,AT89C51便能完成系统重置的各项工作,使得部特殊功能寄存器的容均被设置成已知状态,并且从地址0000H处读入程序代码而执行程序。单片机最小系统电路如图2-1所示。图2-1单片机最小系统2.2 DS1302时钟电路1DS1302简介芯片引脚功能图如图2-2所示。图2-2 DS1302引脚功能图DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。

8、X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在VCC>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向), SCLK为时钟输入端。2时钟电路图时钟电路如图

9、2-3所示,主要由DS1302与32.768KHz晶振组成。通过SPI三线方式可以很好的与51系列单片机进行通信,从部读出时间,以与设置部时间。图2-3 DS1302时钟电路图2.3按键电路按键电路如图2-4所示。图2-4 按键电路当没有按下按键时I/O口为高电平,当按下时I/O口电平会被拉低,通过电平的不同可以很轻松地判别是否有按键按下。2.4中断触发电路中断触发电路主要由与非门与非门构成,主要用于当按键按下之后触发中断,电路图如图2-5所示。图2-5中断触发电路2.5LCD1602液晶显示电路液晶显示电路如图2-6所示,具体液晶使用请查看相关手册。图2-6 LCD1602液晶显示电路2.6

10、继电器控制电路继电器控制电路如图2-7所示。由于单片机I/O口驱动能力有限,从图中可以看出我们利用三极管来控制,通过如图的连接方式,可以提高驱动负载的能力,并且利用三极管截至和饱和导通的性质可以很方便的用于单片机控制。图2-7 继电器控制电路2.7报警电路报警电路如图2-8所示。如2.6所述,我们在这里再次利用了三极管作为开关管驱动蜂鸣器发声。图2-8报警电路2.8整机工作原理整机仿真电路图如附录2所示,开启仿真开关后,我们可以看到时间和日期显示的界面,通过设置按钮,我们可以很方便的调节时间、日期、星期等。我们调整好时间后,并定时报警时间,后按确认键,当界面显示有大写字母A时,说明我们开启了定

11、时报警系统,通过确认键我们还可以查看当前我们设定的报警时间,当时间到达所定时时间是,就会通过蜂鸣器报警提示,当提示1分钟后,就会启动继电器控制通断系统,将电路断开,并点亮绿灯告之电饭煲工作完成。第3章软件设计整套系统的运行都是基于8051核指令控制运行的,主要程序见附录1。工作流程如图3-1所示。图3-1流程图第4章系统仿真测试4.1仿真测试方法系统测试容包括能否正常设定日期时间、是否能正常定时、报警电路与继电器电路是否正常工作,具体测试方法如表4-1所示。表4-1系统测试项目与测试方法序号测试项目测试方法1是否能正常设置日期时间1、打开仿真开关,通过设置键进入时间设置;2分别设置时间日期,保

12、存后观察是否正常。2是否能准确定时1、通过时间设置按钮进入定时设置;2、等待时间到点,观察是否报警。3报警电路与继电器电路是否正常工作1、观察当项目2中定时到点时,是否正常报警,与继电器是否工作,是否点亮绿灯。4.2仿真测试结果表4-2系统测试结果序号测试项目测试结果1是否能正常设置日期时间能很好的设置和保存所设置的时间,且正常工作。2是否能准确定时能够准确定时。3报警电路与继电器电路是否正常工作蜂鸣器能正常发声工作,报警结束后能断开继电器,且点亮绿灯。结果:整个系统能按照预定的计划运行,此次制作圆满成功。总结经过几周的辛苦设计,现在终于可以画上一个圆满句号了。回想起来做毕业设计的整个过程,其

13、中有苦也有甜。毕业设计的难度不仅是检验大学所学的深度,也是对自己能力的一种提高。下面我对整个毕业设计的过程简单的做一下总结。首先,进行选题选定。选题是毕业设计的开端,选择恰当的感兴趣的题目,这对于整个毕业设计是否能够顺利进行关系极大。好比走路,开始的第一步具有决定意义的,第一步迈向何方,需要慎重考虑。否则,就可能走许多弯路、费许多周折,甚至可能做的全是无用功。致首先要感在大学两年半教育我的老师,没有他们给予我扎实的基础,我想我是不能完成这次毕业设计的。在这两个多月的毕业设计中,我真诚地感老师和同学们的帮助,在他们的帮助下我顺利的完成了此次毕业设计。在本次设计过程中曾宝国老师始终给予了我无私的帮

14、助,在最开始的设计思路的构建、资料的选取等是我能顺利完成这次设计的关键。参考文献1 戴佳 戴卫.51单片机C语言应用程序设计实例精讲.电子工业,20062 余宏生.吴建设.电子CAD技能实训.人民邮电,20063 贵庭.单片机应用技术与项目化训练.西南交通大学,20094 建清.从零开始学单片机C语言.国防工业,20065钟富昭等.8051单片机典型模块设计与应用M.人民邮电,20076平等.单片机入门与开发M.机械工业,2008附录1主要程序代码#include "reg52.h"#include "delay.h"#include "dat

15、e.h"#include "lcd.h"#include "start.h"#include "ds1302.h"/功能定义uchar CN=0,TN=0,DN=0,WN=0,AN=0;uchar ZY7;uchar clr_flag_TN=0;uchar clr_flag_DN=0;uchar clr_flag_WN=0;uchar clr_flag_AN=0;uchar clr_z=0;/ - - - - - - - - 设定时间 - - - - - - - - /uchar T_S,T_S_S,T_S_G,T_M_S,

16、T_M_G,T_M,T_H,T_H_S,T_H_G;/ - - - - - - - - 设定日期 - - - - - - - - /uchar D_D,D_D_S,D_D_G,D_Y_S,D_Y_G,D_Y,D_N,D_N_S,D_N_G;/ - - - - - - - - 设定星期 - - - - - - - - /uchar W_N,W_N_S,W_N_G;/ - - - - - - - - 设定闹铃 - - - - - - - - /uchar A_S=0,A_S_S,A_S_G,A_M_S,A_M_G,A_M=0,A_H=6,A_H_S,A_H_G,ARM=0,MI=0,BUZER1;

17、bit A=0;sbit P00=P00;sbit P01=P01;sbit P02=P02;sbit P03=P03;sbit P32=P32;sbit BUZER=P27;sbit P37=P37;void display();void main()main_start();Initial();LCD_begin();yystar();while(1)display();void INT_0(void) interrupt 0 using 0 EA=0; if(P32=0) delay_key(); if(P32=0) if(P00=0) /功能键 while(!P00); delay_k

18、ey(); while(!P00); CN+;if(ARM=1)ARM=0; if(CN>4) CN=0; clr_z=1; if(P01=0) /设置闹铃,观察闹铃 while(!P01); delay_key(); while(!P01); if(CN=1) TN+; clr_flag_TN=1; if(TN>3) TN=0; / 设定时间 if(CN=2) DN+; clr_flag_DN=1; if(DN>3) DN=0; / 设定日期 if(CN=3) clr_flag_WN=1; WN+; if(WN>1) WN=0; /设定周 if(CN=4)clr_fl

19、ag_AN=1; AN+; if(AN>3) AN=0; /设定闹铃 if(P02=0) /调整加 while(!P02); delay_key(); while(!P02); if(CN=1) if(TN=1) T_S_G=ZY6&0x0f; T_S_S=ZY6>>4; T_S=T_S_S*10+T_S_G; T_S+; if(T_S>59) T_S=0; ZY6=(T_S/10)*16+(T_S%10); if(TN=2) T_M_G=ZY5&0x0f; T_M_S=ZY5>>4; T_M=T_M_S*10+T_M_G; T_M+; if

20、(T_M>59) T_M=0; ZY5=(T_M/10)*16+(T_M%10); if(TN=3) T_H_G=ZY4&0x0f; T_H_S=ZY4>>4; T_H=T_H_S*10+T_H_G; T_H+; if(T_H>23) T_H=0; ZY4=(T_H/10)*16+(T_H%10); time_set(ZY); if(CN=2) if(DN=1) D_D_G=ZY3&0x0f; D_D_S=ZY3>>4; D_D=D_D_S*10+D_D_G; D_D+; D_Y_G=ZY2&0x0f; D_Y_S=ZY2>&g

21、t;4; D_Y=D_Y_S*10+D_Y_G; D_N_G=ZY1&0x0f; D_N_S=ZY1>>4; D_N=D_N_S*10+D_N_G; if(D_Y=1|D_Y=3|D_Y=5|D_Y=7|D_Y=8|D_Y=10|D_Y=12) if(D_D>31) D_D=0; if(D_Y=4|D_Y=6|D_Y=9|D_Y=11) if(D_D>30) D_D=0; if(D_Y=2) if(D_N%4!=0) if(D_D>28) D_D=0; if(D_N%4!=0) if(D_D>29) D_D=0; ZY3=(D_D/10)*16+(D

22、_D%10); if(DN=2) D_Y_G=ZY2&0x0f; D_Y_S=ZY2>>4; D_Y=D_Y_S*10+D_Y_G; D_Y+; if(D_Y>12) D_Y=0; ZY2=(D_Y/10)*16+(D_Y%10); if(DN=3) D_N_G=ZY1&0x0f; D_N_S=ZY1>>4; D_N=D_N_S*10+D_N_G; D_N+; if(D_N>99) D_N=0; ZY1=(D_N/10)*16+(D_N%10); time_set(ZY); if(CN=3) if(WN=1) W_N_G=ZY0&0x

23、0f; W_N_S=ZY0>>4; W_N=W_N_S*10+W_N_G; W_N+; clr_flag_WN=1; if(W_N>7) W_N=1; ZY0=(W_N/10)*16+(W_N%10); time_set(ZY); if(CN=4)if(AN=1)A_S+;if(A_S>59) A_S=0;if(AN=2) A_M+; if(A_M>59) A_M=0;if(AN=3) A_H+;if(A_H>23)A_H=0; if(P03=0) /确定,查看闹铃 while(!P03); delay_key(); while(!P03);if(CN=4)

24、A=A;P37=1;if(CN=0)CN=4;ARM=1;elseif(CN!=0)CN=0;clr_z=1;TN=0;DN=0;WN=0;AN=0; EA=1;void display()uchar show_dat2,time7,TZ,AZ;uchar code NUM="0123456789-"/LCD 字 09;uchar code t13="Mon",t23="Tue",t33="Wed",t43="Thu",t53="Fri",t63="Sat"

25、;,t73="Sun"uchar j,i;while(1)if(CN=0) if(clr_z=1) CMD(0x01); yystar(); clr_z=0; get_time(ZY);get_time(time); /获取 DS1302 的时间for(i=4,j=0;i<7;i+)DSTOL(timei,show_dat);/转换为 LCD 显示的数据DIS(0xc8+j,NUMshow_dat0);/显示在液晶屏的相应位置DIS(0xc8+j+1,NUMshow_dat1);DIS(0xc8+j+2,NUM10);j=j+3;if(A=1)A_();T_S_G=t

26、ime6&0x0f; T_S_S=time6>>4;T_M_G=time5&0x0f; T_M_S=time5>>4;T_H_G=time4&0x0f; T_H_S=time4>>4;A_H_S=A_H/10;A_H_G=A_H%10;A_M_S=A_M/10;A_M_G=A_M%10;A_S_S=A_S/10;A_S_G=A_S%10;T_M=T_M_S*10+T_M_G;A_M=A_M_S*10+A_M_G;T_S=T_S_S*10+T_S_G;TZ=T_M*60+T_S;AZ=A_M*60+A_S;if(T_H_S=A_H_S)

27、&&(T_H_G=A_H_G)&&(T_M_S=A_M_S)&&(T_M_G=A_M_G)&&(T_S_S=A_S_S)&&(T_S_G=A_S_G)BUZER1=1;BUZER=0;MI=TZ;BUZER=BUZER;if(BUZER1=1)if(TZ-AZ)>59)A=A;BUZER1=0;P37=0;elseif(TZ-MI)=2)BUZER=BUZER;MI=TZ;for(i=1,j=0;i<4;i+)DSTOL(timei,show_dat);/转换为 LCD 显示的数据DIS(0x88+j,

28、NUMshow_dat0);/显示在液晶屏的相应位置DIS(0x88+j+1,NUMshow_dat1);DIS(0x88+j+2,NUM10);j=j+3;DSTOL(time0,show_dat);/转换为 LCD 显示的数据switch(show_dat1)case 1:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t1j);i+;break;case 2:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t2j);i+;break;case 3:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t3j);i+;break;case 4

29、:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t4j);i+;break;case 5:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t5j);i+;break;case 6:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t6j);i+;break;case 7:for(j=0,i=0;j<3;j+)DIS(0xc0+i,t7j);i+;break;default:break;if(CN=1)CMD(0x01); yystar(); set_time_();while(1) if(TN=0&&clr_flag_

30、TN=1) CMD(0x01); yystar(); set_time_(); clr_flag_TN=0; if(TN=1&&clr_flag_TN=1) CMD(0x01); yystar(); set_time_(); set_time_Second(); clr_flag_TN=0; if(TN=2&&clr_flag_TN=1) CMD(0x01); yystar(); set_time_(); set_time_Minute(); clr_flag_TN=0; if(TN=3&&clr_flag_TN=1) CMD(0x01); yy

31、star(); set_time_(); set_time_Hour(); clr_flag_TN=0; get_time(ZY);get_time(time); /获取 DS1302 的时间for(i=4,j=0;i<7;i+)DSTOL(timei,show_dat);/转换为 LCD 显示的数据DIS(0xc8+j,NUMshow_dat0);/显示在液晶屏的相应位置DIS(0xc8+j+1,NUMshow_dat1);DIS(0xc8+j+2,NUM10);j=j+3;if(CN=2|CN=0)break; if(CN=2)CMD(0x01); yystar(); set_day

32、_();while(1) if(DN=0&&clr_flag_DN=1) CMD(0x01); yystar(); set_day_(); clr_flag_DN=0; if(DN=1&&clr_flag_DN=1) CMD(0x01); yystar(); set_day_(); set_day_Day(); clr_flag_DN=0; if(DN=2&&clr_flag_DN=1) CMD(0x01); yystar(); set_day_(); set_day_Month(); clr_flag_DN=0; if(DN=3&&am

33、p;clr_flag_DN=1) CMD(0x01); yystar(); set_day_(); set_day_Year(); clr_flag_DN=0; get_time(ZY);get_time(time); /获取 DS1302 的时间for(i=1,j=0;i<4;i+)DSTOL(timei,show_dat);/转换为 LCD 显示的数据DIS(0xc8+j,NUMshow_dat0);/显示在液晶屏的相应位置DIS(0xc8+j+1,NUMshow_dat1);DIS(0xc8+j+2,NUM10);j=j+3;if(CN=3|CN=0)break; if(CN=3)

34、CMD(0x01);yystar();set_week_(); while(1) if(WN=0&&clr_flag_WN=1) CMD(0x01); yystar(); set_week_(); clr_flag_WN=0; if(WN=1&&clr_flag_WN=1) CMD(0x01); yystar(); set_week_(); _set_(); clr_flag_WN=0; get_time(ZY); get_time(time); /获取 DS1302 的时间DSTOL(time0,show_dat);/转换为 LCD 显示的数据switch(show_dat1)case 1:_monday_();break;case 2:_tuesday_();break

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论