《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx

上传人:夺命阿水 文档编号:889985 上传时间:2024-01-08 格式:DOCX 页数:51 大小:210.73KB
返回 下载 相关 举报
《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx_第1页
第1页 / 共51页
《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx_第2页
第2页 / 共51页
《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx_第3页
第3页 / 共51页
《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx_第4页
第4页 / 共51页
《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx》由会员分享,可在线阅读,更多相关《《单片机及应用》课程设计报告书--消毒柜控制电路的设计.docx(51页珍藏版)》请在课桌文档上搜索。

1、单片机及应用课程设计报告书课题名称消毒柜控制电路的设计摘要第一部分:题目要求(01)第二部分:方案论证与选择(02)第三部分:电路设计与参数选择(03)第四部分:系统软件设计(04)第五部分:系统调试与仪器使用(15)第六部分:使用说明书(16)总结(16)摘要本作品是以STC89C52RC芯片为核心,DS18B20温度传感器、LCD1602显示、电子开关管等电路构成的智能消毒柜控制电路。这种智能消毒柜控制电路具有温度测量、温度反馈、恒温控制、定时开启以及定时关闭等一系列功能。第一部分题目要求一、基本要求我们要设计一台消毒柜控制系统,要求:(1)显示消毒柜温度、保持时间;可以键盘设定消毒柜温度

2、、定时时间;可以实现实时中断功能;消毒后自动关机;测温误差:v.5;定时误差:20秒/月。;二、发挥与创新部分我们设计的消毒柜控制系统,摒弃了只有传统的开启与关闭功能,通过对STC89C52RC芯片的充分利用,给其增加了温度反馈和定时开启、关闭的功能,并且使其能在温度到达设定温度时自动恒温。而且能定时开启或定时关闭。第二部分方案论证与选择一、系统主要部分有:1:中央处理器电路:采用单片机芯片机外围电路构成最小系统。2:温度探测电路:DS18B20温度传感器3:人机接口电路:包括按键电路、LCDI602显示电路。4:信号处理电路:包括传感器、信号处理、等电路。5:执行部件电路:包括显示器、状态指

3、示灯。二、方案论证及选择1、加热管控制部分由于市场上有许多的消毒柜,从而想用单片机来实现消毒柜的恒温功能和定时功能,通过5个按键代替市场上消毒柜的按键,分别为开启,关闭、左右、上下设定。通过反馈的温度于设定温度进行比较,从而控制MOS管的导通与关闭。通过按按键可设定定时时间以及设定温度,从而可以控制定时开启或者定时关闭。2、测温部分测温部分是基于DS18B20温度传感器的探测,然后实时传输给1602显示器。并且设有恒温系统。当环境温度等于设定温度时状态指示灯灭,加热管断开。当环境温度低于设定温度时状态指示灯亮,加热管导通。第三部分电路设计与参数选择单片机最小系统电路设计和元件的选择产品说明书尹

4、运:连gen 藤攫济 瞄yfill- M :!: : SS* VWwWaftMW5fil少,余*秀,w(主电路图)主控MCU4pinSW-PBS7Pl.OUlPlGtD5V GND RXD TXDHC-O5蓝牙-口 11.0592MHZPLl2Pl 23PL3 4PL4 5Pl 56PL67Pl ;S9-11PC 二P3.313P3414P3 515C2 I30pf16 亘 逋 79 为01234567 Tol 234 5 67AIAIDIlIIIIIIS 33333333PppppppprppppppppxxgVCC P0.0 P0.1 P0.2 P0.3 P0.4 PO. 5 P0.6 P

5、0.7 EAALEPROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0,1M28P2.727 、P2 626P23Ti- P2.33322-Ti-GNDSTC89C52+5V L3T P3.5470R (主控)J2-5V31GNDDS18B20GNDLCDl602液晶显示屏温度传感器VDDIOGND(温度检测电路)(显示电路)制冷电机与散热电机驱动电路(外围控制电路)第四部分软件设计部分一、/*/*产品名称:消毒柜控制电路的设计/*成员:吴延、夏昕、苏梦野、郭美辰/*日期:2017.12.6*/Sinclude#includeSincludedef

6、ineuintunsignedintdefineucharunsignedcharSdefineulunsignedlong/*键盘使用o口*/sbitkeyl=P00;sbitkey2=P0l;sbitkey3=P02;sbitkey4=P03;sbitkey5=P04;/*制冷设备使用o口*/sbitmotorcoldled=P35;定时指示灯sbitSCP=P27;加热管(散热电机口)sbitDQ=P23;DS18B20温度传感器/*液晶使用I/O*/sbitLCDRS=P34;液晶数命选择端sbitLCDRW=P33;/液晶读写选择端sbitLCDEN=P3,2;定义使能端ucharn

7、um,numl,num2,gel,bail,shi1,ge2,shi2,count,s,m,h,ms,bai3,shi3,ge3;定义全局变量ucharflag=0;ON/OFF标志位ucharwendu2=125;设定温度ucharkey_flag=0;按键标志位ucharTimejflag=I;显示(+)显示(一)标志位UChartime_flag=O;判断是否进入了定时模式标志位。为无,1为有uintwendu;uchara=0;亳秒ucharb=0;秒uintc=0;分钟ucharflag2=0;开始后是否进入模式二标志位ucharflag_T2_2=0;进入模式二voiddispla

8、y();voidspeed();voidopenO;voidstar();voidsto();voidTimeO;voidTimerchoseO;uintGet_Tmp();获取温度gettheWendueraturevoidDisplay(uintwendu);voidspeedO;voidif_time();判断是否进入定时模式voidkayscan();按键函数voiddelajns(uinttime)延时函数uintx,y;for(x=time;x0;x-)for(y=110;y0;y-);void motor_init()指示灯初始化P2=0X00;motor_cold_led=l;

9、count=0;进入时间设定时候的延时ms=0;毫秒s=0;秒m=0:分钟h=0;小时voidinit()初始化子程序/AUXR&=0x7F;定时器时钟12T模式TMOD&=OxFO;设置定时器模式TMODI=0x11;设置定时渊模式TLO=0x00;设置定时初值IOmsTHO=OxDC;设置定时初值TLl=0x00;设置定时初值20msTHl=0xB8;设置定时初值ETO=1;打开定时器TO中断ETl=1;打开定时器TI中断TFO=0;TFl=0;EA=1;开总中断voidT0_time(void)interrupt1(TLO=0x00;设置定时初值IOmsTHO=OxDC;设置定时初值ms

10、+;if(ms=50)motor_coldIed=I;if(ms=100)如果记到100次说明IS已到InS=0;/num清0重新计数motor_cold_led=O;s+;)if(s=60)(s=O;m+;)if(m=30)(m=0;h=h+5;)if(h=num2)(h=0;TRO=O;if(Timerflag=I)(StopO:if(TimerfIag=O)star();voidTltimeOinterrupt3定时器1(TLl=0x00;设置定时初值20msTHl=0xB8;设置定时初值a+;if(a=50)(a=0;亳秒b+;秒if(b=60)(b=0;秒c+;分钟if(c=999)

11、TRl=O;)/*液晶显示部分*/voidwrite_com(ucharcom)指令函数(LCDRS=O;LCDRW=O;Pl=com;delayms(5);LCDEN=I;delans(5);LCDEN=O;voidwirtcdat(uchardat)数据函数(LCDRS=I;LCDRW=O;Pl=dat;delayms(5);LCDEN=I;delayms(5);LCDEN=O;voidlcd_init()液晶初始化(LCDEN=O;write_com(0x38);write_com(OxOc);各种指令write_com(0x06);write_com(0x01);voidLCD_P0S

12、(ucharPOS)(writecom(POS+0X80);地址函数voiddisplay_init()显示函数初始化(固定不变的字)(LCD_P0S(0X0a);Wirtedat(T);Wirtedat(;LCD_POS(0X46);Wirtedat(T);wirtedat(,i,);wirte_dat(m);wirte_dat(e);wirtedatdisplayO;)/Welcome ToiControl systemvoiddisplay2_init()(LCD_POS(0X00);wirtedat();Wirtjdat(,);wirte_datCW,);wirtedat(e);wir

13、te_dat(,);wirte_dat(c);wirtedat(o);wirte_dat(,m,);wirte_dat(e);LCDPOS(OXOB);wirte_dat(T);wirte_dat(o);wirtedatLCD_P0S(0X41);wirte_dat(C);wirte_dat(o);wirtedat(n);wirte_dat(t);wirte_dat(r);wirtedat(,o,);Wirtedat(,);LCD_P0S(0X49);Wirtedat(S);wirte_dat(y);wirte_dat(,s*);wirtedat(,t*);Wirtedat(e);wirte_

14、dat(m);deIayms(12000);lcd_init();voiddisplay3init()/版本号VerSionnumber:V2.0(LCD_POS(0X00);wirtedat(,V,);wirtedat(e);wirte_dat(r,)wirte_dat(s)wirtedat(i)wirte_dat(o)wirte_dat(n)wirtedat(,)wirte_dat(N)wirte_dat(0)wirte_dat(,)wirte_dat(V)wirte_dat(2)wirtedat(.)wirte_dat(0)LCD_P0S(0X40);Wirtedat(P)wirte_d

15、at()wirte_dat(e,)wirtedat(a)wirte_dat(s)wirte_dat(e)wirte_dat(,*)wirte_dat(a);wirte_dat(i);wirtedat(,t,);wirte_datwirte_datwirtedat.,);delayms(15000);lcd_init0;)voidmath()(shi2=num210;ge2=num2%10;bai3=wendu2/100%10;shi3=wendu210%10;ge3=wendu2%10;)voidopen()(if(flag=0)运算函数时间设定温度ON/OFF显示函数write_com(0x

16、40+0x80+0);第一行放0wirte_dat(,0,);write_com(0x40+0x80+1);第一行放Nwirtedat(,N);writecom(0x40+0x80+2);wirte_datC);)if(flag=l)(writecom(0x40+0x80+0);第一行放0wirte_dat(,0,);write_com(0x40+0x80+1);第一行放Fwirtedat(,F);write_com(0x40+0x80+2);第一行放Fwirte_datCF*);)voidTimer_chose()(if(Timer_flag=0)(write_com(0x40+0x80+1

17、5);放+(定时开启)wirte_datC+,);)if(Timer_fIag=I)(write_com(0x40+0x80+15);放-(定时关闭)wirte_dat(,-,);)voiddisplay()显示函数(不断动态刷新的字)(math();open();writecom(0x00+0x80+3);第一行放:wirte_dat(;write_com(0x00+0x80+8):第一行放温度十位Wirtedat(T);write_com(0x00+0x80+9);第一行放温度个位wirte_dat(2);write_com(0x00+0x80+10);第一行放温度十位wirte_dat(

18、,:*);write_com(0x00+0x80+11);第一行放温度十位wirtedat(0x30+bai1);write_com(0x00+0x80+12);第一行放温度十位wirtedat(0x30+shi1);write_com(0x00+0x80+13);第一行放温度个位wirtedat(0x30+gel);write_com(0x00+0x80+14);第二行放温度符号wirte_dat(Oxdf);write_com(0x00+0x80+15);第二行放温度符号wirtedat(,C,);write_com(0x40+0x80+11);第二行放时间十位wirtedat(0x30+

19、shi2);writecom(0x40+0x80+12);wirte_datwritecom(0x40+0x80+13);wirtedat(0x30+ge2);write_com(0x40+0x80+14);wirtedat(,h,);TimejChOSe();Display(Get_Tmp();)voiddisplay_T_init()(math();LCD_POS(0X00);write_com(0x00+0x80+0);wirte_datCT,);write_com(0x00+0x80+1);wirtedat(,);write_com(0x00+0x80+2);wirtedat(,);w

20、rite_com(0x00+0x80+3);wirte_dat(0x30+bai3);writecom(0x00+0x80+4);wirtedat(0x30+shi3);write_com(0x00+0x80+5);wirtedat(0x30+ge3);writecom(0x00+0x80+6);wirte_dat(Oxdf);writecom(0x00+0x80+7);wirte_datfC,);LCD_P0S(0X48);wirte_dat(,T,);Wirte_dat(2);wirte_datDisplay(GetTmp();write_com(0x40+0x80+11);wirteda

21、t(0x30+bail);writecom(0x40+0x80+12);wirte_dat(0x30+shil);write_com(0x40+0x80+13);wirtedat(0x30+gel);write_com(0x40+0x80+14);wirte_dat(Oxdf);writecom(0x40+0x80+15);wirte_dat(C);void display_T()模式二bai3=wendu2100%10;shi3=wendu210%10;设定温度ge3=wend2%10;writecom(0x00+0x80+3);第二行放设定温度2十位wirte_dat(0x30+bai3)

22、;write_com(0x00+0x80+4);第二行放设定温度2十位wirtedat(0x30+shi3);writecom(0x00+0x80+5);第二行放设定温度2个位wirtedat(0x30+ge3);write_com(0x40+0x80+11);第二行放设定温度2十位wirte_dat(0x30+bail);write_com(0x40+0x80+12);第二行放额定温度2十位wirtedat(0x30+shil);write_com(0x40+0x80+13);第二行放额定温度2个位wirte_dat(0x30+gel);Display(GetTmp();*DS18B20*/

23、voidDelay(unsignedcharal,bl,cl)(unsignedcharx,y,z;for(x=0;xal;x+)for(y=0;ybl;y+)for(z=0;z0;i)(DQ=0;_nop_();dat=1;DQ=1;Delay(l,1,1);if(DQ)dat=0x80;)Delay(l,1,8);return(dat);voidWriteOneByte(uchardat)uchari=0;for(i=8;i0;i-)(DQ=0;_nop_();DQ=dat&OxOl;Delay(1,1,15);DQ=1;dat=1;Delay(l,1,1);)获取温度 get the W

24、enduerature初始化uintGet_Tmp()(floattt;uchare,f;Init_Dsl8b20();WriIeOneByte(Oxcc);忽略ROM指令WriIeOneByte(0x44);Init.Dsl8b20();WriteOneByte(Oxcc);WriteOneByte(Oxbe);e=Read_One_Byte();f=ReadOne_Byte();wendu=f;wendu=8;wendu=WendUIe;tt=wendu*0.0625;wendu=tt;returnwendu;)voidT1_T2()(if(wendu2wendu)温度转换指令初始化忽略R

25、OM指令读暂存器指令读取到的第一个字节为温度LSB读取到的第一个字节为温度MSB先把高八位有效数据赋于wendu把以上8位数据从wendu低八位移到高八位两字节合成一个整型变量得到真实十进制温度值因为DS18B20可以精确到0.0625度所以读回数据的最低位代表的是0.0625度温度微调SCP=I;if(wendu2=wendu)SCP=O;voiddisplay_time()(if(flag_T2=0)(writecom(0x00+0x80+0);第一行放分钟百位wirte_dat(0x30+c100%10);write_com(0x00+0x80+1);第一行放分钟十位wirte_dat(

26、0x30+c10%10);write_com(0x000x80+2);第一行放分钟个位wirte_dat(0x30+c%10);write_com(0x00+0x80+4);/第一行放秒十位wirte_dat(0x30+b10);write_com(0x00+0x80+5);第一行放秒个位wirtedat(0x30+b%10);)*LED16()2动态扫描函数*/voidDisplay(uintwendu)环境温度显示函数(不断动态刷新的字)bai1=wendu/100%10;百位shi1=wendu/10%10;/十位gel=wendu%10;个位if(flag_T2_2=0)&(flag_

27、T2=0)(write_com(0x00+0x80+12);第一行放温度2十位wirte_dat(0x30+shi1);write_com(0x00+0x80+13);第一行放温度2个位wirte_dat(0x30+gel);)/*按键部分*/voidkeyscan2()(whiIe(I)(if(key1=0)(if(wendu2100)(wendu2一;display_T();while(!key2);)if(key3=0)(delayms(10);if(key3=0)(while(!key3);lcd_initO;displayinit();kayscan();break;)voidkay

28、scan()(if(key4=0)&(key_flag=0)(delayms(10);lcd_init();flag_T2_2=l;Icdinit();display_T_init();while(!key4);keyscan2();(if(key4=0)&(key-flag=l)(delayms(10);if(key4=0)(lcd_init();while(!key4);)flag_T2=l;display_T_initO;display_T();if(key3=0)&(keyflag=l)(delayms(10);if(key3=0)(flag_T2_2=0;flag_T2=0;Icdi

29、nit();while(!key3);displayinit();display();if(key5=0)&(key_fIag=O)(delayms(10);if(key5=0)delayms(50);count+;if(count=180)如果记至J180次说明3S已到(count=0;/count清0重新计数if(key5=0)&(flag=1);(TimeO;break;进入定时模式设置时间)if(key5=l)(if_time();break;if(key5=0)&(keyflag=l)(delayms(10);key_flag=O;)while(!key5);stop();)void

30、if_time()判断是否进入定时模式(if(time_fIag=O)未进入定时模式(TRO=O;key_fIag=I;star();if(timefIag=D进入定时模式(TRO=I;if(TimerfIag=D定时关闭(key_fIag=I;star();定时开启key_flag=l;stop();)voidTimeO(motorcoldled=0;while(!key5);while(l)(if(key3=0)(deIayms(10);if(key3=0)if(num20)(num2=num2-5;while(!key3);display();)if(key4=0)(deIayms(IO

31、);if(key4=0)if(num20)(timefIag=I;motor_coldIed=I;kayscan();break;)voidstar()(flag=0;显示ON标志位display();TRl=I;while(l)(T1_T2():if(keyl=O)(key2=0)(key3=0)(key4=0)kayscanO;if(key5=0)kayscan();break;Display(GetTmp();if(flag_T2=0)displaytime();)voidstop()(fIag=I;显示OFF标志位SCP=0;TRl=O;a=0;b=0;c=0;motor_coldIe

32、d=I;display();display_time();kayscan();voidmain()num2=0;时间fIag=I;开后关闭motorinit();lcd_init();init();clisplay2init();display3_init();display_initO;while(l)kayscanO;displaytime();Display(GetTmp();(第五部分系统调试与仪器使用一、系统调试的过程主要分三步,温度控制、定时设定、温度测量。1、温度控制:我们首先进行温度采样,随后与系统设定温度进行比较,通过设定的程序判断是否开启外围为控制电路。2、定时设定:在系统

33、关闭(OFF)的情况下,我们长按3S确定功能选择按键,定时指示灯亮起,通过左右可选择小时以及分钟,通过上下可选择时间的加与减,最后的+/-是控制定时开启还是定时关闭的,+为定时开启,-为定时关闭。3、温度测量开机后,DS18B20温度探测器将会自动采集外界温度信号,并经过换算后将其自动显示在LCD1602上。第六部分使用说明1、将12V10电源适配器DC3.0接口接入中控系统接3.0接口处。2、将电源开关开启,此时系统进入初始化界面。3、初始化完成后,系统进入主界面。4、控制面板上共有五个按键,分别为:上(1),下(2),左(3),右(4),中(5),(以下均用1,2,3,4,5代替)。5、在

34、此面板上点击按键4可进入温度设定界面。6、在温度设定界面中,Tl为预设温度,T2为环境温度,通过点击按键1,按键2可对设定温度进行增加或降低。设定完成后,点击按键3返回主界面。7、在主界面中,单击长按按键5并维持3S,此时面板上“制冷电机”指示灯常亮,即进入定时设定模式。8、定时设定模式中,可利用按键1(开启),按键2(关闭)设定系统为定时开启或者为定时关闭。单击按键1,此时液晶显示屏上“h”后方的”会变为“+”,此时系统设定为定时开启;单击按键2,此时液晶显示屏上“h”后方的“+”会变为“-”,此时系统设定为定时关闭(系统初始默认为定时关闭)。、通过单击按键4可增加定时时间;单击按键3可减少

35、定时时间;最大定时时长为5小时,单击一次按键相差0.5小时。10、设定完成后,单击按键5,此时指示灯熄灭,系统返回初始界面。11、单击按键5,系统开始工作,此时界面上“OFF”变为“ON”,在工作模式中可通过按键4可查看设定温度与实际环境温度,但工作中不允许对温度进行设定,在查看设定温度的界面中可通过按键3返回主界面。若需再次进行时间/温度设定,则先通过按键5将系统关闭,此时“0N”变为“OFF”,然后根据上文中步骤(5-10)进行时间/温度设定。温馨提示:1、本系统工作中有轻微发热,请注意环境的空气流通,确保电子开关以及散热片得到相应的散热。2、本系统工作时对应指示灯均会亮起,若发现对应指示灯亮起而此时对应设备不工作,则应检查接线是否正确,接线口是否存在松动等接触不良的问题。3、本系统最大承受功率为mos管的对应额定功率,不同设备需匹配不同电力mos管(本设备均用NMOS),用户可自行对mos管进行更换。经过几天的艰苦奋战,在指导老师的辛苦指导下,我们最终不但完成了本次课程设计的基本要求,而且基本完成了发挥部分。虽然过程是艰苦的,但最终成功的喜悦同样令我们快乐。经过本次课程设计,我们收益非浅。但也发现了自己的一些不足,在今后的学习过程中将更加努力,以适应社会和时代发展要求。指导教师评语课程设计成绩指导教师签字年月日

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

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


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号