DS18B位序列码读取程序Word格式文档下载.docx

上传人:b****6 文档编号:21288980 上传时间:2023-01-29 格式:DOCX 页数:7 大小:15.49KB
下载 相关 举报
DS18B位序列码读取程序Word格式文档下载.docx_第1页
第1页 / 共7页
DS18B位序列码读取程序Word格式文档下载.docx_第2页
第2页 / 共7页
DS18B位序列码读取程序Word格式文档下载.docx_第3页
第3页 / 共7页
DS18B位序列码读取程序Word格式文档下载.docx_第4页
第4页 / 共7页
DS18B位序列码读取程序Word格式文档下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

DS18B位序列码读取程序Word格式文档下载.docx

《DS18B位序列码读取程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《DS18B位序列码读取程序Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。

DS18B位序列码读取程序Word格式文档下载.docx

*/

#include;

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P2^2;

//定义DS18B20端口DQ

sbitBEEP=P2^3;

//蜂鸣器驱动线

bitpresence;

sbitLCD_RS=P3^5;

sbitLCD_RW=P3^6;

sbitLCD_EN=P3^4;

ucharcodecdis1[]={&

quot;

DS18B20OK

&

};

ucharcodecdis2[]={&

ucharcodecdis3[]={&

DS18B20ERR0R&

ucharcodecdis4[]={&

PLEASECHECK&

unsignedchardatadisplay[2]={0x00,0x00};

unsignedchardataRomCode[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

unsignedcharTemp;

unsignedcharcrc;

voidbeep();

#definedelayNOP();

{_nop_();

_nop_();

voiddelay1(intms)

{

unsignedchary;

while(ms--)

for(y=0;

y;

0;

i--)

//{

//read_bit();

//

DQ=0;

//给脉冲信号

dat>

;

>

=1;

DQ=1;

for(i=0;

i;

i--)

for(i=0;

i;

temp&

=0x01;

write_bit(temp);

dat>

=1;

}

Delay(5);

}

/*读取64位序列码

Read_RomCord(void)

unsignedcharj;

Init_DS18B20();

WriteOneChar(0x33);

//读序列码的操作

for(j=0;

j;

else{

crc^=0x18;

//CRC=X8+X5+X4+1

crc>

crc|=0x80;

crcbuff>

returncrc;

/*数据转换与显示

Disp_RomCode()

ucharj;

ucharH_num=0x40;

//LCD第二行初始位置

for(j=0;

j;

4);

if(display[0]>

9)

{display[0]=display[0]+0x37;

}

else{display[0]=display[0]+0x30;

lcd_pos(H_num);

lcd_wdat(display[0]);

//高位数显示

H_num++;

display[1]=(Temp&

0x0f);

if(display[1]>

{display[1]=display[1]+0x37;

else{display[1]=display[1]+0x30;

lcd_wdat(display[1]);

//低位数显示

/*蜂鸣器响一声

voidbeep()

{

unsignedchary;

for(y=0;

y<

100;

y++)

Delay(60);

BEEP=!

BEEP;

//BEEP取反

BEEP=1;

//关闭蜂鸣器

Delay(40000);

/*DS18B20OK显示菜单

voidOk_Menu()

ucharm;

lcd_init();

//初始化LCD

lcd_pos(0);

//设置显示位置为第一行的第1个字符

m=0;

while(cdis1[m]!

='

\0'

//显示字符

lcd_wdat(cdis1[m]);

m++;

lcd_pos(0x40);

//设置显示位置为第二行第1个字符

while(cdis2[m]!

lcd_wdat(cdis2[m]);

/*DS18B20ERROR显示菜单

voidError_Menu()

while(cdis3[m]!

lcd_wdat(cdis3[m]);

while(cdis4[m]!

lcd_wdat(cdis4[m]);

/*主函数

voidmain()

P0=0xff;

P2=0xff;

while

(1)

Ok_Menu();

Read_RomCord();

//读取64位序列码

CRC8();

//CRC效验

if(crc==0)

//CRC效验正确

Disp_RomCode();

//显示64位序列码

beep();

while(!

presence)

Init_DS18B20();

delay1(1000);

Error_Menu();

do

while(presence);

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

当前位置:首页 > 高等教育 > 工学

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

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