DS18B20单总线多点式测温系统教学文案Word格式.docx

上传人:b****5 文档编号:18523313 上传时间:2022-12-19 格式:DOCX 页数:23 大小:21.03KB
下载 相关 举报
DS18B20单总线多点式测温系统教学文案Word格式.docx_第1页
第1页 / 共23页
DS18B20单总线多点式测温系统教学文案Word格式.docx_第2页
第2页 / 共23页
DS18B20单总线多点式测温系统教学文案Word格式.docx_第3页
第3页 / 共23页
DS18B20单总线多点式测温系统教学文案Word格式.docx_第4页
第4页 / 共23页
DS18B20单总线多点式测温系统教学文案Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

DS18B20单总线多点式测温系统教学文案Word格式.docx

《DS18B20单总线多点式测温系统教学文案Word格式.docx》由会员分享,可在线阅读,更多相关《DS18B20单总线多点式测温系统教学文案Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

DS18B20单总线多点式测温系统教学文案Word格式.docx

write_data(0x80);

init(0x85);

write_data(0x74);

//temperature

init(0x86);

write_data(0x65);

init(0x87);

write_data(0x6d);

init(0x88);

write_data(0x70);

init(0x89);

init(0x8a);

write_data(0x72);

init(0x8b);

write_data(0x61);

init(0x8c);

init(0x8d);

write_data(0x75);

init(0x8e);

init(0x8f);

init(0xc0);

init(0xc1);

init(0xc2);

write_data(0x69);

//is:

init(0xc3);

write_data(0x73);

init(0xc4);

write_data(0x3a);

if((t/1000)!

=0)

{init(0xc5);

write_data(0x2d);

init(0xc6);

write_data(shu[t/1000]);

init(0xc7);

write_data(shu[t/100]);

}

else

write_data(0xfe);

init(0xc8);

write_data(0x2e);

init(0xc9);

write_data(shu[(t0)/10]);

init(0xca);

write_data(shu[t]);

init(0xcb);

write_data(0x27);

init(0xcc);

write_data(0x43);

init(0xcd);

init(0xce);

init(0xcf);

voidlcd_1602() 

//当为正温度时,液晶显示可以高位为0屏蔽.

init(0x84);

//temperature

if(t/10000!

write_data(shu[t/10000]);

}

{if((t/1000)!

{init(0xc5);

else

init(0xc8);

init(0xc9);

voidjiance() 

//初始化,即检测是否存在DS18B20.

{unsignedchark=0;

loop:

DS=1;

DS=0;

//主机将总线从高电平拉到低电平

del(100);

//持续400us~960us

DS=1;

//然后释放总线

del(10);

//DS18B20检测到总线上升沿后,等待15us~60u后发低电平。

k=DS;

del(20);

//低电平至少要持续60~240us

if(k==1) 

//60~240us内若为高电平则要重新检测。

gotoloop;

read() 

//从DS18B20中读出数据

{unsignedchari;

unsignedlongdate=0;

for(i=0;

i<

16;

i++)

{DS=0;

//主机在某一时刻将总线从高电平拉到低电平.

date>

>

=1;

del(3);

//保持15us将总线拉到高电平,产生读时间隙

if(DS) 

date|=0x8000;

del(8);

//读数据需要持续35us~60us.

return(date);

void 

main()

{unsignedlong 

flag=0;

 

EA=0;

SP=0X60;

init(0x01);

//对液晶屏初始化

init(0x38);

init(0x0c);

init(0x06);

while

(1)

jiance();

//对DS18B20初始化

matchrom();

write(0x44);

//启动温度变换

del(100);

jiance();

if(f==1)

{f=0;

write(0xbe);

//读暂存存储器

t=read();

flag=t&

0x8000;

//对读取的数据进行处理

if(flag==0x8000)

{t=~t;

t=t+1;

t=t*25;

t>

=2;

flcd_1602();

lcd_1602();

头文件:

#ifndef__XUANZE_H__

#define__XUANZE_H__

unsignedchark,f=0;

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^2;

sbitDS=P1^1;

voiddel(intcount) 

//延时程序

{while(count--)

;

voiddelay(unsignedintcount)//延时程序

{intp;

while(count--)

for(p=0;

p<

125;

p++);

voidwrite(unsignedchardate)//向DS18B20中写入数据

{inti;

8;

i++) 

//由于是单总线每次只能写一位,一个字节需循环8次

{DS=0;

//主机在某一时刻将总线从高电平拉到低电平,产生写时间隙

DS=date&

0x01;

//写入数据。

del(15);

//写如数据要15us,ds18b20对数据采样需要15us~60us,共需35us~70us.

voidinit(unsignedintn)// 

RW=0,RS=0;

向指令寄存器中写入命令,即对1602初始化。

{delay(10);

E=0;

RS=0;

RW=0;

E=1;

P0=n;

voidwrite_data(unsignedcharn)//RS=1,RW=0;

向数据寄存器中写入数据,即显示的数符。

{delay(10);

E=0;

RS=1;

RW=0;

E=1;

P0=n;

voidmatchrom() 

//匹配ROM

{

k=P3;

switch(k) 

{case0:

f=1;

write_data(0x57);

//which

write_data(0x68);

init(0x83);

write_data(0x63);

write_data(0x79);

//you 

write_data(0x6f);

//want 

write_data(0x6e);

//press

init(0xc5);

init(0xca);

init(0xcb);

init(0xcc);

write_data(0x6b);

//key 

init(0xcd);

init(0xce);

init(0xcf);

}break;

case1:

write_data(0x31);

//NO1

write(0x55);

write(0x28);

write(0x30);

write(0xc5);

write(0xb8);

write(0x00);

write(0x8e);

case2:

write_data(0x32);

//NO2

write(0x31);

write(0xb9);

case4:

write_data(0x33);

//NO3

write(0x32);

write(0xe0);

case8:

write_data(0x34);

//NO4

write(0x33);

write(0xd7);

break;

case16:

write_data(0x35);

//NO5

write(0x34);

write(0x52);

case32:

write_data(0x36);

//NO6

write(0x35);

write(0x65);

case64:

write_data(0x37);

//NO7

write(0x36);

write(0x3c);

}break;

case128:

write_data(0x38);

//NO8

write(0x37);

write(0x0b);

default:

write_data(0x50);

//please

write_data(0x6c);

//one

//key

write_data(

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

当前位置:首页 > 考试认证 > 司法考试

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

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