AT89C51系统中的A/D转换仿真研究

2018-10-12 12:04宗素兰张翠侠
宿州学院学报 2018年7期
关键词:量值模拟量原理图

宗素兰,张翠侠

宿州学院1.煤矿机械与电子工程研究中心;2.机械与电子工程学院,宿州,234000

单片机处理的是数字量,但在自然界,如温度、压力、速度和流量等都是模拟量[1-3]。这些非电的物理量需要经过传感器转变成模拟电信号[1],然后再进一步转化为数字量才能由单片机处理。将模拟量转换成数字量的过程称为数模转换,即A/D转换[1,4]。ADC0808是一种逐次比较型8路模拟输入,8位数字量并行输出的A/D转换器[5],与实际使用的ADC0809相比,除了精度上有差别外,其余完全一样[6]。

1 A/D转换系统原理

A/D转换系统原理框图如图1所示。

图1 A/D转换系统原理图

A/D转换系统由AT89C51单片机、A/D转换器件和显示器等组成。A/D转换器件把外界传来的模拟量转换成数字量并传送给AT89C51单片机,单片机才能进行数据处理[5,7]。AT89C51单片机把A/D转换器传来的信号经显示器件显示出来。

2 A/D转换程序设计

ADC0808的模数转换在编程时可以通过查询和中断两种方式实现。

2.1 采用查询方式实现A/D转换的程序

查询方式主要通过查询ADC0808芯片的EOC引脚信号是不是1来实现。该引脚信号为1时,表明模数转换结束,可以读取模数转换的结果,并把模数转换的结果送至设计时选好的显示器件显示出来。本次仿真研究选择的显示器件是发光二极管和数码管,显示结果非常形象直观。

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:

MOV DPTR,#00FFH;00FFH是ADC0808的端口地址

S1:

MOVX @DPTR,A;启动AD转换

MOV P3,#0FFH;P3口设为输入端口

L1:

JB P3.2,$;P3.2即EOC反相后是1吗,是1继续等。

MOVX A,@DPTR;读取转换结果

MOV P1,A;把转换结果送P1口

SJMP S1

END

2.2 采用中断方式实现A/D转换程序

中断方式主要是利用ADC0808芯片的EOC引脚信号是不是1来实现。该引脚信号为1时,表明模数转换结束。AT89C51单片机中断的触发方式有两种:下降沿和低电平。在编程时设置中断的触发方式为低电平,而模数转换结束时EOC的引脚信号为1,所以要经过反相后再送至单片机的P3.2引脚,P3.2即是外部中断0中断请求信号入口。从图2可以看出EOC经反相后连接单片机P3.2引脚。

ORG 0000H

LJMP MAIN

ORG 0003H;外部中断0入口地址

LJMP INTAD

ORG 0100H

MAIN:

SETB EX0;开外部中断0中断

CLR IT0;设置外部中断0的中断触发方式为低电平触发

SETB EA;开总中断

MOV DPTR,#00FFH;00FFH是ADC0808的端口地址

MOVX @DPTR,A; 启动AD转换

SJMP $;死循环,等待中断

INTAD:

MOVX A,@DPTR;读取转换结果

MOV P1,A;结果送P1口显示

MOVX @DPTR,A;再次启动AD转换

RETI;中断返回

END

3 A/D转换仿真实现

3.1 仿真电路图

打开Proteus软件,进入“Schematic Capture”模式[8-9]。因为ADC0808片内无时钟信号,需要外接时钟电路。时钟信号的形成:点击左侧菜单栏的“Generator Mode”,选取DCLOCK项。画出图形后,双击,选取或输入ADC0808的时钟频率。ADC0809模数转换器的工作时钟具有宽广的适用频率范围,最高可达3 MHz[10]。仿真时选择500 kHz。仿真图中的其他元件按照参考文献[5]的操作步骤,根据下图2中的元件名称选取即可。选出所有元件并连接好,可得出A/D转换的仿真电路原理图,如图2所示。

3.2 仿真说明

查询和中断两个程序中ADC0808的端口、地址和EOC信号都以图2为基础。如果连接方式不同,则程序也要改变。ADC0808的6号引脚是启动信号输入端,7号引脚EOC是转换结束标志,高电平表示转换结束,OE是输出允许端,高电平有效[11]。采用图中的连接方式,当单片机执行写指令时,启动AD转换,当执行读指令时,OE有效,AD转换的数字量传给单片机。

图2 系统仿真原理图

3.3 仿真结果与分析

运用Keil软件,分别加载上文中的汇编语言源程序,生成后缀为“HEX”的文件[9]。双击原理图中的单片机,把生成的“HEX”文件加载进去,可得仿真结果[9](图3~6)。仿真时模拟量取值范围为0%~100%,或者说0~1。

图3是滑动变阻器全部接入时即模拟量最小时所对应的数字信息。此时通道0输入的模拟量值最小,为0%,相应的数字量也应该最小,为00H。从图3可以看出对应的发光二极管全灭,表示送过来的数字信号为二进制信号00000000B,此时数码管显示00,表示对应的十六进制为00H,即模拟信号为0时,对应的数字信号也为0,与理论完全一致。从图4可以看出,模拟信号输入量值为25%,发光二极管显示的信号为01000000B,数码管显示40,表示对应的十六进制为40H;理论分析可知,当模拟信号为25%时,对应的数字量应为最大数字信号只有FFH的四分之一,即40H,理论和仿真显示一致。图5表示当滑动变阻器接入50%时,此时模拟信号处于中间值0.5,对应数字量信号应为00H~FFH的中间值,即7FH。从图5可以看出,理论和仿真结果一致。图6表示模拟输入量值最大时,对应的数字也应该最大,为FFH。从图6可以看出,发光二极管全亮,表示数字信号为11111111B,数码管显示FF,表示对应的十六进制为FFH,理论和仿真结果完全一致。

图3 模拟输入量值最小时对应状态 图4 模拟输入量值为25%时对应状态

图5 模拟输入量值为50%时对应状态 图6 模拟输入量值最大时对应状态

4 结 论

通过仿真演示,可看出转换芯片和单片机之间的连接,再结合相应的程序可以清楚展示在单片机系统中如何实现A/D转换。这是实体实验很难做到的,即使一个实验系统只有A/D转换一个实验,复杂的连线也会让人眼花缭乱。因此,仿真虽然不能完全代替实体实验,但是在单片机系统研究中采用仿真来实现A/D转换,可以达到甚至比实体实验更好的效果。

猜你喜欢
量值模拟量原理图
多元向量值区域和加权风险值
基于QAR数据的碳当量值适航符合性验证方法
浅谈STM32核心板原理图设计
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
基于FPGA的多通道模拟量采集/输出PCI板卡的研制
带有中心值的量值的公差表示
关于600MW火电机组模拟量控制系统设计和研究
模拟量输入式合并单元测试仪的研制
关于EDA教学中Quartus II原理图输入法的探讨