AD转换实验报告

上传人:29 文档编号:68640041 上传时间:2022-04-03 格式:DOC 页数:12 大小:335.50KB
返回 下载 相关 举报
AD转换实验报告_第1页
第1页 / 共12页
AD转换实验报告_第2页
第2页 / 共12页
AD转换实验报告_第3页
第3页 / 共12页
点击查看更多>>
资源描述
精选优质文档-倾情为你奉上A/D转换实验报告 专心-专注-专业 摘要 本设计是利用AT89C51、ADC0809、CD4027芯片为核心,加以其他辅助电路实现对信号的A/D转换,其中以单片机AT89C51为核心控制A/D转换器。先是对信号进行采集,然后用ADC0809对信号实现从模拟量到数字量的转换。改变采样数据,调整电路,使其达到精确转换。 目录 1.方案设计与论证 1.1理论分析 8位A/D转换由芯片内部的控制逻辑电路、时序产生器、移位寄存器、D/A转换器及电压比较器组成,它具有将模拟量转换成数字量的特性,其原理图如下:AD转换原理图(1) 1.2输出、输入方案选择A/D转换器有多路选择器,可选择八路模拟信号IN0IN7中的一路进入A/D转换。现在选择IN0通道作为输入,则对应的地址码位ADDC=0、ADDB=0、ADDA=0。当转换完成后,OE=1,打开三态输出锁存缓冲器,将转换数据从D7D0口输出到单片机的P0端口。A/D转换器 IN口输入 D端口输出 图(2) 1.3显示方案单片机控制数码管显示有两种动态和静态两种方法,由于静态控制数码管每次只能显示一位,造成资源浪费,所以选择动态扫描,并增加变换频率。 1.4时钟脉冲选择 方案一:可以直接用矩形波来控制 方案二:ALE通过JK触发器完成二分频,然后Q端接CLK。因为晶振的频率是12MHz,ALE的频率为12NHz1/6=2MHz,经过JK触发器二分频后就是1MHz.2. 硬件设计2.1 A/D转换器模块A/D转换电路图(3)模拟量从IN0端口输入,经电压比较器后输入到控制电路,转换后从D0D7口输出,地址码位ADDC=0、ADDB=0、ADDA=0。OE端输出允许控制信号,EOC转换结束控制信号,EOC=0,转换结束后EOC=1。START转换启动信号,上升沿将片内寄存器清零,下降沿开始A/D转换。时钟信号输入端CLOCK接触发器Q端,把1MHz的信号作为时钟脉冲输入。 2.2单片机模块 图(4) 如图(4),选用89C51单片机,89C51单片机本身的电源电压是5v,有两种低功耗方式:待机方式和掉电方式。在掉电状态下,其耗电电流为3mA,在掉电方式下提供约50mA的电流。80C51单片机是8位单片机,速度较慢,且不能在线编程。在单片机的外部加一个振荡电路,这个电路有晶振和两个电容组成,晶振两端分别接到两个电容的一端,两个电容的另一端都要接地。这两个电容串联的容量就是就等于负载电容,这两个电容选用33PF的。在P0端口接一个上拉电阻,增加高电平驱动能力。P0口输出七段码,P2.0、P2.1、P2.2口输出位选码。2.3JK触发器模块图(5) JK触发器具有置0、置1、保持、翻转的功能。J=1,K=0时,置1;J=0,K=1时,置0;J=K=0,保持;J=K=1,CLK下降沿到来时翻转。3.软件设计系统软件流程图如下图(6),其中主要包含这三部分,即信号采样、A/D转换、输出显示。信号采样:先产生启动转换的正脉冲信号,对数据进行采样。 A/D转换:对输入数据转换,把数据分取个位、十分位、百分位。 输出显示:位选端P2.0、P2.1、p2.2分别显示个位、十分位、百分位,完成三位显示。 开始 系统初始化 结束 输出显示 A/D转换完 信号采样否 图(6)4.仿真验证与调试 4.1测试方法系统对实验进行仿真验证,初始值显示0.00,最大值为5.00。步骤:1)接入5V电源; 2)改变滑动变阻器的阻值,观察数码管的显示的变化。 初始图(7) 最大值图(8)4.2性能测试仪器直流电源 数字万用表4.3实验数据 表1 实验数据表组别12345678910仿真(V)0.000.290.851.451.852.743.744.354.725.00实测(V)0.000.290.811.421.872.663.674.314.724.97显示(V)0.000.320.881.471.862.763.724.334.735.004.4误差分析 造成本实验的误差可能有以下几点原因:1)在接入电源时的导线可能增加阻值;2)滑动变阻器可能引起阻值误差;3)万用表的接触不良也有误差。5.设计总结及体会 在收到任务时,根据要求从总体到部分来仔细分析任务,最后到具体的器材使用,而且对每个组员合理分配任务。在设计时,对每个模块设计多方案,从中择优选用。硬件部分要注意所加电压不能过大,否则会烧毁集成块。实际电路焊接时,线路要尽量短、直,便于以后检查。对于每一点要焊实,不能出现虚焊,不可短路。软件设计要模块化,语言要尽量简洁程序应采用模块化结构,程序代码简洁,具有较高执行效率。对于变量的使用,尽可能多的使用局部变量,编写程序需要不断的修改、整理、优化,以使程序具有较少的代码量,较高工作效率。这设计让我们学到了很多知识,了解和掌握许多芯片的作用和功能。通过小组成员的共同努力实验终于出来了,非常有成就感。也要感谢老师的悉心指导。附录(一)实物图附录(二)软件程序#include #include #define uint unsigned int #define uchar unsigned charsbit ST=P24;sbit OE=P25;sbit EOC=P26;sbit w_select1=P20;sbit w_select2=P21;sbit w_select3=P22;sbit w_select4=P23;uchar num_1=0,num_2=0,num_3=0;/uchar code table10 = 0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09; /uchar code table10 = 0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; uchar code table10 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f; /* * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 */ void Delay_1ms(uint x) uint h,k; /uchar k; for(h = x; h 0; h-) for(k = 20; k0; k-); void DA_change(uchar k) float D_value;D_value=5*k/255; num_1=D_value/1;/取个位值 num_2=(D_value-num_1)*10/1;/取小数点后第一位值 num_3=(D_value-num_1)*10-num_2)*10/1;/取小数点后第二位值/* * 名称: Display(uchar k) * 功能: 将参数分成十位、个位分别显示* 输入: k (键盘数值) * 输出: P0口输出七段码,P2口输出位选码*/ void Display() P0 = tablenum_1+0x80; /需显示小数点 w_select3=0; Delay_1ms(1); /显示5ms个位 w_select3=1; /消隐 P0 = tablenum_2; w_select2=0; Delay_1ms(1); /显示5ms小数点后第一位w_select2=1; /消隐 P0 = tablenum_3; w_select1=0; Delay_1ms(1); /显示5ms小数点后第二位/* * 名称 : Main() * 功能 : 主函数 */ void main(void) uchar Key_Value = 16; /两次读出的键值 uchar getdata; while(1)P2=P2&0xf0;P0=0xff;P3=0xff;ST=0;/产生启动转换的正脉冲信号ST=1;ST=0; while (EOC=0);OE=1;getdata=P0;OE=0;DA_change(getdata);Display( ); /没有按键按下,也显示电压值 num_1=0,num_2=0,num_3=0;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!