当前位置: 首页 > news >正文

网站怎么做301重定向自己制作一个网页

网站怎么做301重定向,自己制作一个网页,网站建设评选打分,一流的网站建设公司1.首先我们知道DS18B20是单总线协议,只有一根数据线。所以Data数据线即使发送端又是接收端,同时DS18B20内部接了弱上拉电阻(如图一所示),数据线默认为高电平。有了这些概念,我们就能进行下一步。 图一&…

1.首先我们知道DS18B20是单总线协议,只有一根数据线。所以Data数据线即使发送端又是接收端,同时DS18B20内部接了弱上拉电阻(如图一所示),数据线默认为高电平。有了这些概念,我们就能进行下一步。

                                               图一(截取DS18B20芯片手册)

2.初始化DS18B20

     看图二可知,首先我们将总线从高拉低,保持480us左右,然后释放总线(没人拉低,默认高电平),此时总线上为高电平。然后等待15-60us,等待DS18B20模块将总线拉低。(如果拉低则说明DS18B20响应成功),DS18B20拉低60-240us后,释放总线。初始化完成。

                                                              图二

 3.向DS18B20写入数据。

        3.1 向DS18B20写0。

       首先将总线由高拉低,低电平保持15us到60us,然后释放总线。写入0完成。

        3.2 向DS18B20写1。

        将总线由高拉低,低电平保持1-15us(看图三可知,低电平时间要低于15us),再释放总线。

 

                                                                 图三

4.读取DS18B20寄存器中数据

        4.1 读数据0

将总线由高拉低,保持1-15us。如果DS18B20中数据是0,则会将总线拉低。此时,总线上为低电平。我们要在60us以内读取数据(图四可知,60us以内DS18B20会释放总线)。否则可能会读到错误数据。

        4.2 读数据1

将总线由高拉低,保持1-15us,如果数据是1,DS18B20会释放总线,总线上为高电平。然后在15us以后读取数据。

   

                                                                    图四

5.DS18B20一些命令

  5.1 0xCC→跳过ROM  

 5.2 其他命令

  0x44→开始温度转换指令 ,0xBE→读取数据寄存器指令

                                                                     图五

6.DS18B20数据寄存器

 这里也比较关键,所以拎出来讲一下。

首先DS18B20的数据寄存器是16位,其中寄存器高字节的高5位的S表示符号位,其余3位才是表示数据。这里就浅讲一下,后面结合代码来解析一下。

                                                                     图六 

 7.代码实例

    声明:首先这里面的延时都是按照经验值,就是通过实践,得出比较准确的延时。

    注:这里使用的是12M频率的单片机,如果是1M可以把for循环去掉

延时函数如下:

  sbit DQ=P1^4;
//我这里是P1^4连接了DS18B20的数据线。
//你们根据自己的单片机原理图查询
void Delay_OneWire(unsigned int t)  
{unsigned char i;while(t--){for(i=0;i<12;i++);}
}

        7.1 DS18B20初始化

bit init_ds18b20(void)
{bit initflag = 0;DQ = 1;  Delay_OneWire(12);DQ = 0;  //拉低总线Delay_OneWire(80);DQ = 1;Delay_OneWire(10); //等待DS18B20拉低initflag = DQ;     //获取总线数据Delay_OneWire(5);return initflag;  
}

         7.2 向DS18B20写入一字节数据

void Write_DS18B20(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){DQ = 0;  //拉低DQ = dat&0x01; //获取dat最后一位数据Delay_OneWire(5);//写入数据DQ = 1;         //释放总线dat >>= 1;      //dat右移一位}Delay_OneWire(5);
}

        7.3 读取DS18B20数据寄存器的值

unsigned char Read_DS18B20(void)
{unsigned char i;unsigned char dat;//循环8次,读一个字节for(i=0;i<8;i++){DQ = 0;  //拉低dat >>= 1; DQ = 1;  //释放总线if(DQ)  // 因为dat>>1位默认是0 ,如果DQ为0,就不需要赋0了{dat |= 0x80; //给dat赋1}	    Delay_OneWire(5);}return dat;
}

        7.4 读取温度

unsigned int  get_temp()
{ unsigned int result;float i;unsigned char low,high;init_ds18b20();Write_DS18B20(0xcc);//跳过romWrite_DS18B20(0x44);//开始转换init_ds18b20();Write_DS18B20(0xcc);//跳过romWrite_DS18B20(0xbe);//开始转换low=Read_DS18B20(); //先读取低字节high=Read_DS18B20();//再读取高字节result =high&0x0f;  //获取高字节低4位数据(1位符号位,3位数据位)result<<=8;         //左移8位result=result|low;  //或上低字节,拼成16位数据。i=result*0.0625;    //为什么乘0.0625,下面讲result=i*100;       //温度值扩大100倍,方便数码管显示return result;      //返回温度值
}

这里为什么最后的结果result需要乘以*0.0625。我们上面讲过DS18B20的数据寄存器,其实高字节的低3位才是数据位。 如高字节的最后一位本来是 2^4,假如有这个数据。则数据寄存器这个位为1,因为我们已经左移了8位,则变成了2^8.则实际上扩大了2^8/2^4=2^4=16,比实际结果扩大了16倍,所以我们需要乘以0.0625,缩小16倍。这样才能得到真实值。

所以整体原因是因为result左移8位,导致数据扩大了16倍,所以result需要乘以0.0625缩小16倍!

8.结语 

 这次也是通过DS18B20的芯片手册来讲解如何读取DS18B20的数据,以及最后转化为真实温度。   最后也是用代码实例来巩固理论,以及验证理论。

        

http://www.zhongyajixie.com/news/62165.html

相关文章:

  • 网站建设价格为何相差甚大徐州seo外包公司
  • 网站 wordpress网络营销策划书范文模板
  • 南皮 网站网络游戏推广
  • 网络营销导向企业网站建设的原则包括深圳企业黄页网
  • wordpress 哪个主题杭州网站优化方案
  • 建设自己的网站百度排名优化工具
  • 潍坊网站建设报价营销技巧和营销方法视频
  • 网站建设元seo免费优化工具
  • 南昌市城乡建设委员会门户网站自动seo系统
  • 重庆微信网站制作价格新媒体营销推广方案
  • 延庆宜昌网站建设如何优化seo
  • 中企动力做网站要全款晚上看b站
  • 陕西手机网站制作重庆百度搜索优化
  • 青岛做网站皆赴青岛博百度服务中心人工24小时电话
  • 软件制作器手机版下载长清区seo网络优化软件
  • 固原市住房和城乡建设局网站全网营销课程
  • 旅游网站前端模板简单的个人主页网站制作
  • 怎样看一个网站的信息吗设计网络营销方案
  • 歪咪小麻花官方网站怎么做零售西安百度推广代理商
  • 网站是怎么做的吗新闻10 30字
  • 样本之家登录网站广西疫情最新消息
  • 营销型网站建设策划2022年大事热点新闻
  • 国外平面设计网站大全网站制作维护
  • 怎么判断公司是不是外包网站优化的方法
  • wordpress搜索结果页样式优化网站找哪家
  • 毕业设计网站最容易做什莫类型58百度搜索引擎
  • vps云服务器网站优化怎么做
  • 做ppt模仿网站长尾关键词挖掘精灵官网
  • 松江做网站需要多少钱百度24小时客服电话136
  • 武汉做网站冰洁佛山网站营销推广