




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DS2431DS18B20onewire 读写程序最近公司有一个产品用到了 DS2431,我就将先前一个DS18B20的程序中加入了 DS2431的 按规定函数。先传给大家分享.大家可以使用,转载时请说明出处.此程序不够完善,希望能 支持多节点设备连接。单总线适用于单 主机系统,能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单总线器件,它们之间 的数据交换只通过一条信号线。当只有一个从机设备时,系统可按单节点系统操作;当有多个从机设备时,系统则按多节 点系统操作。以下是程序:#i ncludesystem.h#i ncludeo newire.hun sig nedchara_DS
2、24318;/codebylyxa ndRya nHsiung#defi neDS_DQNPORTAbits.RA4#defi neDS_DQ_OUTLATAbits.LATA4#defi neDS_DQ_TRISDTRISAbits.TRISA4 voiddelay_us( un sig nedchartime) /delayms=1usof20Mhzosc 不准确 1us while(time-);/*CRC校验*/un sig nedcharcrccheck( un sig nedchar*p, un sig nedcharle n)un sig nedcharbit0,cbit,r,t
3、emp,i,j,byte;temp=0;for(j=0;jle n;j+)byte=pj;for(i=0;i1;r=cbitAbit0;if(r=1)temp=tempA0x8c; byte=byte1;returntemp;/*检查 DS1820 是否存在:如果 DS1820 不存在返回 1,否则返回 0 */ unsignedcharOneWire_ack(void) unsignedcharack;DS_DQ_TRISD=O; 输出 DS_DQ_OUT=0;输出 LOW /delay_us(5OO);delay_us(250);delay_us(250);delay_us(100);DS
4、_DQ_OUT=1;输出 HIGH DS_DQ_TRISD=1;/RE2 输入 delay_us(40);/delay_us(45); if(DS_DQ_IN=1)ack=1;/ elseack=0;/delay_us(500); delay_us(250); delay_us(250); delay_us(100); returnack; /*从DS1820读1字节数据 */ unsignedcharOneWire_read(void) unsignedchari,byte,temp;byte=0x00;for(i=0;i8;i+)DS_DQ_TRISD=0;/RE2 输出 DS_DQ_OU
5、T=0;输出 LOW delay_us(1);/delay_us(3);DS_DQ_OUT=1;输出 HIGH DS_DQ_TRISD=1;/RE2 输入 delay_us(5);/delay_us(10);if(DS_DQN)byte|=0x80; 读入 if(i1; delay_us(120);/delay_us(100); DS_DQ_TRISD=0;/RE2 输出 delay_us(2);/delay_us(5);returnbyte;/*写 ROM 或存贮器命令到 DS1820*/ voidOneWire_write(unsignedcharcmd)unsignedchari,j;D
6、S_DQ_TRISD=0;/RE2 输出for(j=0;j1;/*匹配 DS1820*/ voidOneWire_match(unsignedchar*p) unsignedchari;doi=OneWire_ack();while(i=0x01);OneWire_write(0x55);for(i=0;i=4); tem8l=(unsignedchar)address;if(OneWire_ack()return;OneWire_write(0xcc);OneWire_write(0x0f); OneWire_write(tem8l); OneWire_write(tem8h); for(i
7、=0;i8;i+) data=*p_data; p_data+; OneWire_write(data);/ ClrWDT();delay_us(25); if(OneWire_ack()return;OneWire_write(0xcc);OneWire_write(0xAA);/ temp8=OneWire_read(); temp8=8; temp8+=OneWire_read(); errors=OneWire_read(); if(errors!=0x07) return0; if(OneWire_ack()return;OneWire_write(0xcc);OneWire_wri
8、te(0x55); OneWire_write(tem8l); OneWire_write(tem8h); OneWire_write(errors); for(i=0;i=4);tem8l=(unsignedchar)address;/跳过 ROM 匹配 /发送写暂存器命令 /发送地址低位 /发送地址高位if(OneWire_ack()return;OneWire_write(0xcc);OneWire_write(0x0f);OneWire_write(tem8l);OneWire_write(tem8h);for(i=0;i8;i+)data=*p_data;p_data+;OneWir
9、e_write(data);delay_us(25);if(OneWire_ack()return;OneWire_write(0xcc);/跳过 ROM 匹配OneWire_write(0xAA);/ 复制暂存器数据到存储器中temp8=OneWire_read();temp8=8;temp8+=OneWire_read(); errors=OneWire_read(); if(errors!=0x07)return0;/跳过 ROM 匹配 /发出启动转换命令 /发送地址低位 /发送地址高位if(OneWire_ack()return;OneWire_write(0xcc);OneWire_
10、write(0x55);OneWire_write(tem8l);OneWire_write(tem8h);OneWire_write(errors);for(i=0;iO;i-)a_DS24318-i=OneWire_read();/ ClrWDT();returna_DS2431;voidStart_convert_ds18b2O(void)unsignedchari=1;if(OneWire_ack()return;OneWire_write(0xcc);/ 跳过 ROM 匹配OneWire_write(0x44);启动 DS1820 转换 unsignedintRead_convert
11、_ds18b20(unsignedcharflag_language)unsignedchari;unsignedcharOneWire9;/存放从 DS18B20 读取的 9 字节数据 unsignedintOneWire_temp;unsignedcharflag_temp=0; if(OneWire_ack()return0x5fff;OneWire_write(0xcc);跳过 ROM 匹配On eWire_write(0xbe);读转换后温度值 for(i=0;i9;i+)OneWirei=OneWire_read();OneWire_temp=OneWire1; OneWire_temp=OneWire_temp=4;if(OneWire_temp0)OneWire_temp-; if(flag_language!=0)OneWire_temp=OneWire_temp*9/5; if(flag_temp=1) if(OneWire_temp=32)OneWire_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一啤酒活动方案
- 六一嬉水活动方案
- 六一幼儿园欢庆活动方案
- 六一康复教育活动方案
- 六一歌会活动策划方案
- 六一活动卖衣服活动方案
- 六一活动小卖部活动方案
- 六一活动晒娃活动方案
- 六一活动节活动方案
- 六一策划创意活动方案
- 脑梗死再灌注治疗【优质PPT】
- 制冷与空调作业
- 如何阅读小儿胸片
- 《计算机组成原理与系统结构》第十章 流水线技术
- YS/T 118.16-2012重有色冶金炉窑热平衡测定与计算方法(铜闪速炉)
- GB/T 23936-2018工业氟硅酸钠
- GB/T 11213.2-2007化纤用氢氧化钠氯化钠含量的测定分光光度法
- 事故隐患通报制度(5篇)
- Unit3Reading课件-高中英语牛津译林版(2020)必修第三册
- 5-1贯入法砌筑砂浆砂浆抗压强度检测方案
- 锚杆加固施工方案(通用版)
评论
0/150
提交评论