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

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

来源:网络收集 时间:2026-08-29
导读: 解决了这个问题。 然后就是电路性能检测,使用普通的温度计,测量室内温度后,再用制作的电路测量 室内温度,数据分别为32.5和32.8,几次测量后得出的结论,精度满足0.5的要求。响应时间直接利用感官判断,系统的响

解决了这个问题。

然后就是电路性能检测,使用普通的温度计,测量室内温度后,再用制作的电路测量

室内温度,数据分别为32.5和32.8,几次测量后得出的结论,精度满足0.5的要求。响应时间直接利用感官判断,系统的响应时间在1s内。两个温度传感器掘客正常测量温度,各个控制开关功能正常。经过一段时间的运行测试,工作正常,完成调试过程。

4 心得体会及建议

4.1 心得体会

经过本次设计实验,充分认识到了自身再动手实际操作方面的不足,单片机程序

的编写不够熟练,电路焊接很生疏,需要多加练习。 4.2 建议

希望在以后的学习中能过再多做类似本设计的练习,提高动手能力,夯实基础知

识。

5 附录

5.1 原件明细表

DS18B20两个、AT89S52一块、74HC573一块、按钮开关3个、10K电阻三个、4.7K电阻两个、10uf电解电容一个、四位八段数码管一个。

5.2 设计原理图

参看上面的仿真图。

5.3 设计的主程序:

#include

#define uchar unsigned char #define uint unsigned int

sbit DS=P2^0; //定义温度传感器的数据引脚

sbit button1=P3^5; //定义按钮开关的控制位脚 sbit button2=P3^6;

11

uint temp; // 温度值 sbit dula=P2^6;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; uchar code

ROM_CODE1[]={0x28,0xaa,0x4b,0x27,0x03,0x00,0x00,0x06};

uchar code

ROM_CODE2[]={0x28,0x1b,0x40,0x12,0x03,0x00,0x00,0x8f};

void delay(uint count) //延时函数 {

uint i; while(count) { i=200; while(i>0) i--; count--; } }

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

12

uint i; DS=0; i=103;

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

while(i>0)i--; }

bit tmpreadbit() // {

uint i; bit dat; DS=0;

i++;i++; DS=1; i++;i++; dat=DS; i=8;

// while(i>0)i--; return (dat); }

uchar tmpread() //{

uchar i,j,dat; dat=0;

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

读1位数据函数短延时

读1字节函数 13

j=tmpreadbit();

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

return(dat); }

void tmpwritebyte(uchar dat) //write a byte to ds18b20 一个字节数据函数 {

uint i; uchar j; bit testb; for(j=1;j<=8;j++) {

testb=dat&0x01; dat=dat>>1;

if(testb) //write 1 { DS=0; i++;i++; DS=1;

i=8;while(i>0)i--; } else {

DS=0; //write 0 i=8;while(i>0)i--; DS=1;

1820写14

i++;i++; } } }

void match_rom(uchar fp) //匹配ROM ID {

char k;

tmpwritebyte(0x55); // 发送匹配ROM命令 if(fp)

for(k=0;k<8;k++)

tmpwritebyte(ROM_CODE1[k]);

//发送18B20的序列号,先发送低

字节 }

void tmpchange(uchar a) {

dsreset(); delay(1); match_rom(a); tmpwritebyte(0x44); }

uint tmp(uchar fp) //读取寄存器中存储的温度数据 {

float tt; uchar a,b;

//转换温度

else

for(k=0;k<8;k++)

tmpwritebyte(ROM_CODE2[k]);

15

…… 此处隐藏:46字,全部文档内容请下载后查看。喜欢就下载吧 ……
简单多点温度测量系统课程设计(3).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)