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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机的多路数据采集ADC.docx

1、基于单片机的多路数据采集ADC单片机原理及系统课程设计评语:考勤10分守纪10分过程30分设计报告30分答辩20分总成绩(100)专 业: 自动化 班 级: 自动化姓 名: 学 号: 指导教师: 2015年12月29日基于单片机的多路数据采集1引言通过一个学期的学习,我认为要学好单片机这门课程,不仅要认真学习课本知 识,更重要的是要学会通过实践巩固学到的知识, 本次课设中我们设计制作的题 目是基于单片机的多路数据采集系统设计。1.1设计背景随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各 个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数据 采集。本设计使用

2、简便,功能丰富。本设计控制芯片采用的是 STC89C51, AD转换采用ADC0809芯片,显示采 用的是四位共阴极数码管。关键字:STC89C51、ADC0809、8路电压采集。2.1系统设计方案在电量的测量中,电压、电流和频率是最基本的三个被测量, 其中电压量的 测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压, 所 以数字电压表就成为一种必不可少的测量仪器。本次设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的 数字量在传送到数据处理模块。数据处理则由芯片STC89C51来完成,其

3、负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模 块进行显示;此外它还控制着 ADC0809芯片工作。2.2总体设计方案3硬件设计3.1晶振电路晶体振荡器,简称晶振,它可以等效成一个电容和一个电阻并联再串联一个 电容的二端网络。晶振有一个重要的参数,那就是负载电容值,选择与负载电容 值相等的并联电容,就可以得到晶振标称的谐振频率。图2晶振电路3.2 P0 口上拉电阻图3九排上拉电阻本次设计中九位排阻在依次连接单片机 P0 口各引脚的同时并依序连接数码管 各引脚(上拉电阻VCC端接单片机VCC端)o上拉电阻既能为单片机提供部分电 压能力,同时也能起到预防线路中电流

4、过大的作用。3.38路电压输入模块电位器是可变电阻器的一种。通常是由电阻体与转动或滑动系统组成, 即靠 一个动触点在电阻体上移动,获得部分电压输出。电位器的作用即是调节电压(含 直流电压与信号电压和电流的大小)。11mn图5 8路电压输入电路3.4显示模块四位数码管是一种半导体发光器件, 其基本单元是发光二极管。本次设计用 的是4位共阴数码管,其内部结构如图6。DSJ Dpy Ambeh-iCC1 1174211053a to* y 6309-1TT图6四位数码管内部结构图3.5 AD转换模块本设计中AD转换采用ADC0809A5片。ADC0809是美国国家半导体公司生产 的CMOS:艺8通道

5、,8位逐次逼近式A/D模数转换器。其内部有一个 8通道多 路开关,它可以根据地址码锁存译码后的信号, 只选通8路模拟输入信号中的一 个进行A/D转换。该芯片具有以下特性:1) 8路输入通道,8位A/D转换器,即分辨率为8位;2) 具有转换起停控制端;3) 转换时间为100卩s(时钟为640kHz时),130卩s (时钟为500kHz时);4) 单个+5V电源供电;5) 模拟输入电压范围0+5V,不需零点和满刻度校准;Component1图7 ADC0809引脚图ADC0809芯片有28条引脚,采用双列直插式封装,其芯片引脚图如图 示。下面说明各引脚功能。(1)IN0IN7: 8路模拟量输入端。

6、(2) D0D7: 8位数字量输出端。D(D7均为三态缓冲输出形式,可以和 单片机的数据线直接相连。D0为最低位,D7为最高位。(3)A、B、C: 3位地址输入线,A为低地址,C为高地址,用于选通8路 模拟输入中的一路。(4)ALE地址锁存允许信号,输入高电平有效。对应 ALE上跳沿,A、B、 C地址状态送入地址锁存器中。(5) START A/D转换启动脉冲输入端,输入一个正脉冲(至少 100ns宽) 使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。(6)EOC A/D转换结束信号输出,当A/D转换结束时,此端输出一个高电 平,转换期间一直为低电平。(7)OE数据输出允许信号,输

7、入高电平有效。当 A/D转换结束时,此端 输入一个高电平,才能打开输出三态门,输出数字量。(8) CLK时钟脉冲输入端,要求时钟频率不高于 640KHZ ADC080啲内部 没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。(9)VREF( +)、VREF(-):基准电压。用来与输入的模拟信号进行比较, 作为逐次逼近的基准。A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题 是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用 如下方式。A/D转换芯片有表明转换完成的状态信号,ADC0809勺EOC端。因此可以用 查询方式,查询EOC的状态,可确认

8、转换是否完成,并接着进行数据传送。3.6八路led灯显示根据输入通道选择点亮对应的led灯3.7实物调试图4.软件设计4.1 Proteus软件仿真对抢答器电路图的Proteus软件仿真主要是由我完成的,在实际电路设计中, 需要先通过仿真软件测试电路以及编译的程序, 检查外围电路设计是否合理,软件编译是否正确,以及软件和硬件电路能否正常配合工作, 能否准确的实现所设计的功能。如果测试通过,电路仿真没有问题能完全实现功能的话就可以实际的 做板子的焊接工作了。我选择了常用的单片机仿真软件 proteus7.0以及keil进行 仿真。4.1.1仿真开始点击开始仿真便出现上图界面,此时数码管上显示的是

9、第一个滑动变阻器上的 电压,对应第一个滑动变阻器下面那个 LED灯也为亮的状态。这时为手动模式, 当按一下按键,检测通道便切换为第二路,同时数码管显示和 LED指示都发生相应变化,结果如图8所示。图8仿真开始图9手动切换输入通道4.1.2设置自动或者手动采集方式如图8所示,长按下进入自动采集并显示状态 每隔3s,跳到下一个采集通道。图10按下开关进入自动采集状态4.2程序流程图A/D转换子程序和显示子 程序主框图如图11所示。根据模块的划分原则,将该程序划分初始化模块, 程序,这三个程序模块构成了整个系统软件的主程序。调用AD转换程 序调用数据处理 程序调用显示程序图11程序设计流程图A/D转

10、换流程图,如图12所示。图12 A/D转换流程图按键切换流程图,如图13所示。Key_press=O蜂鸣器响延时Key_press+TR1取反采集下一个通道图13按键切换流程图总结在本次设计多路数据采集的课设过程中,我们利用 AT89C51单片机及ADC0809芯片,利用单片机的定时器/计数器定时和计数的原理输出需要的时钟 信号,利用Proteus和Keil软件设计出实验电路,并且完成了电路板的焊接工作, 将件和硬件结合在一起完成了课设的任务。在本次课设中,我意识到将理论知识与实践相结合的重要性,对于单片机这 样的课程,仅仅通过了解课本上的知识是远远不够的,我通过查资料和搜集有关 文献,培养了

11、自学能力,通过利用软件仿真和焊接电路, 在很大程度上提高了我 的动手能力。我们在课设的过程中,遇到了很多问题,比如我在硬件电路的搭建 过程中错把共阴极数码管接成了共阳极数码管, 使得数码管无法正常显示,通过查看数码管的资料,我修改了显示程序,调试出正确的结果,类似的问题出现了 很多,通过一一排查,终于完成了课设任务,结果表明,有付出必有收获,把握 重点、攻克难关,活学活用对于牢固的掌握知识,是非常有用的。在此次课设中,我学到了很多,也通过不断纠正自己的错误,意识到自身的 不足,我对知识的掌握还没有实现深层次的理解记忆,我相信这些教训都为我以 后的学习奠定了良好的基础,并且在以后的学习中我要有耐

12、心,不能急功近利。参考文献1王思明,张金敏,苟军年单片机原理及应用系统设计 M.北京:人民邮电出版社,2008.2冯育长,邹小兵.单片机系统设计与实例指导M.西安:西安电子科技大学出版社 ,2004.附录A源程序程序如下:#i nclude 头文件定义#defi ne uchar un sig ned char / 宏定义#defi ne uint un sig ned intsbit P07=P0A7; 控制数码管/0809控制端口定义sbit OE=P3A2;sbit EOC=P3A1;sbit ST=P3A0;sbit CLK=P3A3; / 时钟定义sbit A_AD=P2A2;sbi

13、t B_AD=P2A1;sbit C_AD=P2A0;sbit Wei1=P2A4;sbit Wei2=P2A5;sbit Wei3=P2A6;sbit Wei4=P2A7;sbit Hc138_C=P3A4;sbit Hc138_B=P3A5;sbit Hc138_A=P3A6;sbit Mode_Key=P3A7;sbit Beep=P2A3;/共阴数码管段码定义 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,Vuchar code table11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3e; float Ad_

14、Value,V_Value;uchar VOL_Vlaue3;uchar ch_change=0xf0; /通道选择变量 0xf0-0xf7,8 路选择void delayms( uint xms)uint i,j;for(i=xms;i0;i-)for(j=110;j0;j-);void Timerni t() _TMOD=0x11; /T0:16 位计数 T1 : 16 位计数TH0=(65536-200)/256; /定时器用于输出的时钟TL0=(65536-200)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;E

15、T1=1;TR0=1;/ TR1=1;float Get_0809_Ad( uchar CH ) CH:0xf0-0xf7,对应 8 个通道ST=0; 启动AD转换OE=0;ST=1;switch (CH)case 0xf0: C_AD=0;B_AD=0;A_AD=0; break;case 0xf1: C_AD=0;B_AD=0;A_AD=1;break;case 0xf2: C_AD=0;B_AD=1;A_AD=0; break;case 0xf3: C_AD=0;B_AD=1;A_AD=1; break;case 0xf4: C_AD=1;B_AD=0;A_AD=0; break;cas

16、e 0xf5: C_AD=1;B_AD=0;A_AD=1; break;case 0xf6: C_AD=1;B_AD=1;A_AD=0; break;case 0xf7: C_AD=1;B_AD=1;A_AD=1; break;default: break;ST=0;while(EOC=0);OE=1;Ad_Value=P1; /从 P1 口读取数据OE=0;return Ad_Value; _void display()V_Value=(Get_0809_Ad(ch_cha nge)*1.0/255.0)*500.0; 数据处理VOL_Vlaue0=V_Value/100;VOL_Vlaue

17、1=(ui nt)V_Value/10%10;VOL_Vlaue2=(ui nt)V_Value%10;P0=tableVOL_Vlaue0;P07=1; /显示小数点delayms(5);Wei 仁1;Wei2=0;P0=tableVOL_Vlaue1;delayms(5);Wei2=1;Wei3=0;P0=tableVOL_Vlaue2;delayms(5);Wei3=1;Wei4=0;P0=table10; 最后一个符号 Vdelayms(5);Wei4=1;void Key() /实现自动循环检测与手动循环检测uint key_press=0;if(Mode_Key=0) _Beep=

18、0;delayms(100);Beep=1;while(Mode_Key=0) _ key_press+; delayms(10);if(key_press=200) _Beep=0; delayms(100);Beep=1;if(key_press=200) /2s _TR1=!TR1;elsech_change=ch_change+1; if(ch_cha nge=0xf8) ch_cha nge=0xf0;void Led_Dis() _switch (ch_cha nge) _case OxfO: Hc138_C=0;Hc138_B=0;Hc138_A=0; break;case 0x

19、f1: Hc138_C=0;Hc138_B=0;Hc138_A=1; break;case 0xf2: Hc138_C=0;Hc138_B=1;Hc138_A=0; break;case 0xf3: Hc138_C=0;Hc138_B=1;Hc138_A=1; break;case 0xf4: Hc138_C=1;Hc138_B=0;Hc138_A=0; break;case 0xf5: Hc138_C=1;Hc138_B=0;Hc138_A=1; break;case 0xf6: Hc138_C=1;Hc138_B=1;Hc138_A=0; break;case 0xf7: Hc138_C=

20、1;Hc138_B=1;Hc138_A=1; break;default: break;void mai n()Timernit();while(1)Key();display(); 显示数据Led_Dis();/*定时器服务函数*/void time0() interrupt 1 /TO中断服务,提供时钟信号TH0=(65536-200)/256; /5k 时钟频率TL0=(65536-200)%256;CLK=CLK;uint t1_flag;void time1() in terrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1_flag+;if(t1_flag=20*3) /到达 3 秒t1_flag=0;ch_cha nge+;Beep=0; delayms(IOO);Beep=1;if(ch_cha nge=0xf8) ch_cha nge=0xf0;

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

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