实验目的:
掌握ADC0809模数转换的工作原理。
掌握用ADC0809来进行电压转换的使用方法。
实验内容:
用模数转换器件ADC0809测量外部输入的模拟电压,将转换结果输出到数码管的最右边两位上显示。
实验原理:
0809A/D转换芯片有8个A/D转换通道IN0~IN7,可以同时进行工作,从8个通道中输入8个不同的模拟信号可以“同时”分别进行转换(启动转换从程序上看是有先后顺序的,但从用户来看它们是同时在进行转换)。本次实验只要求选择其中的一个通道工作。
当执行OUT DX,AL指令时0809的输入信号START为1,开始启动模数转换,START信号有效的同时ALE信号也会有效,此时ADD-A、ADD-B、ADD-C会把当前工作的通道端口地址锁存下来以确定是哪个通道进行转换。EOC是转换结束的标志信号,是输出信号。转换结束数据进入锁存后它由低变为高电平,用户可将此信号作为状态信号进行查询或作为中断信号来触发中断,在实验室实验中可采用“延时等待转换结束”的方法以节省硬件资源提高课堂效率。ENBLE是输入信号,当它高电平时模数转换后得到的数据可以通过 D7~D0引脚输出,用IN AL,DX指令将转换后的数据读入到AL中。
硬件连线:
0809:C2区:0809片选CS、ADDA、ADDB、ADDC 连接A3区:系统CS3、A0、A1、A2 ;
C2区:CLK 连接 B2区:500K; C2区:IN0 连接 F6区:0~5V ;
8255:D3区:8255片选CS、A0、A1 连接 A3区: 系统CS1、A0 、A1;
D3区: (A口)B=JP16(SEGA-SEGP)、(B口)C=JP17(DIG0-DIG7) 连接
F5区: B(JP36)(段码)、 C(JP35)(位码)
注意:
要求程序编成一个不断循环的过程,不停地转换不断地在数码管上显示数据。
数码管显示部分可直接调用星研系统提供的数码管显示子程序Display8,不用自己编写。
实验代码:
.MODEL TINY
EXTRN InitKeyDisplay:NEAR,Display8:NEAR
ADDR_0809 EQU 0250H ;通道0
.STACK 100
.DATA
buffer DB 8 DUP(?)
.CODE
START:MOV AX,@DATA;初始化DSMOV DS,AXCALL InitKeyDisplay;初始化8255键盘显示
START1: ;启动AD转换器MOV AL,0MOV DX,ADDR_0809OUT DX,AL;延时cx=100MOV CX,100LOOP $;读取转换数据MOV DX,ADDR_0809IN AL,DX;对8字节显示BUFFER赋值MOV AH,AL;低四位AND AL,0FHMOV buffer+0,ALMOV AL,AH;高四位AND AL,0F0HROR AL,4;循环右移4位MOV buffer+1,ALMOV buffer+2,10HMOV buffer+3,10HMOV buffer+4,10HMOV buffer+5,10HMOV buffer+6,10H MOV buffer+7,10H;显示转换数据LEA SI,bufferCALL Display8;重复以上过程JMP START1END START