



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.温度采集与显示系统的设计姓名:学号:专业 .专注.专业 .专注.摘要:由于人体不能精准的感受到环境中的温度,而温度采集系统能够准确、及时、全面地反映环境质量现状及发展趋势,因而本论文设计了基于8051 单片机控制技术的温度采集与显示系统。该系统通过温度传感器将检测到的温度信号转换成电压信号 ,该模拟量电压经8 路 AD0809 输出数字量电压值送给单片机 。根据 AD 值与温度之间的关系利用查表和插值法得出温度值。并且这些数值都能实时显示在显示屏上。一、设计内容及意义温度采集与显示系统在人们的日常生活中的应用越来越广泛,如花卉栽培温湿度控制 、大棚温室控制系统 、粮库温室控制系统 、现代化居
2、室温湿度控制等等 。随着半导体技术的不断发展,热敏电阻作为一种新型感温元件应用越来越广泛 。他具有体积小 、灵敏度高 、重量轻、热惯性小 、寿命长以及价格便宜等优点 。 单片机在测控系统中的作用是对信息进行处理、运算和发出控制命令等 ,但所要处理的信息是从外界拾取的,拾取的信号可以分为开关量和模拟量两种 。 开关量只需放大 、整形和电平转换等处理后,即可直接送入单片机系统 。 但输入量如果是模拟量 ,处理的复杂程度就大大地增加了,由于模拟输入信号一般很微弱,需要进行放大 ,对于一个测控范围较大的仪器 ,还要有多级可变放大电路。另外,在放大有用信号的同时,干扰信号也被同时放大 ,还要进行必要的滤
3、波处理。所以要设计出一专业 .专注.个真正实用的单片机测控系统,必须先设计好适用的前向通道。根据被测对象输出信号的类型 、大小、数量不同 ,前向通道的结构类型也各不相同。本系统基于 51 单片机设计的温度采集与显示系统是A/D 转换器、热敏电阻温度传感器 、LCD 显示屏及相应接口的综合应用。二、整体设计原理及方案图 2.1 整体系统框图该系统是以 NTC 型热敏电阻为传感器的信号采集端,将温度信号转换成电压信号 ,再经 ADC0809 进行模数转换 ,进一步将电压信号转换成单片机可以处理的 00H FFH 数字信号 ,并保证温度与数字信号实时同步,经单片机 8051 进行数据处理 (查表和线
4、性插值法 ),再进一步转换成与实际温度相符合的数字信号 ,并在 LCD 显示屏上实时跟踪显示。1 、显示模块方案选择 :专业 .专注.方案一:数码管显示 ,采用动态扫描的方式 。优点是编程容易 ,硬件电路调试简单 ,显示两部分也比较好控制。缺点是显示的内容不够丰富,本系统需要实时显示电压AD 值,放大后的十进制值以及温度值,实验台上提供的数码管数就达不到实时显示的效果。方案二:用 LCD 液晶显示器显示 ,优点是功耗低 ,还能显示更多的字符,有着良好的人机界面 ,缺点是控制比较复杂 。实验台上提供的是OCMJ2*8 的中文模块系列液晶显示器,内含汉字字库和英文字库,可以实汉字、 ASCII 码
5、的同屏显示 ,能够达到实时显示的效果。2 、 AD0809 设计AD0809 型8位MOS 型A/D 转换器,可实现 8路模拟信号的分时采集 ,片内有 8路模拟选通开关 ,以及相应的通道地址锁存用译码电路,其转换时间为100 微秒左右 。图 2.2 AD0809逻辑图专业 .专注.由图 2.2 可知,该输出公式为 :ADV INV REF255 (实验台上基准电压为5V)VREFV REF图 2.3 AD0809时序图如图 2.3,其工作过程是 :1) 在 IN0 IN7 上可分别接上要测量转换的 8 路模拟量信号 。该系统只需要将热敏电阻温度传感器的电压输出端接 IN0 。2) 将 ADDA
6、 ADDC 端给上代表选择测量通道的代码 。 该系统选通通道 0。3) 将 ALE 由低电平置为高电平 ,从而将 ADDA ADDC 送进的通道代码锁存 ,经译码后通道 0 的模拟量送给内部转换单元 。4) 给 START一个正脉冲 。当上升沿时 ,所有内部寄存器清零 。下降沿时 ,开始进行 A/D 转换;在转换期间 ,START保持低电平 。5) EOC 为转换结束信号 。 在上述的 A/D 转换期间 ,可以对 EOC 进行不断测量,当 EOC 为高电平时 ,表明转换结束 。 否则,表明正在进行 A/D 转换 。专业 .专注.6) 当 A/D 转换结束后 ,将 OE 设置为 1,这时 D0
7、D7 的数据便可以读取了 。OE 0, D0 D7 输出端为高阻态 ,OE1,D0 D7 端输出转换的数据 。3 、数据处理部分 - 查表和线性插值法热敏电阻为一种阻值随温度变化的电阻,按其变化关系可分为两类:正温度系数 (简称 PTC)和负温度系数 (简称 NTC)。 PTC元件的阻值随温度的上升而上升 ,NTC 元件的阻值随温度的上升而下降。本模块中使用的为 NTC 型热敏电阻 ,在常温 (25)下其阻值为 10K,其阻值与温度的关系 、阻值与电压的关系 、电压值与电压 AD 值得关系如下表所示 :-30-20-100102025304050温度()176.096.2954.8532.41
8、19.8012.4710.008.0665.3423.618阻值(K)0.2680.47040.7711.1781.6772.2252.52.76763.25903.6716电压11130100296722852341891429802750111081720( V)1424396086114128142167188电压 AD60708090100110120130140150温度()2.5021.7631.2650.9220.6830.5150.39420.3040.23820.1881阻值6488专业 .专注.( K)3.99934.2504.4384.5774.6804.7544.810
9、34.8524.88364.9076电压6163352640664651580074999750110775709586416010( V)205218228235240244247249250252电压 AD在上面列的表格中 ,温度与阻值的关系是已知的,电压是根据式 3-1 得出的,电压的 AD 值是根据式 2-1 得出的 。(V * 1000)电压 V 与电压 AD 的关系: AD195( 2-1 )图 2.4 电压 AD 值与温度关系折线图根据图 2.4可用线性插值法在线性区间建立函数关系,随着电压的改变输出温度值 。三、硬件电路图专业 .专注.图 3.1 热敏电阻温度采集电路图图 3.
10、1 中 J1、 J2、J3 分别对应于模块上的 V1、 Vzero 、Vout 插孔,R3 对应与 ZERO 电位器,用于偏置电压调节 ;R9 对应于 GAIN 电位器,用于增益调节 。使用时,可先将电路增益调节为1,具体做法如下 :调节 ZERO 电位器,使 Vzero=0V ,用万用表分别测量V1 、Vout 端电压,调节 GAIN 电位器,使 V1=Vout ,此时电路增益为 1。由此可得出电压与电阻之间的关系 :VCC ? R25* 1050(3-1)V1R2R110R110R1四、程序设计流程图专业 .专注.开始初始化温度传感器采样AD0809转换数据处理LCD显示图 4.1 主函数
11、程序流程图开始LCD初始化读数据NBUSY为0?Y数据输出REQ=1NBUSY为1?YREQ=0N数据读完?Y结束图 4.2 LCD 显示流程图专业 .专注.开始启动通道0传输数据开中断等待取转换结果发送到LCD 显示屏关中断延迟图 4.3 A/D 转换流程图入口关中断读通道0 转换结果送结果到显示屏中断返回图 4.3 中断服务程序专业 .专注.五、问题和不足出现的问题及解决方法 :在数据处理部分 ,之前是建立电压值 V与温度值 T的关系来显示温度 ,发现再怎么细分线性部分,输出的温度误差还是很大,而且显示的温度值一直在跳变 。于是决定找电压值 AD 与温度之间的关系 ,这样减小了误差 ,显示
12、的温度值也几乎不再跳变了。不足之处 :实验台提供的可调输出电压的范围是0-4.5V ,正确来说显示的温度范围应为 -35 C 至90 C 。这样选定的线性区间才能较小误差,更趋近与表格提供的数值 。所以 ,更细分的取线性部分得到的数值会更好。六、总结通过此次实习 ,使我对所学知识进行了实践。掌握了 A/D 转换芯片性能及编程方法 、单片机系统中扩展 LCD显示的方法以及温度传感器和LCD的工作原理及综合应用 。在数据处理部分学会了线性插值法。在编写程序时 ,也发现对一些程序中的函数的处理不够合理,在自己的多次运行下 ,还是能够实现温度监控的功能。本次单片机实训让我很有成就感,并对以前所学的单片
13、机知识做了一个小结。专业 .专注.附件#include <reg51.h>#include <stdio.h>#include <intrins.h>#include <absacc.h>#defineuchar unsigned char#defineulong unsigned long#defineuint unsigned int#definePort_address XBYTE0X0CFA0专业 .专注.sbit REQ=P35;/ 请求信号 ,高电平有效sbit BUSY=P34;/ 忙检测sbit EOC=P32;/转换结束信号 ,
14、EOC=1- 转换结束 ,EOC=0- 正在转换void delay1ms(uint time) /延迟子程序 1uint ii;uint jj;for (ii=0;ii<time;ii+)for(jj=0;jj<200;jj+);void delay(uint time) /延迟子程序 2uint ii;专业 .专注.uint jj;for (ii=0;ii<time;ii+)for(jj=0;jj<110;jj+);void write_dat(uchar dat)/OCMJ2X8 写时序操作if(BUSY=0)delay1ms(1);P1=dat;REQ=1;de
15、lay1ms(1);REQ=0;专业 .专注.void write_chinese(uchar x,uchar y,uchar h,uchar l)/OCMJ2X8 写汉字操作write_dat(0xF0);/ 写汉字命令write_dat(x);/ 写横坐标 (取值范围 :00-07,02-09,00-09 )write_dat(y);/ 写纵坐标 (取值范围 :00-01,00-03,00-04 )write_dat(h);/ 写汉字码 - 高位write_dat(l);/ 写汉字码 - 低位void write_ASCII_8x16(uchar x,uchar y,uchar a)/OC
16、MJ2X8 写 ASCII 字符(8x16 )操作write_dat(0xF9);/ 写 ASCII 字符(8x16 )命令专业 .专注.write_dat(x);/ 写横坐标 (取值范围 :00-0F,04-13,00-13 )write_dat(y);/ 写纵坐标 (取值范围 :00-1F,00-3F,00-4F )write_dat(a);/ 写 ASCII 码void write_point(uchar x,uchar y)/OCMJ2X8画点 (1x1)操作write_dat(0xF2);/ 写画点命令write_dat(x);/ 写横坐标 (取值范围 :00-7F,20-9F,00
17、-9F )write_dat(y);/ 写纵坐标 (取值范围 :00-40,00-40,00-40 )void clear_lcd()/OCMJ2X8清屏操作write_dat(0xF4);专业 .专注.void lcd_init()REQ=0;BUSY=1;clear_lcd();/* 电压 AD 显示函数 */void display_digit(uint date)/ 分离任意三位数 ,给 LCD 送数uchar bai,shi,ge;bai=date/100;专业 .专注.shi=date%100/10;ge=date%10;write_ASCII_8x16(0,16,0x41);/
18、显示 "AD"write_ASCII_8x16(1,16,0x44);write_ASCII_8x16(2,16,0x3A);/ 显示 ":"write_ASCII_8x16(3,16,0x30+bai);write_ASCII_8x16(4,16,0x30+shi);write_ASCII_8x16(5,16,0x30+ge);/* 电压 V 显示函数 */void display_voltage(uint date)/ 分离任意五位数 ,给 LCD 送数uchar wan,qian,bai,shi,ge;wan=date/10000;qian=dat
19、e%10000/1000;专业 .专注. .bai=date%10000%1000/100;shi=date%10000%1000%100/10;ge=date%10;write_chinese(0,0,18,41);write_chinese(1,0,28,15);write_chinese(2,0,21,71);write_chinese(3,0,49,25);./ 显示 "采集电压 "write_ASCII_8x16(8,0,0x3A);/ 显示 ":"write_ASCII_8x16(9,0,0x30+wan);write_ASCII_8x16(
20、10,0,0x2E);/ 显示小数点write_ASCII_8x16(11,0,0x30+qian);write_ASCII_8x16(12,0,0x56);/ 显示电压符号V/* 温度值显示函数 */void display_temperature(int date)/ 分离任意四位数 ,方便给 LCD 送数专业 .专注.uchar qian,bai,shi,ge;write_chinese(3,1,46,34);write_chinese(4,1,22,40);/ 显示 "温度 "if(date>=0)qian=date/1000;bai=date%1000/10
21、0;shi=date%1000%100/10;ge=date%10;write_ASCII_8x16(10,16,0x2b);/ 显示正号 +write_ASCII_8x16(11,16,0x30+qian);write_ASCII_8x16(12,16,0x30+bai);write_ASCII_8x16(13,16,0x2E);/ 显示小数点write_ASCII_8x16(14,16,0x30+shi);专业 .专注.write_ASCII_8x16(15,16,0x30+ge);if(date<0)date=-date;qian=date/1000;bai=date%1000/1
22、00;shi=date%1000%100/10;ge=date%10;write_ASCII_8x16(10,16,0x2d);/ 显示负号 -write_ASCII_8x16(11,16,0x30+qian);write_ASCII_8x16(12,16,0x30+bai);write_ASCII_8x16(13,16,0x2E);/ 显示小数点write_ASCII_8x16(14,16,0x30+shi);write_ASCII_8x16(15,16,0x30+ge);专业 .专注./* 中断初始化函数 */void config(void)IT0=1;/INT0 下降沿中断EX0=1;
23、/ 允许 INT1 中断EA=1;void AD_init(void)Port_address=0x00;/ 虚写一次 ,启动通道 0/*AD转换函数 */专业 .专注.uchar AD(void)uchar ad_date;/ 保存经 AD 转换后的数据ad_date=Port_address;return ad_date;/ 返回数据/* 温度处理函数 */int deal_wendu()int v,t;uint da;da=AD();v=da*195;if(da>=14&&da<=24)专业 .专注.t=da*100-4400;if(da>=24&&da<=39)t=67*da-3600;if(da>=39&&da<=60)t=48*da-2800;if(da>=60&&da<=86)t=38*da-2300;if(da>=86&a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025设备采购合同(制造业)
- 2025物业员工服务合同协议
- 2025维修服务合同范文
- 2025年插片机项目建议书
- 2025餐饮服务承包经营合同范本
- 2025年工矿有轨专用车辆(窄轨机车车辆)项目建议书
- 2025年猪肉铺项目合作计划书
- 2025年八氟戊醇合作协议书
- 隔离栅 施工方案
- 矿石挖掘施工方案
- 职高英语高一试题及答案
- 英语课件 外研版(2019)选择性必修四 Unit6 Developing ideas
- 2024-2025年第二学期一年级语文教学进度表
- 3.1《百合花》课件 统编版高一语文必修上册
- 会展营销学知到智慧树章节测试课后答案2024年秋上海旅游高等专科学校
- 主动脉球囊反搏术(IABP)护理
- 《关于加强中小学地方课程和校本课程建设与管理的意见》专题培训
- 2025年中考物理押题猜想卷(苏州卷)(全解全析)
- 《半导体行业发展历程》课件
- 新能源开发知识培训课件
- 精神科患者冲动伤人应急演练
评论
0/150
提交评论