图。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。8255A的B端口接扬声器驱动电路,B端口的地址为62H。 SOUND:
K1:
K2: K3: K4: K5: BEEL: K7:
40
PUSHF CLI OR DH,DH ;DH中为发长音的个数 JZ
K3 ;如不发长音,则转K3 MOV BL,6 ;如发长音,则置长音计数器 CALL
BEEL ;调用发音程序 LOOP K2 ;两音之间留一点间隙 DEC DH ;长音发完否 JNZ
K1 ;否,则继续
MOV BL,1 ;如发完长音,则置短音计数器 CALL
BEEL ;调用发音程序 LOOP K4 ;两音之间留一点间隙 DEC DL ;继续发短音吗 JNZ
K3 ;是,则继续 LOOP K5 ;否,则留一点间隙 POPF ;标志恢复 RET
;返回
MOV AL,B6H ;发音子程序开始 OUT 46H,AL ;8253的计数器2工作于模式3 MOV AX,533H;计数初值为533H OUT 44H,AL ;送初值低位 MOV AL,AH
OUT 44H,AL ;送初值高位 IN
AL,62H ;取扬声器驱动信息 MOV AH,AL OR AL,03
;接通扬声器
OUT 62H,AL ;扬声器驱动 SUB
CX,CX ;一次发音时间设定
LOOP K7 DEC
BL
;BL中为发音计数值
JNZ MOV OUT RET
答:补充的注释见程序清单中的下划线部分。程序流程图如下所示。 K7
;如未结束,则继续发音
;如发音结束,则恢复B端口信息
AL,AH 62H,AL
SOUND开始 保护标志,关中断 发长音吗? Y N 置长音计数器,调发音子程 序,并延时 N 长音发完吗? Y 置短音计数器,调发音子程 序,并延时 N 短音发完吗? Y 延时并恢复标志 RET返回
41
BEEL开始 8253计数器2初始化为模式3,计数初值为533H 取扬声器驱动信息并送AH中保护起来 接通扬声器并使其发音 延时 音发完了吗? N Y 发音结束,关掉扬声器 RET返回
第 8 章 模/数和数/模转换
8.1
什么叫分辨率?什么叫相对转换精度?
答:1.在D/A转换时,将最低位增1所引起的增量和最大输入量的比称为分辨率。即:分辨率=1/(2n-1)。
2.用绝对转换精度相对于满量程输出的百分数表示的精度即为相对转换精度。有时也用最低位(LSB)的几分之几表示。
8.2 在T型电阻网络组成的D/A转换器中,设开关K0、K1、K2、K3、K4分别对应一位二进制数,当二进制数据为10110时,流入运算放大器的电流为多少?画出这个T型网络。 答:1.流入运算放大器的电流I为:(n=5)
I?VREFVREFVREF11VREF?N??(10110B)??22?。16R2NR25R25RRo - 2.T型网络如下图:
Vo K0 2R 2R K1 2R K2 2R K3 2R K4 +
2R
R R R R VREF 8.3 用带两级数据缓冲器的D/A转换器时,为什么有时要用三条输出指令才完成16位或12位数据转换?
答:因为一般第一次将低8位数据送输出低位的第一级数据缓冲器,第二次输出高4位或高8位数据到高位的第一级数据缓冲器。
第三次执行一次伪输出,将第一级数据缓冲器的内容打入第二级数据缓冲器从而实现高于8位的D/A转换。因此要用3条输出指令才能完成一次16位或12位数据转换。以避免出现错误的中间结果。
8.4 使用DAC0832进行数/模转换时,有哪两种方法可对数据进行锁存?
答:第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在不锁存状态。第二种方法是使输入寄存器工作在不锁存状
态,而DAC寄存器工作在锁存状态。
42
8.5
在数字量和模拟量并存的系统中,地线连接时要注意什么问题?
答:首先各个模拟地连在一起,各个数字地连在一起;其次模拟地和数字地只能且必须用一个共地点连起来,以防干扰。
8.6 设计一个电路和相应程序完成一个锯齿波发生器的功能,使锯齿波呈负向增长,并且锯齿波的频率可调。 答:① 电路如下图所示:
② 程序如下:
MOV MOV
ROTATE:
DEC OUT CALL JMP
DELAY: DELAY1:
MOV LOOP RET
DX,PORTDA ;PORTDA为D/A转换器的端口号 AL,0 AL
;初值 ;呈负向增长
;往D/A转换器输出数据 ;延迟
数据总线 D7~D0 REB WR1 IOUT1 地址总线 - Vo + DAC 0832 译码器DX,AL DELAY ROTATE CX,DATA DELAY1
;往CX中送延迟常数,修改DATA即可改变周期
8.7 什么叫模/数转换精度?什么叫转换速率?什么叫分辨率?
答:1.反映A/D转换器的实际输出接近理想输出的精确程度叫模/数转换精度。
2.完成一次A/D转换所需要的时间的倒数叫转换速率。 3.A/D转换器能够分辨最小的量化信号的能力叫分辨率。
8.8 参考《微型计算机技术及应用》一书中图8.12说明计数式A/D转换的工作原理。
答:首先启动信号S由高电平变为低电平,使计数器清0,当启动信号恢复高电平时,计数器准备计数。开始,D/A转换器的输出
电压VO为0,此时,运算放大器在同相端的输入电压作用下,输出高电平,从而使计数信号C为1。于是,计数器开始计数,
43
D/A转换器输入端获得的数字量不断增加,使输出电压VO不断上升。在VO小于Vi时,运算放大器的输出总是保持高电平。当VO上升到某个值时,会出现VO大于Vi的情况,这时,运算放大器的输出变为低电平,即C为0。于是,计数器停止计数。这时候的数字输出量D7~D0就是与模拟输入电压对应的数字量。计数信号C的负向跳变也是A/D转换的结束信号。它用来通知其他电路,当前已经完成一次A/D转换。
8.9 双积分式A/D转换的原理是什么?
答:一开始,电路对输入的未知模拟量进行固定时间的积分,然后转换为对标准电压进行反向积分。反向积分到一定时候,便返
回起始值。因此对标准电压的反向积分时间T正比于输入模拟电压Vi,Vi越大,T越长。只要用标准的高频时钟频率测定反向积分花费的时间,就可得到输入模拟电压所对应的数字量,即实
START 初始化,试探位BL从最高位开始现了A/D转换。
8.10 参考《微型计算机技术及应用》一书中图8.14说明逐次逼近式A/D转换的工作原理。
计算试探值并送BH保护 试探值→D/A转换,接着答:当启动信号由高电平变为低电平时,逐次逼近寄存器清0,这时,
D/A转换器输出电压VO也为0,当启动信号变为高电平时,转换开始,同时,逐次逼近寄存器进行计数。逐次逼近寄存器工作时与普通计数器不同,它不是从低位往高位逐一进行计数和进位,而是从最高位开始,通过设置试探值来进行计数。具体讲,在第一个时钟脉冲时,控制电路把最高位送到逐次逼近寄存器,使它的输出为10000000B,这个输出数字一出现,D/A转换器的输出电压VO就成为满量程的128/255。这时,如果VO大于Vi,那么,作为比较器的运算放大器的输出就成为低电平,控制电路
Y 试探值小了吗? N 试探值的该试探位清0→BH保护 试探位右移一位,取试探值→AL 试探结束了吗? Y 输出转换结果 据此清除逐次逼近寄存器的最高位;如果VO小于或等于Vi,则比较器输出高电平,控制电路使最高位的1保留下来。如果最高位被保留下来,那么,逐次逼近寄存器的内容为10000000B,下一个时钟脉冲使次高位D6为1。于是,逐次逼近寄存器的值为11000000B,D/A转换器的输出电压VO到达满量程的192/255。此后,如果VO大于Vi,则比较器输出为低电平,从而使次高位D6复位;如果VO小于或等于Vi,则比较器输出高电平,从而保留次高位D6为1。再下一个时钟脉冲对D5位置1,然后据此对VO和Vi的比较,决定保留还是清除D5位上的1??重复上述过程,直到D0=1,再与输入电压比较。经过N次比较后,逐次逼近寄存器中得到的值就是转换后的数据。转换结束以后,控制电路送出一个低电平作为结束信号,这个信号的下降沿将逐次逼近寄存器中的数字量送入缓冲寄存器,从而得到数字量输出。
8.11 比较计数式、双积分式和逐次逼近式A/D转换的优缺点。
答:计数式的优点是电路比较简单,但速度较慢。双积分式的优点是精度高、干扰小,但速度慢。逐次逼近式的优点是速度快,
44