




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务要求任务要求 1 4 路模拟量输入 输入电压范围 0 5V 分辨率 8 位 转换时间 100us 具有显示 数码管 测量结果 用 10 进制显示直流电压值或交流电压峰值 的功能 2 1 路模拟量输出 用来分别重现 4 路被采信号的波形 供示波器观测 摘摘 要要 本数据采集系统是基于单片机 AT89C51 来完成的 4 路的模拟电压通过通用的 8 位 A D 转换器 ADC0809 转换成数字信号后 由单片机进行数据处理 并将处理后的数据送 LED 显示器显示 再经过常用的 8 位 D A 转换器 DAC0832 将数字数据转换成模拟量 供 示波器观测 一 系统的方案选择和论证一 系统的方案选择和论证 根据题目基本要求 可将其划为如下几个部分 4 路模拟信号 A D 转换 单片机数据处理 LED 显示测量结果 D A 转换模拟量输出 系统框图如图 1 所示 图 1 单片机数据采集系统框图 1 4 路模拟信号路模拟信号 A D 转换转换 由于被测电压范围为 0 5V 分辨率为 8 位 转换时间为 100us 所以 A D 转换部分 本系统选择常用的 8 路 8 位逐次逼近式 A D 转换器 ADC0809 ADC0809 芯片有 28 条引脚 采用双列直插式封装 下面说明各引脚功能 IN0 IN7 8 路模拟量输入端 2 1 2 8 8 位数字量输出端 ADDA ADDB ADDC 3 位地址输入线 用于选通 8 路模拟输入中的一路 ALE 地址锁存允许信号 输入 高电平有效 START A D 转换启动信号 输入 高电平有效 EOC A D 转换结束信号 输出 当 A D 转换结束时 此端输出一个高电平 转 换期间一直为低电平 OE 数据输出允许信号 输入 高电平有效 当 A D 转换结束时 此端输入一个高 电平 才能打开输出三态门 输出数字量 CLK 时钟脉冲输入端 要求时钟频率不高于 640KHZ REF REF 基准电压 Vcc 电源 单一 5V GND 地 ADC0809 的工作过程是 首先输入 3 位地址 并使 ALE 1 将地址存入地址锁存器 中 此地址经译码选通 8 路模拟输入之一到比较器 START 上升沿将逐次逼近寄存器复位 下降沿启动 A D 转换 之后 EOC 输出信号变低 指示转换正在进行 直到 A D 转换 完成 EOC 变为高电平 指示 A D 转换结束 结果数据已存入锁存器 这个信号可用作 中断申请 当 OE 输入高电平 时 输出三态门打开 转换结果的数字量输出到数据总线上 2 单片机数据处理 单片机数据处理 选择美国 ATMEL 公司的 CMOS8 位单片机 AT89C51 其工作电压为 2 7 6V 具有低 电压低功耗性能和高性价比 兼容标准 MCS 51 指令系统 4Kbytes 的 PEROM 和 128bytes 的 RAM 片内置通用的 8 位中央处理器 CPU 和 Flash 存储单元 AT89C51 是一种带有 4 KB 闪烁可编程可擦除只读存储器的低电压 高性能 CMOS 8 位 微处理器 可为很多嵌入式控制系统提供灵活且价廉的方案 所以 本设计采用 ATMEL 公司的 AT89C51 作为程序的主控芯片 AT89C51 数据总线是由 P0 口提供的 P0 口本身能以多种方式提供数据总线和地址总 线 当 ALE 输出信号为高电平时 P0 将输出的数据锁入总线驱动器中作为地址的低 8 位 然后和 P2 送出来的高 8 位地址一起组成一个完整的 16 位地址 以寻址到外部的 64KB 的 地址空间 AT89C51 的地址总线比较简单 只有 3 个 RD WR PSEN 其中 RD 是用来 读取外部数据内存的控制线 WR 是用来写数据到外部数据内存的控制线 PSEN 是用来 存取外部程序内存的读取控制线 3 LED 显示测量结果显示测量结果 这里选择的是广州周立功单片机发展有限公司自行设计的数码管显示驱动及键盘扫描管 理芯片 ZLG7289B 它可直接驱动 8 位共阴式数码管 或 64 只独立 LED 同时还可 以扫描管理多达 64 只按键 ZLG7289B 内部含有显示译码器 可直接接受 BCD 码或 16 进制码 并同时具有 2 种译码方式 此外 还具有多种控制指令 如消隐 闪烁 左移 右移 段寻址等 ZLG7289B 采用 SPI 串行总线与微控制器接口 仅占用少数几根 I O 口 线 利用片选信号 多片 ZLG7289B 还可以并接在一起使用 能够方便地实现多于 8 位 的显示或多于 64 只按键的应用 4 D A 转换模拟量输出转换模拟量输出 在本设计中 D A 转换的作用是使得采集处理过的数据通过 D A 转换电路后送示波器进 行观察 这里选择了 DAC0832 这一 D A 转换器 它是一个 8 位 D A 转换芯片 唯一电源 供电 从 5V 15V 均可正常工作 其引脚功能说明如下 DI0 DI7 数据输入线 TLL 电平 ILE 数据锁存允许控制信号输入线 高电平有效 CS 片选信号输入线 低电平有效 WR1 为输入寄存器的写选通信号 XFER 数据传送控制信号输入线 低电平有效 WR2 为 DAC 寄存器写选通输入线 Iout1 电流输出线 当输入全为 1 时 Iout1 最大 Iout2 电流输出线 其值与 Iout1 之和为一常数 RFb 反馈信号输入线 芯片内部有反馈电阻 Vcc 电源输入线 5v 15v Vref 基准电压输入线 10v 10v AGND 模拟地 摸拟信号和基准电源的参考地 DGND 数字地 两种地线在基准电源处共地比较好 二 系统的硬件设计二 系统的硬件设计 本系统硬件电路包括以下几个部分 AT89C51 外围电路 如时钟电路 复位电路等 AT89C51 和 ADC0809 接口电路 AT89C51 和 DAC0832 接口电路 LED 显示电路 1 AT89C51 外围电路 如时钟电路 复位电路等 外围电路 如时钟电路 复位电路等 AT89C2051 中有一个用于构成内部振荡器的高增益反相放大器 引脚 XTAl1 和 XTAL2 分别是该放大器的输入端和输出端 这个放大器与作为反馈元件的片外石英晶体一 起构成自己振荡器 外接石英晶体和电容 C1 C2 接在放大器的反馈回路中构成并联振荡 电路 对外接电容没有太严格的要求 但电容容量的大小会轻微影响振荡频率的高低 振 荡器的稳定性等 这里选用 12MHz 的石英晶体 电容选用 33pF 如图 2 所示 复位电路的基本功能是 系统上电时提供复位信号 直至系统电源稳定后 撤销复位 信号 为可靠起见 电源稳定后还要经一定的延时才撤销复位信号 以防电源开关或电源 插头分 合过程中引起的抖动而影响复位 本设计的时钟电路如图 3 所示 图 2 时钟电路 图 3 复位电路 2 AT89C51 和和 ADC0809 接口电路接口电路 AT89C51 和 ADC0809 接口电路如图 4 所示 START 和 ALE 互连可使 ADC0809 在接 收模拟量路数地址时候启动工作 START 的启动信号由 89C51 的和 P2 7 经或门 U7AWR 产生 平时 START 因 P2 7 高电平而被封锁 ALE 的正脉冲使得 ADDA ADDB 和 ADDC 上的地址锁存 选中 IN0 IN3 路模拟电压送入比较器 这里 ADDA ADDB 和 ADDC 分别和 P0 0 P0 1 P0 2 连接 EOC 线经过反相器和 AT89C51 的 INT1 线相连 这里 采用中断方式来和 ADC0809 传送 A D 转换后的数字量 为了给 OE 线分配一个地址 把 AT89C51 的和 P2 7 经或门 U7B 和 OE 相连 平时 因 P2 7 为高电平 从而使得 OERD 处于低电平封锁状态 在响应中断时候 单片机执行中断服务程序使得 OE 变为高电平 从而打开三态输出锁存器 让 CPU 提取 A D 转换后的数字量 ADC0809 的时钟 CLK 由两个 D 触发器把 AT89C51 的 ALE 信号 4 分频后来得到 如 图 5 所示 如果使用单片机时钟电路选择 12MHz 的晶振 那么 ALE 信号的频率为 2MHz 12 6 经两个串联 D 触发器四分频之后 CLK 端的频率为 500KHz 能够满足 ADC0809 要求 图 4 AT89C51 和 ADC0809 接口电路 图 5 时钟分频电路 3 AT89C51 和和 DAC0832 接口电路接口电路 图 6 AT89C51 和 DAC0832 接口电路 AT89C51 和 DAC0832 接口时 可以有三种方式 直通方式 单缓冲方式和双缓冲方 式 本系统选择单缓冲方式 电路如图 6 所示 ILE 直接接到 VCC 允许数字量输入 和由译码器的输出端 F7 控制 从而控制 DAC0832 的 8 位输入寄存器 CSXFER AT89C51 的和 DAC0832 的连接 直接接地 这样 和之间的延迟WR 2WR1WR1WR2WR 可以满足不小于 500ns 参考电压直接选择 VCC Rbf 作为运算放大器反馈线 接到 uA741 输出端 Iout1 和 Iout2 接到其输入端 4 LED 显示电路显示电路 LED 显示电路如图 7 所示 图中 VCC 和 GND 之间接入 100uF 的电容 使得电源更 加稳定 通过拉低引脚的方法复位 ZLG7289B 四个数码管是共阴式的 至RST 10 R 是限流电阻 至是下拉电阻 KC0 DIG0 KC3 DIG3 来作为位选信号来选择 17 R 1 R 8 R LED 数码管的显示 在这里使用键盘功能 真正实现人机交互 四个按键开关分别控制四 路模拟信号的输入 晶振这里选择和单片机同样的晶振 即 12MHz 数码管 0 显示选择通 道 数码管 1 2 3 显示电压峰值 ZLG7289B 的 CS CLK 和 DIO 引脚分别接在单片机 P1 0 P1 1 和 P1 2 引脚 ZLG7289B 的 INT 接单片机的 P3 3 也即中断 1 实现模拟信号 输入通道的选择 图 7 LED 显示电路部分 1 图 8 LED 显示电路部分 2 三 系统的软件实现三 系统的软件实现 本系统软件包括系统初始化 数据采集与处理 AD 转换 DA 转换和数据显示几个部 分 其中主程序流程图如图 8 所示 AD 转换程序流程图如图 9 所示 DA 转换程序如图 10 所示 实验源程序见附录 2 图 9 主程序流程图 图 10 A D 转换流程图 图 11 键盘控制程序流程图 四 电路和程序调试四 电路和程序调试 对电路的调试氛围对硬件的调试和对软件的调试 所以在调试的时候 先检查硬件电 路各接线是否正确 有误短路现象 如果有那就要及时改正 软件的调试 首先要在 Keil C51 上面编译运行通过 由于有中断的缘故 所以中断部分要结合硬件电路进行调试 在 这里可以借用实验用 Monitor 51 仿真器来进行调试 而不是一次次把程序写进单片机进行 调试 那样不仅麻烦 而且还有可能写坏单片机 在软件硬件结合起来调试的过程中 要分模块进行调试 比如本实验中 有键盘中断 LED 显示 AD 转换和 DA 转换四个大的模块 根据程序流程图 应该依次对上面四个模 块分别进行调试检查 调试过程中 要熟悉使用示波器 万用表等工具 硬件部分 上电 以后 要用示波器测试晶振是否正常工作 单片机和其他芯片个引脚电位是否正常 软件 部分 可以通过 Keil C51 来观察各特殊寄存器和某些变量的值来验证程序和电路的准确性 也可以设置断点来查看程序的运行路线 比如要查看中断是否执行 就可以在中断服务程 序里面设置断点 下面结合本人在调试中遇到的部分问题加以说明 1 LED 不显示 原因 原因 画原理图时候由于粗心所致 漏画一结点 如图 12 所示 从而导致 SG KRi i 0 7 全部为低电平 示波器测得 而 ZLG7289 驱动的是共阴式数码管 所以数码管不显示 解决方法解决方法 按照图 13 接通 VCC 图 12 漏结点 图 13 原图 节点 VCC 2 测试 P0 口达不到高电平 原因 经过查询 P0 口内部结构 发现 P0 口是接在两个三极管 VT1 和 VT2 之间的 而 P1 P3 口的上部是接一个电阻的 P0 口的上面 VT1 是在进扩展存储器或扩展总线时由指 令控制的 平时都是截止的 一般象 P0 0 0 P0 0 1 这些语句时控制的都是下面那个三 极管的 P0 口接负载 P0 0 VT2 导通 P0 点电位为 0 当 P0 1 VT2 截止 而 VT1 始 终是截止的 这样 P0 点就等于悬空了 P0 是高阻抗输入 容易受外界电路干扰 3 分频信号没有出现 原因 这里是采用 D 触发器实现四分频电路 结果测试分频器输出引脚根本没有出现分频 信号 但是单片机 ALE 输入信号是正常的 问题就出现在 D 触发器这块 原因如图 14 所 示 由于看到 D 触发器示意图 PR 和 CLR 端有个圆圈 所以就误认为那是接低电平的 所 以就不假思索的和地连接起来了 这种毛病得彻底改正啊 于是我重新查看了一下 D 触发 器资料 发现其真值表如下 图 14 D 触发器真值表 很明显 只有 PR 和 CLR 同时为高电平时 D 触发器才能正常工作 所以以后在使用某一 芯片之前 一定要认真查看其技术资料才行 解决方法 D 触发器 PR 和 CLR 接 VCC 如图 15 所示 图 15 D 触发器 PR 和 CLR 接地 图 16 D 触发器 PR 和 CLR 接 VCC 4 EOC 始终是高电平 原因 EOC 始终是高电平 那就说明 ADC0809 根本就没有启动 而 ADC0809 是在 START 和 ALE 接收模拟量路数地址时候启动工作的 那么问题就出现在这里 原来是地 址写错了 经过改正 启动正常 转换结果也正常了 五 实验结果及结论五 实验结果及结论 1 AD 转换及 LED 显示结果及结论 实验中 通道 0 通道 1 和通道 2 分别接地 VCC 和信号发生器出来的信号 通道 0 和通道 1 结果如下 按键通道实际值LED 显示值 000V 地 0 030 115V VCC 5 001 注 注 LED 显示值最后一位表示选择通道 显示值最后一位表示选择通道 下面表格是通道 2 结果 该表格适用于频率的范围为 5HZ 2KHZ 这里选 取了 100Hz 频率 Hz 100100100100100100100100 幅值 V 2 53 03 23 54 04 24 55 0 LED2 5023 0323 2123 4723 9624 2924 5324 982 注 注 LED 显示值最后一位表示选择通道 显示值最后一位表示选择通道 2 DA 转换及示波器显示结果 如图 17 所示 下面一路是输入信号 上面一路是 DA 转换输出信号 有图可见 输出波形基本重现了原始输入波形 通过将两者重合 可以发现 相位也比较 吻合 图 17 DA 转换结果 结论 结论 本系统符合任务要求 能够很好的实现 AD 转换 DA 转换以及键盘控制和 LED 显 示 六 实验心得体会六 实验心得体会 从对实验题目的认真分析 到实验方案的设计和论证 从源程序的编写到面包板电路 的搭建 还有就是最后实验电路的调试 这一系列过程走下来 可谓是艰辛啊 由于本科 期间做的电路实验大部分都是验证性实验 所以就少了设计 制作和调试电路中的所有能 遇到的问题 而作为研究生 这些问题在以后的学习研究中必定会经常遇到 正是因为这 次训练 才真正提高了自己的发现问题 分析问题和解决问题的能力 这势必给我以后的 学习研究带来极大的帮助 经过这次实验 我发现 电子技术方面的实验或者研究 必须自始至终的细心细心在 细心 调试之前一定要一遍一遍又一遍的检查电路 确保电路连线准确无误之后再接电源 否则就可能某些芯片就会被迅速烧坏 从而造成很多麻烦 在调试的时候 要分模块调试 就拿本实验来说 先调试 7289 按键中断是否起效 数码管显示是否准确 再调 AD 是否启 动 转换是否准确 最后再调 DA 部分 在这几部分电路模块调试的时候 要学会用示波 器或者万用表测各个芯片的各个引脚电平是否正常 时钟电路是否正常 引脚之间会不会 有短路现象出现等等 软件部分的调试 要学会单步调试和断点调试 弄清楚程序是否按 正常步骤运行 观察各个寄存器和变量的值是否正确 中断是否成功等 还有就是关于电 路的设计和调试 切忌眼高手低 一定要多动手 遇到问题要沉着冷静 七 感谢七 感谢 首先感谢杨栓科老师从始至终的指导和最后调试阶段补开实验室给我 其次感谢师兄 师姐们在我调试阶段的指导和帮助 还要感谢实验室徐峥宇和赵同学 在期末考试即将来 临的时候 他们还耐心的帮我解决调试中的各种问题 八 参考资料八 参考资料 1 胡汉才 单片机原理及其接口技术 清华大学出版社 2004 2 2 孙肖子等 电子设计指南 高等教育出版社 2006 1 3 张齐 杜群贵 单片机应用系统设计技术 基于 C 语言编程 电子工业出版社 2004 8 4 王建校 杨建国 宁改娣 危建国 51 系列单片机及 C51 程序设计 科学出版社 2002 4 5 全国大学生电子设计竞赛组委会 第五届全国大学生电子设计竞赛获奖作品选编 北 京理工大学出版社 2003 附录附录 1 元件清单 元件清单 器件名称个数器件名称个数 AT89C511LED4 ADC08091270 欧姆电阻8 DAC0832110k 欧姆电阻2 ZLG7289B 11k 欧姆电阻1 DM74LS74AN2100K 欧姆电阻8 SN74LS138N1按键开关5 12MHz 晶振233pF 电容2 DM74LS14N110pF 电容3 74LS022100nF 电容1 UA741ID1100uF 电解电容1 导线若干10uF 电解电容1 备注 调试过程中 本人对部分细节电路进行了更改 额外增加 74LS373 芯片 而取消使 用原来的 74LS138 当然也增加了一些电阻 7289 电路部分 由于没有 100uF 电解电容和 100nF 电容 所以分别用 220uF 电解电容和 220nF 电容代替 实验结果证明对电路无大的 影响 由于面包板面积有限 而布线相对较多 尤其是 7289 部分 所以没有用到反相器 DM74LS14N 而是使用或非门实现将 ADC08509EOC 信号的反相 由于 7289 具有按键防 抖功能 按键开关则是使用线头快速接触来实现 由于仿真器上有 111 0592M 晶振 所以 12MHz 晶振只用了一个 那就是 7289 时钟电路 附录附录 2 实验程序 实验程序 define SHUJU C include reg52 h include zlg7289 h include stdio h include absacc h define IN0 XBYTE 0X7FF8 通道 0 define IN1 XBYTE 0X7FF9 通道 1 define IN2 XBYTE 0X7FFA 通道 2 define IN3 XBYTE 0X7FFB 通道 3 define dac0832Addr 0XBFFF DAC0832 地址 define uchar unsigned char define uint unsigned int uint ADCFlag ADC 处理标志 uchar DigitalDataTemp 转换结果 uint KeyValue 按键键值 uint Key 按键键值 uchar MaxResult 峰值 uchar xdata nCurrentAddr 当前 ADC 通道的地址 uchar LEDDisplayData LED 显示的峰值数据 uint display100 显示最高位 uint display10 显示中间位 uint display1 显示最低位 uint i sbit ad busy P1 3 static uchar xdata result 512 存贮 AD 转换结果 void Delay uint i main IT0 0 IT1 0 EX0 1 外部中断 0 开启 EX1 1 开启外部中断 1 PX1 1 EA 1 开启总中断 ZLG7289 Init 20 ZLG7289 初始化 KeyValue 0 xFF 设置按键初值 0 xFF 表示没有按下 Key 0 按键中断标志
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论