ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:74.59KB ,
资源ID:7379919      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7379919.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的温控系统的技术报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的温控系统的技术报告.docx

1、基于单片机的温控系统的技术报告基于单片机AT89C51温控系统的技术报告 学院:自动化学院 参赛成员:李瑞江(学号:08200323)陈小龙(学号:08200316)冉景海(学号:08200318)基于单片机AT89C51温控系统一、 原理本设计以AT89C51单片机为控制核心设计了温度实时测量及控制系统。单片机AT89C51 能够根据温度传感器DS18B20 所采集的温度数据来控制加热器或致冷器的启停,从而把温度控制在设定的范围之内。在温控开关被激活的情况下,当温度低于设定的下限时,单片机启动加热器加热,同时点亮绿色发光二极管,当温度高于设定的上限时,单片机启动致冷器降温,同时点亮红色发光二

2、极管。因加热和制冷工作原理相同,本文仅进行高温制冷设计。所有温度数据均通过7位LED数码管显示出来。二、 系统设计1、 方案设计感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。单片机将检测到的温度信息与设定值进行比较,如果检测值高于设定值,则启动制冷系统,降低环境温度;同理,如果检测值低于设定值,则启动加热系统,提高环境温度,达到控制温度的目的。该单片机温度控制系统是以AT89C51单片机为控制核心,用温度传感器DS18B20进行温度采集。整个系统硬件部分包括温度检测系统、A/D转换、单片机、I/O设备、控制执行系统等。单片机温

3、控系统的控制原理如下图所示:图一 单片机温控系统的控制原理2、 硬件电路设计设计中,使用AT89C51的P1.0管脚接收由温度传感器送出的数字温度信号;管脚P0.0P0.7用于输出温度各位上的数字,连接LED数码管,作为显示内容;P2.0P2.3管脚作为LED数码管轮流显示的控制信号的输出端;P3.6接绿灯(发出绿光的二极管),P3.5接红灯(发出红光的二极管);单片机的外围设备包括:时钟振荡器、DS18B20数字温度传感器、温度显示设备和高温制冷电机等。具体的硬件电路连接如下图:(原理图)3、 软件程序设计主程序调用了2个子程序,分别是LCD 显示程序、温度采集程序。LCD 显示程序,用于温

4、度等数据的实时显示;温度采集程序负责把DS18B20所采集的现场温度读入到指定的数组中。主程序的流程图如下:程序见附录:三、 PROTEUS仿真及结果照硬件连接图所示电路原理图,在Proteus 里面建立元器件连接关系。根据设计功能要求在Keil Vision3 环境下编写C 语言程序,并编译连接生成十六进制的hex 文件,把此文件加载到单片机,就可以进行Proteus 仿真了。仿真结果如下图所示:(仿真结果)程序设计中,我们定下的温度控制范围是099。如仿真结果所示,当环境温度高于100,即为100时,数码管显示00.0C,为101时,数码管显示01.0C。此时,P3.0管脚输出高电压,经过

5、光电隔离设备,继电器中有电流流过,制冷电机工作。当环境温度降低并低于于30时,蜂鸣器开始以慢“滴”声快报警,并且伴随红色发光二极管闪烁;当环境温度升高并高于45时,蜂鸣器开始以相同慢“滴”声报警并且伴随绿色发光二极管闪烁;当环境温度处于3045之间时,蜂鸣器不报警且发光二极管不闪烁。在硬件设计过程中,由于proteus仿真图中在数码管的位置没有接三极管,显示的效果较好,但在实际的电路中显示的数字较暗。附录:#include #include#include #include#define uchar unsigned char#define uint unsigned int;uint sha

6、ngxian=35,xiaxian=30;uchar k1=0;uint TempH,TempL;sbit RED_LED=P36;sbit GREEN_LED=P35;sbit SPEAK=P37;sbit chaidan=P12;sbit jia=P31;sbit jian=P32;sbit DQ=P10;/ds18b20 端口sfr dataled=0x80;/显示数据端口uint temp;uchar flag_get,count,num,minute,second;uchar code tab=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,

7、0x90; uchar str6;void delay1(uchar MS);unsigned int ReadTemperature(void);void Init_DS18B20(void);unsigned char ReadOneChar(void);void WriteOneChar(unsigned char dat);void delay(unsigned int i);void process_alarm();void presskey();void chengxux();void chengxus();unsigned long LedOut5,LedNumVal;void

8、UARTinit(void) SCON = 0x50; TMOD |= 0x20; TH1 = 0xFD; TR1 = 1; TI = 1;zhuchengxu()TMOD|=0x01;/定时器设置TH0=0xef;TL0=0xf0;IE=0x82;TR0=1;UARTinit();P2=0x00; /赋初值count=0; while(1) str5=0xc6; /显示C符号 str2=tab(TempH%100)/10; /十位温度 str3=tab(TempH%100)%10&0x7f; /个位温度,带小数点 str4=tabTempL; process_alarm(); if(flag

9、_get=1) /定时读取当前温度 temp=ReadTemperature(); TempH=temp4; TempL=temp&0x0F; TempL=TempL*6/10;/小数近似处理 printf(%d.%dn,TempH,TempL); flag_get=0; void tim(void) interrupt 1 using 1/中断,用于数码管扫描和温度检测间隔 TH0=0xef;/定时器重装值 TL0=0xf0; num+; if (num=200) num=0; flag_get=1;/标志位有效 second+; if(second=60) second=0; minute

10、+; count+; if(count=3) P2=0x01; dataled=str2; if(count=4) P2=0x02; dataled=str3; if(count=5) P2=0x04; dataled=str4; if(count=6) P2=0x08; dataled=str5; count=0; void presskey() if(chaidan=0) delay(110); if(chaidan=0) k1+; while(!chaidan); void delay(unsigned int i)/延时函数 while(i-);void Init_DS18B20(vo

11、id) 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

12、) 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 ReadTemperature(void) unsigned char a=0; unsigned int b=0; unsigned int t=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列

13、号的操作 WriteOneChar(0x44); / 启动温度转换 delay(200); Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); /低位 b=ReadOneChar(); /高位 b=8; t=a+b; return(t);void process_alarm() if(TempH=5) RED_LED=0; SPEAK=0; delay(11000); RED_LED=1; SPEAK=1; delay(1

14、1000); else if(TempH=shangxian&TempH=40) xiaxian=0; else if(jian=0) delay(1100); if(jian=0) xiaxian-; while(jian); if(xiaxian=0) xiaxian=40; shi=t/1000; ge=t%1000/100; xiaoshu1=t%100/10; xiaoshu2=t%10; P2=0x01; dataled=tabshi; delay(250); P2=0x02; dataled=tabge; delay(250); P2=0x04; dataled=tabxiaoshu1; delay(250); P2=0x08; dataled=tabxiaoshu2; delay(250); void chengxus() xiaxian=shangxian; chengxux();void main() while(1) presskey(); switch(k1) case 0:zhuchengxu();break; case 1:chengxux();break; case 2:chengxus();break; case 3:zhuchengxu();break; default:break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1