网站大量收购独家精品文档,联系QQ:2885784924

单片机应用技术——基于STC15系列单片机 课件 6.1电子温度计.pptx

单片机应用技术——基于STC15系列单片机 课件 6.1电子温度计.pptx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

项目智能测温系统的实现

智能测温系统

电子温度计任务演示

任务分析

电子温度计程序包括温度的采集、温度数据的处理以及温度值在数码管的显示等

DS18B20的引脚功能

测温范围为-55℃~125℃,输出12位数字温度值

1-GND,地

3-Vdd,外供电时为电源接入端,总线供电时接地2-DQ,数据输入/输出。数据传输端,“单总线”

DS18B20的内部结构

存储器

64位ROM

64bit的ROM编码是器件的身份标识

非易失性存储器E2PROM

非易失性存储器E2PROM共3字节,包括高温触发器TH、低温触发器TL和配置寄存器

配置寄存器

R1R0

分辨率

转换时间

00

9

93ms

01

10

187ms

10

11

375ms

11

12

750ms

TM是测试位,用户不改动

R1R0设置分辨率

高速RAM

序号

高速存储器RAM

0

温度值低位

1

温度值高位

2

高温报警寄存器

3

低温报警寄存器

4

配置寄存器

5

保留

6

保留

7

保留

8

CRC校验字节

输出温度值时先低8位,再高8位

温度值存放格式

S为符号位,正温度S=0,负温度S=1

温度值以补码形式存放,当测得的温度是负数时,应作补码到原码的转换

20~26为7位整数部分

2-1~2-4为4位小数部分

复位时序和流程

复位操作首先在t0时刻发出最短为480µs的低电平,在t1时刻释放总线进入接收状态,DS18B20检测到总线变高后,等15~60µs,在t2时刻发出低电平信号表示响应

复位函数

bitreset(void) //复位DS18B20

{

biterr;

DQ=0; //在数据线上产生600us的低电平

delay1us(600);

DQ=1; //数据线拉高

delay1us(60); //延时60us

err=DQ; //读取数据线状态,err=0:复位成功

delay1us(540); //err=1:复位失败

return(err);

}

写时序和流程

总线拉至低电平的t0时刻开始的15µs之内将要写的数据位送到总线上,在t0后的15~60µs内若为低电平写入的是0;若为高电平写入的为1。连续写2位之间的间隙应大于1µs

写函数

DQ=0; //产生15us的低电平

delay1us(15);

DQ=dat0; //将需要写的数据0或1送DQ线

delay1us(15);//延时15us

DQ=1;//数据线拉高,为写入下一位做准备

写一个字节函数

voidwrbyte(uchard)

{uchari;

dat=d;

for(i=8;i0;i--)//循环写8位(先低位,后高位)

{

DQ=0; delay1us(15);

DQ=dat0; dat=dat1;//将下一位要写入的数据移到最低位

delay1us(15); //延时15us

DQ=1;//数据线拉高,为写入下一位做准备

}

}

读时序和流程

单片机在t0时刻将总线从高拉至低电平,几个µs后的t1时刻释放总线。DS18B20通过保持总线为高表示发送“1”,将总线拉低表示发送“0”,并在t2时刻释放总线。单片机必须在t2之前读取总线状态。读时序至少需要60µs,且两次读时序之间至少需要1µs的恢复时间

读函数

DQ=0;//产生负脉冲

delay1us(3);

DQ=1; //数据总线拉高

delay1us(3);//延时3us

dat7=DQ; //读取数据

delay1us(60);//延时,为读下一位做准备

读一个字节函数

ucharrdbyte(void) //从DS18B20读取一个字节

{

uchari;

dat=0; //读出数据初值为0

for(i=8;i0;i--) //循环读8位(先低位,后高位)

{dat=dat1; //读出数据先右移一位

DQ=0;delay1us(3);

DQ=1; delay1us(3);//延时3us

dat7=DQ; //读取数据

delay1us(60);}

return(dat);

}

DS18B20的基本操作指令

名称

代码

功能

跳过ROM

0XCC

单片机可用这一命令同时访问总线上的所有设备而不需送出ROM序列号信息

读ROM

0X33

单片机发该命令,要求从ROM读出8个字节序列号

匹配ROM

0X55

执行该命令后,单片机必须接着向D

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档