ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:226.21KB ,
资源ID:28557584      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28557584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据采集报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据采集报告.docx

1、数据采集报告对温度、光强数据采集系统的实现摘要: 本数据采集系统是以AT89C52单片机为核心,通过ADC0809模数转换器模块对外围数据温度、光强两个参数同时进行采集,然后通过LCD1602液晶显示实时显示采集到的数据。在基于Proteus的单片机的多路数据采集系统的仿真设计的准确无误的基础上,进行电路的焊接、调试,最终实现该数据采集系统的设计。数字温度、光强显示计主要由温度检测电路、光强检测电路、ADC0809模数转换器、AT89C52单片机、LCD1602液晶等几部分组成。温度检测电路主要由LM35与一个同相比例运算放大电路串联,光强检测电路由一个光敏电阻与一个电阻串联组成。温度、光强两

2、个模拟信号经过AD转换器转换为数字信号后送入单片机,处理后用LCD1602显示采集到的数据。关键词:AT89C52单片机 AD0809模数转换器 LM35 LCD1602 一、引言Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。本文基于Proteus的单片机多通道数据显示系统的设计,由单片机对外界多路模拟量进行采集,由各路传感器提供数值,再通过AD转换进行模数转换,然后由液晶显示。在Proteus准确的仿真设计下,进行电路的焊接、调试,最终实现该数据采集系统的实现。 二、设计方案2.1

3、、电路系统框图确定该数据采集系统由温度检测模块、光强检测模块、主控模块、显示模块组成。电路系统框图如图(1)所示。图(1)2.2、显示方案选择方案1:用LED显示。这种方法尽管电路简单,成本低廉,但是显示的字符数据很有限,比如有些单位字符无法显示。方案2:用LCD显示。这种方法显示更加直观,而且显示的字符更加广泛。与较方案1比较,我们选择方案2.2.3、测温元件方案的选择方案1:由于本电路是一个测温电路,可以使用热敏电阻之类的器件利用其感温效应,再将随着被测温度变化的电压和电流采集过来,进行A/D转换之后,通过单片机进行处理,再进过LCD显示出来。这种方案设计上较为复杂。方案2:LM35系列精

4、密摄氏温度传感器是美国NS公司产品,LM35系列是精密集成电路温度传感器,其输出的电压特性线性地与摄氏温度成正比。因此,LM35比按绝对温标校准的线性温度传感器优越得多。LM35系列传感器生产制作时已经过校准,输出电压与摄氏温度一一对应,使用极为方便。灵敏度为10.0mv/,精度在0.4至0.8(-55至+150温度范围内),重复性好,低输出阻抗,线性输出和内部精密度校准使其与读出或控制电路接口简单和方便,可单独电源和正负电源工作。相比之下,我们选择LM35作为我们的温度检测。2.4、光强检测方案光敏电阻器是一种对光敏感的元件,它的电阻值能随着外界光照强弱(明暗)变化而变化。将它与一个电阻相串

5、联,利用分压作用可以测出它两端的电压作为模拟信号输入。2.5、温度检测电路模块设计 温度传感器用LM35,将LM35输出电压信号经过同相比例放大器放大。因为为了减小误差,又考虑到ADC0809的电压范围是0V+5V,将温度传感器的微弱的模拟信号放大到与A/D转换器满量程电压相应的电平值,以便充分利用A/D转换器的满量程分辨率。因此把LM35与一个同相比例放大器相连。2.6、显示电路模块设计显示电路采用液晶LCD1602,它是一种字符型液晶模块,是一种采用57点阵图形来显示字符的162点阵液晶显示器。其特点是:亮度高、工作电压低、功耗小、易于集成、驱动简单、寿命长、耐冲击且性能稳定。LCD160

6、2与单片机接口采用串行方式控制。2.7、分频电路设计 考虑到数据采集系统采样频率为0.5HZ,又因为AT89C52单片机的的ALE引脚的输出频率是内部时钟频率的1/6,因此用两个D触发器将ALE端的时钟频率四分频,作为AD0809的时钟信号。三、硬件电路设计3.1、理论计算(1)同相比例运算放大电路的输出电压Vo的计算由于由LM35采集回来的模拟信号电压很微弱,为了充分发挥A/D转换器的满量程分辨率,需要利用放大电路将微弱的输入信号进行放大,在设计当中我们将微弱信号放大了3.5倍。计算公式如下:Vo=3.2、模块电路及元件参数(1)、电源指示灯图(2)(2)、温度检测电路(温度传感器LM35和

7、同相比例放大器)图(3)(3)、光强检测电路图(4)(4)、分频电路图(5)(5)、液晶显示电路图(6)3.3、ADC0809与AT89C52接口设计(1)、ADC0809的各个引脚及功能图(7)15、2628,IN0IN7:8路模拟量输入端。1415、8、1721,D0D7:8位数字量输出端。2325,ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路22,ALE:地址锁存允许信号,输入,高电平有效,对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。6,START:AD转换启动信号,输入高电平有效,START上升沿时,复位ADC0809;START下降沿时启动芯片

8、,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST.7,EOC:AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 9,OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量,用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。10,CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ,EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。12、16,

9、REF(+)、REF(-):基准电压。 11,Vcc:电源,单一5V。 13,GND:地(2)、ADC0809的工作原理当通道选择地址有效时,ALE高电平信号一出现,地址便马上被锁存,这时转换启动信号START紧随ALE之后(或与ALE同时)出现。START的上升沿将逐次逼近寄存器SAR复位,ADC0809下降沿时启动芯片,开始AD转换,转换期间START始终为低电平。ADC上升沿出现后的2s8个时钟周期内(不定),EOC信号将变低电平,以指示转换操作正在进行中,直到转换完成后EOC再变高电平。微处理器收到变为高电平的EOC信号后,便立即送出高电平OE信号,打开三态门,读取转换结果。根据方案的

10、选择,该数据采集系统由单片机AT89C51及其外围的晶振电路和电源指示电路、温度检测电路、光强检测电路、ADC0809、同相比例运算放大电路、LCD1602液晶显示模块几部分组成,其电路的总图见附录。(3)、ADC0809与AT89C52接口设计图图(8)四、软件设计4.1系统主程序流程图图(9)程序流程图说明:程序开始首先进行1602液晶屏幕清屏操作、1602液晶显示初始设置(1.显示模式设置为16*2 2.指针自加一 3.初始化指针位置在第一行第一列)、书写格式说明,然后进入中断函数初始化设置。程序进入while循环,打开中断,选择ADC0809的模拟信号输入通道,当ADD_A=0,ADD

11、_B = 0,ADD_C = 0时,选择通道IN0,进行温度数据采集,当ADD_A=1,ADD_B = 0,ADD_C = 0,选择通道IN1,进行光照数据采集,最终通过ADC0809将模拟信号转换数字信号,通过数据转换,让数据通过LCD1602显示。4.2、系统C语言程序(见附录)五、系统调试与测试将电路焊接结束,用万用表检测芯片的引脚及线与线之间是否有无误。再检测各个模块电路是否能正常工作。在检测无误的情况下,下载所编写的程序,看显示所测得的数据是否满足所达到的要求。看采样频率是否到达0.5HZ,温度的测量精度是否为1摄氏度,光强的精度是否达到0.5%。如果显示数据结果不对,再不断调试所编

12、写的程序,直到达到设计要求。5.1、测试条件单一电源+5V、同相放大电路电压5.2、测试仪器数字万用表、双踪示波器、双路稳压电源5.3、测试数据测试数据见下表:表中温度电压是万用表测得的LM35随温度变化的电压经同相比例放大器放大后的电压,光强电压是光敏电阻随光照强度变化的电压。(1)温度测试数据:电压/V0.170.681.191.72.212.723.233.57温度/C5203550658095105(2)光强测试数据:电压/V0.260.631.051.261.892.312.733.15光强/%5.015.525.035.045.555.565.075.5由以上测得数据看出,测得的温

13、度精度为1摄氏度,光照精度0.5%。满足设计要求。六、结束语 通过基于51单片机的对外围电路的温度、光照的数据采集,学到了许多新的知识,为后面学习打下了良好的基础。附录:1、系统主程序#include#includesbit ADD_A = P35;sbit ADD_B = P36;sbit ADD_C = P37;sbit START = P31;sbit OE = P30;#define AD P1#define D P0unsigned char i = 5;unsigned char AD_result, display, cnt = 0;void SLE_channel(unsign

14、ed char channel);void delayms(unsigned char xms);void timer1_init(void);unsigned char ADC_get_data(void);void Light(unsigned char L_data);unsigned char si_she_wu_ru(unsigned char pre_data);void main(void) LCD_CLR_screen(); /液晶清屏操作 lcd_1602_init(); /初始化液晶,2 x 16 5x7 LCD_1602_printf(1, 1, L(%) T(C)%d)

15、; /辅助提示符 timer1_init(); /定时器0的初始化 while(1) /loop /-delayvoid delayms(unsigned char xms) /延时函数 unsigned int x, y; for(x = xms; x 0; x-) for(y = 110; y 0; y-);/-温度转换函数unsigned char si_she_wu_ru(unsigned char pre_data) unsigned char char_temp, temp; float float_temp; char_temp = pre_data * 0.55; float_

16、temp = pre_data * 0.55; /温度函数 if(float_temp - char_temp) = 0.5) /四舍五入处理 temp = char_temp + 1; else temp = char_temp; return temp; /-光强转换函数void Light(unsigned char L_data) unsigned int temp=5; unsigned char temp_yu, temp_mo; temp = 102 - (unsigned char)(L_data / 2.15); /光强函数 temp = temp * 10; temp_mo

17、 = (temp / 10); /取光强的整数部分 temp_yu = (temp % 10); /取光强的小数部分 if(temp_yu = 0) & (temp_yu 8; /定时时间为50ms TL0 = (65536 - 50000); EA = 1; /开总中断 ET0 = 1; /开定时器中断 TR0 = 1; /启动定时器/-定时中断函数void timer0() interrupt 1 /进中断先关闭总中断 EA = 0; TH0 = (65536 - 50000) 8; /重装初值 TL0 = (65536 - 50000);/-中断处理函数在此书写 cnt+; /统计进入中

18、断的次数 if(cnt = 40) cnt = 0; /2秒后,清进中断的次数 if(i = 7) /往返取通道5, 6 i = 5; SLE_channel(i); /选择模拟量的输入通道 ADC_start(); /开启AD转换 AD_result = ADC_get_data(); /获取结果 display = si_she_wu_ru(AD_result); /温度精度处理 switch(i) /选择显示通道 case 5: LCD_1602_print_number(2, 8, 3, (unsigned int)display); break; case 6: Light(AD_result); break; i+; /-禁止在此书写 EA = 1;2、电路图: .

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1