基于单片机智能温控系统的设计及实现.doc_第1页
基于单片机智能温控系统的设计及实现.doc_第2页
基于单片机智能温控系统的设计及实现.doc_第3页
基于单片机智能温控系统的设计及实现.doc_第4页
基于单片机智能温控系统的设计及实现.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计 报 告设计名称 基于单片机的智能温控系统的设计与实现 一、概述随着嵌入式技术、计算机技术、通信技术的不断发展与成熟。控制系统以其直观、方便、准确、适用广泛而被越来越广泛地应用于工业过程、空调系统、智能楼宇等。恒温控制系统,控制对象是温度。温度控制在日常生活及工作领域应用的相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制,而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。本项目设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:被控温度范围可以调整,初始范围25=T=35。如果被测温度在25度到35度之间,则既不加热,又不报警;如果被测温度小于25度,则既加热,又报警;如果被测温度大于35度,则报警,不加热。 数码管显示温度,温度精确到整数。二、方案设计采用单片机+单总线DS18B20的方案,其中单片机采用51兼容系列 三、详细硬件设计及原件介绍3.1 单片机最小系统在基于单片机的应用系统中,其核心是单片机的最小系统,而单片机又是最小系统的核心,为了方便起见,采用的单片机型号是:STC89C52RC,内部资源有:8KB FLASH ,512B SRAM,4个8位I/O,2个TC,1个UART,带ISP和IAP功能。是近年来流行的低端51单片机。时钟电路采用12.0M晶体,复位电路采用简单的RC复位电路。R=10K,C=10uF,详细电路见总体原理图3.2 DS18B20简介DS18B20是采用“1-wire”一线总线传输数据的集成温度传感器,信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线。可采用外部电源供电,也可采用总线供电方式,此时,把VDD连接在一起作为数字电源。因为每一个DS18B20有唯一的系列号(silicon serial number),因此多个DS18B20可以存在于同一条单线总线上,这允许在许多地方放置温度灵敏器件。此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测。3.2 DS18B20与单片机接口四、总体原理图见附录1五、程序设计1、主程序流程图六、项目总结通过对该项目的设计制作,我对简单的单片机控制系统的开发过程有了比较全面的理解,在这次实习中,我的体会有:1.细心,制作硬件和编写程序,调试程序,都需要细心,否则很容易失败。2.基础,单片机不是万能的,它需要外部硬件电路的配合,这些电路不复杂,但是要弄明白它的原理,还是要下一番功夫的。像基础的电子焊接,测量,元件的识别等都是。3.团队合作,由于时间的关系,每个项目由几个人合作,这时就特别需要团队合作意识。4.撰写设计文档,对写设计文档总感到是一种累赘反正实物已经出来了,有没有文档关系不大。现在需要在设计过程中随时记录一些东西,最后整理成设计文档。5.将一个大的问题分割成几个相对独立的部分,更容易解决。附录1:电路原理图附录2:代码:(1)名称:温控系统#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义/#include#define uchar unsigned char#define uint unsigned int/*/* 定义端口 */*/sbit DQ=P27;/ds18b20 端口sbit ledj=P11;/加热sbit ledb=P17;/报警sbit keyup=P30; /温度加sbit keydn=P31; /温度减/*/* 全局变量 */*/uint tmax=30;uint tmin=26;uint temp;uchar shi,ge,temph,i,j,x;uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /7段数码管段码表共阳/*/* 函数声明 */*/unsigned int ReadWD(void);void csh(void);unsigned char ReadOneChar(void);void WriteOneChar(uchar dat);void delay(uint i);void xs(uchar shi,uchar ge);void sjcl();/*/* 主函数 */*/void main()/unsigned char temph;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);else if(keydn=0)for(j=0;j20;j+)for(i=0;i4;shi=temph/10; /十位温度 ge=temph%10; /个位温度xs(shi,ge); /显示温度 sjcl(); /数据处理/*/* 显示函数 */*/void xs(uchar shi,uchar ge)P2=2; P0=tabshi;delay(500); P2=3; P0=tabge;delay(500);P2=4; P0=0xc6;delay(500);/*/* 数据处理函数 */*/void sjcl() if(temphtmax)ledj=1;ledb=0;else if(temph=tmin&temph0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ=1) dat|=0x80; delay(5); return(dat);/*/* 写一个字节 */*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8;i0;i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; delay(5);/*/* 读取温度 */*/unsigned int ReadWD(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;csh();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay(200);csh();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b=8;t=a+b;return(t);(2)名称:DS18B20温度计,温度值由单片机发给上位机并显示(扩展功能程序)/*- 名称:18B20温度传感器,温度在上位机显示 公司:陕西圣弘科技有限公司 编写:赵进全 日期:2010.8-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include/#include#define uchar unsigned char#define uint unsigned int/*/* 定义端口 */*/sbit DQ=P27;/ds18b20 端口/*/* 全局变量 */*/uint temp;uchar shi,ge,bh;uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /7段数码管段码表共阳/*/* 函数声明 */*/unsigned int ReadWD(void);void csh(void);unsigned char ReadOneChar(void);void WriteOneChar(uchar dat);void delay(uint i);void xs(uchar shi,uchar ge);/*/* 主函数 */*/void init_com(void) /串口初始化函数TMOD=0X20; /定时器1定时方式2/PCON=0X00; SCON=0X50; /串口方式1,允许接收TH1=0XFD; /波特率为9600TL1=0XFD;TR1=1; void comm(char *parr) /串口发送数据函数doSBUF=*parr+; /发送数据while(!TI); /数据发送完标志位1TI=0; /标志清0while(*parr); /保持循环直到字符为0main() /主函数unsigned char TempH,buff2;init_com();while(1) temp=ReadWD();/定时读取当前温度TempH=temp4;shi=TempH%100/10; /十位温度 ge=TempH%100%10; /个位温度 bh=0x39; /显示C符号xs(shi,ge); sprintf(buff,%d,temp4); /将整型温度转换成字符型comm(buff); /将字符型温度由串口发送到上位机 void xs(uchar shi,uchar ge)P2=1; P0=tabshi;delay(500); P2=2;P0=0; P0=tabge;delay(500);P0=0;P2=3; P0=bh;delay(500);P0=0;/*/* 延时函数 */*/void delay(unsigned int i)/延时函数 while(i-);/*/* 初始化 */*/void csh(void) unsigned char x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时大于 480us DQ = 1; /拉高总线 delay(10); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);/*/* 读一个字节 */*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(5); return(dat);/*/* 写一个字节 */*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8;i0;i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; delay(5);/*/* 读取温度 */*/unsigned int ReadWD(void)unsigned char a=0;unsigned

温馨提示

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

最新文档

评论

0/150

提交评论