VHDL语言编写DS18B20温度传感器程序详解

        网上关于DS18B20的资料很多,但是光有程序,没有讲解,导致身边很多同学即使拿到源码也无从下手,故写此篇文章,一方面接收DB18B20,一方结合原理详细讲解源码的意义。

器件原理:

原理图:

        基本上所有的重要信息都在这张图上啦。很独特的一个点就是数据输入输出是共用一个管脚DQ的。
对于唯一的数据口,需要一定的执行顺讯:

执行序列


如图,每一次操作都必须满足上述顺序,若是缺少或者混乱,器件将不会返回值。

    初始化:

       通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个从总线控制器发出的复位脉冲和其后由从机发出的存在脉冲,存在脉冲让总线控制器知道DB18B20存在且已经做好操作准备。

    ROM指令:

       这里采用单从机模式(只有一个DB18B20),只挑取几个比较重要的指令做以说明

      READ ROM[33h](读取ROM指令):

         只有在总线上存在单只DS18B20的时候才能使用这条命令。该命令允许总线控制器在不使用搜索ROM指令的情况下读取从机的64位片序列码。如果总线上有不止一只从机,当所有从机试图同时传送信号时就会发生数据冲突。

       SKIP ROM[CCh](忽略ROM指令) :     

          这条指令允许总线控制器不用提供64位ROM编码就是用功能指令。例如,总线控制器可以先发出一条忽略ROM指令,然后发出温度转换指令[44h],从而完成温度转换操作。注意:当只有一直从机在总线上时,无论如何,忽略ROM指令之后只能跟着发出一条读取暂存器指令[BEh]。

        功能指令:

        在总线控制器发给欲连接的DS18B20一条ROM指令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。

       CONVERT T[44h](温度转换指令):

          这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以2个字节的形式被存储在告诉暂存器中,而后DS18B20保存等待状态。如果DS18B20以外部电源供电,总线控制器在发出该命令后跟着发出读时序,DS18B20如果处于转换中,将在总线上返回0,若温度转换完成,则返回1。

        READ SCRATCHPAD(读取暂存器指令): 

        这条命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9字节(字节8)读完,如果不想读完所有字节,控制器可以在任何时间发出复位命令来终止读取。


时序:

        时序对于器件来说是很重要的,如果时序不对,器件就不能正常工作。 

      复位序列:复位和存在脉冲:

        和DS18B20间 的任何通讯都需要以初始化序列开始。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接收数据。在初始化序列期间,总线控制器拉低总线并保持480us以发出(TX)一个复位脉冲,然后释放总线,进入接受状态(RX)。单总线由5K上拉电阻拉倒高电平。当DS18B20探测到I/O引脚上的上升沿后,等待15~60us,然后发出一个由60~240us低电平信号构成的存在脉冲。
        初始化时序见图:

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值