西安航空学院毕业论文
第四章 软件程序设计
4.1 总体程序图
设置跳过ROM命令CCH调用写命令子程调LCD显示子程序 调用初始化子程序 延时 设置启动温度转换令44H调用写命令子程设置跳过ROM命令CCH调用写命令子程调用初始化子程序 读取温度数据 开始
4.2 温度转换
由三片DS18B20是串接在不同的I/O,读取温度的子是程序独立分开,但工作原理一样。
以单个为例,首先调用DS18B20初始化子程序对它进行初始化,然后发跳过匹配
13
设置读数据命令BEH调用写命令子程序 西安航空学院毕业论文
ROM命令,接着发温度转换命令完成温度转换,该命令主要是完成温度的A/D转换,读取温度程序是在转换结束后才能读取当前温度值。其它两片工作原理一样。工作流程图如图。
总 结
本课题通过分析选定DS18B20,这种单总线数字温度传感器的通信方式比较独特,软件编写要求的比较新颖,特点突出。用其构建的系统有很多优点:硬件连线简单,省去了使用模拟传感器要进行放大、A/D转换等工作,由于它的级联功能,一条总线可挂接多个传感器测量不同位置的温度,根据DS18B20唯一的序号识别不同传感器在各自位置的温度。
课题采用的是一个I/O口挂接一个DS18B20的方式串联了三个传感器。另外,由于DS1820 单线通信功能是分时完成的,遵循严格的时隙概念,因此, 系统对DS1820 和各种操作必须按协议进行,即:初始化DS1820 (发复位脉冲)—发ROM功能命令—发存
14
西安航空学院毕业论文
储器操作命令—处理数据。现场温度直接以“一线总线”的数字方式传输,每一个自带地址,大大减少了系统的电缆数,提高了系统的稳定性和抗干扰性。
参考文献
[1]党峰、王敬农、高国旺.基于DS18B20的数字式温度计的实现[J].山西电子技
术,2007(3)
[2]赵海兰、赵祥伟.智能温度传感器DS18B20的原理与应用[J].现代电子技术,2003,26(14)
[3]王福泉、万频、冯孔淼、张昱.DS18B20在空调检测系统温度采集模块中的应用[J].电子技术应用,2011,37(8)
[4]程院莲.基于单总线器件DS18B20的智能温度测量[J].现代教育装备,2010(23) [5]刘雪松 程显侠.新型温度传感器DS18B20高精度测温的实现[J].微处理机 2002(2)
[6]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2002(04)
[7]郭天祥.新概念51单片机C语言教程—入门、提高、开发、拓展全攻略.电子工业出版社[M],2011
[8]林立、张俊亮、曹旭东.单片机原理及应用(基于Proteus和Keil C)[M].北京:电
子工业出版社,2009
致 谢
值此论文完成之际,谨向我的导师xxx老师表示衷心的感谢!从选题,设计以及后来的调试都得到了x老师的帮助。尽管x老师很忙,在毕业设计期间,多次使用网络给我指导,询问进度情况,督促我的工作,尽心尽力;同时也十分感谢这四年来教过我的所有老师,您们教会我的不仅是理论知识,还有如何解决问题的方法,我能顺利完成,与各位恩师的帮助密不可分。
15
西安航空学院毕业论文
附录
程序清单
#include
uchar code str1[]={%uchar code str2[]={%uchar code str3[]={%uchar data disdata [5]; uchar data disdata1[5]; uchar data disdata2[5];
uint flag1,flag2,flag3,flag4; uint tvalue,tvalue1,tvalue2; uchar tflag,tflag1,tflag2;
//按键标志 //温度值 //温度正负标志
//按键定义
//一号ds18b20与单片机连接口 //二号ds18b20与单片机连接口 //三号ds18b20与单片机连接口 //LCD控制脚
/*******************lcd1602程序**********************/ void delay1ms(uint ms) {
//延时1毫秒
16
西安航空学院毕业论文
unsigned int i,j;
for(i=0;i for(j=0;j<110;j++); } void wr_com(uchar com) { RS=0; RW=0; P0=com; delay1ms(5); EN=1; delay1ms(5); EN=0; } void wr_dat(uchar dat) { RS=1; RW=0; P0=dat; delay1ms(5); EN=1; delay1ms(5); EN=0; } void lcd_init() { wr_com(0x38); wr_com(0x0c); wr_com(0x06); wr_com(0x01); //LCD写指令 //LCD写数据 //LCD初始化设置 //设置16×2显示,5×7点阵,8位数据接口//设置开显示,不显示关标 //写一个字符后地址指针加1 //显示清0,数据指针清0 17