




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. . . .基于STC89C51RC和DS18B20的简单数字温度计学生姓名:孙佳辉专业:电气工程及其自动化班级:040841学院:机电工程学院 摘要温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于AT89C52的温度检测及报警系统。该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高,量程宽,灵敏度高,体积小,功耗低等优点,适合于我们日常生活和工作,农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。该系统设计和布线简单结构紧凑,抗干扰能力强,在大型仓库,工厂,智能化建筑等领域的温度检测中有广泛应用前景关键词:单片机 DS18B20温度传感器 智能化 ABSTRACTTemperature measurement and control of industrial process is one of the typical applications ,as sensors have more extensive application in today ,to use the new digital temperature sensors for temperature testing and controlling get fast development ,this paper design a system based on AT89C52 for temperature testing and alarming .The system is easy to realize the temperature gathering and displaying , and can according to need set temperature for arming , it is very convenient to use it .It has the advantages of high precision , ranging wide high sensitivity , small volume , low power , it suits our daily life work and agriculture temperature , also auxiliary part in other main system . The system design and wiring simple , compact structure , strong anti-jamming capability ,it has broad application protest in large warehouse , factories ,intelligent building and other areas of temperature testing .Keywords: Microcontroller Temperature sensor DS18B20 Intelligent一、 综述:1. DS18B20摘要单线数字温度传感器DS18B20为当前应用最为广泛的温度传感器之一,可以提供9位温度读数。其与控制器件的通信信息经过单线接口从DS18B20输出或送入,使中央处理器件只需一条信号线就可实现对温度的测量,且从DS18B20输出的温度数据为数字信号,不需要再加AD芯片进行转换,使测温的实现更加方便。具体PDF详细资料在维库网、周立功单片机网均可查到。2. DS18B20优缺点厂家生产的DS18B20有唯一的序列号,这使得多个DS18B20能接在同一条单线总线上,而这条总线能环绕整个需要测温的环境,能使环境的温度数据全方位的在人工检测和控制之下。另外,DS18B20的测温原理独特:利用两个温度系数不同的晶振对计数器进行控制,从而使不同的温度下计数值不同,再将其转换为温度数据存储,即可省略AD转换的一步,在数字化日益成熟的今天,这种测温原理是很符合发展趋势的,能为其它类型的传感器测量数据提供了新方法。当然,DS18B20并不是十全十美的,通过对其资料的熟悉及进行一些简单的使用后,发现其主要有两方面不足:1)温度测量的精度相对而言并不十分高,对于需要通过温度进行精密控制的仪器不是很适合;2)测温范围为-55125,且在温度小于-15和高于105时误差达到3,因此其测温范围是很有限的。3. DS18B20的有关发展趋势由于虚拟仪器的发展,通过单片机等控制器件将DS18B20测温器件与PC机连接,编制软件能实现更加人性化的温度检测与控制系统。或者通过PC机的控制使得DS18B20测温系统成为某一工业生产、过程控制等过程的一个子系统进行服务。在自动化、智能化高速发展的时代,PC机与传感器的结合会带来非常大的效益,因而DS18B20往这一方面发展是比较符合现实需要的。由于DS18B20可以用遥控的方式设定其报警温度,近来我国发生了多起因高温而而引起的汽车自燃,如果在车身对高温敏感且易引发自燃的部位装上DS18B20进行实时监测和发出警报,则可避免许多因温度骤变而带来的损失。以上仅是通过对于现实问题的学习与思考得出的关于DS18B20的两个方面的应用实例,然而关于DS18B20的发展前景我认为是比较大的,可以从探索新测温元件以扩大测温范围、增加测量精确度、发现更完善测温原理与方法、测温元件适用工程与生活实例探究、测温元件测量效果评估方法、大型多功能智能化测温精密仪器的研发等诸多方面进行研究建立一套很为完善的符合实际需要的理论系统。总之,研发者必须用创新与发展的眼光看问题,而研制的理论系统与产品要能够促进社会的发展。二、工作内容:1. 总体电路设计(1)STC89C52单片机:主要用于与DS18B20进行单线通信控制其测温过程及将温度数据显示到三个数码管。(2)数码管显示:用三个数码管显示温度,第一个显示十位,第二个显示个位和小数点,第三个显示小数位。 (3)DS18B20测温:用DS18B20信号线与单片机一引脚相接,以进行指令与数据传输。(4)单片机按键复位电路:按键按下时,数码管不显示;松开按键时,单片机内程序从头开始执行。(5)电源显示:当电路通电时,电源指示灯亮(6)74HC573锁存器:驱动数码管显示温度。STC89C51单片机按键复位电源显示数码管显示数据DS18B20测温图一:系统结构框图2. 电路接线设计由单片机P1口接数码管八个段选线引脚(引脚号分别为11、7、4、2、1、10、5、3),控制需要显示的数字。由单片机P2口接数码管共八个位选引脚(引脚号分别为6、8、9、12,6、8、9、12),控制显示数字的位。在电源线与单片机RESET引脚之间连接一个按钮,作为按键复位用。在电路板电源与地之间连接一个红色发光二极管,作为电路板通电指示用。将一根数据线的与电源适配器连接的接口保留,另一端剪开将红色线接电路板电源及,黑色线接电路板地极。绿色与白色线为数据线,此处只用其电源线,故此二线悬空。图二:DS18B20测温原理图3. 程序设计此程序设计用到软件工具:Keil Uvision3、STC-ISPV391。此程序设计的难点在于对DS18B20进行操作的时序控制。1)复位与应答时序:将信号线电平拉低480-960us,等待15-60us后度信号线电平,为低电平则复位成功,复位成功后再做约240us的延时;2)写时序:主机把信号线从逻辑高电平拉至逻辑低电平时,低电平持续时间至少1uS,产生写时间片。在变为低电平15uS之后,DS18B20在15-45uS之间对信号线采样,如果信号线为高电平,就写1,如果线为低电平,就写0。时间片必须有最短为60uS的持续期,各写周期之间须有最短为1uS的恢复时间;3)读时序:主机将信号线从逻辑高电平拉低时,产生读时间片。低电平持续时间至少1uS,来自DS18B20的输出数据在读时间片下降沿之后15uS有效,因此,在产生读时间片15uS后主机必须停止把I/0线驱动至低电平,由上拉电阻拉回至高电平,主机在15uS末期对信号线采样,如果线为高电平,为读1,如果线为低电平,为读0。读时间片的最短持续期限为60uS,各读时间片之间必须有最短为1uS的恢复时间。开始初始化P0口、P2口:P0用于数码管段选数据传送 P2用于数码管位选数据传送设置3个变量,用以存储读取的3位温度数据单片机发送指令使DS18B20开始温度转换稍作延时等待转换完成从DS18B20读取测得温度数据温度数据转换为数码管显示码数据送数码管显示图三:程序流程图程序设计clude #define uchar unsigned char#define uint unsigned intsbit DS=P22; /define interfaceuint temp; / variable of temperatureuchar flag1; / sign of the result positive or negativesbit dula=P26;sbit wela=P27;unsigned char code table=0x3f,0x#in 06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef;void delay(uint count) /delay uint i; while(count) i=200; while(i0) i-; count-; /功能:串口初始化,波特率9600,方式1/void Init_Com(void) TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1;void dsreset(void) /send reset and initialization command 18B20复位,初始化函数 uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) /read a bit 读1位数据函数 uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat);uchar tmpread(void) /read a byte date 读1字节函数 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tmpwritebyte(uchar dat) /write a byte to ds18b20 向1820写一个字节数据函数 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /write 1 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /write 0 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /DS18B20 begin change 开始获取数据并转换 dsreset(); delay(1); tmpwritebyte(0xcc); / address all drivers on bus 写跳过读ROM指令 tmpwritebyte(0x44); / initiates a single temperature conversion 写温度转换指令 uint tmp() /get the temperature 读取寄存器中存储的温度数据 float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); /读低8位 b=tmpread(); /读高8位 temp=b; temp0;a-) for(b=60;b0;b-); void display(uint temp)/显示程序 uchar A1,A2,A2t,A3,ser; ser=temp/10; SBUF=ser; A1=temp/100; A2t=temp%100; A2=A2t/10; A3=A2t%10; dula=0; P0=tableA1;/显示百位 dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay(1); dula=0; P0=table1A2;/显示十位 dula=1; dula=0; wela=0; P0=0x7d; wela=1; wela=0; delay(1); P0=tableA3;/显示个位 dula=1; dula=0; P0=0x7b; wela=1; wela=0; delay(1);void main() uchar a; Init_Com(); do tmpchange(); / delay(200);for(a=10;a0;a-) display(tmp(); while(1);4. 电路板焊接通过面包板上搭建的电路进行测试通过后,就按照电路图进行焊接。三、一些问题及其解决方案:1. 数码管驱动问题在搭建电路过程中,发现直接用单片机的I/O口控制数码管的显示时会出现驱动不起的问题,即数码管显示太暗,甚至不亮。于是在数码管与单片机之间我们加了三片74LS04反相器,对数码管的每一个引脚都进行反相驱动,之后发现这种方法简便但取得了很好的效果。另外,根据所查的资料,数码管的驱动方法有很多,比如其中的用三极管进行驱动,用74LS164进行驱动等方法。2. DS18B20的读出的温度数据格式问题这一问题是在编程中遇到的。据开始查找的资料中介绍,其读出温度数据格式为低字节为测量的温度数据除二,高字节为符号位,但是经过程序调试后发现与结果并不相符。通过进一步查找资料,发现其从温度暂存器读出的温度为低字节低四位为存储温度小数值,低字节高四位与高字节第三位为存储温度整数值,高字节高五位为存储温度符号位。暂存器(上电状态)byte 0温度低位(50h)EEPROMbyte 1温度高位(05h)报警低温度或用户使用字节1byte 2报警低温度或用户使用字节1报警高温度或用户使用字节2byte 3报警高温度或用户使用字节2工作方式设定byte 4工作方式设定byte 5预留(FFh)byte 6预留(0Ch)byte 7预留(10h)byte 8CRC上电后状态受到EEPROM中数据影响图四:DS18B20存储器组织形式图五:存储温度数据格式 3. 关于DS18B20的转换精度根据开始所查资料的介绍,DS18B20的转换精度为0.5摄氏度,所以原来只设定了一位数码管进行小数显示。根据后来进一步的资料查证,发现其转换精度是可以调整的,其出厂设置为12位。DS18B20的转换精度设定需要对暂存器的第五六位进行数据操作。使用过程中要注意所使用的转换方式,每种转换方式转换温度所花的时间是不同的,必须要等待足够长的时间后才能从DS18B20中读出正确的温度值。R1R0转换精度模式最大转换时间009-bit93.75ms0110-bit187.5ms1011-bit375ms1112-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 呼吸支持技术在晚期早产儿呼吸衰竭治疗中的临床剖析与成效探究
- 呼伦贝尔市民族幼儿园蒙汉双语师资的多维度审视与发展策略探究
- 周代酒礼:社会秩序与文化传承的交融密码
- 开展线上推广拓展新客户群体
- 多变量结构方程模型-洞察及研究
- 机器人食品质量监控-洞察及研究
- 深地矿产资源开发技术-洞察及研究
- 电子产品制造商的绿色制造标准研究-洞察及研究
- 2025年风力提水机组项目申请报告
- 城郊风蚀与城市化进程关联性-洞察及研究
- T-CFLP 0016-2023《国有企业采购操作规范》【2023修订版】
- 【NIFD】2025H1人民币汇率分析报告-“对等关税”加剧汇市震荡 美元指数步入贬值周
- 学习科学家家风+传承科学家精神(科技创新教育主题班会)-2025-2026学年高中主题班会
- 军事安全知识培训课件
- 2026届四川省广安市邻水县重点名校中考语文全真模拟试题含解析
- (高清版)DBJ∕T 13-318-2025 《建筑施工盘扣式钢管脚手架安全技术标准》
- 房颤射频消融病例报告
- 神经心理与皮纹特征-洞察及研究
- 护理病历讨论制度
- 电子病历系统集成与建设方案
- 新生儿个体化发育支持护理
评论
0/150
提交评论