毕业设计基于单片机的8路输入模拟信号数值显示器设计_第1页
毕业设计基于单片机的8路输入模拟信号数值显示器设计_第2页
毕业设计基于单片机的8路输入模拟信号数值显示器设计_第3页
毕业设计基于单片机的8路输入模拟信号数值显示器设计_第4页
毕业设计基于单片机的8路输入模拟信号数值显示器设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西西 安安 邮邮 电电 学学 院院 毕毕 业业 设设 计(论计(论 文)文) 题 目: 8 路输入模拟信号数值显示器的设计 系 别: 专 业: 班 级: 学生姓名: 导师姓名: 职称: 起止时间: 2007 年 3 月 19 日 至 2007 年 6 月 24 日 目目 录录 摘 要.i abstract.ii 1 引言.1 2 系统概述.1 2.1 硬件电路简介 .1 2.2 软件设计简介 .2 3 系统方案的选择和论证.3 3.1 系统设计方案的选择 .3 3.2 各模块方案选择和论证 .3 3.3 系统各个模块的最终方案 .11 4 系统的硬件设计.11 4.1 硬件电路各模块简介 .1

2、1 4.2 系统的仿真 .21 5 系统的软件设计.21 5.1 主程序的设计 .22 5.2 各子程序的设计 .22 6 系统调试.25 6.1 调试过程中出现的问题 .25 6.2 问题分析与解决 .25 7 结 论.26 致 谢.27 参考文献.28 附录.29 摘摘 要要 本文主要论述了基于单片机的a/d转换的硬件结构,并在此基础上进行了软件设 计。以at89c52 单片机及模数转换芯片adc0809为核心,该系统有两个部分:a/d 转换,数据处理和显示。具体包括控制、显示、a/d转换器等。设计中用adc0809 进行8路数据的采样,利用at89c52单片机的串行口发送和接收数据。显示

3、部分由 led数码显示器构成。硬件设计应用电子设计自动化工具,软件设计采用模块化编 程方法。 关键词: at89c52,单片机,模数转换,adc0809,led 数码管 abstract the hardware structure of data collection system based on scm is primarily presented in the paper.and its software is designed secondly. take the at89c52 scm and a/d conversion chip adc0809 as a core, this

4、system has two parts: a/d transforms, data processing and demonstration. specifically includes the control, the demonstration, the a/d switch and so on. in the design carries on 8ways with adc0809 according to the sampling, uses the at89c52 scm the serial mouth transmission and thereceive data. demo

5、nstrated partially constitutes by the led numericalcode monitor. the hardware design application electron design automation tool, the software design uses the modular programmingmethod. key words: at89c52,scm,a/d conversion,adc0809,led numerical code tube 1 引言 随着计算机技术的飞速发展及普及,多路输入模拟信号数值显示系统在多个领 域有着广

6、泛的应用。多路输入模拟信号数值显示是工、农业控制系统中至关重要的 一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节 的温度、湿度、流量及压力等参数。同时,还要对某一检测点任意参数能够进行随 机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较, 做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。 随着工、农业的发展,多路输入模拟信号数值显示势必将得到越来越广泛的应 用,为适应这一趋势,作这方面的研究就显得十分重要。在科学研究中,运用多路 输入模拟信号数值显示系统可获得大量的动态信息,也是获取科学数据和生成知识 的重要手段之一。总之,不论在哪

7、个应用领域中,数据采集与处理将直接影响工作 效率和所取得的经济效益。 在本论文中,主要讨论以单片机为主控技术的 8 路输入模拟信号数值显示电路 的实现。把由电压表输出的 05v 的模拟电压信号送给模数转换器,然后 a/d 转换 器将该模拟信号转换为 00hffh 的数字信号,当转换结束时发送转换结束信号给单 片机 at89c52,单片机对其转换后的结果进行处理,处理后的结果送往 led 数码 管进行显示。 2 系统概述 8 路输入模拟信号数值显示器实际上就是一个数据采集系统,任务是把由电压 表输出的 05v 的模拟电压信号送给模数转换器,然后 a/d 转换器将该模拟信号转 换为 00hffh

8、的数字信号,当转换结束时发送转换结束信号给单片机 at89c52, 单片机对其转换后的结果进行处理,处理后的结果送往 led 数码管进行显示。 8 路输入模拟信号数值显示系统可以分为两大模块: 硬件电路模块 软件设计模块 2.1 硬件电路简介 根据系统的设计要求,可以将系统硬件电路模块划分为以下三个部分: 主控制器模块 数据采集模块 显示模块 2.1.1 主控制器模块 主控制器模块是 8 路输入模拟信号数值显示器的核心控制部分,该模块主要由 单片机构成,通过单片机的各个 i/o 口对外围设备的控制,以达到 a/d 转换,显示 数据等功能。 2.1.2 数据采集模块 工程实践中经常遇到被测对象的

9、一些物理参数,如温度、流量、压力、位移、 速度等,这些参数都是模拟量。虽然这些模拟量已经由传感器、变送器变换成标准 的电压或电流信号,但还需要通过 a/d 转换器,将其转换成计算机能处理的相应的 数字信号。所以,单片机与 a/d 转换接口技术是构成单片机测控系统的重要内容之 一。 在本论文中,数据采集模块主要是模数转换器 adc0809。通过单片机提供的时 钟频率,通过一个 i/o 口送入 adc0809 的 clock 引脚,使 adc0809 得到一个能 够可靠工作的时钟脉冲。并且通过 start 引脚启动转换,将转换得到的数字信号 利用 8 位数据输出线传输给单片机的 p0 口。 2.1

10、.3 显示模块 显示器是单片机应用系统常用的设备,包括 led、lcd 等。led 显示器由若 干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。控 制相应的二极管导通,就能显示出对应字符。 本论文中,显示模块主要有七段共阳极 led 数码管构成,显示电路采用的是动 态显示接口电路。通过单片机的 p1 口进行数码管的输出显示口,p3 口作为数码管 的位选择口。 2.2 软件设计简介 该系统的软件设计也可以相应的分为以下两部分: a/d 转换程序设计 显示程序设计 2.2.1 a/d 转换程序设计 a/d 转换程序的设计是该系统实现的核心部分,通过设计 a/d 转换程序驱动单

11、 片机向模数转换器 adc0809 输入指令开启模数转换,以达到系统设计的主要功能。 2.2.2 显示程序设计 我们要的是一个能够用眼睛直接接受的一个结果,而不是眼睛看不到,需要在 各种仿真软件里才能看到结果的设计,所以数码管显示程序的设计也是该系统设计 环节的主要部分。这部分程序也主要是对单片机进行编程来驱动 led 数码管进行正 常的显示工作。 3 系统方案的选择和论证 8 路输入模拟信号数值显示器,采用 at89c52 单片机控制,由集成电路 0809 完成模数转换。本显示器可自动轮流显示 8 路输入模拟信号的数值,最小分辨率为 0.02v,最大显示数值为 255(输入为 5v 时) ,

12、模拟输入最大值为 5v,可作为数字 电压表用。 3.1 系统设计方案的选择 8 路输入模拟信号数值显示器的硬件电路可以分为三个模块:1、主控制器模块; 2、数据采集模块;3、显示模块。 其中系统的主控制器采用 at89c52 单片机,直接驱动 led 数码管,数据采集模块 由 at89c52 与 adc0809 组成。 3.2 各模块方案选择和论证 根据该设计所完成的功能,可以将系统分为 3 个模块:单片机模块、数据采集 模块、显示模块。系统框图如图 3-1 所示 mcuadcled 8路输入 模拟信号 图 3-1 系统模块框图 3.2.1 主控制器模块的分析与选择 用单片机作为这一控制系统的

13、核心,接收来自 adc0809 的数据,经处理后通 过串口传送,由于系统功能简单,单片机通过与 led 数码显示器相连,驱动显示器 显示相应通道采集到的数据。 考虑到该数据采集系统所需的程序空间(rom)和数据空间(ram)较小,选用 at89c52 单片机作为该系统的核心,它含有 8k 字节的 eprom 和 256 字节的 ram 足够本设计所用,并且功能强大的 at89c52 单片机可提供许多高性价比的应用场合, 所以采用 at89c52 单片机作为本设计的主控制器。 时钟电路的选择: at89c52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 xtal1 和 xtal2 分别是

14、该放大器的输入端和输出端。这个放大器与作为反馈的元件的片外石 英晶体和陶瓷谐振器一起构成自激振荡器。 方案一:内部时钟方式,如图 3-1 图 3-1 内部时钟方式 外接石英晶体(或陶瓷谐振器)及电容 c1, c2 接在放大器的反馈回路中构成并联 振荡电路。对外接电容 c1, c2 虽然没有十分严格的要求,但电容容量的大小会轻微 影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果 使用石英晶体,我们推荐电容使用 30pf 士 10pf,而如使用陶瓷谐振器建议选择 40pf 士 l0pf。 方案二:外部时钟方式,如图 3-2 图 3-2 外部时钟方式 外部振荡器信号的接法与芯

15、片类型有关。cmos 工艺的 mcu 其 xtal1 端接外 部时钟信号,xtal2 端可悬空。hmos 工艺的 mcu 则 xtal2 端接外部时钟信号, xtal1 端须接地。 由于外部时钟方式常用于多片单片机同时工作,以便于各单片机同步。所以时 钟电路采取内部时钟方式。 3.2.2 数据采集模块的分析与选择 根据设计要求,该设计需要对 8 路模拟信号进行采样,并且最小分辨率为 0.02v。 a 转换原理的选择 随着大规模集成电路技术的迅速发展,a/d 转换器新品不断推出。按工作方式 原理分,adc 的主要种类有:逐次逼近式和双积分式。 方案一:逐次逼近式 adc 的转换原理 图 3-3

16、是逐次逼近式 adc 的工作原理图。由图可见,adc 由比较器、d/a 转 换器、逐次逼近寄存器和控制逻辑组成。 图 3-3 逐次逼近式 adc 原理图 在时钟脉冲的同步下,控制逻辑先使 n 位寄存器的 d7 位置 1(其余位为 0) 。 此时该寄存器输出的内容为 80h,此值经 dac 转换为模拟量输出为 vn,与待转换 的模拟输入信号 vin相比较,若 vin大于等于 vn,则比较器输出为 1。于是在时钟脉 冲的同步下,保留 d7=1,并使下一位 d6=1,所得新值(c0h)再经 dac 转换得到 新的 vn,再与 vin比较,重复前述过程。反之,若使 d7=1 后,经比较,若 vin小于

17、 vn,则使 d7=0,d6=1,所得新值 vn再与 vin比较,重复前述过程。以此类推,从 d7 到 d0 都比较完毕,转换便结束。转换结束时,控制逻辑使 eoc 变为高电平, 表示 a/d 转换结束,此时的 d7d0 即为对应于模拟输入信号 vin的数字量。 方案二:双积分式 adc 的转换原理 图 3-4 是双积分式 a/d 转换器 。 d/a转换器 锁 存 缓 存 器 n位寄存器 控制 逻辑 vin vn start eoc vref oe 数 据 输 出 图 3-4 双积分式 a/d 转换器 图 3-5 是双积分式 adc 的工作原理图。控制逻辑先对未知的输入模拟电压 vin 进行固

18、定时间 t 的积分,然后转为对标准电压进行反向积分,直至积分输出返回起 始值。对标准电压的积分时间 t2(或 t2)正比于模拟输入电压 vin。输入电压大, 则反向积分时间长。用高频率标准时钟脉冲来测量积分时间 t2(或 t2) ,即可得到 对应于模拟电压 vin的数字量。 图 3-5 双积分式 adc 工作原理 b 转换时间的选择 转换速度是指完成一次 a/d 转换所需时间的倒数,是一个很重要的指标。a/d 转换器型号不同,转换速度差别很大。通常,8 位逐次比较式 adc 的转换时间为 100us 左右。由于本系统的控制时间允许,可选 8 位逐次比较式 a/d 转换器。 c adc 位数的选

19、择 a/d 转换器的位数决定着信号采集的精度和分辨率。 对于该 8 个通道的输入信号,8 位 a/d 转换器,其精度为 8 0.39% 2 输入为 05v 时,分辨率为 8 5 0.0196 11 22 fs n v v a/d 转换器的满量程值 fsv adc 的二进制位数n 量化误差为 8 5 0.0098 (1) 2(1) 2 22 fs n qv v adc0809 是 ti 公司生产的 8 位逐次逼近式模数转换器,包括一个 8 位的逼近 型的 adc 部分,并提供一个 8 通道的模拟多路开关和联合寻址逻辑,为模拟通道 的设计提供了很大的方便。 用它可直接将 8 个单端模拟信号输入,分

20、时进行 a/d 转换,在多点巡回监测、 过程控制等领域中使用非常广泛,所以本设计中选用该芯片作为 a/d 转换电路的核 心。 d adc0809 与单片机的接口 adc0809 与单片机的接口方式是该系统的核心部分,选择好的接口方式是实现 该系统功能的重要步骤。 方案一:经典接口方式。 adc0809 与单片机的接口电路如图 3-6 所示。 图 3-6 adc0809 与 mcs-51 的接口电路 由于 adc0809 无片内时钟,时钟信号可由单片机的 ale 信号经 d 触发器二分 频后获得。ale 引脚得脉冲频率是 at89c52 时钟频率的 1/6。单片机时钟频率采用 12mhz,则 a

21、le 输出的频率是 2mhz,二分频后为 1mhz,符合 adc0809 对频率的要 求。 由于 adc0809 内部设有地址锁存器,所以通道地址由 p0 口的低 3 位直接与 adc0809 的 a、b、c 相连。通道基本地址为 0000h0007h。其对应关系如表 3-1 所示。 表 3-1 0809 输入通道地址 地址码 cba 输入通道 000in0 001in1 010in2 011in3 100in4 101in5 110in6 111in7 控制信号:将 p2.7 作为片选信号,在启动 a/d 转换时,由单片机的写信号和 p2.7 控制 adc 的地址锁存和启动转换。由于 ale

22、 和 start 连在一起,因此 adc0809 在锁存通道地址的同时也启动转换。 在读取转换结果时,用单片机的读信号和 p2.7 引脚经或非门后,产生正脉rd 冲作为 oe 信号,打开三态输出锁存器。 方案二:简易接口方式。 adc0809 转换的必要条件就是 clock 引脚得到一个能够正常工作的时钟脉冲, 以经典接口方式来看,是由单片机的 ale 引脚经分频器给 clock 一个时钟脉冲, 通过硬件电路直接给 clock 引脚一个时钟脉冲。所以,只要能让 adc0809 的 clock 引脚得到一个能够工作的时钟脉冲,那么 a/d 转换也就基本能实现。但是 直接利用单片机的任意的一个 i

23、/o 口与 clock 引脚连接,通过软件编程的方法给 clock 引脚送入一个时钟脉冲,那么 adc0809 也就可以满足 a/d 转换的必要条件 了。这样,不仅可以节省了器件,而且又不会出现因为硬件问题而产生错误。所以, 方案二成为该设计首选的 adc0809 与单片机接口的方式。 3.2.3 数据显示模块分析与选择 用单片机作为这一控制系统的核心,接收来自 adc0809 的数据,经处理后通 过串口传送,由于系统功能简单,单片机通过与 led 数码显示器相连,驱动 led 显示器显示相应通道采集到的数据。 要求最大显示数值为 255,并且要对 8 个通道进行轮流显示,所以需要 4 个 l

24、ed 数码管对其进行显示,1 个显示通道数,其余 3 个显示采样值。 用单片机驱动 led 数码管有很多方法,按译码方式可分为硬件译码和软件译码; 按显示方式可分为静态显示和动态(扫描)显示。 a 译码方式 方案一:硬件译码 硬件译码就是显示的段码完全由硬件完成,cpu 只要送出标准的 bcd 码即可, 硬件接线有一定标准。 方案二:软件译码 软件译码是用软件来完成硬件的功能,接线灵活,显示段码完全由软件来处理, 是目前常用的显示驱动方式。 由于采样信号非固定值,所以采用软件译码方式对 led 数码管进行显示驱动。 b 显示方法 方案一:静态显示 静态显示,显示驱动电路具有输出锁存功能,单片机

25、将所要显示的数据送出后 停止传送,直到下一次显示数据需要更新时再传送一次数据。 编程容易,管理简单,显示亮度高,显示数据稳定,占用很少的 cpu 时间。但 引线多,线路复杂,硬件成本高。 方案二:动态显示 动态显示就是一位一位地轮流点亮显示器的各个位(扫描) 。对于显示器的每一 位而言,每隔一段时间点亮一次,需要 cpu 时刻对显示器件进行数据刷新,显示数 据会有闪烁感,占用的 cpu 时间多。 这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的 cpu 时间,但 每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁 感,占用的 cpu 时间多,但使用的硬件少,能节省

26、线路板空间。 当显示装置中有多个多段 led 时,通常采用动态扫描驱动电路,节省开销。所 以采用动态显示方式对 led 数码管进行显示控制。 3.3 系统各个模块的最终方案 经上述一系列的理论分析,本系统最终采用at89c52单片机,数据采集核心采 用模数转换器adc0809,采用7段共阳led数码管动态显示采集到的数据。 4 系统的硬件设计 4.1 硬件电路各模块简介 4.1.1 at89c52 单片机 at89c52 是美国 atmel 公司生产的低电压 ,高性能 cmos 8 位单片机,片内 含 8k bytes 的可反复擦写的 flash 只读程序存储器(eprom)和 256 byt

27、es 的随机存 取数据存储器(ram ),器件采用 atmel 公司的高密度、非易失性存储技术生产,与 标准 mcs-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器(cpu)和 flash 存储单元,功能强大的 at89c52 单片机可提供许多高性价比的应用场合,可 灵活应用于各种控制领域 a 技术指标及功能特性 at89c52 提供以下标准功能:8k 字节 flash 闪速存储器,256 字节内 ram,32 个 可编程 i/o 口线,3 个 16 位定时/计数器,一个 6 向量两级中断结构,一个全双工串 行通信口,片内振荡器及时钟电路。同时,at89c52 可降至

28、ohz 的静态逻辑操作, 并支持两种软件可选的节电工作模式。空闲方式停止 cpu 的工作,但允许 ram, 定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 ram 中的内容,但 振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 主要特性参数: 与 mcs-51 产品指令系统完全兼容 8k 字节可重擦写 flash 闪速存储器 1000 次擦写周期 全静态操作:ohz-24mhz 三级加密程序存储器 256*8 字节内部 ram 32 个可编程 i/o 口线 3 个 16 位定时/计数器 8 个中断源 可编程串行 uart 通道 低功耗空闲和掉电模式 b 引脚功能说明 引脚图如

29、图 4-1 图 4-1 at89c52 引脚图 引脚功能说明: vcc:电源电压 gnd:地 p0 口:po 口是一组 8 位漏极开路型双向 i/0 口,也即地址/数据总线复用口。 作为输出口用时,每位能吸收电流的方式驱动 8 个 ttl 逻辑门电路,对端口写”1” 可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数 据总线复用,在访问期间激活内部上拉电阻。 在 flash 编程时,po 口接收指令字节,而在程序校验时,输出指令字节校验时, 要求外接上拉电阻. pl 口:p1 是一个带内部上拉电阻的 8 位双向 i/o 口,p1 的输出缓冲级可驱

30、动 (吸收或输出电流)4 个 ttl 逻辑门电路。对端口写”1”,通过内部的上拉电阻时把端口 拉到高电平,此时叫一作输入口。作输入口使用时,因为内部存在上拉电阻,某个 引脚被外部信号拉低时会输出一个电流(i). il flash 编程和程序校验期间,p1 接收低 8 位地址 p2 口:p2 是一个带有内部上拉电阻的 8 位双向 i/o 口,p2 的输出缓冲级可驱 动(吸收或输出电流)4 个 ttl 逻辑门电路。对端口写”1” ,通过内部的上拉电阻时 把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某 个引脚被外部信号拉低时会输出一个电流(i) il 在访问外部程序存储器

31、或 16 位地址的外部数据存储器(例如执行 movx dptr 指令)时,p2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器 (如执行 movx ri 指令)时,p2 口线上的内容(也即特殊功能寄存器(sfr ) 区中 r2 寄存器的内容),在整个访问期间不改变. flash 编程或校验时,p2 亦接收高位地址和其它控制信号 p3 口:p3 口是一组带有内部上拉电阳的 8 位双向 i/o 口。p3 口输出缓冲级可 驱动(吸收或输出电流)4 个 ttl 逻辑门电路。对 p3 口写“1”时,它们被内部上拉 电阻拉高并可作为输入端口。作输入端时,被外部拉低的 p3 口将用上 拉电阻输

32、出电流(i). il p3 口除了作为一般的 i/0 口线外,更重要的用途是它的第二功能,如表 4-1 所 示: 表 4-1 p3 口的第二功能 端口引脚第二功能 p3.0rxd(串行输入口) p3.1txd(串行输出口) p3.2(外中断 0) p3.3(外中断 1) p3.4t0(定时/计数器 0) p3.5t1(定时/计数器 1) p3.6(外部数据存储器写选通) p3.7 (外部数据存储器读选通) p3 口还接收一些用于 flash 闪速存储器编程和程序校验的控制信号。 rst:复位输入。当振荡器工作时,rst 引脚出现两个机器周期以上高电平将 使单片机复位。 ale/prog:当访问

33、外部程序存储器或数据存储器时,ale(地址锁存允许)输出 脉冲用于锁存地址的低 8 位字节。即使不访问外部存储器,ale 仍以时钟振荡频率 的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的 是:每当访问外部数据存储器时将跳过一个 ale 脉冲。 对 flash 存储器编程期间,该引脚还用于输入编程脉冲(prog)。 如有必要,可通过对特殊功能寄存器(sfr)区中的 8fh 单元的 do 位置位,可 禁止操作。该位置位后,只有一条 movx 和 movc 指令 ale 才会被激活。此外, 该引脚会被微弱拉高,单片机执行外部程序时,应设置 ale 无效 程序储存允许(

34、)输出是外部程序存储器的读选通信号,当 psenpsen at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即psen 输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的信号不出psen 现。 ea/vpp:外部访问允许。欲使 cpu 仅访问外部程序存储器(地址为 ooooh- ffffh), ea 端必须保持低电平(接地)。需注意的是:如果加密位 lb1 被编程,复位 时内部会锁存 ea 端状态 如 ea 端为高电平(接 vcc 端),cpu 则执行内部程序存储器中的指令。 flash 存储器编程时,该引脚加上+12v 的编程允许电源 vpp,当然这必须是该器

35、 件是使用 12v 编程电压 vpp。 xtal1:振荡器反相放大器的及内部时钟发生器的输入端。 xtal2:振荡器反相放大器的输出端 4.1.2 模数转换器 adc0809 把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。 把以一定时间间隔 t 逐点采集连续的模拟信号,并保持一个时间 t,使被采集 的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即 采样信号。 a. a/d 转换的知识概要 (1) 采样-保持 为了能不失真的恢复原模拟信号,采样频率应不小于输入模拟信号的频谱中最 高频率的两倍,这就是采样定理,即 simax 2 ff 由于 a/d 转换需要一

36、定的时间,所以在每次采样结束后,应保持采样电压在一 段时间内不变,直到下一次采样的开始。实际中采样-保持是做成一个电路。 (2) 量化与编码 模拟信号经采样-保持电路后,得到了连续模拟信号的样值脉冲,他们是连续模 拟信号在给定时刻上的瞬时值,并不是数字信号。还要把每个样值脉冲转换成与它 幅值成正比的数字量。 以上为 a/d 转换的一般步骤,在本电路中由 adc0809 芯片完成。 b. adc0809 内部功能与引脚 分辨率和精度是 a/d 转换器的两个主要的性能指标,这两个性能指标在前文中 已作了相应的计算和分析,这里就不再赘述。 adc0809 八位逐次逼近式 ad 转换器是一种单片 cm

37、os 器件,包括 8 位模 拟转换器、8 通道转换开关和与微处理器兼容的控制逻辑。8 路转换开关能直接连通 8 个单端模拟信号中的任何一个。其内部结构如图 4-2 所示。 (1) adc0809 主要性能 逐次比较型 cmos 工艺制造 单电源供电 无需零点和满刻度调整 具有三态锁存输出缓冲器,输出与 ttl 兼容 易与各种微控制器接口 图 4-2 adc0809 内部结构 具有锁存控制的 8 路模拟开关 分辨率:8 位 功耗:15mw 最大不可调误差小于1lsb(最低有效位) 转换时间()128us500 clk fkhz 转换精度:0.4% adc0809 没有内部时钟,必须由外部提供,其

38、范围为 101280khz。典型时钟 频率为 640khz (2) 引脚排列及各引脚的功能,引脚排列如图 4-3 所示。 图 4-3 adc0809 引脚图 各引脚的功能如下: in0in7:8 个通道的模拟量输入端。可输入 05v 待转换的模拟电压。 d0d7:8 位转换结果输出端。三态输出,d7 是最高位,d0 是最低位。 a、b、c:通道选择端。当 cba=000 时,in0 输入;当 cba=111 时,in7 输 入。 ale:地址锁存信号输入端。该信号在上升沿处把 a、b、c 的状态锁存到内部 的多路开关的地址锁存器中,从而选通 8 路模拟信号中的某一路。 start:启动转换信号

39、输入端。从 start 端输入一个正脉冲,其下降沿启动 adc0809 开始转换。脉冲宽度应不小于 100200ns。 图 4-4 adc0809 时序图 eoc:转换结束信号输出端。启动 a/d 转换时它自动变为低电平。 oe:输出允许端。 clk:时钟输入端。adc0809 的典型时钟频率为 640khz,转换时间约为 100s。 ref(-)、ref(+):参考电压输入端。adc0809 的参考电压为5v。 vcc、gnd:供电电源端。adc0809 使用5v 单一电源供电。 当 ale 为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译 码。在 start 上升沿时,所有的

40、内部寄存器清零,在下降沿时,开始进行 a/d 转 换,此期间 start 应保持低电平。在 start 下降沿后 10us 左右,转换结束信号 变为低电平,eoc 为低电平时,表示正在转换,为高电平时,表示转换结束。oe 为低电平时,d0d7 为高阻状态,oe 为高电平时,允许转换结果输出。 adc0809 时序图如图 4-4。 4.1.3 led 数码管显示器 a. led 数码管显示器的结构 通常使用的 led 是由 7 个发光二极管排列成的,七段 led 的阳极连在一起称 为共阳极接法,而阴极接在一起的称为共阴极接法。每段 led 的笔画分别称为 a、b、c、d、e、f、g,另外有一段构

41、成小数点。一位显示器数码管的结构如图 4-5 所示。 (a)数码管结构 (b)共阳极接法 (c)共阴极接法 图 4-5 led 数码管原理图 b. led 数码管显示器的工作原理 在选用共阴极的 led 是,只要在某一发光二极管加上高电平,该段即点亮,反 之则暗。而选用共阳极的 led 时,要使某一段发光二极管发亮,则需加上低电平, 反之则暗,为了保护各段 led 不被损坏,需要外加限流电阻。为了要显示某个字形, 则应使此字形的相应段点亮,也即送一个不同的电平组合代表的数据来控制 led 的 显示字形,此数据称为字符的段码。 。数据字位数与 led 段码的关系如表 4-2。 表 4-2 数据字

42、位数与 led 段码的关系 常用字符共阴极、共阳极时的段码即编码表,如表 4-3。 表 4-3 常用字符显示编码表 c. led 显示接口电路设计 数码管显示接口电路如图 4-6 所示。 图 4-6 数码管显示接口电路 4.2 系统的仿真 该系统是利用仿真软件 proteus 进行仿真,proteus6.5 是目前最好的模拟单片机 外围器件的工具,可以仿真 51 系列、avr,pic 等常用的 mcu 及其外围电路。但是, 在仿真的时候,虽然有模数转换器 adc0809,但是在接好电路后,将程序烧录进去, 却发现系统无法进行仿真,困惑许久,发现该仿真软件不支持 adc0809 芯片的仿 真,于

43、是在仿真过程中我采用了相同类型的模数转换器 adc0808 进行仿真工作。 图 4-7 就是该系统的仿真电路图。 图 4-7 系统的仿真电路图 5 系统的软件设计 软件采用模块化程序设计方法,由主程序、显示子程序、a/d 转换测量子程序 等几部分组成。详细的程序源代码见附录部分。 5.1 主程序的设计 整个系统上电后,启动 a/d 转换,待转换完毕后,系统将转换数据从 p0 口存 入到单片机内部寄存器 70h 中,然后再将转换数据进行数码转换,并将转换代码存 入显示缓冲区 78h-7ah,最后系统调用显示子程序进行电压显示,当前显示完毕进 行通道转换并进行下次转换。主程序在调用显示程序和测试程

44、序之间循环,其流程 图如图 5-1 所示。 开始 初始化 调用a/d转换子程序 调用数据转换子程序 调用显示子程序 调用通道选择子程序 结束 图 5-1 主程序流程图 5.2 各子程序的设计 5.2.1 a/d 转换子程序的设计 a/d 转换子程序是用来控制对 adc0809 8 路模拟输入电压的 a/d 转换,其程序 流程图如图 5-2 所示。 开始 启动adc0809 判断p3.7=1? 数据输入 结束 y n 图 5-2 a/d 转换子程序流程图 5.2.2 数据转换子程序的设计 数据转换子程序是将 8 位转换的数字量进行 bcd 码转换,并将转换数据存入显 示缓冲区内。程序流程图如图

45、5-3 所示。 开始 取8位转换数字量 进行bcd码转换 将转换数据存入显示 缓冲区 结束 图 5-3 数据转换子程序流程图 5.2.3 显示子程序的设计 显示子程序主要是将转换数据通过译码,然后在数码管进行显示。其程序流程 图如图 5-4 所示。 开始 取转换数据 进行译码 显示译码数据 结束 图 5-4 显示子程序流程图 5.2.4 定时计数脉冲中断子程序的设计 定时计数器脉冲中断子程序主要是利用定时器 t0 为 adc0809 提供时钟脉冲。 程序流程图如图 5-5 所示。 开中断 给to设定初值 启动计时 给t0设定初值 取反 中断 图 5-5 定时计数脉冲中断子程序 6 系统调试 在

46、整个系统调试的过程中,硬件和软件方面都遇到了一些问题,下面就是该设 计中的问题与解决方法小结。 6.1 调试过程中出现的问题: 硬件电路无法在 proteus 中进行仿真。 数码管不工作。 给定一个模拟量输入,无数字量产生。 数码管显示杂乱。 6.2 问题的分析与解决: 硬件电路无法在 proteus 中仿真主要有 2 个原因:一、电路原理图有 问题,可能在 proteus 中接错或漏接。二、本身这个仿真软件不支持。 经过分析与查阅资料,发现原理图并没有什么问题,而是 proteus 仿真软件 不提供 adc0809 芯片的仿真,属于仿真软件不支持的类型。所以在后期仿真的过 程中,我采用了与

47、adc0809 功能与引脚相同的 adc0808 来进行仿真工作。 数码管不工作可能有以下几个原因:一、电路焊接有问题,出现虚焊、漏焊 或者是直接焊接错误。二、软件编程出现问题。三、数码管已经损坏。 检查数码管自身是否已经损坏可直接通过万用表进行检测,经检测并未损坏, 而且同时也对连接数码管的三极管和单片机的 p1,p3 口进行了检测,也未发现问 题。最后,问题只能归结到软件编程方面,由于数码管显示采用的是动态扫描方式, 直接是利用软件进行控制,所以只要软件编程出现错误,数码管相应的也就不予显 示。但是,经过程序检测,也并未出现什么错误,究竟是什么原因导致数码管无法 工作呢?问题持续了好久,但

48、是就在一次向同学求助的同时,总算发现了问题的所 在,原来是我一直没有将程序烧录进单片机,这主要是因为没有掌握好软件仿真工 具的使用方法。我使用的软件仿真软件是 keil c 软件,利用它可以进行软件的编程 和仿真,同时也能生成.hex 文件烧录到单片机内。我的问题就出现在生成 hex 文 件这步,通过编译,虽然成功,但是我并没有把程序加载到生成 hex 文件的目录下, 导致最后生成的 hex 文件是 keil c 软件内部提供的芯片初始程序的 hex 文件。经 过修改重新烧录,数码管开始正常工作。 给定一个模拟量输入,无数字量产生,主要有 2 个原因:一、adc0809 已 损坏。二、单片机没

49、有给 adc0809 的 clock 引脚提供一个正常工作的时钟脉冲。 经检查,adc0809 芯片并未出现问题,但是开启电源,测量 clock 引脚的电 平,发现电平属于不高不低的数值,在 2.6v 左右,并未处在高电平,从而导致 adc0809 无法进行 a/d 转换。要想给 clock 引脚提供一个时钟脉冲,按照原理图 的实现方法就是利用单片机的 ale 引脚提供的 2mhz 的时钟脉冲经过二分频送入 clock 引脚,但是现在却实现不了,经过老师和同学的帮助,我们又采取了另外 一种方法,就是直接利用单片机的 p3 口给 clock 一个方波计数脉冲,这样的话, 不仅省掉了二分频器的使用

50、,而且可以直接加一个方波计数中断处理程序就可以简 单实现了。 数码管显示杂乱主要有两个原因:一、软件程序出现问题;二、显示接口电 路出现问题。 经过检查,软件程序并未出现问题,而是接口电路出现了一些问题,由于我用 的 led 数码显示器属于一种低功率的共阳极数码管,但是我经过三极管连接 led 数码管的 com 端,这样使得电流放大,导致数码管的各段都发亮,只是亮度不同。 因此,不需要三极管的放大,在 com 段加个限流电阻,该显示器就能显示正常。 7 结 论 经过二个多月的不断学习与设计,在指导老师的悉心指导下,我终于顺利的完 成了我的毕业设计。我所设计的 8 路输入模拟信号数值显示器已经顺

51、利的实现了 a/d 转换的功能,而且其精度也达到了要求,在实验中,对于其测量范围内的电压 都能正确地测量并显示。 由于时间的关系,我并没有对此设计进行扩展,这个设计还有很大的修改空间。 比如可以添加一个按键电路对通道选择进行控制,可以对任意通道进行固定测量。 在这次毕业设计的过程中,我的知识面得到了很大的拓展,以前在书本上看到 的仅仅是理论知识,并没有用于实践,现在通过亲自动手实践,让我更加深入地理 解了理论知识的内涵,明白了理论在实际中的使用方法,同时让我明白了理论与实 际的差别,理论值在实际应用中的误差问题使得问题变得复杂,在处理这种复杂问 题的时候,将使用到很多的知识,所以,不断地拓展自

52、己的知识面在以后的生活中 是必须的。 致 谢 在这次毕业设计过程中,指导老师从资料的收集到硬件电路的设计、程序的编 写,再到毕业设计报告的整体架构都给了我许多有益的建议。她时刻都在关注我们 毕业设计的进程、督促我们抓紧时间,并适时给我们一些好的意见,这些都为毕业 设计的最终成功奠定了强有力的基础。她严谨治学的态度和和蔼可亲的性格都给我 留下了深刻的印象,没有张老师的悉心指导,我是不可能如此从容的完成这次毕业 设计的,在此我向她表示衷心的感谢。 同时,在毕业设计过程中同学之间的交流也是必不可少的,其中。 。给我传授了 不少电子设计的经验,使我少走了不少弯路,再此对他表示感谢。 参考文献 1 张国

53、勋,孙海. 单片机原理与应用. 2003 年 北京 北京航空航天大学出版社 2 李全利,迟荣强. 单片机原理及接口技术. 2005 年 北京 高等教育出版社 3 楼然苗,李光飞. 51 单片机设计实例. 2003 年 北京 北京航空航天大学出版社 4 诸昌钤. led 显示屏系统原理及工程技术. 2000 年 成都 电子科技大学出版社 5 张毅刚. mcs-51 单片机应用技术. 1997 年 哈尔滨 哈尔滨工业出版社 6 何立民. 单片机高级教程. 2000 年 北京 北京航天航空大学出版社 附录:程序清单 ;*; ;8 路模拟数据采集显示电路; ;*; ;70h 存放的是 a/d 转换的数

54、据,78h-7bh 为显示缓冲区(78h-7ah 为数据的 bcd 码,7bh 为通道码) org 0000h ljmp start org 000bh ljmp int_0 org 0030h initial:;初始化子程序,清除内部显示缓冲区及 adc0809 芯片时钟脉冲初始化 clr c mov p2,#00h mov a,#00h mov r7,#0ch mov r0,#70h clear: mov r0,a inc r0 djnz r7,clear mov tmod,#01h mov th0,#0ffh mov tl0,#0e0h setb ea setb et0 setb tr0

55、 ret int_0: ;p3.5 为 adc0809 提供系统时钟 push acc push psw cpl p3.5 mov th0,#0ffh mov tl0,#0e0h pop psw pop acc reti start: lcall initial ;调用初始化子程序 loop: lcall test ;调用测试子程序 lcall display ;调用显示子程序 lcall change_chanle;调用通道转换子程序 ljmp loop display: mov r0,#70h ;显示子程序,数据处理子程序,对所测 得的二进制数据进行数 bcd 码转换 mov a,r0 m

56、ov b,#2 mul ab mov r3,a mov a,b mov r2,a dcdth: clr a ;bcd 码转换程序 mov r4,a mov r5,a mov r6,a mov r7,#16 bcdch: clr c mov a,r3 rlc a mov r3,a mov a,r2 rlc a mov r2,a mov a,r6 addc a,r6 da a mov r6,a mov a,r5 addc a,r5 da a mov r5,a mov a,r4 addc a,r4 da a mov r4,a djnz r7,bcdch ;转换完毕 mov r0,#78h ;bcd

57、码存储 mov a,r6 anl a,#0fh mov r0,a ;存储个位 inc r0 mov a,r6 anl a,#0f0h swap a mov r0,a ;存储十位 inc r0 mov a,r5 add a,#10 mov r0,a mov r2,#0eeh disloop: lcall disp ;调数码管显示 djnz r2,disloop ret disp: mov r1,#78h ;取通道数 mov dptr,#table play: ;led 显示 mov a,r1 movc a,a+dptr mov p1,a setb p3.0 lcall dl1ms clr p3.

58、0 inc r1 mov a,r1 movc a,a+dptr mov p1,a setb p3.1 lcall dl1ms clr p3.1 inc r1 mov a,r1 movc a,a+dptr mov p1,a setb p3.2 lcall dl1ms clr p3.2 inc r1 mov a,r1 movc a,a+dptr mov p1,a setb p3.3 lcall dl1ms clr p3.3 ret ;标准的共阳极代码 table: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;带有小数点的共阳极代码 db 40h

59、,79h,24h,30h,19h,12h,02h,78h,00h,10h dl1ms: mov r4,#0200 ;延时程序 10ms d1: djnz r4,d1 mov r4,#050 d2: djnz r4,d2 ret test: ;测试子程序,进行 ad 转换 mov r0,#70h testar: clr p2.5 clr p2.3 clr p2.4 nop nop setb p2.3 setb p2.4 nop nop nop clr p2.3 clr p2.4 nop nop nop wait: jnb p3.7,wait setb p2.5 nop nop nop mov a

60、,p0 mov r0,a clr p2.5 ret change_chanle: ;通道转换子程序 mov a,p2 inc a jb acc.4,next mov p2,a mov 7bh,a ajmp endchange next: mov a,#00h mov p2,a mov 7bh,a endchange: ret end 学校学校 毕业设计毕业设计( (论文论文) )任务书任务书 学生姓名学生姓名指导教师指导教师职称职称 系别系别专业专业自动化 题目题目8 路输入模拟信号数值显示器的设计 任务与要求任务与要求 一.任务: 设计一个 8 路输入模拟信号数值显示器,采用 at89c52

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论