您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机的智能温控系统的设计与实现
专业资料参考word格式整理课程设计报告设计名称基于单片机的智能温控系统的设计与实现学校陕西电子科技职业学院学院电子工程学院学生姓名王一飞班级1507指导教师聂弘颖时间2017年10月23日专业资料参考word格式整理一、概述随着嵌入式技术、计算机技术、通信技术的不断发展与成熟。控制系统以其直观、方便、准确、适用广泛而被越来越广泛地应用于工业过程、空调系统、智能楼宇等。恒温控制系统,控制对象是温度。温度控制在日常生活及工作领域应用的相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制,而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。本项目设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:被控温度范围可以调整,初始范围25=T=35。如果被测温度在25度到35度之间,则既不加热,又不报警;如果被测温度小于25度,则既加热,又报警;如果被测温度大于35度,则报警,不加热。数码管显示温度,温度精确到整数。二、方案设计采用单片机+单总线DS18B20的方案,其中单片机采用51兼容系列三、详细硬件设计及原件介绍3.1单片机最小系统在基于单片机的应用系统中,其核心是单片机的最小系统,而单片机又是最小系统的核心,为了方便起见,采用的单片机型号是:STC89C52RC,内部资源有:8KBFLASH,512BSRAM,4个8位I/O,2个TC,1个UART,带ISP和IAP功能。是近年来流行的低端51单片机。时钟电路采用12.0M晶体,复位电路采用简单的RC复位电路。R=10K,C=10uF,详细电路见总体原理图3.2DS18B20简介DS18B20是采用“1-wire”一线总线传输数据的集成温度传感器,信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线。可采用外部电源供电,也可采用总线供电方式,此时,把VDD连接在一起作为数字电源。因为每一个DS18B20有唯一的系列号(siliconserialnumber),因此多个DS18B20可以存在于同一条单线总线上,这允许在许多地方放置温度灵敏器件。此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测。3.2DS18B20与单片机接口专业资料参考word格式整理四、总体原理图见附录1五、程序设计1、主程序流程图专业资料参考word格式整理六、项目总结通过对该项目的设计制作,我对简单的单片机控制系统的开发过程有了比较全面的理解,在这次实习中,我的体会有:1.细心,制作硬件和编写程序,调试程序,都需要细心,否则很容易失败。2.基础,单片机不是万能的,它需要外部硬件电路的配合,这些电路不复杂,但是要弄明白它的原理,还是要下一番功夫的。像基础的电子焊接,测量,元件的识别等都是。3.团队合作,由于时间的关系,每个项目由几个人合作,这时就特别需要团队合作意识。4.撰写设计文档,对写设计文档总感到是一种累赘——反正实物已经出来了,有没有文档关系不大。现在需要在设计过程中随时记录一些东西,最后整理成设计文档。5.将一个大的问题分割成几个相对独立的部分,更容易解决。专业资料参考word格式整理附录1:电路原理图专业资料参考word格式整理附录2:代码:(1)名称:温控系统#includereg52.h//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义//#includeINTRINS.H#defineucharunsignedchar#defineuintunsignedint/******************************************************************//*定义端口*//******************************************************************/sbitDQ=P2^7;//ds18b20端口sbitledj=P1^1;//加热sbitledb=P1^7;//报警sbitkeyup=P3^0;//温度加sbitkeydn=P3^1;//温度减/******************************************************************//*全局变量*//******************************************************************/uinttmax=30;uinttmin=26;uinttemp;ucharshi,ge,temph,i,j,x;ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//7段数码管段码表共阳/******************************************************************//*函数声明*//******************************************************************/unsignedintReadWD(void);voidcsh(void);unsignedcharReadOneChar(void);voidWriteOneChar(uchardat);voiddelay(uinti);voidxs(ucharshi,ucharge);voidsjcl();/******************************************************************//*主函数*//******************************************************************/voidmain(){//unsignedchartemph;专业资料参考word格式整理while(1){if(keyup==0){for(j=0;j20;j++){for(i=0;i20;i++){shi=tmax/10;ge=tmax%10;xs(shi,ge);}delay(5000);shi=10;ge=10;xs(shi,ge);if(keyup==0){tmax++;while(keyup==0);}if(keydn==0){tmax--;while(keydn==0);}}}elseif(keydn==0){for(j=0;j20;j++){for(i=0;i20;i++){shi=tmin/10;ge=tmin%10;xs(shi,ge);}delay(5000);shi=10;ge=10;xs(shi,ge);if(keyup==0)专业资料参考word格式整理{tmin++;while(keyup==0);}if(keydn==0){tmin--;while(keydn==0);}}}else{if(x==0){temp=ReadWD();//定时读取当前温度temph=temp4;shi=temph/10;//十位温度ge=temph%10;//个位温度}}xs(shi,ge);//显示温度sjcl();//数据处理}}/******************************************************************//*显示函数*//******************************************************************/voidxs(ucharshi,ucharge){P2=2;P0=tab[shi];delay(500);P2=3;P0=tab[ge];delay(500);P2=4;P0=0xc6;delay(500);}/******************************************************************//*数据处理函数*//******************************************************************/专业资料参考word格式整理voidsjcl(){if(temphtmax){ledj=1;ledb=0;}elseif(temph=tmin&&temph=tmax){ledj=1;ledb=1;}else{ledj=0;ledb=0;}}/******************************************************************//*延时函数*//******************************************************************/voiddelay(unsignedinti)//延时函数{while(i--);}/******************************************************************//*初始化*//******************************************************************/voidcsh(void){//unsignedcharx=0;DQ=1;//DQ复位delay(8);//稍做延时DQ=0;//单片机将DQ拉低delay(80);//精确延时大于480usDQ=1;//拉高总线delay(10);x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败delay(5);}/******************************************************************//*读一个字节*//******************************************************************/unsignedcharReadOneChar(void)专业资料参考word格式整理{unsignedchari=0;unsignedchardat=0;for(i=8;i0;i--){DQ=0;//给脉冲信号dat=1;DQ=1;//给脉冲信号if(DQ==1)dat|=0x80;delay(5);}return(dat);}/******************************************************************//*写一个字节*//******************************************************************/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i0;i--){DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat=1;}delay(5);}/******************************************************************//*读取温度*//******************************************************************/unsignedintReadWD(void){unsignedchara=0;unsignedintb=0;unsignedintt=0;csh();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44)
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:基于单片机的智能温控系统的设计与实现
链接地址:https://www.777doc.com/doc-7228942 .html