付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于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年5月锅炉工考试题有答案
- 2026年内蒙古自治区烟草专卖局人员招聘笔试备考题库及详细答案解析
- 2026年厦门象屿集团有限公司人员招聘考试模拟试题及详细答案解析
- 2026年深圳市创新投资集团有限公司人员招聘考试备考题库及详细答案解析
- 2026年石家庄绿炬种子机械厂人员招聘笔试模拟试题及详细答案解析
- 2026年中国烟草总公司新疆维吾尔自治区公司人员招聘笔试备考试题及详细答案解析
- 2026年肇庆市烟草专卖局人员招聘考试备考题库及详细答案解析
- 2026年中国石油四川石化有限责任公司人员招聘考试备考试题及详细答案解析
- 2026年福建省冶金控股有限公司人员招聘笔试备考试题及详细答案解析
- 2026年北京市中考数学试卷附答案
- 六年级上册数学《解决问题一》大单元教学设计(北京版)
- 厂区灭火器检查与维护
- 2026年(交安C证)公路工程施工企业安全生产管理人员考试试题含答案
- 部编版小学一年级语文单韵母aoeiuu课件
- 谐音梗挑战课件
- 2026年安徽省中考数学试卷(含答案及解析)
- 湖北省农发集团校招笔试考试信息
- 分数有高低人生无高下【课件】-2025-2026学年高一下学期考后分析主题班会
- 生理学 课件:第10章 感觉器官
- 2025年环卫保洁作业安全培训考试题及答案
评论
0/150
提交评论