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

下载本文档

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

文档简介

1、基于单片机得温度控制系统设计1、设计要求要求设计一个温度测量系统,在超过限制值得时候能进行声光报警。具体设计要求如下:数码管或液晶显示屏显示室内当前得温度;在不超过最高温度得情况下,能够通过按键设置想要得温度并显示;设有四个按键,分别就是设置键、力口1键、减1键与启动/复位键;DS18B20温度采集;超过设置值得±5时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。2、方案论证根据设计要求,本次设计就是基于单片机得课程设计,由于实现功能比较简单,我们学习中接触到得51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。温度采集直接可以

2、用设计要求中所要求得DS18B20。报警与指示模块中,可以选用3种不同颜色得LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择.方案一:使用LED数码管显示采集温度与设定温度;方案二:使用LCD液晶显示屏来显示采集温度与设定温度。LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选与段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD显示屏可识别性较好,背光亮度可调,而且比LED数码管显示更多字符,但就是编程要求比LED数码管要高综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设

3、定时同样可以采集并显示当前温度,可以直观得瞧到实际温度与警戒温度得对比。LCD显示模块可以选用RT1602C。3、硬件设计根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD显示模块、报警与指示模块。其相互联系如下图1所示:单片机时钟电路>Hr 硬件电路设计框图LCD显示模块单单片机内部有一个用于构成振荡器3、1单产机日燧袖1路得高增益反相放大器,引脚XT A L 1与XXTALC1 22pF|报警与指不哂X2 XI GXDTAL2分别为此放大器得输入端与输出1端,其频率范围为1、212MHz,经由片外晶体振荡器或陶瓷振荡器与两个匹GND

4、图2单片机内部时钟方式电路配电容一起形成了一个自激振荡电路,为单片机提供时钟源3、2复位电路复位就是单片机得初始化操作,其作用就是使CPU与系统中得其她部件都处于一个确定得初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU工作不正常。在系统中,有时会出现工作不正常得情况,为了从异常状态中恢复图3单片机按键复位电路同时也为了系统调试方便,需要设计一个复位电路.单片机得复位电路有上电复位与按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统得上电复位与系统在运行时用户得按键复位功能。3、3键盘接口模块GNDo 13 4专1 p p

5、 p p P本次设计需要得按键有4个,除去一个复位按键外,还有3个功能按键因此选择独立式键盘。如图4,将键盘直接与单片机P1口得P1、0、P1、1、P1、2相连。3个键设计思路如下:当按下S1键时,系统进入上下限警戒值调整状态;当第一次按下S1键时,进行上限警戒值设定,当第二次按下S1键时,进行下限警戒值设定,当第三次按下S1键时,回到正常工作状态。在警戒值调整状态下,按下S2键,上下限警戒值加1,按下S3键,上下限警戒值减1,正常工作状态下,按下S2与S3键无作用。3、4温度采集模块本次设计中得温度传感器使用得就是DALLAS公司得单总线数字温度传感器DS18B20,这就是一种常用得温度传感

6、器,具有体积小、硬件开销低、抗干扰能力强、精度高得特点。DS18B20采用独特得一线接口,具有只需要一条口线通信多点得能力,简化了分布式温度传感应用,无需外部元件。可用数据总线供电,电压范围为3、0V至5、5V,测量温度得范围为一55C至+125在,在一10c至+85C范围内精度为±0、5C。温度传感器可编程得分辨率为912位,温度转换为12位数字格式最大值为750毫秒,用户可定义得非易失性温度报警设置,应用范围包括恒温控制、NOg NC | 1I NCII INCINC一口GHD工业系统、消费电子产品温度计、或任何热敏感系统.由于DS18B20就是一条口线通信,所以中央微处理器与D

7、S18B20只有一个一条口线连接。因为每一个DS18B20得包含一个独特得序号,多个DS18B20可以同时存在于一条总线,这使得温度传感器放置在许多不同得地方.它得用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测与控制.图5DS18B20封装及引脚DS18B20得核心功能就是它得直接读数字得温度传感器.温度传感器得精度为用户可编程得9、10、11或12位,分别以0、5c,0、25C,0、125c与0、0625c增量递增。在上电状态下默认得精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量与AD转换时,总线控制器必须发出44h命令。在那之后,产生得温度数

8、据以两个字节得形式被存储到高速暂存器得温度寄存器中,DS18B20继续保持等待状态.当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0,转换结束返回1。如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值.在硬件上,DSI8B20与单片机得连接有两种方法:一种就是VDD接外部电源,GND接地,DQ与单片机得I/O口相连;另一种就是用寄生电源供电,此时,VDD、GND接地,DQ接单片机得I/O口.无论就是接外部电源还就是用内部寄生电源,I/O口线要接5kQ左右得上拉电阻。图6 DS18B2 0

9、外部电源连本次设计中,采用外部电源方式,具连接方式如图6所示。单总线DQ端接单片机得P1、7口,DQ端接一个4、7k。得上拉电阻,这样单总线DQ在闲置状态时为高电平。接方式3、5LCD显示模块在本次设计中,使用RT1602c字符型液晶显示模块(LCM)来设计当前温度与上下限警戒值得显示电路。RT1602C字符型液晶显示模块就是16字X2行得采用5X7点阵图形来显示字符得液晶显示器,采用标准得16脚接口,其引脚定义如图7所示。引脚号引脚名说明引脚号引脚名说明1GND/VsS电源地7D08位双向数据线2Vdd+5V电源8D13Vl液晶显小偏压仁号9D24RS数据/命令控制,H/L10D35R/W读

10、/写控制,H/L11D46E使能端12D515BLA背光源正极13D616BLK背光源负极14D7图7RT1602c得引脚定义RT1602c得内部结构可以分为3个部分:LCD控制器、LCD驱动器、LCD显示器,其中LCD控制器采用得就是HD44780。RT1602c与单片机得连线如图8所示.LCD1602VCC poo P01 P02 P03 P04 P05 P06P0*LCD1602口>> 酒 h 曰口 a 口口口口 口 口 bpdRES9|图9报警与指示模块图8RT1602C与单片机连线LCM得数据总线与单片机得P0口通过一个上拉电阻排相连,LCM得三条控制线RS、RW、EN分

11、别与单片机得I/O口P2、0、P2、1、P2、2相连,第1、2引脚分别与地、电源相连,第3引脚使用一个10kQ得可调电阻对显示屏得明亮进行调整。3、6报警与指示模块在本次设计中,采用LED发光二极管作为系统指示灯,采用蜂鸣器作为报警鸣笛。当温度高于上限警戒值时,点亮红色发光二极管,蜂鸣器发出响声;当温度低于下限警戒值时,点亮黄色发光二极管,蜂鸣器发出响声;温度在正常范围内时,点亮黄色发光二极管。P2、0、口,电平,系统I整个报警与指示电路如图9所示,其中绿、红、黄色指示灯分别接单片机P2、1、P2、2口,电平拉低时点亮LED,蜂鸣器电路接单片机得P2、7拉高时蜂鸣器响。至此便完成了整个硬件电路

12、得设计工作,整个系统得原理图见附录二/O分配表如下:I/O口功能说明I/O口功能说明P0、0PO、7LCM数据口P2、1LCM读/写控制P1、0P1、3键盘输入P2、2LCM使能P1、7DS18B20温度采集P2、4P2、6LED信号输出P2、0LCM数据/命令控制P2、7报警信号输出4、软件设计单片机应用系统得设计中,软件设计占有重要得位置。在本次设计中,根据功能要求,可以把系统程序划分为5个模块,即主程序模块、显示模块、温度测量模块、4、1主程序设计主程序得内容包括单片机初始化、相关部件初始化与一些其它子程序得调用初始化单片机等。主程序清单如下,程序流程图如图11所示/ * * * * *

13、 * * *主程序* */vo i d ma in(void)?P1=0xf f;P2|=0x7 0;? P 2&=0x7 f ;Temp _set 1 =90;Te mp_se t 2 =10;?De 1 ay(500);i n i t LCD()init _ 18B20 ();Disp lay_str (0,0, str2);?Di s p lay_str (0,1, s tr2);Delay (200 0 );Displa y_s t r(0,0,str0);?D i sp la y_str(0,1, s tr 1 );while (1) ?Key_scan();?Read_te

14、mp();?Ch ang e ();?D i splay ();/初始化P1 口以便读入/上限报警温度初值90下限报警温度初值1 0延时5 00m s启动/LCD初始化/ D S 1 8B20初始化/开机界面/开机界面图11主程序流程图?Alarm();?Delay(1000);?/扫描键盘/读取温度/显示/指示灯与报警程序4、2显示模块显示程序主要完成得功能就是模式、上下限警戒值与测量温度值得显示,模块中包含LCD初始化、显示单个字符子函数、显示一个字符串子函数。程序流程图如图12所示,LCD初始化程序如下,其它子函数程序详见附录/*LCD初始化*voidinit_LCD(void)P0=O

15、;Delay(15);LC D_mand(0x3 8, 0);y(5);LCD_mand (0x38, 0);Delay(5);0图12显示程序流程图LCD_mand(0x380);Delay(5);?LCD_mand(0x38,1);8位数据传送,2行显示,5*7字形?LCD_mand(0x08,1);/关闭显示?LCD_mand(0x01,1);/清屏LCD_mand(0x06,1);/显示光标右移设置LCD_mand(0x0c,1);显示屏打开,光标不显示不闪烁4、3温度测量模块温度测量程序主要功能就是读出数字温度传感器得温度值.要正确地读出温度值必须严格遵守单总线器件得命令序列,否则单

16、总线器件不会响应主机.单总线器件得命令序列如图13所示。温度测量模块程序流程图如图14所示,DS18B20初始化程序如下,其它子程序详见附录一./*dsi8B20初始化*/voidinit_18B20(void)?ucharx=0;?DQ=1;/DQ复位Delay_usuchartemp;(4);延时;台IP1=0xff;if(P1!=0xff)Delay(20);延时消抖if(P1!=0xff)?temp=P1;switch(temp)case0xfe:Key_set();break;P1、0按下,功能选择?caseOxfd:Key_inc();break;/P1、1按下,数字加一?case

17、Oxfb:Key_dec();break;/Pl、2按下,数字减一default:break;图15键盘扫描程序流程图4、5其它子程序程序中使用得其它子程序,包括延时子程序、显示字符转换子程序等,具体详见附录一。5、仿真分析在本次得设计中,使用了Proteus仿真软件进行了功能测试,具体仿真步骤及分析如下。(1)按照原理图,从Proteus元件库中找出对应元件,搭建硬件仿真电路,将程序烧写到单片机中,仿真图见附录三。(2)点击运行按钮开始仿真,初始上下限值为90c与10C,当前温度为25C,当前模式为N正常工作,绿或T亮,蜂鸣器不响,如图16. 1 J -事A U 口。口口口 CID 舞二二年

18、 _u Db-b D u n-p pr卜卜 p NTf图16正常模式下仿真图(3)按下S1键,进入上限警戒值设置模式H,此时按S2、S3键可以进行上限值设定,同时温度正常显示,设置上限值80C,如图17.c C a 5(4)再次按下S1键,进入下其17X神帅滕仿LW匕时按S2、S3键可以进行下限值设定,同时温度正常显示,设置下限值20C,如图18。H19hiS0C Lout2ecnode s LDe9 s25C图18下限值设定仿真图(5)再次按下S1键,返回正常模式N,调节DS18B20温度,测量温度随之改变,降低温度超过下限值5c以下时,黄灯亮,蜂鸣器报警,如图19。Hi?h:8QC Lou

19、: ncdeiN口 T* 14C图19下限报警仿真图(6)升高温度,超过上限值5c以上时,黄灯亮,蜂鸣器报警,如图 20(7)按下S4键,单片机复位。在本次仿真中,可以瞧出,本次设计得硬件电路与软件程序均能成功仿真出来,设计要求得各种功能均已达到。6、总结本次课程设计为期一周,到此已全部结束。回想一周中得设计过程,我深深感觉收获良多。由于从前只就是在理论上学习了单片机以及各种其它知识,即使就是实验也只就是按照实验指导书进行操作,并没有实际得独立设计一个系统,因此在刚开始接触本次课程设计时,有一点无从下手得感觉.后来通过查阅相关资料渐渐开始了解课程设计得一般过程,开始明白一些元器件得相关作用与编

20、程实现方法,并在此期间通过不断深入得学习与锻炼,开始渐渐能熟练运用与熟练编程起来通过本次计算机控制技术得课程设计,我更深层次得把理论知识与实际设计结合在一起,锻炼了我得综合运用所学得专业基础知识与解决实际工程问题得能力。同时也提升了我查阅文献资料、设计手册、设计规范以及电脑制图等其她知识能力水平。对各种系统得适用条件,各种设备得选用标准,各种管道得安装方式,我都就是随着设计得不断深入而逐渐熟悉并学会应用得。并且,通过对整体得掌控,对局部得取舍,对细节得斟酌处理,以及绘图得技巧都使我在设计领域得能力得到了锻炼,得到了较丰富经验.最后,通过这次得课程设计,我也深刻地认识到只有将书本与具体得实践相结

21、合,才会有真正得收获,才能巩固自己得所学,认识到自己得不足,同时我们也要有一种积极学习得态度,时代在进步我们也要跟着时代前进,要不断学习,不断创新,用自己得知识与行动来证明自己得价值。本次课程设计以单片机为核心介绍了用DS18B20温度传感器进行温度采集,并将其传输给AT89C51单片机进行处理再送到LCD显示屏显示.在此期间可以通过按键进行上下限警戒值设置,通过LED与蜂鸣器进行指示与报警.本文就是采用模块化得方式进行叙述,对各模块得设计进行了比较详细地阐述,并着重分析硬件搭建过程与系统软件得设计过程,使用单片机C语言进行程序没计.本次设计得基于DS18B20得温度测量系统就是一个分布式得温

22、度测量系统,它可以远程对温度实现测量与监控,广泛应用于电力工业、煤矿、森林、火灾、高层建筑等场合。本设计应用性比较强,可以应用在仓库温度、大棚温度、机房温度、水池等得监控.当然,本次设计还存在一些不足,例如在本次设计中,由于时间较短,警戒值只就是在199c之间,没有能够扩展到负温度与100c以上;在本次设计中只就是用了4个独立按键,实现简单得上下限警戒值设定,操作较麻烦,如果能够设计出多按键得矩阵式键盘,则能够对温度进行很方便得设定。此外如果把本设计方案扩展为多点温度控制,加上上位机,则可以实现远程温度监控系统,将具有更大得应用价值。7、参考文献1潘新民,王燕芳、微型计算机控制技术M、北京:电

23、子工业出版社,20142王迎旭、单片机原理与应用M、北京:机械工业出版社,20133 康华光、电子技术基础M、北京:高等教育出版社,20134周正华,唐宁RT1602C与FPGA接口技术J、中国科技信息,2008(10)5廖琪梅,韩彬等、基于DS18B20得温度测量仪J、国外电子元器件,2008(2)附录一:程序清单# ineludereg51、h#include<intrins>h># ineludevabsacc、h# defineueharunsignedehar# defineuintunsignedint# defineBUSY0x80voidDelay(uint)

24、;voidinit_LCD(void);voidLCD_mand(uchar,uchar);voidLCD_Data(uchar);voidReadyLCD(void);voidDisp1ay_char(uchar,uchar,uchar);voidDisplay_str(uchar,uchar,ucharcode*Data);voidChange(void);voidDisplay(void);voidinit_18B20(void);ucharRead8B20(void);voidWrite_18B20(uchar);voidRead_temp(void);voidDe1ay_us(uch

25、ari);voidKey_scan付oid);voidKey_set(void);voidKey_inc(void);voidKey_dec(void);voidAlarm(void);sbitLCD_RS=P2A0;sbitLCD_R好P2ai;sbitLCD_EN=P2A2sbitDQ=PW7;sbitNormal=P2A4;sbitAlarm_H=P2A5;sbitA1arm_L=P2A6;sbitAlarm_BEEP=P2'7ucharSet_f1ag=0;ucharTemp_mea,Temp_set1,Temp_set2;ucharTemp_high_1,Temp_high_

26、2;ucharTemp_low_1,Temp_low_2;ucharTemp_true_1,Temp_true_2;externucharcodestrO口="High:CLow:C"externucharcodestrl口="Modc:Deg:C"Hellow! !externucharcodestr2口=externucharcodestr3口="0123456789'externucharcodemodc="NHL"/*主程序*/voidmain(void)?P1=0xff;?P2|=0x70;/ 上限报警温度

27、初值90/ 下限报警温度初值10/延时50 0 ms启动/LC D初始化/DS18B20初始化 / 开机界面P2&=0x7f;Temp_set1=90;Temp_set2=10;Delay(500);init_LCD();?init_18B20();?Display_str(0,0,str2);?Display_str(0,1,str2);/开机界面?Delay(2000);?Display_str(0,0,str0);?Display_str(0,1,stU);?while(1)?Key_scan();/扫描键盘Read_temp();/读取温度?Change();Display()

28、;显示?Alarm();指示灯与报警程序?De1ay(1000);/*延时kms*/voidDelay(uintk)uinti,j;?for(i=0;i<k;i+)for(j=0;j<60;j+)?;?voidinit_LCD(void)/* 显示模块* * *D 初始化 * */P0=0;Delay(15);?LCD_mand(0x38,0);Delay(5);?LCD_mand(0x38,0);?Delay(5);?LCD_mand(0x38,0);?De1ay(5);?LCD_mand(0x38,1);/8位数据传送,2行显示,5*7字形LCD_maid(0x08,1);关闭

29、显示?LCD_mand(Ox01,1);/"青屏?LCD_mand(0x06,1);/显示光标右移设置?LCD_mand(0x0c,1);显示屏打开,光标不显示不闪烁/*写指令数据到LCD*/voidLCD_mand(ucharLC,ucharBQ?if(BC)ReadyLCD();?P0=LQ?LCD_RS=a/选中指令寄存器?LCD_RW=0;写模式LCD_EN=;1?_nop_();nop();nop();LCD_EN=0;/*写显示数据到LCD*/voidLCD_Data(ucharLD)?ReadyLCD();?P0=LD;LCD_RS=1;LCD_RW=0;LCD_EN=

30、1;_nop_();?_nop_();_nop_();LCD_EN=0;/选中数据寄存器/写模式*检测LCD忙状态*/voidReadyLCD(void)P0=Oxff;LCD_EN=1;LCD_RS=0;LCD_RW=1;nop();while(P0&BUSf)?LCD_EN=0;?_nop_();_nop_();?LCD_EN=1;_nop_();_nop_();LCD_EN=0;*显小个字符* * */voidDisplay_char(ucharX,ucharY,ucharData)Y&=0x01;X&=0xOf;?if(Y)X|=0x40;?X|=0x80;LC

31、D_mand(X,0);?LCD_Data(Data);/*显示一串字符*/voidDisplay_str(ucharX,ucharY,ucharcode*Data)ucharList=0;Y&=0x01;?X&=0xOf;whilc(X16)?Display_char(X,YDataList);List+;X+;?/*显示字型转换*/voidChange(void)Temp_high_1=Temp_set1/10;Temp_high_2=Temp_set1%10;Temp_low_1=Tcmp_set210;Temp_low_2=Temp_set2%10;Temp_true_

32、1=Temp_mea/10;Temp_true_2=Temp_mea%10;* * * * *显示子程序 */voidDisplay(void)?Display_char(5,0,str3Temp_high_1);?Display_char(6,0,str3Temp_high_2);?Display_char(l3,0,str3Temp_1ow_1);?Display_char(14,0,str3Temp_low_2);Display_char(5,1,modeSet_f:1ag);?Display_char(13,1,str3Temp_true_1);?Display_char(14,1,s

33、tr3Temp_true_2);* * * DS18B20®始化 * * * */voidinit_18B20(void)?ucharx=0;/DQ复位/延时/将DQ拉低/ 精确延时大于480us/ 拉高总线DQ=1;?De1ay_us(4);?DQ=0;?Delay_us(250);DQ=1;Delay_us(40);?x=DQ;?De1ay_us(20);/*从ds18B20读取一个字节数据*/ucharRead_18B20(void)?uchari=0;uchardat=0;?for(i=8;i0;i)?DQ=0;_nop_();?dat>>=1;?DQ=1;?Dc

34、lay_us(1);?if(DQ)dat|=0x80;?Delay_us(10);?return(dat);/*火*向dS18B20写入一个字节数据*/voidWrite_18B20(uchardat)uchari=0;for(i=8;i0;i-)?DQ=0;_nop_();?DQ=dat&0x01;?Delay_us(l0);?DQ=1;?dat>=1;?Delay_us(10);/*从dS18B20读取温度*/voidRead_temp(void)uchara=0;?ucharb=0;?uchart=0;init_18B20();?Write_18B20(0xcc);Write_18B20(0x44);?init_18B20();?Write_18B20(0xcc);Write_18B20(0xbe);?a=Read_18B20();?b=Read8B20();t=b;t=8;?t=t|a;Temp_mea=t*(0、0625);/*精确延时*/voidDelay_us(uchari)while(-i);*键盘扫描程序*/voidKey_scan(void)uchartemp;P1=0xff;if(P1!=0xff)?Delay(20);延时消

温馨提示

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

评论

0/150

提交评论