



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2029年中国头孢菌素行业市场调查研究及发展战略规划报告
- 第五单元《圆的面积》(教学设计)-2024-2025学年人教版六年级数学上册
- 学校翻新意向金合同样本
- 电梯改造方案的选择依据
- 二零二五年度农业项目经济效益责任协议
- 大学通识教育的国际化视野与实践
- 2025年度餐饮服务业试用期劳动合同范本
- 形神拳 教学设计-2024-2025学年高一上学期体育与健康人教版必修第一册
- 城市休闲公园项目可行性研究报告
- 16-1《赤壁赋》(教学设计)高一语文同步高效课堂(统编版 必修上册)
- 蔬菜采购项目投标书
- 肩周炎康复护理
- 2022年安徽管子文化旅游集团有限公司招聘笔试试题及答案解析
- SAPPM设备管理解决方案
- Q-HN-1-0000.08.004《风力发电场电能质量监督技术标准》
- 多指畸形-课件
- 5G NSA站点开通指导书(临时IP开站)
- 死亡患者尸检同意书
- 正常心电图学课件
- 人教部编版道德与法治二年级下册优秀课件(全册)
- 宗教与社会课件
评论
0/150
提交评论