标题:
我的DS18B20序列号读取 单片机代码
[打印本页]
作者:
light51com
时间:
2020-6-27 14:40
标题:
我的DS18B20序列号读取 单片机代码
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^7;
bdata uchar dat;
sbit dat0=dat^0;
sbit dat7=dat^7;
sbit RS = P2^6;
sbit RW = P2^5;
sbit E = P2^7;
sfr LCD=0x80;
sbit BF=LCD^7;
void delay15(uchar n)
{ do {
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
n--;
}while(n);
}
bit reset(void)
{
bit err;
DQ=0;
delay15(40);
DQ=1;
delay15(4);
err=DQ;
delay15(18);
return(err);
}
void wrbyte(uchar d)
{
uchar i;
dat=d;
for(i=8;i>0;i--)
{
DQ=0;
delay15(1);
DQ=dat0;
dat=dat>>1;
delay15(1);
DQ=1;
}
}
uchar rdbyte(void)
{
uchar i;
dat=0;
for(i=8;i>0;i--)
{
dat=dat>>1;
DQ=0;
_nop_();
DQ=1;
delay15(1);
dat7=DQ;
delay15(4);
}
return(dat);
}
void readid(uchar id[])
{
uchar n;
reset();
wrbyte(0x33);
for(n=0;n<=8;n++)
{
id[n]=rdbyte();
}
}
void lcd_cmd(uchar cmd)
{
LCD=cmd;
RS=0;
RW=0;
E=1;
_nop_();
E=0;
while(1)
{
LCD=0xff;
RS=0;
RW=1;
E=0;
_nop_();
E = 1;
if(BF==0)break;
}
}
void lcd_dat(uchar dat)
{
LCD =dat;
RS = 1;
RW = 0;
E = 1;
_nop_();
E = 0;
while(1)
{
LCD = 0xff;
RS = 0;
RW = 1;
E = 0;
_nop_();
E = 1;
if(BF==0)break;
dat=LCD;
}
}
void main()
{
uchar *p;
uint i;
uchar str[8];
uchar id1[8]={0,0,0,0,0,0,0,0};
readid(id1);
lcd_cmd(0x01);
lcd_cmd(0x3c);
lcd_cmd(0x0c);
for(i=0;i<8;i++)
{
if((id1[i]>>4)>=10)
str[2*i]=(id1[i]>>4)+0x37;
else
str[2*i]=(id1[i]>>4)+0x30;
if((id1[i]&0x0f)>=10)
str[2*i+1]=(id1[i]&0x0f)+0x37;
else
str[2*i+1]=(id1[i]&0x0f)+0x30;
}
lcd_cmd(0x82);
p=str;
for(i=1;i<9;i++)
{
lcd_dat(*p++);
if (i%2==0)
{ lcd_dat(0x20);}
}
lcd_cmd(0xc2);
p=str+8;
for(i=1;i<9;i++)
{
lcd_dat(*p++);
if (i%2==0)
lcd_dat(0x20);
}
while(1);
}
复制代码
DS18B20序列号读取.zip
2020-6-27 14:39 上传
点击文件名下载附件
下载积分: 黑币 -5
47.14 KB, 下载次数: 16, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1