第一范文网 - 专业文章范例文档资料分享平台

基于DS18B20的温度采集显示系统的设计

来源:用户分享 时间:2025/6/1 0:09:17 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

课程设计用纸

write_byte(0xbe);

temp_data[0]=read_byte(); temp_data[1]=read_byte();

ow_reset(); write_byte(0xcc); write_byte(0x44); }

4.2.4计算温度子程序

流程图如图4-5所示:

开始 温度零Y 下? N 温度值取补码置“—”标志 计算小数位温度BCD值 计算整数位温度BCD值 结束 图4-5 计算温度子程序

第 23 页

课程设计用纸

计算温度的C语言程序如下: work_temp() {

uchar n=0;

if(temp_data[1]>127) {

temp_data[1]=(255-temp_data[1]); temp_data[0]=(255-temp_data[0]); n=1;

} //负温度求补码

display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]]; display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ;

display[3]=display[4]/100; display[1]=display[4]0; display[2]=display[1]/10; display[1]=display[1];

if(!display[3]){display[3]=0x0a;

if(!display[2]){display[2]=0x0a;}} //最高位为0时不显示 if(n){display[3]=0x0b;} }

4.2.5显示扫描过程子程序

流程图如图4-6所示:

//负温度是最高为显示“-”

第 24 页

课程设计用纸

开始 送位选码 送段选码 延时

图4-6 显示扫描过程子程序

显示扫描的C语言程序如下: scan() { char k;

for(k=0;k<4;k++) {

disdata=dis_7[display[k]]; if(k==1){DIN=0;}

//当K=1时,P0^7为低电平显示小数点 //4位LED扫描控制

discan=scan_con[k]; //列扫描 delay(30); discan=0xFF; } }

第 25 页

课程设计用纸

5.基于DS18B20的温度采集显示系统的调试

运行后,按下K1键,开始进入报警温度设置过程,按下K2则温度增加一度,按下K3则温度减少一度,刚开始调试时,由于接的LED报警灯是高电平点亮,程序一运行时,AT89C51给各个引脚都是高电平,所以LED灯一运行就会发光,违背了超过报警温度才发光的要求,所以在子程序中加上了一条开始时将LED所连引脚置0的程序。之后运行过程中又发现按下报警温度的设置键K1,K2,K3都不是很灵敏,有时按下的时间太短甚至会没有反应,经过与小组成员讨论,发现是由于按键没有进行消抖,在显示扫描子程序中加入了延时函数进行按键的消抖,这一问题也得到了解决。

图5-1温度实时显示且未超过报警温度25摄氏度时LED没有发光报警

第 26 页

基于DS18B20的温度采集显示系统的设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3qcie4ixog7g2499hhwt_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top