基于Proteus的单片机A/D转换仿真实验

2019-07-31 06:10杨欢杜少华袁国锋陈晓
教育教学论坛 2019年30期
关键词:仿真单片机

杨欢 杜少华 袁国锋 陈晓

摘要:A/D转换器是一种能把输入模拟电压或电流变成与其成正比的数字量的电路芯片,它广泛应用在单片机的前向输入通道中。文章采用ADC0804单通道8位并行接口芯片作为A/D转换器完成数据转换,控制器使用美国ATMEL公司的增强型AT89C52单片机,对转换完成后得到的数字量经过单片机P1口输出到8个LED发光二极管上显示。使用Keil C51编程软件,编译成功后,用Proteus仿真软件设计电路原理图,实现A/D转换过程并显示转换结果。

关键词:Proteus;单片机;A/D转换;仿真

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)30-0278-03

在单片测控系统中,对非电物理量如温度、压力、流量等的测量,需经传感器先转换成连续变化的模拟电信号(电压或电流),然后再将模拟电信号转换成数字量后才能在单片机中进行处理。实现模拟量转换成数字量的器件称为ADC(A/D转换器)。单片机处理完毕的数字量,有时根据控制需求转换为模拟信号输出。数字量转换成模拟量的器件称为DAC(D/A转换器)[1]。本文将介绍一种基于Proteus的A/D转换仿真实现过程,A/D转换器使用ADC0804单通道8位并行接口芯片完成数据转换,控制器使用美国ATMEL公司的增强型AT89C52单片机,转换结果经过单片机P1口送到8个LED发光二极管上显示输出。通过该仿真实验可以清楚地了解A/D转换的原理,直观地看到A/D转换的对比结果。

一、A/D转换芯片ADC0804简介

A/D转换器(ADC)把模拟量转换成数字量,单片机才能进行数据处理。随着超大规模集成电路技术的飞速发展,大量结构不同、性能各异的A/D转换芯片应运而生。对设计者来说,只需合理地选择芯片即可。現在部分单片机片内也集成了A/D转换器,位数为8位、10位或12位,且转换速度也很快,但是在片内A/D转换器不能满足需要的情况下,还是需要扩充。因此,外部扩展A/D转换器的基本方法,还是应当掌握[1]。本文采用的是ADC0804作为A/D转换芯片进行A/D转换仿真实验。ADC0804是单通道8并行接口芯片,是一种8位逐次比较式并行AD转换器,采用CMOS工艺的20引脚芯片。其转换时间为100μs,输入电压范围为0—5V。芯片具有三态输出数据锁存器,可直接连接在单片机或微处理器的数据总线上[2]。

芯片的引脚如图,各引脚功能如下:

CS:芯片选择信号。当CS=0时,器件才能工作。

RD:外部读取转换结果的控制输出信号。RD=1时输出为高阻态不输出转换结果,RD=0时才输出转换结果。

WR:用来启动转换的控制输入,WR=0时清除上一次转换结果,WR=1时当前的输入电压进行转换。

CLKIN,CLKR:外部时钟输入或接振荡元件(R,C)频率在100—1460KHz。

INTR:中断请求信号输出,转换完成后输出低电平。

VIN(+)、VIN(-):差动模拟电压输入。输入端正电压时,VIN(-)接地。

AGND、DGND:分别为模拟信号地和数字信号地。

VREF/2:接辅助参考电压。注意参考电压为此端连接电压的2倍。D0-D7:8位转换结果的数字输出,此8个引脚为三态输出。VCC:电源电压。ADC0804是8位A/D转换器,8位A/D转换器的输入电压值与采样值的关系如表1所示。

二、ADC0804的工作原理

CS是片选端,当CS=0时,器件才能工作。WR是控制芯片启动的输入端,WR=0时清除上一次转换结果,WR=1时当前的输入电压进行转换。INTR是转换结束信号输出端,输出变低电平表示本次转换已经完成,可作为中断或查询信号。RD为转换结果输出控制端,当它和CS同时为低电平时,输出数据锁存器DB0—DB7各口线上出现8位并行二进制编码,这就是AD转换结果[2]。ADC0804的启动转换时序图如图2所示,CS先为低电平,WR随后置低,经过至少tw(WR)L时间后,WR拉高,随后A/D转换器被启动,并且在经过一定(1—8个A/D时钟周期+内部Tc)时间后,A/D转换完成,转换结果存入数据锁存器,同时INTR自动变为低电平,通过单片机本次转换已结束。ADC0804的读取数据时序图如图3所示,当INTR变为低电平后,将CS先置低,接着再将RD置低,在RD置低至少经过tACC时间后,数据输出口上的数据达到稳定状态,此时直接读取数字输出端口数据便可得到转换后的数据信号,读取数据后,马上将RD拉高,然后将CS拉高。INTR是自动变化的,不必人为干涉。

三、硬件电路设计

Proteus软件是英国Labcenter Electronics公司1989年推出的EDA工具软件,是一个集模拟电路、数字电路、模/数混合电路以及多种微控制器为一体的系统设计与仿真平台,为各种实际的单片机应用系统开发提供了功能强大的虚拟仿真工具,已有20多年的历史。Proteus是一种完全用软件手段对单片机应用系统进行仿真开发,与用户样机在硬件上无任何联系,只需在PC机上安装仿真开发工具软件Proteus,就可进行单片机应用系统的设计开发、虚拟仿真与调试[1]。本文使用的是Proteus 7.8 SP2版本。ADC0804与单片机AT89C52的连接电路图如图4所示。

AD转换器接口为ADC0804,单片机为AT89C52,显示输出为8个LED发光二极管。ADC0804的DB0—DB7通过数据总线和单片机的P0.0/AD0—P0.7/AD7连接,ADC0804的CS、RD、WR依次和单片机的P3.5、P3.6和P3.7引脚连接,ADC0804的INTR和单片机的P3.2引脚连接。ADC0804的CLK IN和CLK R之间接一10kΩ电阻R1,CLK R端经一150pF电容C4接地,AGND和DGND接地,VREF/2接2.5V外接参考电压在VIN+和VIN-之间接入0—+5V模拟输入电压,可通过调节电位器(微调电阻)RV1实现电压信号的变化。电路中用到的器件名称如图5所示。

四、系统软件设计

AT89C52单片机控制ADC0804工作可采用以下三种方式:延时等待、查询和中断。延时等待方式:ADC0804的转换时间为100μs,当启动A/D转换后,采用软件延时的方法等待一段时间,等待时间稍大于A/D转换所需时间,以保证A/D转换器有足够的时间完成转换,待延时结束,直接读取转换数据。查询方式:当ADC0804的A/D转换结束后,INTR信号将变低,这是个转换结束标志信号。启动A/D转换后,CPU就不断地查询INTR引脚的状态,若INTR为高电平,表示A/D转换正在进行,继续查询;若INTR为低电平,表示A/D转换已经结束,可以读取转换结果。本例中,INTR信号和单片机P3.2/INT1连

接,查询P3.2的电平变化即可[2]。

中断方式:中断和查询方式类似,但查询方式下,单片机需不断地查询,比较忙;中断方式下,INTR*变为低电平时,就会引起CPU的中断,在中断服务程序中就可读取A/D转换结果。

查询方式程序如下:

五、Proteus仿真软件的结果

通过调节原理图上电位器RV1(微调电阻)的电阻值,使输入信号依次为0V、1V、2V、3V、4V、5V,即可看到LED等点亮的结果依次为00H、33H、66H、99H、CCH、FFH,这和表1的8位A/D转换器的输入电压值与采样值的关系是完全一致的。例如当前通过调节RV1(60%),使得输入电压为3V,则仿真结果如图7所示,LED发光二极管是共阳极,所以当引脚为低电平时灯亮起,因此亮起的灯为0,不亮的灯为1。因此LED D1—D8的显示结果为二进制1001 1001B,转换为十六进制为99H,与表1中的值一致。

六、其他A/D转换器芯片

尽管A/D转换器的种类很多,但目前广泛应用在单片机应用系统中的主要有逐次比较型转换器和双积分型转换器。逐次比较型A/D转换器,在精度、速度和价格上都适中,是最常用的A/D转换器。双积分型A/D转换器,具有精度高、抗干扰性好、价格低廉等优点,与逐次比较型A/D转换器相比,转换速度较慢,近年来在单片机应用领域中已得到广泛应用。本文中使用的ADC0804就属于逐次比较型。ADC0804芯片是ADC0801—ADC0805系列型号的一种,他们之间的区别只是精度不同。精度较高的是ADC0801,非线性误差为±(1/4)LSB。最差的是ADC0804和ADC0805的非线性误差为±1LSB。ADC0802和ADC0803的非線性误差为±(1/2)LSB居中。与ADC0804性能相近的芯片还有ADC0808系列多通道8位CMOS并行A/D转换器。ADC0808系列芯片主要有8通道的ADC0808/ADC0809和16通道的ADC0816/ADC0817。

除了并行的A/D转换器外,带有同步SPI串行接口的A/D转换器的使用也逐渐增多。串行接口的A/D转换

器具有占用单片机的端口线少、使用方便、接口简单等优点,已经得到广泛的应用。较为典型的串行A/D转

换器为美国TI公司的TLC549、TLC1549以及TLC1543和TLC2543等。

使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件操作能力,成为单片机课程设计和大学生毕业设计中的重要实践环节。在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大地提高单片机系统设计效率。

参考文献:

[1]张毅刚,赵光权,刘旺.单片机原理及应用[M].第3版.北京:高等教育出版社,2016.

[2]杜树春.51单片机很简单—Proteus及汇编语言入门与实例[M].北京:化学工业出版社,2017.

猜你喜欢
仿真单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
基于单片机的平衡控制系统设计
一种帮助幼儿车内脱险应急装置的仿真分析
Microchip推出两个全新PIC单片机系列