实验八 A/D模数转换(汇编与微机原理)

实验目的:

掌握ADC0809模数转换的工作原理。

掌握用ADC0809来进行电压转换的使用方法。

实验内容:

用模数转换器件ADC0809测量外部输入的模拟电压,将转换结果输出到数码管的最右边两位上显示。

实验原理:

实验八 A/D模数转换(汇编与微机原理)_第1张图片

     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中。

硬件连线:

0809C2区:0809片选CS、ADDA、ADDB、ADDC 连接A3区:系统CS3、A0、A1、A2 ;

C2区:CLK 连接 B2区:500K;               C2区:IN0 连接 F6区:0~5V ;

8255D3区: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;初始化DS
        MOV DS,AX
        CALL InitKeyDisplay;初始化8255键盘显示
START1:	;启动AD转换器
        MOV AL,0
        MOV DX,ADDR_0809
        OUT DX,AL
       ;延时cx=100
        MOV CX,100
        LOOP $
       ;读取转换数据
        MOV DX,ADDR_0809
        IN AL,DX
       ;对8字节显示BUFFER赋值
	MOV AH,AL;低四位
	AND AL,0FH
	MOV buffer+0,AL
	MOV AL,AH;高四位
	AND AL,0F0H
	ROR AL,4;循环右移4位
	MOV buffer+1,AL
	MOV buffer+2,10H
	MOV buffer+3,10H
	MOV buffer+4,10H
	MOV buffer+5,10H
	MOV buffer+6,10H					
	MOV buffer+7,10H
	;显示转换数据
	LEA SI,buffer
	CALL Display8
	;重复以上过程
	JMP START1
		
END START

你可能感兴趣的:(编程语言,汇编)