18b20子程序文档格式.docx

上传人:b****1 文档编号:15357694 上传时间:2022-10-29 格式:DOCX 页数:13 大小:46.69KB
下载 相关 举报
18b20子程序文档格式.docx_第1页
第1页 / 共13页
18b20子程序文档格式.docx_第2页
第2页 / 共13页
18b20子程序文档格式.docx_第3页
第3页 / 共13页
18b20子程序文档格式.docx_第4页
第4页 / 共13页
18b20子程序文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

18b20子程序文档格式.docx

《18b20子程序文档格式.docx》由会员分享,可在线阅读,更多相关《18b20子程序文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

18b20子程序文档格式.docx

读取ROM0x33

匹配ROM0x55发送该命令后,接着发送64位ID编号,之后就可以直接发送操作命令,这时只有匹配的才做出响应。

搜索ROM0xf0

跳过ROM0xCC

告警搜索指令0xec

*************************RAM操作命令代码:

温度转换0xbe

读取暂存器0xbe

写入暂存器0x4e发出向内部RAM3、4字节写上下限温度数据命令区分于写功能(用来写入所有指令的)

复制RAM到EEPROM0x48对RAM中第3、4字节的操作

恢复EEPROM到RAM0xb8

读取供电方式0xb4寄生供电时18b20发回“0”,外接电源供电发回“1”。

**********************************************************************************/

#defineportP2//定义18b20端口

sbitbuzzer=P1^3;

//蜂鸣器端口

unsignedcharaccount;

//定义全局变量

/**************************改变端口采样点用的数组*********************************/

unsignedcharchange[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsignedcharchange2[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

/**************************温度存储用数组*****************************************/

unsignedcharsave_temp[8]={0};

//164显示程序

unsignedcharsheet[]={0x11,0x7D,0x23,0x29,0x4D,0x89,0x81,0x3D,0x01,0x09};

sbitdisp_data=P1^0;

sbitdisp_clk=P1^1;

voiddisp_164(unsignedintx)

{

unsignedchari,j=4,k;

while(j--)

{

k=sheet[x%10];

for(i=0;

i<

8;

i++)

if(k&

0x01)disp_data=1;

elsedisp_data=0;

disp_clk=0;

disp_clk=1;

disp_clk=0;

k=k>

>

1;

}

x/=10;

}

//18b20初始化

voidInit18B20(void)

{

unsignedcharqq=0;

port=0;

//DQ=0;

qq=250;

while(qq)qq--;

//Delay15(33);

//至少延时480us

port=0xff;

//DQ=1;

qq=75;

//Delay15(10);

//至少延时100us

//if(DQ==1)return0;

//初始化失败

//elsereturn1;

Delay15(18);

//18b20读取一个字节

/*********************************************************************************/

unsignedcharRead18B20(void)

{

unsignedchari,temp,qq=0;

temp=temp>

port&

=change[account];

qq++;

//_nop_();

qq=2;

_nop_();

if(port&

change2[account]/*DQ==1*/)

{temp=temp|0x80;

}

else

{temp=temp&

0x7f;

qq=15;

//Delay15(3);

}

return(temp);

//18b20写一个字节

voidWrite18B20(unsignedchartemp)

unsignedchari,qq=0;

//port&

//DQ=0;

qq=7;

//Delay15

(1);

if(temp&

0x01)port=0xff;

//DQ=ch&

0x01;

elseport=0;

qq=22;

//读取温度值

voidget_temp()

unsignedintTemH,TemL,temp,save=0,kk=0;

Init18B20();

Write18B20(0xCC);

//跳过ROM

//_nop_();

Write18B20(0x44);

//发送温度转换指令

qq=100;

//Delay10ms(25);

//等待1s转换

Write18B20(0xBE);

for(account=0;

account<

account++)//设定采样点的数量

TemL=Read18B20();

//读低位温度值

TemH=Read18B20();

//读高位温度值

//Delay10ms

(2);

temp=(TemH<

<

4)|(TemL>

4);

if(save_temp[account]!

=temp)

save_temp[account]=temp;

//只有当前采样值和前一次不同时才保存

//return(TemH);

/******************************************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1