基于单片机的多路温度采集系统Word文件下载.docx
- 文档编号:18238359
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:13
- 大小:237.51KB
基于单片机的多路温度采集系统Word文件下载.docx
《基于单片机的多路温度采集系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的多路温度采集系统Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
1、主程序设计
主程序[2]主要功能是控制调用子程序,实现温度的实时显示、读出并处理DS18B20的测量温度值(温度测量每1s进行一次)。
其程序流程图如图2所示。
图2基于单片机温度采集系统主程序流程图
2、子程序设计
(1)键盘扫描子程序
键盘扫描子程序[3]对按下的键进行判断,并转到按下的相应键对应的程序段,执行相应的功能。
其程序流程图如图3所示。
(2)温度转换命令子程序
温度转换命令子程序主要是发送温度转换开始命令。
在发送匹配ROM命令后,紧跟着发送要进行测温的DS18B20的64位ROM序列。
采用12位分辨率,转换时间约为750ms。
其程序流程图如图4所示。
图3键盘扫描子程序流程图图4温度转换命令子程序流程图
(3)读出温度子程序
读出温度子程序主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图5所示。
(4)计算温度子程序
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。
在系统采用12位转换精度,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。
通过观察可以发现一个十进制值和二进制值之间有很明显的关系。
低字节的高半字节乘以0.0625恰好就是原整数。
因此,把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就恰好是温度值的百、十、个位值;
剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。
小数部分因为是半个字节,所以二进制值范围是0~F,转换成十进制小数值就是0.0625的倍数。
这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。
其程序流程图如图6所示。
图5读出温度子程序流程图图6计算温度子程序流程图
(5)显示数据刷新子程序
显示数据刷新子程序[9]主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
其程序流程图如图7所示。
图7显示数据刷新子程序流程图图8报警控制子程序流程图
(6)报警控制子程序
当设定的最高报警温度值大于显示缓冲区中的数据时,发出报警,提示温度超过设定的最大值。
其程序流程图如图8所示。
六、总体电路图
1、基于单片机多路温度采集系统仿真图如图9所示。
图9基于单片机温度采集系统仿真图
七、结论
本课程设计是基于单片机的温度采集系统。
我学到了关于单片机的运用知识、89C51、18B20等芯片的运用和数据采集转换知识。
单片机课是上学期的内容,有很多知识点都遗忘了,所以在做此次课程设计的时候,又去翻阅以前的课本。
通过此次课程设计,我对单片机有了更深刻的认识和理解。
光有课本上的知识是不够的,一定要理论结合实践,在实践中把理论知识具体化,这样才能更好的掌握好知识。
此次课程设计我主要负责软件设计,在对电路进行程序编写时,深刻地理解了各个芯片的引脚功能后,开始编写程序。
在编写程序的过程中出现了很多的问题如如何对采集的信号用LCD显示出来,如何对温度进行采集、怎么用软件来设置上下限等。
后来经过老师的指点和上网查找相关资料、小组成员的讨论,最终顺利的完成了程序的编写
经过这段时间的学习,使我对电子工艺有了更深的认识。
学习过程中熟练了从发现问题,分析问题,到解决问题的思路。
加强了团队合作精神,提高了动手能力,增强了专业技能。
从实际问题出发,不断探索、思考、创新。
为今后的学习、工作积累了丰富的经验。
八、参考文献
[1]张俊谟.单片机中级教程—原理与应用.北京:
航空航天大学出版社,2011.20-100.
[2]刘大茂.电子系统设计实践指导书.北京:
航空航天大学出版社,2011.4-5.
[3]刘大茂.智能仪器原理与设计.北京:
国防工业出版社,2011.129-183.
九、附录
1、主程序
#include<
reg52.h>
L1602.h>
DS18b20_0.h>
DS18b20_1.h>
DS18b20_2.h>
sbitLED0=P3^0;
sbitLED1=P3^2;
sbitLED2=P3^4;
sbitspeak=P3^6;
sbitBUTTON4=P2^7;
uchara,b;
chartempL,tempH;
intta,tb,tc;
uchart1;
chartemp1,temp2;
bitFLAG2=1;
//报警开关,1打开,0关闭
ucharFnum=0;
ucharcodedis6[]={"
ON"
};
ucharcodedis7[]={"
OFF"
voiddelay(uinti)
{
while(i--);
}
voidmain()
{intx;
ucharlcd1[10];
ucharFnum=0;
uchars1num=0;
bitFLAG1=0;
LED0=1;
LED1=1;
LED2=1;
temp1=0;
temp2=15;
tempL=temp1;
//将设置的值存入
tempH=temp2;
LCD_init();
//液晶的初始化
LCD_init1(0);
LCD_putchar(1,13,dis6);
DS18b20_init0();
//启动传输
DS18b20_init1();
DS18b20_init2();
delay(2200);
while
(1)
{
if(BUTTON4==0)//关闭报警
{
delay_ms(5);
if(BUTTON4==0)
while(!
BUTTON4);
//释放确认
Fnum++;
if(Fnum==1){FLAG2=0;
LED0=1;
LED1=1;
LED2=1;
LCD_putchar(1,13,dis7);
if(Fnum==2){FLAG2=1;
Fnum=0;
LCD_putchar(1,13,dis6);
}
}
if(BUTTON1==0)
delay_ms(5);
if(BUTTON1==0)
s1num++;
BUTTON1);
FLAG1=1;
//设置标志位,进入设置值的状态
if(s1num==1)
{
LCD_init();
//进入设置值状态液晶显示
LCD_putchar(1,3,dis3);
LCD_init1(temp1);
LCD_pos(1,8);
//光标定位
LCD_write_char(0,0x0f);
//光标开始闪烁
if(s1num==2)
{
LCD_putchar(1,3,dis4);
LCD_write_number(1,5,temp2);
if(s1num==3)
s1num=0;
LCD_putchar(1,3,dis5);
LCD_write_char(0,0x0c);
//光标停止闪烁
FLAG1=0;
if(FLAG2)LCD_putchar(1,13,dis6);
elseLCD_putchar(1,13,dis7);
tempL=temp1;
tempH=temp2;
if(s1num!
=0)
if(BUTTON2==0)
if(BUTTON2==0)//增加键确认
while(!
BUTTON2);
//确认释放
if(s1num==1)
temp1++;
LCD_write_number(1,5,temp1);
LCD_pos(1,8);
//显示位置重新回到调节处
}
if(s1num==2)
temp2++;
if(BUTTON3==0)
if(BUTTON3==0)//减小键确认
BUTTON3);
temp1--;
temp2--;
/*********DS18b20程序部分***********/
delay(120);
while(init_DS18b20_2());
DS18b20_Write_2(0xcc);
//跳过读序号的操作
DS18b20_Write_2(0xBE);
//读取温度寄存器等
a=DS18b20_Read_2();
//读取温度值低位
b=DS18b20_Read_2();
//读取温度值高位
if(b>
127)//若为负数
a=~a;
//将真值部分取出来
b=~b;
a=a>
>
4;
//舍弃小数位,精度为0.0625,则低4位为小数位0.0625*16=1
t1=b<
<
//舍弃符号位
t1=t1|a;
t1=t1+1;
tc=-t1;
else
a>
=4;
b<
t1=a|b;
tc=t1;
if(!
FLAG1){
//LCD_putchar(0,0,"
"
);
LCD_write_number(0,2,ta);
LCD_write_number(0,10,tb);
LCD_write_number(1,2,tc);
{if((ta<
=tempL)|(ta>
=tempH)){LED0=0;
speak=1;
}else{LED0=1;
speak=0;
}
if((tb<
=tempL)|(tb>
=tempH)){LED1=0;
}else{LED1=1;
}
if((tc<
=tempL)|(tc>
=tempH)){LED2=0;
}else{LED2=1;
}}
DS18b20_init1();
DS18b20_init2();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 采集 系统