-
一、实验目的
1、ADC0809是很常用的一款8位的模数转换芯片,ADC0808是0809的简化版,主要的不同点是0808的转换输出OUT0~7与常用的输出端高低位是相反的,即0809的最低位是OUT0,0808的最低位是OUT7。因为0809在proteus里面没有模型库,因此本次实验以ADC0808为目标芯片进行仿真。
2、熟练掌握附件中8086+0808+8255电路的工作原理,硬件连接及程序流程,掌握0808查询方式下的硬件连接和软件编程的方法。 -
二、实验任务
设计并实现查询方式下的ADC0808模拟量采集程序。具体工作如下:
1. 硬件设计。修改硬件连接,为ADC0808设计EOC管脚状态查询电路。设计提示:可参考课件例程为EOC分配状态查询地址,或利用8255查询。
2. 软件设计。在前一步硬件连接的基础上,编写程序采集第IN_i路输入的模拟量,这里,IN_i为0808的第i个模拟量输入引脚,i为你学号最后一位进行模8运算的结果。然后,根据0808的工作过程设计采集程序,当EOC有效时,采集数据并在七段数码管上显示,精确到小数点后两位(目前的示例程序只精确到小数点后1位)。
-
三、思考题
- 解释0808的寻址方式,给出查询方式的程序流程图.
寻址方式:片选端口IO2被选中之后,如果是WR状态有效,则ALE为高电平,这时通过ADD A、ADD B、ADD C进行通道选择,并使得START为高电平, 0808开始转换;如果是RD状态有效,则会使得OE为高电平,即0808的转换结果允许输入。
程序流程图:
2、示例程序中使用的4位七段数码管的显示原理是什么?试给出解释说明。
接口1234确定输入区域,低电平有效,通过8255C的高四位确定每次的输入。
接口ABCDEFG控制显示字段。通过向8255的B口输入数据。
四、实验过程
1、修改硬件连接:
查询程序:
WAIT1: mov dx,a8255
in al,dx
test al,01H ;注意EOC高电平有效
jz WAIT1
mov dx, adc0808
in al,dx
mov [si],al
jmp here
2、
i=7%8=7
输入引脚IN_7
引脚连接为IN_7
代码:
mon: mov al,[si]
mov ah,0
mov bl,51
div bl
mov bx,offset segdata
xlat
or al,80h
mov dx, b8255
out dx, al
mov al,11011111b
mov dx,c8255
out dx,al
call DELAY_1S
MOV AL,0ffH ;清屏
OUT dx,AL
mov al,ah
mov ah,0
mov bl,10
mul bl
mov bl,51
div bl
mov bx,offset segdata
xlat
mov dx, b8255
out dx, al
mov al, 10111111b
mov dx,c8255
out dx,al
call DELAY_1S
MOV AL,0ffH ;清屏
OUT dx,AL
mov al,ah
mov ah,0
mov bl,10
mul bl
mov bl,51
div bl
mov bx,offset segdata
xlat
mov dx, b8255
out dx, al
mov al, 01111111b
mov dx,c8255
out dx,al
call DELAY_1S
mov dx,c8255
MOV AL,0ffH ;清屏
OUT dx,AL
call DELAY_1S
loop mon
mov dx, adc0808
in al,dx
mov [si],al
jmp here
运行结果截图: