综合实验一 18B20温度采集实验.doc

综合实验一 18B20温度采集实验.doc

ID:30525646

大小:141.50 KB

页数:8页

时间:2018-12-31

综合实验一 18B20温度采集实验.doc_第1页
综合实验一 18B20温度采集实验.doc_第2页
综合实验一 18B20温度采集实验.doc_第3页
综合实验一 18B20温度采集实验.doc_第4页
综合实验一 18B20温度采集实验.doc_第5页
资源描述:

《综合实验一 18B20温度采集实验.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验一18B20温度采集实验一、实验目的1.掌握单片机与1-wire(一线器)的通信原理与编程方法;2.掌握LED动态显示方法;3.了解温度传感器原理;二、实验原理及实验内容1.实验原理关于18B20工作原理请读者参考DALLAS公司资料。89S52控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本实验系统挂接一个18B20芯片,可使用默认的12位转换精度,外接供电电源,单片机与18B20接口是用单片机的P2.4。2.实验内容a.程序要求,参考给出的流程图,在Keil编译环境下变

2、成程序,要求采集温度,如果超出报警温度范围则报警,报警通过实验箱上的蜂鸣器实现,报警温度可以通过键盘设置,最后,生成*.HEX文件。b.通过ISP将生成的*.HEX文件下载到单片机中,允许程序。c.观测LCD上的显示温度数据,通过键盘操作控制报警温度。图8-1DS18B20温度采集系统流程图三、参考程序//DS18B20温度传感器程序#include#defineAlarm10sbitBeep=P3^4;sbitDQ=P2^4;//数据传输线接单片机的相应的引脚unsignedchartempL=0,tempH=0;//设全局变量unsignedcha

3、rflag=0;unsignedinttemperature,negtemper;//温度值保存在temperature里unsignedcharidataaddrdat[2]={0x0,0x0};unsignedchartab[]={0xc0,0xf9,0xa4,0xb0,/*01234*/0x99,0x92,0x82,0xf8,0x80,0x90};/*56789*/unsignedchartab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};unsignedchardispbuf[3]={0,0,0}

4、;unsignedcharwarning=20;biton=0,off=1;//******************************//延时子程序//**voiddelay(unsignedinti){while(i--);}voidbeep(biti){Beep=i;}//*****************************//初始化程序Init_DS18B20(void){unsignedcharx=0;DQ=1;//DQ先置高delay(8);//稍延时DQ=0;//发送复位脉冲delay(85);//延时(>480us)DQ=1;//拉高数据线de

5、lay(14);//等待(15~60us)x=DQ;//用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1delay(20);}//***********************//读一个字节ReadOneChar(void)//主机数据线先从高拉至低电平1ms以上,再//使数据线升为高电平,从而产生读信号{unsignedchari=0;//每个读周期最短的持续时间为60us,各个读周期//之间必须有1ms以上的高电平恢复期unsignedchardat=0;for(i=8;i>0;i--)//一个字节有8位{DQ=1;delay(1);DQ=0;d

6、at>>=1;DQ=1;if(DQ)dat

7、=0x80;delay(4);}return(dat);}//***********************//写一个字节WriteOneChar(unsignedchardat){unsignedchari=0;//数据线从高电平拉至低电平,产生写起始信号。//15ms之内将所需写的位送到数据线上,for(i=8;i>0;i--)//在15~60ms之间对数据线进行采样,如果是高电平就写1,低写0发生。{DQ=0;//在开始另一个写周期前必须有1ms以上的高电平恢复期。DQ=dat&0x01;delay(5);DQ=1;da

8、t>>=1;}delay(4);}//**************************ReadTemperature(void){Init_DS18B20();//初始化WriteOneChar(0xcc);//跳过读序列号的*作WriteOneChar(0x44);//启动温度转换delay(125);//转换需要一点时间,延时Init_DS18B20();//初始化WriteOneChar(0xcc);//跳过读序列号的*作WriteOneChar(0xbe);//读温度寄存器(头两个值分别为温度的低位和高位)tempL=Read

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。