数字式多路温度采集系统.docx
- 文档编号:24148806
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:28
- 大小:820.60KB
数字式多路温度采集系统.docx
《数字式多路温度采集系统.docx》由会员分享,可在线阅读,更多相关《数字式多路温度采集系统.docx(28页珍藏版)》请在冰豆网上搜索。
数字式多路温度采集系统
山东科技大学
电子技术综合实践报告
设计题目:
数字式多路温度采集系统
专业:
电子信息科学与技术
班级学号:
学生姓名:
指导教师:
设计时间:
2013年06月20日
小组成员:
目录
一、设计任务与要求……………………………………………………………………………1
二、方案设计与论证,并给出总体方案设计…………………………………………………1
方案一………………………………………………………………………………2
方案二…………………………………………………………………………………2
方案三…………………………………………………………………………………3
方案四………………………………………………………………………………3
三、电路设计原理(给出原理图)、具体硬件设计…………………………………………4
1温度采集系统…………………………………………………………………………4
2AT89C51的介绍及功能结构……………………………………………………………6
3LCD显示系统……………………………………………………………………………7
4声音报警电路…………………………………………………………………………8
5系统总电路…………………………………………………………………………9
四、软件编程(要求画出流程图)…………………………………………………………9
主程序流程图……………………………………………………………………………9
五、安装与调试……………………………………………………………………………10
1仿真总电路图………………………………………………………………………10
2仿真和调试…………………………………………………………………………11
3开发板中实现…………………………………………………………………………12
六、性能测试与分析…………………………………………………………………………13
1单总线的读写时序…………………………………………………………………13
2温度传感器的温度计算……………………………………………………………14
3单片机T0值计算……………………………………………………………………14
七、结论与心得……………………………………………………………………………14
八、参考文献……………………………………………………………………………14
附录………………………………………………………………………………………15
题目数字式多路温度采集系统
一、设计任务与要求
本课题要求通过采用温度传感器对0~100℃范围的温度信号进行检测,设计温度信号调理电路,使得它输出与温度对应的电压信号,利用51单片机,以实现对温度信号的采集、分析、处理等功能。
具体指标与要求如下
1. 应用MCS-51单片机设计一个温度采集显示系统;
2. 以一定的时间间隔对多个温度通道进行巡回采集,温度检测范围为0——+64摄氏度;并将检测的温度显示出来;
3. 硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
4. 软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;
5. 原理图设计根据所确定的设计电路,利用Protel,Proteus等有关工具软件绘制电路原理图、PCB板图、提供元器件清单。
二、方案设计与论证,并给出总体方案设计
在熟悉课题,明确任务的基础上,查阅相关资料,理清设计思路,综合考虑总的设计时间和各部分设计所需时间,最终决定将本次设计分五大步进行。
1.熟悉课题,明确任务,查阅相关资料,确定总体设计方案;
2.根据各部分的功能划分功能模块,确定每一模块的硬件组成,合理选取具有相应功能的器件;
3.进行硬件设计,把各器件组成相应功能的模块,并把各功能模块进行电气连接,形成总的功能系统;
4.进行软件设计,编写程序,实现各模块功能,使整个系统能够良好的运行;
5.进行仿真调试,检查各模块功能能否完全实现,综合考虑系统的灵活性、稳定性、误差大小及测温效率调整各器件的各项参数。
使系统的处在最佳性能状态。
6.最后下载到开发板上进行调试。
方案一:
图2.1方案一总流程图
本设计主要有温度采集、温度显示、按键和报警模块组成,如图2.1,根据系统的设计要求,当温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经AT89C51处理,将温度在显示器LCD上显示。
当开机后,显示屏和计时器进行初始化设置。
同时,本系统能够设置报警温度,在超过报警温度时能够通过发音器提示报警。
可以在单片机外接多个DS18B20。
方案二:
如图(图2-2a):
将所有传感器的数据线接在一起,形成单总线结构,与单片机的一个双向口相连。
AT24C16为非易失性存储器,其中建立一个序列号表,按顺序存放各路传感器的序列号。
程序运行时,首先向所有传感器发送温度转换命令,再按顺序从24C16中读取序列号,匹配ROM,选中该路传感器,读出温度,这样就可以完成多路的顺序采集。
如果更换某一个传感器或增加传感器,就需要搜索ROM程序来查出新传感器的序列号,并写入到24C16的对应位置上。
如果要删去某一路传感器,也需要删去24C16中对应的序列号。
a.单总线结构b.模拟开关控制
图2-2多个DS18B20与单片机的连接
方案三:
如图(图2-2b),通过控制模拟开关来顺序选通各路传感器,然后对该路启动温度转换,读取温度值。
它的优点是可以忽略传感器的序列号,可以任意更换传感器而程序中不需要作特殊的处理,简化了程序设计。
缺点是:
需要模拟开关控制,远距离测量时,每一路需要一根数据线,布线复杂;测量全部通道的时间是每一路时间的累加,测量时间长;扩展时,硬件和软件都需要修改。
方案四:
本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。
由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。
总电路图如图2-3所示。
图2-3温度控制电路原理图
综合考虑,方案一具有更大的实用性,更良好的扩展性,更能充分发挥DS18B20的设计优点,本次设计中,选择该方案来设计硬件和程序。
三、电路设计原理(给出原理图)、具体硬件设计
1温度采集系统设计
1.1温度传感器DS18B20的性能和结构
温度采集模块选用数字式温度传感器DS18B20,其可以与单片机I/O口直接连接,不需要外接A/D转换模块。
DS18B20的性能特点如下:
(1)独特的单线接口仅需要一个端口引脚进行通信;
(2)可通过数据线供电,电压范围为3.0~5.5V;
(3)温度测量范围为-55℃~+125℃;
(4)测温分辨率可达0.0625℃;
(5)温度以9位或12位A/D转换;
DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下图3-1:
图3-1:
DS18B20外形及引脚排列图
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)
图3-2:
DS18B20内部结构图
1.2DS18B20工作原理
DS18B20的读写时序和测温原理如图3-3所示
图3-3:
DS18B20测温原理框图
1.3温度传感器DS18B20的应用电路
在DS18B20中,DQ为数字信号输人/输出端;GND为电源地;VDD为外接供电电源输入端。
DS18B20采用3脚TO-126封装,DS18B20芯片连接电路如图3-4。
图3-4DS18B20与单片机接口电路
1.4温度采集系统硬件原理图
温度采集主要采用四个(开发板上只用了一个)DS18B20温度传感器一条总线连接P3.2,采用中断方式传输,如图3-5。
图3-5温度采集系统原理图
2AT89C51的介绍及功能结构
2.1AT89C51的介绍
(1)组成:
AT89C51单片机是系统的主控部件,部含有4KEPROM,外部可扩接64KRAM及64KEPROM,部有256个字节RAM,其中高地址128RAM为单片机专用寄存器占用,低128RAM可作为四个工作寄存器组,128个位寻址,堆栈区及通用RAM使用,具有5个中断源,2套定时计数器(TO 、T1)四组1/0口(PO,P 1,P 2,P 3)。
可以通过P3口的RXD和TXD实现多机通信功能。
(2)通信:
微机通过串行通信口RS-232经MAX202ECPE电平转换芯片与一路AT89C51主单片机的RXD, TXD相连,实现双工通信功能。
2.2最小系统原理图
单片机AT89C51的最小系统包括晶体振荡电路、复位开关和电源几个部分。
图3-6即为AT89C51单片机的最小系统结构图,它是单片机进行正常工作所必需的部分。
图3-6最小系统原理图
3LCD显示系统
3.1原理图
用P3.5、P3.6、P3.7及P1.0至P1.7接口来完成1602LCD的显示。
1602LCD显示电路接口图如图3-7
图3-71602LCD显示电路
3.21602LCD工作原理
1602LCD采用标准的14脚接口,其中:
第1,2脚:
接电源和地。
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
4声音报警电路
温度检测系统多有声音报警功能,当检测温度超过上下限时,进行声音提示。
本系统在从机部分设计了报警电路。
报警电路原理如图3-8
图3-8声音报警电路原理图
5系统总电路图
图3-9系统总原理图
四、软件编程(要求画出流程图)
主程序流程图
程序的流程图如下,通过温度传感器检测的温度,通过CRC检测四路信息并将其传入c51中,。
我们将所得到得实时温度值分别和系统预设置的报警温度值以及人工手动设置的要实时控制的温度值进行比较,通过比较做出相应处理,若正常在LCD则显示,否则经声光报警,再做处理。
在程序中,我们通过四个中断来进行设置系统的设置温度,每一次中断温度加1或者减1。
图4-1系统程序总流程
五、安装与调试
1仿真总电路图
图5-1总仿真图
2仿真和调试
2.1仿真设置
在Proteus中使用多个DS18B20时,必须改变器件的属性,使仿真中每个器件的序列号各不相同。
具体作法是:
右击DS18B20,选中EditProperties选项,在其中改变ROMSerialNumber的值;还可改变Granularity的数值,即改变每次调整温度的额度。
在Proteus中,可以人为改变3个字节的器件序列号。
要想得到全部8个字节,一个简单的方法就是每一次总线上只连接一个器件,利用0x33读器件序列号的命令在程序中得到完整的器件序列号。
具体的程序如下所示:
unsignedcharread_num(void){
unsignedchari;
send_com(0x33);//读序列号命令
for(i=0;i<8;i++){
A[i]=read_dat();//先低位后高位,A[0]为最低位
}
}
其中,send_com()为主机向从机发送一个字节的子程序,read_dat()为主机读取从机一个字节的子程序。
例如,将器件序列号改为B8C530,在MPLABIDE中的Watch窗口中可直接观察到该器件的完整的器件序列号。
本系统中共使用4个DS18B20,序列号为B8C530、B8C534、B8C535、B8C536。
通过上述的方法可得到所有器件的序列号,然后组成一个数组,在读取温度程序中就可直接使用。
数组
{0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,0x28};
{0x52,0x00,0x00,0x00,0xb8,0xc5,0x34,0x28};
{0x65,0x00,0x00,0x00,0xb8,0xc5,0x35,0x28};
{0x3c,0x00,0x00,0x00,0xb8,0xc5,0x36,0x28};
在MPLABIDE中,使用ProteusVSM仿真模式。
根据上述读取温度程序的过程,编写读取温度的程序,经编译、运行,即可得到仿真结果。
2.2仿真调试中遇到的问题及解决办法
(1)仿真过程中器件之间的电气连接出现错误,结果仿真不出结果。
检查连线查找露连的节点。
(2)代码不完善,延时过长,使按键反映迟钝。
减少延时,有所改善。
(3)代码的接口和硬件不匹配。
重新查看电路图和代码中的接口,修改程序中的接口,使软硬件中的接口一致。
3开发板中实现
图5-2开发板实现图
六、性能测试与分析
1单总线的读写时序
单片机的写时序如图6-1,单片机将数据线拉至低电平保持1~15us,然后将数据送到数据线上,60us后释放总线。
传感器将会在15~60us(典型值为30us)时从数据线上读入数据。
每两个写时序的间隔必须大于1us。
单片机的读时序与此类似,单片机将数据线拉至低电平后,延时15~60us(典型值为30us),然后读入数据。
图6-1DS18B20的写时序
2温度传感器的温度计算
传感器转换后的电压数字量的计算方法为:
R7为串联电阻,R8为一并联电阻,
传感器总电阻:
R=(Rt*R8)/(Rt+R8)
R与R7串联电路中R的分压值:
V=5R/(R+R7)
5V被分成256等分(8位量化),则每份的电压值:
△=5/256
输入的模拟量电压经8位量化后的数字量:
D=V/△
例如,传感器在温度为20℃时的阻值为62.254千欧,则根据上述方法计算出的电压数字量为169,注意在计算中R7用实测值19.6千欧代入进入计算。
3单片机T0值计算
在本设计中,晶体振荡器频率为6MHz,T0定时时间为100ms,T0工作于方式1,则T0的初值为:
X=(最大计数值M―定时时间t/及其周期Tm)=216-100ms/1us=65436
七、结论与心得
1结论
本次电子综合实践中,采用了这种已经相当普及的方法设计了一个基于单片机和温度传感器的多路温度采集系统,并通过了软件仿真,最后得出了设计结果的可行性。
首先,要对DS18B20,51单片机,lcd1602等做一个详细的了解。
然后结合硬件电路及各个部件的特性进行编程,实现温度采集和报警的功能。
2心得
本次电子综合实践,和同学合作,分工明确,有效的提高了效率。
在设计过程中进一步认识了传感器,单片机等部件。
把三年来所学的知识都用上了,算是对以往的一个检测。
八、参考文献
[1]杜广朝,基于MCS-51的通用智能巡回检测系统设计,开封,黄河水利职业技术学院学报,2005
[2]王宛平,数字温度巡回检测系统,杭州,杭州电子工业学院学报,2001
[3]谢迎娟,多路温度检测系统的设计,南京,河海大学常州分校学报,2002
[4]秦相林,多路温度监测及自动拨号语音报警系统的设计,哈尔滨,.哈尔滨商业大学学报,2007
[5]杨丽君,AT89C51单片机控制的多路温度检测系统,北京,自动化与仪表,2000.
附录:
#ifndef_MAIN_H_
#define_MAIN_H_
#include
sbitDQ=P3^2;//温度输入口
sbitRS=P1^0;
sbitRW=P1^1;
sbitEN=P1^5;
sbitBUSY=P0^7;
sbitLED=P0^0;
sbitBUZZ=P1^6;//蜂鸣器
#endif
#ifndef_1602_H_
#define_1602_H_
voidwait(void);
voidw_dat(unsignedchardat);
voidw_cmd(unsignedcharcmd);
voidw_string(unsignedcharaddr_start,unsignedchar*p);
voidw_number(unsignedcharaddr_start,unsignedcharnum);
voidInit_LCD1602(void);
#endif
#ifndef_DS18B20_H_
#define_DS18B20_H_
voiddelay(unsignedintt);
voidDS18b20_reset(void);
voidwrite_byte(unsignedcharval);
unsignedcharread_byte(void);
unsignedintread_temp(void);
voiduart_init(void);
voidUART_Send_Byte(unsignedchardat);
voidUART_Send_String(unsignedchar*buf);
#endif
#include
#include"main.h"
#include"DS18B20.h"
unsignedchardatatemp_data[2]={0x00,0x00};
voidDS18b20_reset(void)
{bitflag=1;
while(flag)
{
while(flag)
{DQ=1;
delay
(1);
DQ=0;
delay(50);//550us
DQ=1;//
delay(6);//66us
flag=DQ;//presence="0继续下一步"
}
delay(45);//延时500us
flag=~DQ;
}
DQ=1;
}
voidwrite_byte(unsignedcharval)
{unsignedchari;
for(i=0;i<8;i++)
{
DQ=1;
_nop_();
DQ=0;
nops();//4us
DQ=val&0x01;//最低位移出
delay(6);//66us
val>>=1;//右移一位
}
DQ=1;
delay
(1);
}
unsignedcharread_byte(void)
{
unsignedchari,value=0;
for(i=0;i<8;i++)
{DQ=1;
_nop_();
value>>=1;
DQ=0;
nops();//4us
DQ=1;
nops();//4us
if(DQ)
value|=0x80;
delay(6);//66us
}
DQ=1;
return(value);
}
unsignedintread_temp(void)
{unsignedinttemp;
DS18b20_reset();//总线复位
write_byte(0xCC);//发SkipROM命令
write_byte(0xBE);//发读命令
temp_data[0]=read_byte();//温度低8位
temp_data[1]=read_byte();//温度高8位
DS18b20_reset();
write_byte(0xCC);//发SkipROM命令
write_byte(0x44);//发转换命令
temp=temp_data[1];
temp<<=8;
temp|=temp_data[0];
temp>>=4;
returntemp;
}
voiduart_init(void)
{ET1=0;
TMOD=0x20;//定时器1工作在方式2
SCON=0x40;//10位uart,允许串行接受
TH1=0xFD;
TL1=0xFD;
TR1=1;
}
voidUART_Send_Byte(unsignedchardat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
voidUART_Send_String(unsignedchar*buf)
{
while(*buf!
='\0')
{
UART_Send_Byte(*buf++);
}
}
#include"main.h"
#include"1602.h"
voidwait(void)
{
P0=0xFF;
do
{
RS=0;
RW=1;
EN=0;
EN=1;
}while(BUSY==1);
EN=0;
}
voidw_dat(unsignedchardat)
{
wait();
EN=0;
P0=dat;
RS=1;
RW=0;
EN=1;
EN=0;
}
voidw_cmd(unsignedcharcmd)
{
wait();
EN=0;
P0=cmd;
RS=0;
RW=0;
EN=1;
EN=0;
}
voidw_string(unsignedcharaddr_start,unsignedchar*p)
{
w_cmd(addr_start);
while(*p!
='\0')
{
w_dat(*p++);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 温度 采集 系统