教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

简单多点温度测量系统课程设计(4)

来源:网络收集 时间:2026-08-29
导读: dsreset(); delay(1); match_rom(fp); tmpwritebyte(0xbe); a=tmpread(); //读低8位 b=tmpread(); //读高8位 temp=b; temp tt=temp*0.0625; //温度在寄存器中是12位,分辨率是0.0625 temp=tt*10+0.5; //乘10表示小

dsreset(); delay(1); match_rom(fp); tmpwritebyte(0xbe); a=tmpread(); //读低8位 b=tmpread(); //读高8位 temp=b;

temp<<=8; //two byte compose a int variable 两个字节组合为1个字 temp=temp|a;

tt=temp*0.0625; //温度在寄存器中是12位,分辨率是0.0625 temp=tt*10+0.5; //乘10表示小数点后只取1位,加0.5是四折五入 return temp; }

void display(uint temp) {

uchar A0,A1,A2,A2t,A3,ser; ser=temp/10; SBUF=ser; A0=temp/1000; A1=temp00/100; A2t=temp0; A2=A2t/10; A3=A2t; dula=1; P1=table[A0];

//显示千位

//显示程序

16

P3=0Xfe; dula=0; delay(1); dula=1;

P1=table[A1]; P3=0Xfd; dula=0; delay(1); dula=1;

P1=table1[A2]; P3=0xfb; dula=0; delay(1); dula=1;

P1=table[A3]; P3=0xf7; dula=0; delay(1); dula=1; }

void main() {

//显示百位

//显示十位 //显示个位 17

uchar fp=1; uint x=0; while(1) {

if(button1==0||(button1==1&&button2==1)) //按下一号键或者不按键时显示A的温度测量值

{delay(1); //延时去抖动 if(button1==0||(button1==1&&button2==1)) do{ fp=1; tmpchange(fp);

display(x); display(x); x=tmp(fp);

display(x);display(x);

}while(button2==1);

}

if(button2==0)

//按下二号键测量B的温度 {delay(1);

if(button2==0) do{ fp=0; tmpchange(fp);

display(x);display(x);

x=tmp(fp);

display(x);display(x); }while(button1==1);

}

} }

18

5.4

用来提取DS18B20的ROM-ID码子程序

物理电路公用上面的原理电路,但是提取ID码时每次只能接一个DS18B20在上面,

不然就没法提取了。程序如下:

#include

#define uchar unsigned char #define uint unsigned int sbit DS=P2^0; sbit dula=P2^6; uint temp; uchar

tab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar t1[8];

void delay_ms(uchar i) //延时(j*2+1+2)*i+5 个机器周期 { uchar j; do{j=248;

do{j--;}while(j); i--; }while(i); }

void DS_init(void) //18B20复位,初始化函数 {

uint i; DS=0;

i=103;while(i>0)i--; DS=1;

i=4;while(i>0)i--;

19

//12MHz时,延时 0.5*i ms

}

bit read_bit(void) //读1位数据函数 {

uint i; bit dat;

DS=0;i++; DS=1;i++;i++; dat=DS;

i=8;while(i>0)i--; return (dat); }

uchar read_byte(void) //读1字节函数 {

uchar i,j,dat; dat=0;

for(i=1;i<=8;i++) {

j=read_bit();

dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 }

return(dat); }

void write_byte(uchar dat) //向1820写一个字节数据函数 {

uint i;

20

简单多点温度测量系统课程设计(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/404827.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)