基于1Wire总线的DS18B20测温实验C语言Word文档格式.docx
- 文档编号:995633
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:18
- 大小:2.14MB
基于1Wire总线的DS18B20测温实验C语言Word文档格式.docx
《基于1Wire总线的DS18B20测温实验C语言Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于1Wire总线的DS18B20测温实验C语言Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
☐所有的单总线命令序列(初始化,ROM命令,功能命令)都是由这些基本的信号类型组成的。
在这些信号中,除了应答脉冲外,其它均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。
信号时序设计原理
信号时序设计原理说明
⏹总线主机启动和控制所有1-Wire通信。
⏹1-Wire通信波形与脉宽调制类似,因为在数据位传输期间(或时隙(Timeslot))是通过宽脉冲(逻辑0)和窄脉冲(逻辑1)发送数据的。
⏹当总线主机发出一个预定宽度的“复位”脉冲时,启动通信过程,并通过该脉冲同步整个总线系统。
所有从机都会以一个逻辑低“应答”脉冲来响应复位脉冲。
(初始化)
⏹写数据时,主机首先拉低1-Wire总线以启动一个时隙,然后保持总线为低(宽脉冲)来发送逻辑0,或释放总线(窄脉冲)使总线返回逻辑1状态。
(写周期)
⏹读数据时,主机以窄脉冲方式拉低总线,重新启动一个时隙。
然后从机可以通过导通开漏极输出并保持线路为低来延长该脉冲,从而返回逻辑0;
或保持开漏极的关闭状态以允许总线恢复,从而返回逻辑1。
(读周期)
⏹大多数1-Wire器件都支持两种数据速率:
15kbps标准速率和111kbps高速速率。
初始化信号
✓初始化时序,初始化时序包括主机发出的复位脉冲和从机发出的应答脉冲。
主机通过拉低单总线至少480μs产生Tx复位脉冲;
然后由主机释放总线,并进入Rx接收模式。
✓主机释放总线时,会产生一由低电平跳变为高电平的上升沿,单总线器件检测到该上升沿后,延时15~60μs,接着单总线器件通过拉低总线60~240μsμ来产生应答脉冲。
主机接收到从机的以应答脉冲后,说明有单总线器件在线,然后主机就可以开始对从机进行ROM命令和功能命令操作。
初始化时序图
写时序:
读时序:
命令序列
典型的单总线命令序列如下:
第一步:
初始化
第二步:
ROM命令(跟随需要交换的数据)
第三步:
功能命令(跟随需要交换的数据)
每次访问单总线器件必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机。
但是这个准则对于搜索ROM命令和报警搜索命令例外。
在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。
ROM命令:
一、实验目的
1熟悉DS18B20的芯片功能。
2掌握采用单片机和DS18B20的硬件接口技术。
3掌握DS18B20的读写程序的设计和调试方法。
二、实验要求
测量温度并将温度显示。
三、芯片资料
1.1-wire单总线是Maxim全资子公司Dallas的一项专有技术。
与目前多数标准串行
数讯信方式,如SPI/I2C/MICROWIRE不同,它采用单根信号线,既传输时钟,又传输数据,
而且数据传输是双向的。
它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展
和维护等诸多优点。
本实验使用DS18B20芯片。
2.DS18B20的引脚介绍
DS18B20特性:
程序:
#include<
stdio.h>
reg51.h>
#defineucharunsignedchar
#definejump_ROM0xCC
#definestart0x44
#definereaddata0xBE
sbitdq=P3^4;
voiddelay(intuseconds)
{ints;
for(s=0;
s<
useconds;
s++);
}
ucharresetds(void)
{
ucharpresencesignal;
dq=0;
delay(30);
dq=1;
delay(3);
presencesignal=dq;
returnpresencesignal;
}
voidwritebit(charval)
{dq=0;
if(val==1)
else
delay(5);
voidwritebyte(charval)
{
uchari;
uchartemp;
for(i=0;
i<
8;
i++)
temp=val>
>
i;
temp&
=0x01;
writebit(temp);
ucharreadbit(void)
3;
returndq;
ucharreadbyte(void)
ucharvalue=0;
if(readbit())
value|=0x01<
<
delay(7);
return(value);
voidmain()
ucharget[9];
uchark,lsb,msb,n,temp;
intj,m,i;
floatt;
uchartemperature[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
P1=0x0ff;
while
(1)
m=0;
resetds();
writebyte(jump_ROM);
writebyte(start);
writebyte(readdata);
for(k=0;
k<
9;
k++)
get[k]=readbyte();
msb=get[1];
lsb=get[0];
if((msb&
0x80)!
=0)
{
m=1;
msb=~msb;
lsb=(~lsb)+1;
if(lsb==0)
{msb++;
n=lsb;
msb=msb<
4;
lsb=lsb>
temp=msb|lsb;
n=n&
0x0f;
t=(float)(n);
t=t*0.0625;
j=(int)(t*10);
for(i=0;
90;
if(m==1)
{P2=0x40;
if(m==0)
{P2=0x00;
P1=0xfe;
P2=temperature[j];
P1=0xf7;
P2=temperature[temp%10]+0x80;
P1=0xfb;
P2=temperature[(temp%100)/10];
P1=0xfd;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Wire 总线 DS18B20 测温 实验 语言