



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于DS18B20的序列号读取程序,很多人都是半遮半掩,我在网上搜了半天也没有找到一个完好的程序,所以就用网上的程序修改了一个,本程序经本人实测绝对可用,各位网友只需修改一下端口就可以直接使用。//以下是DS1820序列号读取程序
#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitDS=P3^3;//根据实实际情况设定DS18B20端口
ucharcodetable[]={"0123456789ABCDEF"};//用于1602显示
ucharsn[8];//4个器件的序列号,先读出单个序列号后填上才可以读取温度
/**************************************/
/************1602部分******************/
sbitrs=P1^0;
sbitrw=P1^1;
sbitlcden=P1^2;
voiddelay1602(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}voidwrite_com(ucharcom)//写命令
{
rs=0;
lcden=0;
P2=com;
delay1602(5);
lcden=1;
delay1602(5);
lcden=0;
}voidwrite_date(uchardate)//写数据
{
rs=1;
lcden=0;
P2=date;
delay1602(5);
lcden=1;
delay1602(5);
lcden=0;
}voidinit_lcd()//初始化
{
lcden=0;
rw=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
/****************************************/
/*************DS18B20部分****************/
voiddelayb(uintcount)
//延时
{
uinti;
while(count)
{
i=200;
while(i>0)i--;
count--;
}
}
voiddsreset()
//DS18B20初始化
{
uinti;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
}bitreadbit()
//读一位
{
uinti;
bitdat;
DS=0;i++;
//小延时一下
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return(dat);
}ucharreadbyte()
//读一个字节
{
uchari,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=readbit();
dat=(j<<7)|(dat>>1);
//读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
//将一个字节数据返回
}voidwritebyte(uchardat)//写一个字节到DS18B20里
{
uinti;
ucharj;
bittestb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
//写1部分
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0;
//写0部分
i=8;while(i>0)i--;
DS=1;
i++;i++;
}
}
}voidrom()//读取序列号
{
uchari;
dsreset();//复位
delayb(1);//延时
writebyte(0x33);//发送读序列号子程序
for(i=0;i<8;i++)//因为是8个字节,所以要读取8次
{
sn[i]=readbyte();//读取序列号
}
}
/*****************************************/
/************主程序及显示部分*************/
main()
{
uchari,c,l,h;
init_lcd();//初始化1602
while(1)
{
rom();
//调用读序列号子程序
delayb(100);//如果是不断地读取的话可以不延时
for(i=0;i<8;i++)//因为是8个字节,所以要循环8次,每次显示一个字节
{
l=(sn[i]&0xf0)>>4;
//获取低四位
h=sn[i]&0x0f;
//获取高四位
write_com(0x80+c);
//显示位置
write_d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效战略2024年农作物种子繁育员考试复习试题及答案
- 2024年农作物种子繁育员考前心态调整试题及答案
- 农作物种子繁育员考试模拟试题及答案汇编
- 2024年种子繁育员职业指南试题及答案
- 深入探讨农作物繁育的行业挑战试题及答案
- 游泳救生员心理健康提升方案与课程设计的探讨试题及答案
- 让考生满意的农业植保员试题及答案
- 2024游泳救生员考试中的核心要素试题及答案
- 足球裁判员的职业素养与社会责任意识试题及答案
- 全面解析农业植保员考试试题及答案
- 六、七年级走进文言文译文
- 旅馆业特种行业许可审批告知承诺书
- 鼻前庭囊肿摘除术后护理查房
- 幼儿园中班美术《疯狂的头发》课件
- 2023自然语言处理导论
- 南京文化与历史课件
- 半月板损伤的护理查房
- 沪教版初中数学初二数学上册《二次根式的运算》教学设计
- 缓交诉讼费申请书模板
- 粮库出租合同书本
- 皮肤科治疗知情同意书
评论
0/150
提交评论