《DS18B20操作时序详解》由会员分享,可在线阅读,更多相关《DS18B20操作时序详解(6页珍藏版)》请在金锄头文库上搜索。
1、1. DS18B20复位程序分析单片机发送复位脉冲低电平保持至少480us释放总线进入接收状态,等待15us-60usDS18B20发出存在脉冲脉冲持续60-240usvoid reset()uint i;/i 定义为uchar型ds=0;i=103;while(i0)i-;ds=1;while(i0)i-;/在这里不做存在检测2.DS18B20写程序时序分析:单片机由高电平拉低至低电平产生写时间隙15us之后就需要将所需要写的位送到总线上面DS18B20在开始之后的15-60us内对总线进行采样(注意采样时间)uint dswrite(uchar dat)uchar i;uint j;sbi
2、t tempbyte;for(i=0;i=1;/从最低位开始每一位送到tempbyte临时位/总线拉低为低电平if(tempbyte)/写1ds=0;j+;j+;/延时个13usds=1;j=8;while(j0)j-/延时个71uselseds=0;j=8;while(j0)j-;ds=1;j+;j+;/保证大于1us-3.DS18B20读时序时序分析单片机从高电平拉低至低电平低电平保持4us后将总线拉高产生读时间隙读时间在4us后到15us之前(注意一定在15us之前)读时间才有效从拉低总线60us-120us之间释放总线(注意是在这个时间间隙之间,严格按照时序操作)bit tempbit()uint j;bit dat;ds=0;j+;/延时个4usds=1;j+;j+;/仿真结果在8.86us左右dat=ds;/确保在15us之前j=8;while(j0)j-;ds=1;return dat;uchar dsread()/用uchar 来装读到的数据 足够uchar i,j,dat;for(i=0;i8;i+)j=tempbit();dat=(j1);/因为首先读到是低位的数据,后面读的数据加到高位,并依 /此往低位挪动return dat;