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

下载本文档

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

文档简介

1、基于单片机的远程温度控制系统的设计【摘要】本文主要介绍利用单总线数字温度传感器 DS18B20及单片机实现温度测量与控制功能的一种智能温度控制系统的设计。系统的核心部件是 AT89C51单片机和DS18B20温度传感器。本系统可实现对环境温度信号的采集并把采集到的信号送给单片机进行处理,并完成相应的智能控制,同时将所测得环境温度在显示器中显示的功能。【关键词】单片机 DS18B20温度传感器 温度采集   智能控制  【正文】温度控制技术是为了使人们可以在远离设备的地方及时了解设备的温度状态并对其温度进行控制而产生的一种控制技术。在现实的科研、生产以及教

2、学实验过程中常需对温度进行检测和监控。一般的温度控制器既无法在这样的空间中使用, 也无法达到所要求的准确度和稳定度。为此,我们设计了采用 AT89C51 单片机进行控制的高精度远程温度控制系统。 一.DS18B20 传感器的介绍1.引言  DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU

3、只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。2.DS18B20的内部结构  DS18B20内部结构如图1所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入输出端;GND为电源地; VDD为外接供电电源输入端(在寄生电源接线方式时接地,见图4)。  ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20

4、的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 图1DS18B20的内部结构  图2DS18B20的管脚排列  图3DS18B20的工作时序图   (a) 初始化时序 (b)写时序(c)读时序      DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表

5、达,其中S为符号位。例如125的数字输出为07D0H,25.0625的数字输出为0191H,25.0625的数字输出为FF6FH,55的数字输出为FC90H。 23 22 21 20 21 22 23 24温度值低字节MSBLSB S S S S S 22 25 24 温度值高字节  高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。其中配置寄存器的格式如下: 0 R1 R0 1 1 1 1 1 MSBLSB   R1、R0决定温度转换的精度位数:R1R0=“00”,9位精度,最大

6、转换时间为93.75ms;R1R0=“01”,10位精度,最大转换时间为187.5ms;R1R0=“10”,11位精度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;未编程时默认为12位精度。高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。3DS18B20的工作时序DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工作时序包

7、括初始化时序、写时序和读时序,如图3(a)(b)(c)所示。二、89C51单片机的介绍  89C51单片机主要特性:·4K字节可编程闪烁存储器 · 寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路      

8、    89c51引脚图:                                           三、系统的实现及工作原理众所周知,温度

9、是科研、生产中不可缺少的因素,所以本设计将其作为重点数据来处理,而目前市场上普遍存在的温度检测仪器大都有温度信息传递不及时,精度达不到要求等缺点,不利于控制者根据温度变化及时做出决定。为此,本设计开发了一种实时性高、精度高的远程温度测控系统。1系统方案此系统由温度测量系统、单片机系统、输出控制系统组成。工作时, 温度由集成温度传感器DS18B20 采样, 得到的是单片机能接受的数字信号, 此信号经单片机计算与温度的给定值比较得到温度的偏差, 通过控制器运算得到控制量, 此控制量经固态继电器控制加在被控对象上的电阻丝的电压的通断时间, 以达到控温目的。   温度测量系统系统采

10、用美国DALLAS公司生产的单总线数字式温度传感器DS18B20, 由于具有结构简单, 不需要外接电路, 可用一根I/O 数据线既供电又传输数据, 并且具有体积小, 分辨率高, 转换快等优点, 被广泛用于测量和控制温度的地方。DS18B20 性能特点:(1) 独特的单线接口方式。DS18B20 在I/O 处理器连接时,仅需要一个I/O 口即可实现微处理器同DS18B20 的双向通讯。(2) 测温范围:-55+125,在-10+ 85时,其精度为0.5。(3) 分辨率:DS18B20 的分辨率由912 位(包括1 位符号位) 数据在线编程决定。(4) 温度转换时间:DS18B20 的转换时间与设

11、定的分辨率有关,当设定为9 位时, 最大转换时间为93.75ms;10 位时,为187.5m s;11 位时, 为375ms; 12 位时, 为750ms。在使用过程中,测得12 位时,一般为5 7.5ms。   单片机系统系统硬件采用AT89C51单片机芯片,外接4KB程序存储器2732(扩展为ROM)和8KB数据存储器6264(扩展为RAM),通过段译码驱动器和位译码驱动器驱动LED显示器以实现被测温度的显示,若所测温度超出设定范围,单片机就会通过8255A发出指令,以达到控制温度的目的。上图:温度控制系统的总电路连线图    输出控制系统

12、考虑到控制的实时性,本系统采用了通过控制电阻丝的通断来调控温度的方法。为了控制电阻丝上电压的通断,我们选用了直流固态继电器(SSR)。它是一种全部由固态电子元件组成的新型无触点开关器件。当PC4 输出高电平时,固态继电器控制输出端导通,也就使得电阻丝导通加热,温度升高;当PC4 输出低电平时,固态继电器输出端截止,关闭加热。    单片机程序设计 #include #ifndef TRUE #define TRUE 0 #define FALSE 1 #endif sbit warmer=P14;/sbit led_run=P10;/sbit k_pow

13、er=P33; sbit ge=P27;sbit shi=P26;sbit DQ =P22;   /定义通信端口/系统宏定义 #define XTAL 12000000 /系统晶振 #define TIME_BASE 10 /时间基准, 以1ms为单位 #define WDT_TIME 50 /看门狗复位时间(50*TIME_BASE) /全局变量声明 int g_WDTCounter; /10ms系统时钟基准 unsigned int g_wTimerIniValue; /定时器初值 /内部函数声明 char TimerIni(char); /初始化定时器函数 void

14、FeedDog(void); /软件看门狗 /外部函数声明 extern void RESET(void); /主循环 void main(void) /初始化硬件资源 /初始化定时器,初值计算 g_wTimerIniValue = 65535 - (XTAL/12)/1000)*TIME_BASE + 1; /初值=65536 - 定时时间长度 TimerIni(0); /将定时器0初始化成10ms定时器 /初始化全局变量 g_WDTCounten, 定时器序号 char TimerIni(char n) if(n = 0) /使用定时器0 TMOD = 0X01; /定时器0工作方式1(1

15、6位定时器) TH0 = g_wTimerIniValue >> 8; /定时器赋初始值 TL0 = g_wTimerIniValue; ET0 = 1; /允许定时器中断 TR0 = 1; /启动计数 else if(n = 1) /使用定时器1 TMOD = 0x10; /工作方式1 TH1 = g_wTimerIniValue >> 8; /定时器赋初值 TL1 = g_wTimerIniValue; ET1 = 1; /允许定时器中断 TR1 = 1; /启动计数 else return FALSE; return TRUE; /喂软件看门狗 void Feed

16、Dog(void) g_WDTCounter = 0; /清软件看门狗计数 /定时器0中断服务程序 /interrupt关键字后的数字指向中断向量号 /using关键字后的数字表示该中断函数使用第几组寄存器 void Timer0Int(void) interrupt 1 using 1 TL0 += g_wTimerIniValue; TH0 += g_wTimerIniValue>>8; /恢复定时器初值 g_WDTCounter +; /软件看门狗复位计数器累加 if(g_WDTCounter >= WDT_TIME) RESET(); /复位  /延时函数u

17、nsigned char tab= 0x3f,0x30,0x6d,0x79,0x72,0x5b,0x5f,0x31,0x7f,0x7b,0x40;/0, 1, 2 ,3, 4, 5, 6, 7, 8, 9 void delay(unsigned int i)     while(i-);/初始化函数Init_DS18B20(void) unsigned char x=0; DQ = 1;    /DQ复位 delay(8);  /稍做延时 DQ = 0;  

18、;  /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1;    /拉高总线 delay(14); x=DQ;  /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(20);/读一个字节ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-)   DQ = 0; / 给脉冲信号  dat>>=1; 

19、 DQ = 1; / 给脉冲信号  if(DQ)   dat|=0x80;  delay(4);  return(dat);/写一个字节WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-)   DQ = 0;  DQ = dat&0x01;  delay(5);  DQ = 1;  dat>>=1; delay(4);/读取兼控制温度R

20、eadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();   /读取温度值低位b=ReadOneChar(); 

21、;  /读取温度值高位a=a>>4;            /低位右移4位,舍弃小数部分t=b<<4;            /高位左移4位,舍弃符号位t=t|a; if(t<=15)         /控制温度范围是15°C到40

22、6;C    warmer=1; else if(t>=40)    warmer=0;else()  return(t);void display_tempmain(unsigned chari)             /主程序温度显示函数  P0=tabi/10;  shi=0;  ge=1;  delay(1000);  P

23、0=tabi%10;  shi=1;  ge=0;  void main(void)unsigned int temp;while(1)                         /主循环   temp=ReadTemperature();     display_tempmain(temp);     【结束语】此次实践中我们学到了很多,也收获了很多。我们综合了现下通用的几种温度控制系统的特点,并以此为起点,开发出了一种精度高,控制性强,造价适中的远程温度控制系统。两个月的时间里,我们付出了汗水,收获了知识。   当然,遇到问题是免不了的,刚刚结束大一课程的我们还没有接触多少专业知识,很多涉及到传感器、单片机的内容都不懂,例如,温度传感器DS18B20和89C51单片机之间怎么连接才能实现温度数据传输的功能,单片机内存不够如何解决通过查

温馨提示

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

评论

0/150

提交评论