版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机的智能温控系统设计与实现一:项目概况本项目采用51单片机作为主控芯片,采用DS18B20数字温度传感器进行温度采集,实现一定温度范围内的闭环控制。加热装置由继电器控制,蜂鸣器为报警装置。二:发展目的1、掌握DS18B20的特点2、掌握常用继电器的驱动方法和控制原理。3、掌握常用蜂鸣器的驱动方法和产生原理。4.掌握时序图,根据时序进行编程。5、掌握PROTEL99SE电路原理图的绘制方法。6.掌握KEIL UV2开发51单片机控制系统的方法三:功能要求1、实现温度采集与显示。2、实现温度闭环控制。3、控制圈可调节。4、从侧面将温度致到上位机并显示(扩展功能)。四:项目验收要求1、完
2、成系统电路原理图。2. 完成所需功能。3. 完成项目报告。4.制作答辩PPT。项目四、基于51单片机的智能温控系统设计与实现一、概述嵌入式技术、计算机技术和通信技术的不断发展和成熟。该控制系统以其直观、方便、准确、应用广泛等优点,越来越广泛地应用于工业过程、空调系统、智能楼宇等领域。恒温控制系统,控制对象为温度。温度控制广泛应用于日常生活和工作中,如温室、水池、发酵罐、电源等场所的温度控制。过去,温度控制都是手动完成的,没有引起足够的重视。事实上,在很多地方,都需要监测温度。预防事故。针对这一问题,本系统设计的目的是实现一个可以高精度连续调节温度的温度控制系统。用途广泛,功能强大,小巧美观,携
3、带方便。本项目的设计是实时监测和控制温度。设计的温度控制系统实现了基本的温度控制功能:受控温度范围可调,初始范围为25=T=35。如果测得的温度在25度到35度之间,既不发热也不报警;如果测得的温度低于25度,则既加热又报警;如果测得的温度大于35度,就会报警,不加热。数码管显示温度,温度精确到整数。2、方案设计采用单片机+单总线DS18B20的方案,其中单片机采用51兼容系列3.详细的硬件设计和原创介绍3.1 单片机最小系统在基于单片机的应用系统中,其核心是单片机最小系统,而单片机是最小系统的核心。为方便起见,使用的单片机型号为:STC89C52RC,资源为:8KB FLASH、512B S
4、RAM、4个8位I/O、2个TC、1个具有ISP和IAP功能的UART。是近几年流行的低端51单片机。时钟电路采用12.0M晶振,复位电路采用简单的RC复位电路。 R=10K,C=10uF,详细电路见整体原理图3.2 DS18B20简介DS18B20 是一款集成温度传感器,采用“1-wire”单线总线传输数据。信息通过单线接口致到 DS18B20 或从 DS18B20 致,因此从中央处理器到 DS18B20 只需连接一根线。它可以由外部电源或总线电源供电。在这种情况下,将 VDD 连接在一起作为数字电源。因为每个 DS18B20 都有一个唯一的序列号(硅序列号),所以多个 DS18B20 可以
5、存在于同一条单线总线上,这使得温度敏感器件可以放置在很多地方。此功能的应用包括 HVAC 环境控制、建筑物、设备或机械的温度监测。3.2 DS18B20与MCU接口4、整体示意图见附录1五、方案设计一、主程序流程图六、项目总结通过这个项目的设计和制作,我对一个简单的单片机控制系统的开发过程有了比较全面的了解。在这次实习中,我的体会如下:1.小心,做硬件,写程序,调试程序,都需要小心,否则很容易失败。2.基础,单片机也不是万能的,需要外部硬件电路的配合,这些电路并不复杂,但是要理解它的原理,还是要费一番功夫的。如基本的电子焊接、测量、元件识别等。3. 团队合作。由于时间限制,每个项目都有几个人一
6、起工作。这个时候特别需要团队合作意识。4. 写设计文档一直是写设计文档的负担反正真材实料出来了,有没有文档无所谓。现在需要在设计过程中随时记录一些东西,最后整理成设计文档。5.将一个大问题分成几个相对独立的部分,比较容易解决。最后,感谢我们的母校西京学院和盛虹科技XX公司为我们提供了这次实习机会。附录 1:电路原理图附录 2:代码:(1) 名称:温度控制系统/*- -名称:18B20温度传感器温控系统公司:盛宏科技编译:成全日期:2010.5内容:18B20单线温度检测应用示例程序,请将18B20插紧,然后数码管可以显示XXC,C表示摄氏度,如显示25C表示当前温度为25度-*/#includ
7、e /包含头文件,一般不需要改,头文件包含特殊功能寄存器的定义/#include#define uchar 无符号字符#define uint 无符号整数/* * */* 定义端口 */* * */sbit DQ=P27;/ds18b20端口sbit ledj=P11;/加热sbit ledb=P17;/报警sbit keyup=P30; /温度加sbit keydn=P31; /降温/* * */* 全局变量 */* * */uint tmax=30;uint tmin=26;单位温度;uchar shi,ge,temph,i,j,x;uchar 代码选项卡=0 x 3f,0 x06,0 x
8、5b,0 x 4f,0 x66,0 x6d,0 x7d,0 x07,0 x 7f,0 x 6f,0 x77,0 x 7c,0 x39,0 x5e,0 x79,0 x71; /7段数码管段码表共正/* * */* 函数声明 */* * */无符号整数 ReadWD(void);无效 csh(无效);无符号字符 ReadOneChar(void);无效 WriteOneChar(uchar dat);无效延迟(uint i);void xs(uchar shi,uchar ge);无效 sjcl();/* */* 主函数 */* */无效的主要()/无符号字符温度;而(1)如果(keyup=0)对
9、于(j=0;j20;j+)对于(i=0;i20;i+)shi=tmax/10;ge=tmax%10;xs(shi,ge);延迟(5000);时=10;ge=10;xs(shi,ge);如果(keyup=0)tmax+;而(keyup=0);如果(keydn=0)tmax;而(keydn=0);否则如果(keydn=0)对于(j=0;j20;j+)对于(i=0;i4;石=温度/10; /十的温度 ge=temph%10; /单位温度xs(shi,ge); /显示温度sjcl(); /数据处理/* * */* 显示函数 */* * */void xs(uchar shi, uchar ge)P2=
10、2;P0=tabshi;延迟(500);P2=3;P0=标签ge;延迟(500);P2=4;P0=0 xc6;延迟(500);/* * */* 数据处理函数 */* * */无效 sjcl()如果(温度tmax)ledj=1;ledb=0;否则如果(温度=tmin&temph0;i-)DQ = 0; / 给出脉冲信号数据=1;DQ = 1; / 给出脉冲信号如果(DQ=1)数据|=0 x80;延迟(5);返回(数据);/* * */* 写入一个字节 */* */无效 WriteOneChar(无符号字符数据)无符号字符 i=0;对于 (i=8;i0;i-)DQ = 0;DQ = dat&0 x
11、01;延迟(5);DQ = 1;数据=1;延迟(5);/* */* 读取数据 */* */无符号整数 ReadWD(void)无符号字符 a=0;无符号整数 b=0;无符号整数 t=0;csh();WriteOneChar(0 xCC); / 跳过读取序列号列号的操作WriteOneChar(0 x44); / 开始温度转换延迟(200);csh();WriteOneChar(0 xCC); /跳过读取序列号列号的操作WriteOneChar(0 xBE); /读取温度寄存器等(一共可以读取9个寄存器)前两个是温度a=ReadOneChar(); /低阶b=ReadOneChar(); /高位
12、b=8;t=a+b;返回(t);(2)名称:DS18B20温度计,温度值由单片机致到上位机并显示(扩展功能程序)/*- -名称:18B20温度传感器,温度显示在上位机公司:盛宏科技编译:成全日期:2010.8-*/#include /包含头文件,一般不需要改,头文件包含特殊功能寄存器的定义#include/#include#define uchar 无符号字符#define uint 无符号整数/* * */* 定义端口 */* * */sbit DQ=P27;/ds18b20端口/* * */* 全局变量 */* * */单位温度;uchar shi,ge,bh;uchar 代码选项卡=0
13、x 3f,0 x06,0 x5b,0 x 4f,0 x66,0 x6d,0 x7d,0 x07,0 x 7f,0 x 6f,0 x77,0 x 7c,0 x39,0 x5e,0 x79,0 x71; /7段数码管段码表共正/* * */* 函数声明 */* * */无符号整数 ReadWD(void);无效 csh(无效);无符号字符 ReadOneChar(void);无效 WriteOneChar(uchar dat);无效延迟(uint i);void xs(uchar shi,uchar ge);/* * */* 主功能 */* * */void init_(void) / 串口初始化
14、函数TMOD=0X20; /定时器1计时模式2/PCON=0X00;SCON=0X50; /串口模式1,内容接收TH1=0XFD; /波特率为9600TL1=0XFD;TR1=1;void comm(char *parr) / 串口致数据函数做SBUF=*parr+; /致数据而(!TI); /数据传输完成标志位1TI=0; /标志清0而(*帕尔); / 一直循环直到字符为 0main() /主函数无符号字符 TempH,buff2;在里面_();而(1)temp=ReadWD();/定时读取当前温度温度=温度4;shi=TempH%100/10; /十的温度 ge=温度%100%10; /单
15、位温度 bh=0 x39; /显示C符号xs(shi,ge);sprintf(buff,%d,temp4); /将整数温度转换为字符通讯(buff); /将字符温度从串口致到上位机 void xs(uchar shi, uchar ge)P2=1;P0=tabshi;延迟(500);P2=2;P0=0;P0=标签ge;延迟(500);P0=0;P2=3;P0=bh;延迟(500);P0=0;/* * */* 延迟函数 */* * */void delay(unsigned int i)/延时函数当我 - );/* * */* 初始化 */* * */无效 csh(无效)无符号字符 x=0;DQ
16、 = 1; /DQ复位延迟(8); /稍微延迟DQ = 0; /MCU拉低DQ延迟(80); /精确延迟大于480usDQ = 1; / 将总线拉高延迟(10);x=DQ; /稍微延迟后,如果x=0,则初始化成功 x=1,初始化失败延迟(5);/* * */* 读取一个字节 */* * */无符号字符 ReadOneChar(void)无符号字符 i=0;无符号字符 dat = 0;对于 (i=8;i0;i-)DQ = 0; / 给出脉冲信号数据=1;DQ = 1; / 给出脉冲信号如果(DQ)数据|=0 x80;延迟(5);返回(数据);/* */* 写一个字节 */* */无效 WriteOneChar(无符号字符数据)无符号字符 i=0;对于 (i=8;i0;i-)DQ = 0;DQ = dat&0 x01;延迟(5);DQ = 1;数据=1;延迟(5);/* * */* 读取温度 */* * */无符号整数 ReadWD(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春游出行活动策划书(3篇)
- 租赁合同附带担保抵押合同(3篇)
- 高中体育教学反思【15篇】
- 入职培训心得(12篇)
- 天津市2024-2025学年高一上学期11月期中考试 化学试题(无答案)
- 河南省通许县2024-2025学年八年级上学期期中考试道德与法治试卷
- 2024-2025学年浙江省金兰教育合作组织高一上学期期中考试数学试题(含答案)
- 绿色环保安全生产协议
- 调研报告:智障儿童家庭教育问题现状研究及建议
- 证券交易指定银行协议
- 高通量测序技术简介
- 第七节-感染性心内膜炎病人的护理课件
- 塑料吸料机塑胶吸料机吸粉机安全操作及保养规程
- 23版概论第八章 科学发展观
- 矿产资源“三率”指标要求+第14部分:饰面石材和建筑用石料矿产
- 支气管扩张伴咯血护理教学课件
- 维保单位变更申请表格
- 医院陪护中心运营方案
- 大学英语四级真题阅读练习10套(附参考答案)
- 路基冲击压实施工方案(DOC)
- 国家慢性肾病临床医学研究中心
评论
0/150
提交评论