采用DS18B20和AT89C51设计高精度的多路温度监测系统与进行仿真调试

编辑: Kris 来源: 未知 时间: 2019-10-15 10:00
内容摘要:  “体会到了科研的艰难性和创新的挑战性,扩宽了知识面,受到了科学思维训练。”回想整个过程,孙朝阳说。目前,团队已申请3项专利,撰写论文2篇。看似简单,但要在四年时间里每天坚持不是一个简单的事。“但有大部

“体会到了科研的艰难性和创新的挑战性,扩宽了知识面,受到了科学思维训练。”回想整个过程,孙朝阳说。目前,团队已申请3项专利,撰写论文2篇。

采用DS18B20和AT89C51设计高精度的多路温度监测系统与进行仿真调试

看似简单,但要在四年时间里每天坚持不是一个简单的事。“但有大部分同学都坚持了下来,并且每天往群里发‘12150’的相关内容打卡。”卢绍伟笑着说道。“每天的一次反思,不断总结昨天的问题,我急躁的性格也慢慢改掉了。还有每天10个单词的积累,也让当时的我顺利过了四级考试。

采用DS18B20和AT89C51设计高精度的多路温度监测系统与进行仿真调试

系统上电复位后,程序主要包括:(1)系统初始化设置。

(2)按键处理子程序:LED数码管显示上限报警温度值并闪烁,若10s中之内有按键输入修改温度值,则进行键盘操作直至修改完成,并保存温度上限值;若10s之内无按键输入或按“确定”键,则保存上限温度;接着显示下限报警温度值并闪烁,重复上述操作后保存下限报警温度值。

(3)温度报警值设置子程序:实现将8路的报警温度写入DS18B20中,流程图详见图4所示。

(4)读取温度子程序:在对显示路数初始化后,进行温度值读取,这是软件设计的关键,下面将单独介绍。 (5)温度报警处理:读取某路DS18B20温度值及报警上下限值后,进行比较,若超出范围则启动0,驱动上/下限报警提示单元。 (6)显示当前通道温度子程序:取得当前通道号后,根据读取的2字节温度值(温度暂存器格式参考DS18B20技术手册),判断其符号位并分别读取其整数部分和小数部分,通过运算后保存到显示缓冲区,进行动态显示,并刷新显示若干时间。 (7)上位机通信子程序:每采集一路温度数据,通过RS232串口,将其通道号、温度值发送给上位机,完成相应通道的温度处理。 (8)循环修改:修改通道号,进行下一路温度数据采集,直至8路温度处理完成,如此循环往复。 读取温度子程序设计采用DS18B20进行单路测量时,可直接与单片机相连,不需读取读出器件的64位产品序列号。

当采用DS18B20进行多路测温时,在初始化操作后,通常的做法是需要在线逐个地搜索64位编码以确认各个DS18B20所在位置,并需对ROM编码进行冗余校验,算法设计复杂。

且等待多路搜索是否完成需要消耗大量的时间,使程序执行的效率和系统实时性受到了影响。

本设计采用“单总线结构+并行I/O口输入”结合的方式巡回读取多路温度。 DS18B20作为单总线芯片,进行信息交换时有严格的读/写时序要求。 读取温度子程序流程如图5所示。

首先通过参数传递将通道号传给读取温度子程序,接着对DS18B20进行初始化,然后直接执行跳过ROM命令(CCH),即不读取64位ROM编码而直接向DS18B20发出功能命令,节约了时间。

之后,再向DS18B20发送温度转换命令(44H),DS18B20启动温度采样与A/D转换,并将转换数据存储在暂存器中。 然后再次初始化DS18B20,并在再一次跳过ROM命令后,执行单片机读暂存器命令(BEH),根据传递参数确定的通道号,可将通道号对应的DS18B20高速暂存存储器的9个字节数据读入单片机中,其中第0,1字节分别是温度值低位(LSby)和高位(MSbyte),第2,3字节分别是高温限值(TH)和低温限值(TL),从而完成某通道DS18B20的温度采集。

软件设计流程软件设计流程如图4,图5所示。

采用DS18B20和AT89C51设计高精度的多路温度监测系统与进行仿真调试

要坚持促进发展和依法管理相统一,既大力培育人工智能、物联网、下一代通信网络等新技术新应用,又积极利用法律法规和标准规范引导新技术应用。

你可能也喜欢:
最近更新
热门资讯