毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

基于51单片机的公路温度采集存储器设计+电路设计+源程序 第8页

更新时间:2016-10-16:  来源:毕业论文
3.2 子程序设计
3.2.1  DS18B20的通信协议
   
根据DS18B20的通讯协议,主机(单片机AT89S52)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行初始化操作,初始化成功后发送一条存储器操作命令(ROM指令),最后处理数据(发送RAM指令),这样才能对DS18B20进行预定的操作。所用各ROM、RAM操作指令分别如表3.1、表3.1所示。
  表3.1  ROM指令表   
指令 约定代码 功能
读ROM 33H 读DS18B20温度传感器ROM中的编码(即64位地址)
符合ROM 55H 发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之做出响应,为下一步对该DS18B20的读写做准备.
搜索ROM 0F0H 用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址。为操作各器件作好准备。
 表3.2  RAM指令表
指令 约定代码 功能
温度转换 44H 启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。
读暂存器 0BEH 读内部RAM中9字节的内容。
写暂存器 4EH 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

3.2.2 子程序   
温度转换命令子程序主要是发送温度转换开始命令。在发送匹配ROM命令后,紧跟着发送要进行测温的DS18B20的64位ROM序列(这个序列号一般由厂方提供或通过实验的方式获得)。采用12位分辨率,转换时间约为750ms。其程序流程图如图3.1所示。
 
  图3.1 温度转换命令子程序流程图
   
(1)读出温度子程序
读出温度子程序主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2所示。
(2)计算温度子程序
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。在系统采用12位转换精度,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。
通过观察可以发现一个十进制值和二进制值之间有很明显的关系。低字节的高半字节乘以0.0625恰好就是原整数。因此,把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就恰好是温度值的百、十、个位值;剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0~F,转换成十进制小数值就是0.0625的倍数。这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。其程序流程图如图3.3所示。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

基于51单片机的公路温度采集存储器设计+电路设计+源程序 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。