关于DS18B20的序列号读取程序.docx

上传人:牧羊曲112 文档编号:3305929 上传时间:2023-03-12 格式:DOCX 页数:4 大小:37.51KB
返回 下载 相关 举报
关于DS18B20的序列号读取程序.docx_第1页
第1页 / 共4页
关于DS18B20的序列号读取程序.docx_第2页
第2页 / 共4页
关于DS18B20的序列号读取程序.docx_第3页
第3页 / 共4页
关于DS18B20的序列号读取程序.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《关于DS18B20的序列号读取程序.docx》由会员分享,可在线阅读,更多相关《关于DS18B20的序列号读取程序.docx(4页珍藏版)》请在三一办公上搜索。

1、关于DS18B20的序列号读取程序关于DS18B20的序列号读取程序,很多人都是半遮半掩,我在网上搜了半天也没有找到一个完好的程序,所以就用网上的程序修改了一个,本程序经本人实测绝对可用,各位网友只需修改一下端口就可以直接使用。 /以下是DS1820序列号读取程序 #include #define uchar unsigned char #define uint unsigned int sbit DS= P33; /根据实实际情况设定DS18B20端口 uchar code table=0123456789ABCDEF; /用于1602显示 uchar sn8; /4个器件的序列号,先读出单

2、个序列号后填上才可以读取温度 /*/ /*1602部分*/ sbit rs=P10; sbit rw=P11; sbit lcden=P12; void delay1602(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void write_com(uchar com)/写命令 rs=0; lcden=0; P2=com; delay1602(5); lcden=1; delay1602(5); lcden=0; void write_date(uchar date)/写数据 rs=1; lcden=0; P2=date; delay16

3、02(5); lcden=1; delay1602(5); lcden=0; void init_lcd /初始化 lcden=0; rw=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); /*/ /*DS18B20部分*/ void delayb(uint count) /延时 uint i; while(count) i=200; while(i0)i-; count-; void dsreset /DS18B20初始化 uint i; DS=0; i=103; w

4、hile(i0)i-; DS=1; i=4; while(i0)i-; bit readbit / 读一位 uint i; bit dat; DS=0;i+; /小延时一下 DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat); uchar readbyte /读一个字节 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=readbit; dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat); /将一个字节数据返回 void writebyte(uchar dat) /写一

5、个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j1; if(testb) / 写1部分 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /写0部分 i=8;while(i0)i-; DS=1; i+;i+; void rom /读取序列号 uchar i; dsreset; /复位 delayb(1); /延时 writebyte(0x33); /发送读序列号子程序 for(i=0;i8;i+) /因为是8个字节,所以要读取8次 sni=readbyte; /读取序列号 /*/ /*主程序及显示部分*/ main uchar i,c,l,h; init_lcd; /初始化1602 while(1) rom; /调用读序列号子程序 delayb(100); /如果是不断地读取的话可以不延时 for(i=0;i4; /获取低四位 h=sni&0x0f; /获取高四位 write_com(0x80+c); /显示位置 write_date(tablel); /显示低四位的16进制码 write_date(tableh); /显示高四位的16进制码 c+;c+; /每显示一个字节,显示位置右移两位 while(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号