云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机原理及应用课程设计八路温度巡回检测系统

单片机原理及应用课程设计八路温度巡回检测系统

  • 62 次阅读
  • 3 次下载
  • 2025/5/25 23:13:50

delay(6); //66 us

presence=DQ; //presence=0 复位成功,继续下一步 }

delay(45); //延时500 us presence=~DQ; }

DQ=1; //拉高电平 }

/****************DS18B20写命令函数************************/ //向1-WIRE 总线上写1个字节 void write_byte(uchar val) {

uchar i;

for(i=8;i>0;i--) {

DQ=1;_nop_();_nop_(); //从高拉倒低 DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us DQ=val&0x01; //最低位移出 delay(6); //66 us val=val/2; //右移1位 } DQ=1; delay(1); }

/****************DS18B20读1字节函数************************/ //从总线上取1个字节 uchar read_byte(void)

28 / 32

{ uchar i; uchar value=0; for(i=8;i>0;i--) {

DQ=1;_nop_();_nop_(); value>>=1;

DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 us DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us if(DQ)value|=0x80;

delay(6); //66 us } DQ=1;

return(value); } //

/****************读出温度函数************************/ //

read_temp() {

ow_reset(); //总线复位 delay(200);

write_byte(0xcc); //发命令 write_byte(0x44); //发转换命令 ow_reset(); delay(1);

write_byte(0xcc); //发命令 write_byte(0xbe);

temp_data[0]=read_byte(); //读温度值的低字节

29 / 32

temp_data[1]=read_byte(); //读温度值的高字节 temp=temp_data[1];

temp<<=8; temp=temp|temp_data[0]; // 两字节合成一个整型变量。 return temp; //返回温度值 } //

/****************温度数据处理函数************************/

//二进制高字节的低半字节和低字节的高半字节组成一字节,这个 //字节的二进制转换为十进制后,就是温度值的百、十、个位值,而剩 //下的低字节的低半字节转化成十进制后,就是温度值的小数部分

/********************************************************/ work_temp(uint tem) {

uchar n=0;

if(tem>6348) // 温度值正负判断

{tem=65536-tem;n=1;} // 负温度求补码,标志位置1 display[4]=tem&0x0f; // 取小数部分的值 display[0]=ditab[display[4]]; // 存入小数部分显示值

display[4]=tem>>4; // 取中间八位,即整数部分的值 display[3]=display[4]/100; // 取百位数据暂存 display[1]=display[4]0; // 取后两位数据暂存 display[2]=display[1]/10; // 取十位数据暂存 display[1]=display[1];

/******************符号位显示判断**************************/ if(!display[3]) {

30 / 32

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

display[2]=0x0a; //次高位为0时不显示 } }

if(n){display[3]=0x0b;} //负温度时最高位显示\}

/****************主函数************************/ main() {

Disdata=0xff; //初始化端口 discan=0xff;

for(h=0;h<4;h++) //开机显示\ {display[h]=0;}

ow_reset(); //开机先转换一次 write_byte(0xcc); //Skip ROM write_byte(0x44); //发转换命令 for(h=0;h<100;h++) //开机显示\ {scan();} while(1) {

work_temp(read_temp()); //处理温度数据 scan(); //显示温度值 } }

//***********************结束**************************//

31 / 32

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

delay(6); //66 us presence=DQ; //presence=0 复位成功,继续下一步 } delay(45); //延时500 us presence=~DQ; } DQ=1; //拉高电平 } /****************DS18B20写命令函数************************/ //向1-WIRE 总线上写1个字节 void write_byte(uchar val) { uchar i; for(i=8;i>0;i--) { DQ=1;_nop_();_nop_();

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com