付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省资阳市2026-2027学年高三第六次模拟考试物理试卷(含答案解析)
- 超级电容器纤维素隔膜纸及纤维素基半固态电池隔膜纸生产项目可行性研究报告模板立项申批备案
- 2025-2026学年江苏省南通市数学四年级下学期期末检测试题(含答案解析)
- 企业安全生产台账规范管理课件
- 季度消防安全知识考核复盘
- 跨境算力中心与轮胎热解协同中跨国热解油气波动算力-基于国际废轮胎热解协会算力中心热解油气供电调度指南规范分析
- 2026 年新生军训军训安全红线不可逾越警示教育
- 培训机构日常安全管理课
- 中国动力中国船用柴油机龙头中小燃气轮机领先者
- 原发性支气管癌患者的护理
- 2026年面条行业分析报告及未来发展趋势报告
- 雨课堂学堂在线学堂云《医学研究生临床研究(山东)》单元测试考核答案
- 2026年陆军战士留疆任职考试真题(附答案)
- AI赋能千年漆艺:传统漆器制作工艺的智能创新之路
- 配送企业员工工作制度
- 新课堂、新课堂、新高考++2025年版《普通高中语文课程标准》解读
- 2026年高考物理二轮复习(全国)专题01 力与物体的平衡(专练)(原卷版)
- 特殊食品监管培训课件
- 2026届广东省广州越秀区培正中学高一数学第一学期期末监测试题含解析
- 房地产销售团队绩效考核标准细则
- 急诊成人社区获得性肺炎临床实践指南(2024年版)解读课件
评论
0/150
提交评论