电热杯温控系统设计_第1页
电热杯温控系统设计_第2页
电热杯温控系统设计_第3页
电热杯温控系统设计_第4页
电热杯温控系统设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

电热杯控温系统设计一、系统功能1、能够显示温度整数部分;2、能够实现温度上下限报警,并且实现上下限可调,可显示;3、当温度大于等于上限值时,启动报警,并且切断电热杯加热回路;当温度小于等于下限值时,启动报警,并且闭合电热杯加热回路。二、传感器DS18B20简介1 DS18B20的概述1.1, DSl8B20的外部管脚及特点 DS18B20可编程温度传感器有3个管脚。GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3.05.5 V。本设计使用外部电源供电。 主要特点有: 1. 用户可自设定报警上下限温度值。 2. 不需要外部组件,能测量55+125 范围内的温度。 3. 通过编程可实现9l2位的数字读数方式,可在至多750 ms内将温度转换成12 位的数字,测温分辨率可达0.0625 。 5. 独特的单总线接口方式,与微处理器连接时仅需要一条线即可实现与微处理器双向通讯。 1.2 DS18B20的内部结构 DS18B20内部功能模块如图2所示,主要由4部分组成:64位光刻R0M、温度传感器、非易失性的温度报警触发器TH和TL、配置寄存器。R0M 中的64位序列号是出厂前被光刻好的,他可以看作是该DSISB20的地址序列码,每个DSI8B20的64位序列号均不相同。高低温报警触发器TH 和TL,配置寄存器均由一个字节的E2PROM组成,使用一个存储器功能命令可对 TH,TL或配置寄存器写入。配置寄存器中R1,R0决定温度转换的精度位数:R1R0“00”时9位精度,最大转换时间为93.75 ms;R1R0 = “01”时10位精度,最大转换时间为187.5 ms;R1R0 =“10”时11位精度,最大转换时间为375 ms;R1R0 =“11,12位精度,最大转换时间为750 ms;未编程时默认为12位精度。本系统采用的也是12位的精度。 1.3,DS18B20的内存结构 DSI8B20温度传感器的内部存储器包括一个高速暂存RAM (便笺式的内部存储器)和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器TH,TL和结构寄存器。便笺存储器包含了9个连续字节(08),前两个字节是测得的温度信息,字节0的内容是温度的低8位,字节1是温度的高8位,字节2是TH(温度上限报警),字节3是TL(温度下限报警),字节4是配置寄存器,用于确定输出分辨率9到12位。第5、6、7个字节是预留寄存器,用于内部计算。字节8是冗余检验字节,校验前面所有8个字节的CRC码,可用来保证通信正确。 2. DS18B20的测温功能 当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5LSB形式表示。 DSl820工作过程中的协议 初始化 - RoM操作命令 - 存储器操作命令- 处理数据 1.初始化 单总线上的所有处理均从初始化开始 2 . ROM操作指令令 总线主机检测到DSl8B20的存在便可以发出ROM操作命令之一这些命令如 指令 代码 Read ROM(读ROM) 33H Match ROM(匹配ROM) 55H Skip ROM(跳过ROM CCH Search ROM(搜索ROM) F0H Alarm search(告警搜索) ECH 3.存储器操作命令 指令 代码 Write Scratchpad(写暂存存储器) 4EH Read Scratchpad(读暂存存储器) BEH Copy Scratchpad(复制暂存存储器) 48H Convert Temperature(温度变换) 44H Recall EPROM(重新调出) B8H Read Power supply(读电源 B4H 4.时 序 主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位 (1)初始化 时序见图2.25-2主机总线to时刻发送一复位脉冲(最短为480us的低电平信号)接着在tl时刻释放总线并进入接收状态DSl820在检测到总线的上升沿之后等待15-60us接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240 us)如图中虚线所示 (2)写时间隙 当主机总线t0时刻从高拉至低电平时就产生写时间隙。见图2.25-3图2. 25-4从to时刻开始15us之内应将所需写的位送到总线上DSl8B20在t后15-60us间对总线采样若低电平写入的位是0见图2253若高电平写入的位是1见图2.-254连续写2位间的间隙应大于1us (3)读时间隙 见图2.25-5主机总线to时刻从高拉至低电平时总线只须保持低电平l 5us之后在t1时刻将总线拉高产生读时间隙读时间隙在t1时刻后到t 2时刻前约15us产生读时间隙,t3时刻前主机必须完成读位然后将总线释放总线 3.驱动DS18B20的测温的流程当单总线上只有一个DS18B20。 三、硬件电路设计1时钟与复位电路2. 7805稳压电路3显示电路4.键盘扫描电路5.测温与报警电路6.电热杯加热控制电路四、软件程序设计/*默认温度上限是35度,下限是25度*,S0上限增加,S1上限减小,S2下限限增加,S3下限减小*/#include#include #define uchar unsigned char #define uint unsigned intchar code seg16=0xc0,0xfc,0x92,0x98,0xac,0x89,0x81,0xdc,0x80,0x88;void Delayxus_DS18B20(uint t) ;void WR_Byte(unsigned char dat);void WR_Bit(bit i);void Start_DS18B20();unsigned char Read_Byte();unsigned char Read_Bit();void keyscan();int Read_Tem();bit RST_DS18B20();void delay(uint z) ;void display(uchar num);void scan_alarm();void sendchar(ch);sbit DQ=P00;/*DQ数据端接P00口*/sbit p=P01;/*光耦端接P01口*/sbit DAT=P27;/*A,B端接一块后接入DAT,DAT接P27口*/sbit CLK=P26;/*CLK接P26口*/sbit deep=P07;/*蜂鸣器接P07口*/sbit a=P10;sbit b=P11;sbit c=P12;sbit d=P13;sbit gnd=P35;uchar max=35,min=25;uint tr=0;void main() gnd=0;while(1) RST_DS18B20(); Start_DS18B20(); delay(500) ; tr=Read_Tem(); display(tr) ; delay(200) ; scan_alarm(); keyscan();bit RST_DS18B20()bit ret=1;DQ=0;/* 拉低总线 */Delayxus_DS18B20(32);/* 为保险起见,延时 495us */DQ=1;/* 释放总线 ,DS18B20 检测到上升沿后会发送存在脉冲*/Delayxus_DS18B20(4);ret=DQ;Delayxus_DS18B20(14);/* 延时 495us,让 ds18b20 释放总线,避免影响到下一步的操作 */DQ=1;/* 释放总线 */return(ret);void Delayxus_DS18B20(uint t) for(t;t0;t-)_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();unsigned char Read_Bit()unsigned char ret;DQ=0;/ 拉低总线_nop_(); _nop_();DQ=1;/释放总线_nop_(); _nop_();_nop_(); _nop_();ret=DQ;/ 读时隙产生7 us后读取总线数据。把总线的读取动作放在15us时间限制的后面是为了读取准确Delayxus_DS18B20(3);/ 延时60us,满足读时隙的时间长度要求DQ=1;/释放总线_nop_();_nop_();return ret; /返回读取到的数据unsigned char Read_Byte()unsigned char i;unsigned char dat=0;for(i=0;i=1;/先读最低位if(Read_Bit()dat|=0x80;return(dat);void Start_DS18B20()DQ=1;RST_DS18B20();WR_Byte(0xcc);/ skipWR_Byte(0x44);/ 启动温度转换int Read_Tem()int templ=0,temph=0,temp=0, temp_int;RST_DS18B20();WR_Byte(0xcc);/ skipWR_Byte(0xbe);/发出读取命令templ=Read_Byte();/ 读出温度低八位temph=Read_Byte();/读出温度高八位temp_int=temph;temp_int=8;temp_int|= templ; temp=(temp_int*0.0625+0.5);return temp;void WR_Byte(unsigned char Byte)unsigned char i=0;while(i+=1; /注意不要写成dat1void WR_Bit(bit i)DQ=0;/产生写时序_nop_();_nop_();/总线拉低持续时间要大于1usDQ=i;/写数据 ,0 和1均可Delayxus_DS18B20(3);/延时60us,等待ds18b20采样读取DQ=1;/释放总线void delay(uint z) /延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms./delay(500);大约延时500ms.uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void display(uchar num) uchar shi,ge; shi=num/10; ge=num%10; sendchar(segge); sendchar(segshi); delay(100);void sendchar(ch) uchar i; for(i=0;i8;i+)/8位数据传输完毕后才给数码管显示 CLK=0; _nop_(); _nop_(); P2=ch&0x80; /(保留最低位发送 即低位在前) CLK=1; _nop_(); _nop_();ch=max|tr=max) p=0;else p=1; if

温馨提示

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

评论

0/150

提交评论