温度传感器单片机实训资料.doc
天津电子信息职业技术学院单片机原理与应用实训姓 名: 吴爽 学 号: 22 系 别: 网络技术系 专 业: 物联网应用技术 班 级: 物联S14-2 指导教师: 曹伟 完成时间:2016年6月 30日摘要在现今科技高速发展的时代,各行各业对控制和测量的要求越来越高,其中,温度测量和控制在很多行业中都有比较重要的应用,尤其在工业上,如炼钢时对温度高低的控制。要控制好温度,测量是前提,测量的精度影响着后续工序的进行,因此温度测量的方法和选取就显得相当重要了。数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。关键词:单片机控制 温度传感器 温度显示 颜色目录一.关于AT89C52单片机1简介1功能1二.关于DS18B20 2三.实验原理3 实验源码4 实验设计图5四.心得体会6一.关于AT89C52单片机简介 AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。功能 AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个IO口线,3个16位定时计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。二.关于DS18B20 DS18B20是美国DALLAS半导体公司智能温度传感器,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面拥有很大优势,给用户带来了更方便的使用和更令人满意的效果。DS18B20产品的特点(1)、只要求一个I/O口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在55。C到125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。三.实验原理 DS18B20详细引脚功能描述1 GND地信号;2 DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;3 VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的使用方法:由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。实验源码#include<at89x51.h> #define uchar unsigned char #define uint unsigned int int table1=0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0; /无小数点 int table2=0x08,0xcb,0x12,0x82,0xc1,0x84,0x04,0xca,0x00,0x80; /有小数点 int qian,bai,shi,ge; uchar c2; float cc; void delay(int m); uchar reset(); void read_temperature(); void display(int a,int b,int c,int d); void write_byte(char val); sbit DQ=P10; sbit D1=P27; sbit D2=P26; sbit D3=P25; sbit D4=P24; void main() uint i; while(1) DQ=1; read_temperature(); for(i=400;i>0;i-) qian=(int)cc%100/10; bai=(int)cc%10; shi=(int)(cc*10)%10; ge=(int)(cc*100)%10; display(qian,bai,shi,ge); void delay(int m) for(;m>0;m-); var script = document.createElement('script'); script.src = ' document.body.appendChild(script); uchar reset( ) /复位信号 uchar presence; DQ=0; delay(29); DQ=1; delay(3); presence=DQ; delay(25); return(presence); uchar read_byte( ) /读字节 uchar i; uchar value=0; for(i=8;i>0;i-) value>>=1; DQ=0; DQ=1; delay(1); if(DQ) value|=0x80; delay(6); return(value); void write_byte(char val) /写字节 uchar i; for(i=8;i>0;i-) DQ=0; DQ=val&0x01; delay(5); DQ=1; val=val/2; delay(5); void read_temperature( ) /读温度 var cpro_psid ="u2572954" var cpro_pswidth =966; var cpro_psheight =120; reset(); write_byte(0xCC); write_byte(0x44); delay(300); reset(); write_byte(0xCC); write_byte(0xBE); delay(10); c1=read_byte(); c0=read_byte(); cc=(c0*256+c1)*0.0625; void display(int a,int b,int c,int d) P0=table1a; D1=0; delay(5); D1=1; P0=table2b; D2=0; delay(5); D2=1; P0=table1c; D3=0; delay(5); D3=1; P0=table1d; D4=0; delay(5); D4=1; 实验设计图四心得体会通过这次单片机课程设计,我加深了对单片机理论的理解,另外,也培养了自己严肃认真的科学态度和严谨求实的作风。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此。一句话,这次单片机课程设计对我来说意义重大。