DS18B20与51单片机多路温度传感器Word文档下载推荐.docx
- 文档编号:16430441
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:13
- 大小:29.66KB
DS18B20与51单片机多路温度传感器Word文档下载推荐.docx
《DS18B20与51单片机多路温度传感器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DS18B20与51单片机多路温度传感器Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
ucharsecond_line[16]="
C:
000.0D:
//LCD第二行显示缓存数组
//************************************
//延时程序
voiddelay(unsignedintN)
{
unsignedinti;
for(i=0;
i<
N;
i++);
}
//************************************
//LCD1602测忙
voidcheck_busy(void)
while
(1)
{
P1=0xff;
E=0;
_nop_();
RS=0;
RW=1;
E=1;
if((P1&
0x80)==0)
break;
}
//LCD1602写命令
voidwrite_command(uchartempdata)
E=0;
RW=0;
P1=tempdata;
check_busy();
//LCD1602写数据
voidwrite_data(uchartempdata)
RS=1;
//初始化LCD1602
voidinit_lcd1602()
write_command(0x01);
//清除屏幕
write_command(0x38);
//功能设定(8位,2行,5*7点阵式)
write_command(0x0c);
//显示器ON,光标OFF,闪烁OFF
write_command(0x06);
//地址加1
//初始化ds18b20
bitresetpulse(void)
DQ=0;
delay(40);
//延时500us
DQ=1;
delay(4);
//延时60us
return(DQ);
//读取P1.0的状态
voidds18b20_init(void)
if(!
resetpulse())//收到ds18b20的应答信号
{
DQ=1;
delay(40);
//延时240us
break;
}
else
resetpulse();
//否则再发复位信号
//读ds18b20一位
ucharread_bit(void)
DQ=0;
_nop_();
DQ=1;
delay
(2);
return(DQ);
//读ds18b20一个字节
ucharread_byte(void)
uchari,m,receive_data;
m=1;
receive_data=0;
for(i=0;
8;
i++)
if(read_bit())
{
receive_data=receive_data+(m<
<
i);
}
delay(7);
return(receive_data);
//向ds18b20写一位
voidwrite_bit(ucharbitval)
if(bitval==1)
delay(5);
//向DS18B20写一个字节命令
voidwrite_byte(ucharval)
uchari,temp;
{
temp=val>
>
i;
temp=temp&
0x01;
write_bit(temp);
delay(5);
//*************************************
//64位的ROM序列号匹配
bitmatch_rom(uchar*rom)
uchari;
ds18b20_init();
write_byte(0x55);
for(i=8;
i>
0;
i--)
write_byte(*(rom+i-1));
return1;
//从ds18b20中读出64位序列号
/*uchar*read_rom(void)
ucharrom[8],i;
write_byte(0x33);
rom[i-1]=read_byte();
return&
rom[0];
}*/
//将64位序列号显示在LCD上显示出来
/*voidprint_char(uchara)
if(a>
=0&
&
a<
=9)
write_data(a+0x30);
elseif(a>
=0x0a&
=0x0f)
write_data(a+0x37);
}*/
//温度转换,将从ds18b20中读出来的温度值
//转化成十进制的温度值,并存放显示缓存
voidconvert_T(uchartemp_data_h,uchartemp_data_l)
uchartemp;
if((temp_data_h&
0xf0)==0xf0)//如果温度寄存器里的高位为1,
{//则温度为负
temp_data_l=~temp_data_l;
//负温度将补码转成二进制,
if(temp_data_l==0xff)//取反再加1
temp_data_l=temp_data_l+0x01;
temp_data_h=~temp_data_h;
temp_data_h=temp_data_h+0x01;
else
LCD_0=dot_tab[temp_data_l&
0x0f];
//查表得小数位的值
temp=((temp_data_l&
0xf0)>
4)|((temp_data_h&
0x0f)<
4);
LCD_3='
-'
//显示"
-"
号
LCD_2=LCDData[(temp%100)/10];
//查表得负温度温度十位
LCD_1=LCDData[(temp%100)%10];
//查表得负温度个位
else//温度为正
{
LCD_0=dot_tab[temp_data_l&
LCD_3=LCDData[temp/100];
//查表得温度百位
//查表得温度十位
//查表得温度个位
}
voiddisplay(void)
write_command(0x80);
16;
write_data(first_line[i]);
write_command(0xc0);
write_data(second_line[i]);
voidmain(void)
{
uchartemp_data_l,temp_data_h;
/*uchar*ds18b20_rom;
*/
init_lcd1602();
/*while
(1)
ds18b20_rom=read_rom();
//读序列号
i++)
ds18b20_romA[i]=*ds18b20_rom;
ds18b20_rom++;
write_command(0x80);
i++)//显示序列号
print_char(ds18b20_romA[i]/16);
print_char(ds18b20_romA[i]%16);
}*/
ds18b20_init();
write_byte(0xcc);
write_byte(0x44);
//启动温度转换
delay(700);
match_rom(ds18b20_romA);
//匹配第一路
write_byte(0xbe);
//读温度
temp_data_l=read_byte();
//温度低8位
temp_data_h=read_byte();
//温度高8位
convert_T(temp_data_h,temp_data_l);
first_line[2]=LCD_3;
//温度转换后的各位
first_line[3]=LCD_2;
//分别存入显示缓存数组中
first_line[4]=LCD_1;
first_line[6]=LCD_0;
match_rom(ds18b20_romB);
//匹配第二路
first_line[10]=LCD_3;
//温度转换后的各位
first_line[11]=LCD_2;
first_line[12]=LCD_1;
first_line[14]=LCD_0;
display();
match_rom(ds18b20_romC);
//匹配第三路
temp_data_l=read_byte();
second_line[2]=LCD_3;
second_line[3]=LCD_2;
second_line[4]=LCD_1;
second_line[6]=LCD_0;
match_rom(ds18b20_romD);
//匹配第四路
second_line[10]=LCD_3;
//温度转换后的各位
second_line[11]=LCD_2;
second_line[12]=LCD_1;
second_line[14]=LCD_0;
仅供个人用于学习、研究;
不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;
notforcommercialuse.
Nurfü
rdenpersö
nlichenfü
rStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'
é
tudeetlarechercheuniquementà
desfinspersonnelles;
pasà
desfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18B20 51 单片机 温度传感器