《温度采集与显示系统3373.pdf》由会员分享,可在线阅读,更多相关《温度采集与显示系统3373.pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实用文档 标准 温度采集与显示系统的设计 姓名:学号:实用文档 标准 摘要:由于人体不能精准的感受到环境中的温度,而温度采集系统能够准确、及时、全面地反映环境质量现状及发展趋势,因而本论文设计了基于 8051 单片机控制技术的温度采集与显示系统。该系统通过温度传感器将检测到的温度信号转换成电压信号,该模拟量电压经 8 路 AD0809 输出数字量电压值送给单片机。根据 AD 值与温度之间的关系利用查表和插值法得出温度值。并且这些数值都能实时显示在显示屏上。一、设计内容及意义 温度采集与显示系统在人们的日常生活中的应用越来越广泛,如花卉栽培温湿度控制、大棚温室控制系统、粮库温室控制系统、现代化居
2、室温湿度控制等等。随着半导体技术的不断发展,热敏电阻作为一种新型感温元件应用越来越广泛。他具有体积小、灵敏度高、重量轻、热惯性小、寿命长以及价格便宜等优点。单片机在测控系统中的作用是对信息进行处理、运算和发出控制命令等,但所要处理的信息是从外界拾取的,拾取的信号可以分为开关量和模拟量两种。开关量只需放大、整形和电平转换等处理后,即可直接送入单片机系统。但输入量如果是模拟量,处理的复杂程度就大大地增加了,由于模拟输入信号一般很微弱,需要进行放大,对于一个测控范围较大的仪器,还要有多级可变放大电路。另外,在放大有用信号的同时,干扰信号也被同时放大,还要进行必要的滤波处理。所以要设计出一个真正实用的
3、单片机测控系统,必须先设计好适用的前向通道。根据被测对象输出信号的类型、大小、数量不同,前向通道的结构类型也各不相同。本系统基于 51 单片机设计的温度采集与显示系统是 A/D 转换器、热敏电阻温度传感器、LCD 显示屏及相应接口的综合应用。实用文档 标准 二、整体设计原理及方案 图 2.1 整体系统框图 该系统是以 NTC 型热敏电阻为传感器的信号采集端,将温度信号转换成电压信号,再经 ADC0809 进行模数转换,进一步将电压信号转换成单片机可以处理的 00HFFH 数字信号,并保证温度与数字信号实时同步,经单片机8051 进行数据处理(查表和线性插值法),再进一步转换成与实际温度相符合的
4、数字信号,并在 LCD 显示屏上实时跟踪显示。1、显示模块方案选择:方案一:数码管显示,采用动态扫描的方式。优点是编程容易,硬件电路调试简单,显示两部分也比较好控制。缺点是显示的内容不够丰富,本系统需要实时显示电压 AD 值,放大后的十进制值以及温度值,实验台上提供的数码管数就达不到实时显示的效果。方案二:用 LCD 液晶显示器显示,优点是功耗低,还能显示更多的字符,有着良好的人机界面,缺点是控制比较复杂。实验台上提供的是 OCMJ2*8 的中文模块系列液晶显示器,内含汉字字库和英文字库,可以实汉字、ASCII码的同屏显示,能够达到实时显示的效果。2、AD0809 设计 AD0809型8位MO
5、S型A/D转换器,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100微秒左右。实用文档 标准 图 2.2 AD0809 逻辑图 由图 2.2 可知,该输出公式为:255REFREFREFINVVVVAD(实验台上基准电压为5V)图 2.3 AD0809时序图 如图2.3,其工作过程是:1)在 IN0IN7上可分别接上要测量转换的8 路模拟量信号。该系统只需要将热敏电阻温度传感器的电压输出端接 IN0。2)将 ADDAADDC端给上代表选择测量通道的代码。该系统选通通道 0。实用文档 标准 3)将 ALE 由低电平置为高电平,从而将 ADD
6、AADDC 送进的通道代码锁存,经译码后通道 0 的模拟量送给内部转换单元。4)给 START 一个正脉冲。当上升沿时,所有内部寄存器清零。下降沿时,开始进行 A/D 转换;在转换期间,START 保持低电平。5)EOC 为转换结束信号。在上述的 A/D 转换期间,可以对 EOC 进行不断测量,当 EOC 为高电平时,表明转换结束。否则,表明正在进行 A/D 转换。6)当 A/D 转换结束后,将OE 设置为 1,这时 D0D7 的数据便可以读取了。OE0,D0D7 输出端为高阻态,OE1,D0D7 端输出转换的数据。3、数据处理部分-查表和线性插值法 热敏电阻为一种阻值随温度变化的电阻,按其变
7、化关系可分为两类:正温度系数(简称 PTC)和负温度系数(简称 NTC)。PTC 元件的阻值随温度的上升而上升,NTC 元件的阻值随温度的上升而下降。本模块中使用的为 NTC型热敏电阻,在常温(25)下其阻值为 10K,其阻值与温度的关系、阻值与电压的关系、电压值与电压 AD 值得关系如下表所示:温度()-30-20-10 0 10 20 25 30 40 50 阻值(K)176.0 96.29 54.85 32.41 19.80 12.47 10.00 8.066 5.342 3.618 电压(V)0.26881720 0.47041113 0.77101002 1.17896722 1.6
8、7785234 2.22518914 2.5 2.76762980 3.25902750 3.67161110 电压 AD 14 24 39 60 86 114 128 142 167 188 温度()60 70 80 90 100 110 120 130 140 150 阻值(K)2.502 1.763 1.265 0.9226 0.6834 0.5158 0.3942 0.3048 0.2382 0.1881 电压(V)3.99936010 4.25061633 4.43852640 4.57766465 4.68015800 4.75474999 4.81037501 4.8521077
9、5 4.88367095 4.90768641 电压 AD 205 218 228 235 240 244 247 249 250 252 在上面列的表格中,温度与阻值的关系是已知的,电压是根据式3-1得出的,电压的AD值是根据式2-1得出的。电压 V 与电压 AD 的关系:195)1000*(VAD (2-1)实用文档 标准 图 2.4 电压 AD 值与温度关系折线图 根据图2.4可用线性插值法在线性区间建立函数关系,随着电压的改变输出温度值。三、硬件电路图 图 3.1 热敏电阻温度采集电路图 图 3.1 中 J1、J2、J3 分别对应于模块上的 V1、Vzero、Vout 插孔,R3 对应
10、与 ZERO 电位器,用于偏置电压调节;R9 对应于 GAIN 电位器,用于增益调节。使用时,可先将电路增益调节为1,具体做法如下:调节ZERO电位器,使Vzero=0V,用万用表分别测量 V1、Vout 端电压,调节 GAIN 电位器,使 V1=Vout,此时电路增益为 1。由此可得出电压与电阻之间的关系:1015010110*52121RRRRRVCCV (3-1)实用文档 标准 四、程序设计流程图 开始初始化温度传感器采样AD0809转换数据处理LCD显示 图 4.1 主函数程序流程图 开始LCD 初始化读数据数据输出BUSY为 0?REQ=1BUSY为 1?REQ=0数据读完?结束NY
11、NYNY 图 4.2 LCD 显示流程图 实用文档 标准 开始启动通道0开中断等待取转换结果发送到LCD 显示屏关中断传输数据延迟 图 4.3 A/D 转换流程图 入口关中断读通道 0转换结果送结果到显示屏中断返回 图 4.3 中断服务程序 实用文档 标准 五、问题和不足 出现的问题及解决方法:在数据处理部分,之前是建立电压值V与温度值T的关系来显示温度,发现再怎么细分线性部分,输出的温度误差还是很大,而且显示的温度值一直在跳变。于是决定找电压值AD与温度之间的关系,这样减小了误差,显示的温度值也几乎不再跳变了。不足之处:实验台提供的可调输出电压的范围是0-4.5V,正确来说显示的温度范围应为
12、-35C至90C。这样选定的线性区间才能较小误差,更趋近与表格提供的数值。所以,更细分的取线性部分得到的数值会更好。六、总结 通过此次实习,使我对所学知识进行了实践。掌握了A/D转换芯片性能及编程方法、单片机系统中扩展LCD显示的方法以及温度传感器和LCD的工作原理及综合应用。在数据处理部分学会了线性插值法。在编写程序时,也发现对一些程序中的函数的处理不够合理,在自己的多次运行下,还是能够实现温度监控的功能。本次单片机实训让我很有成就感,并对以前所学的单片机知识做了一个小结。实用文档 标准 附件#include#include#include#include#define uchar unsi
13、gned char#define ulong unsigned long#define uint unsigned int#define Port_address XBYTE0X0CFA0 sbit REQ=P35;/请求信号,高电平有效 sbit BUSY=P34;/忙检测 sbit EOC=P32;/转换结束信号,EOC=1-转换结束,EOC=0-正在转换 void delay1ms(uint time)/延迟子程序 1 uint ii;uint jj;for(ii=0;iitime;ii+)for(jj=0;jj200;jj+);void delay(uint time)/延迟子程序 2
14、 实用文档 标准 uint ii;uint jj;for(ii=0;iitime;ii+)for(jj=0;jj=0)实用文档 标准 qian=date/1000;bai=date%1000/100;shi=date%1000%100/10;ge=date%10;write_ASCII_8x16(10,16,0 x2b);/显示正号+write_ASCII_8x16(11,16,0 x30+qian);write_ASCII_8x16(12,16,0 x30+bai);write_ASCII_8x16(13,16,0 x2E);/显示小数点 write_ASCII_8x16(14,16,0 x
15、30+shi);write_ASCII_8x16(15,16,0 x30+ge);if(date=14&da=24&da=39&da=60&da=86&da=142&da=167&da=188&da=209&da=248)t=15000;return t;实用文档 标准 void main()int r=0;uint v,da;config();/中断初始化 lcd_init();/显示屏初始化 AD_init();/启动通道 0 delay(700);clear_lcd();delay(700);write_chinese(0,0,46,34);/显示温度采集系统 write_chinese
16、(1,0,22,40);write_chinese(2,0,18,41);write_chinese(3,0,28,15);write_chinese(4,0,47,21);write_chinese(5,0,45,19);delay(700);clear_lcd();delay(700);while(1)if(r=0)da=AD();实用文档 标准 v=da*195;display_voltage(v);display_digit(da);display_temperature(deal_wendu();AD_init();void int0(void)interrupt 0 int r=1;EX0=0;EX0=1;