(张国武 韩百信)用程序控制CEC—1型中华学习机的音量,使音量在程序控制下逐级增大(或减小),会使该机的音乐功能更加理想。
本文介绍的音量程控卡(见附图)只从主机引两条控制线,即可由程序控制音量。

该卡由功率放大器LM386,二进制可预置可逆计数器CD40193和三只门电路组成。这些元器件装在一块电路板上,固定在机内扬声器附近。
电路原理
LM386作为可控增益功率放大器,当负反馈电路电阻R\(_{x}\)(R1~R4的并联值)的阻值不同时,其电压放大倍数Av则不同,A\(_{v}\)=1+Rf/Rx
CD40193为二进制同步预置加减计数器。从CL+输入计数信号,CL-处于高电平时,作加法计数;从CL-输入计数信号, CL+处于高电平时,作减法计数。计数开始时输出状态由PE-端来预置。输入端A、B、C和D分别接成1011,在开机时,由于C1相当于交流通路而使PE-=0,计数器输出即与置数输入相同,BQ=0,二极管V2导通(V1,V3,V4截止),电阻R2接入反馈电路,音量被置为第2级,大小和不加卡时相同。电路稳定后,PE-=1,此时D4处于计数状态。当DEVSEL-负脉冲加到门路D1-3输入端时,经过D1-4把负脉冲加到计数器的CL-端,计数器减1,输出端AQ~DQ分别为1010,V2和V4导通,R2、R4并联组成R\(_{X}\),使音量增大。
当计数器减到0000时音量开至最大,这时再送来增加音量的指令,音量保持不变(不会变成1111而使音量反而最小)。这是门电路D3的作用,D3的四个输入端和计数器4个输出端相连,在计数输出变为0000后,D3输出为0,使D1-4输出恒为1,阻止了减法脉冲的输入。
当主机送来I/OSEL-负脉冲信号,D4作加法计数,音量减小。当D4加至1111时,音量最小,此时D2输出为零,同时封锁了加法脉冲的加入,这时音量保持最小。
安装与使用
CEC—1型中华学习机的扩充槽上第1脚为I/OSEL-工信号,41脚为DEVSEL-信号。以7号槽口为例,当访问$C700~$C7FF中的任何一个地址时,1脚将产生一个低电平脉冲,可用作减(增)音量脉冲;当访问$CF~$CFF中任何一个地址时,41脚会产生一个低电平脉冲,该信号可用作加(减)音量脉冲。
系统中扩展槽尚有1,2,4,5和7号槽没用,1号槽口一般引到扩展槽上,为不占扩展槽,可选用2,4,5或7号槽口信号。我们还以7号槽为例,在主机板右侧有一排插座,标号为J1,在插座远离机壳的一排10个引线上,分别为1,2,4,5,7的I/OSEL-信号和DEVSEL-信号。一般1号槽口信号已被短接帽连接,另一端两个即为7号槽口的I/OSEL-和DEVSEL-信号(见图2)。引出接到程控卡上即可。程控卡的各元器件装在一块电路板上,固定在机内扬声器附近。

要使音量增大,可使用PEEK(-14400),反复使用15次可使音量达到最大。
要使音量减小,可使用PEEK(-16130)。
运行下列程序,可听到音量的变化,在提供给MUSIC的音阶数据中,大于255的其中包含增大音量的指令,小于255的则包含减小音量的指令。
程序:
10 REM
20 FOR I=0 TO 44
30 READ A,B:IF A>255 THEN 60
40 IF A<0 THEN 80
50 GOTO 100
60 FOR J=0 TO A/256:K=PEEK(-14400):NEXT
70 A=A-INT(A/256)*256:GOTO100
80 FOR J=A/256 TO 0:K=PEEK(-16136):NEXT
90 A=INT(A/256)* 256-A+256
100 MUSIC A,B:NEXT
102 DATA 128,62,128,62,114,62,1152,98,
152,98,-1025,62,152,62,152,62,140,62,1176,98,
192,98,-1025,62,192,62,205,62,192,62,171,98,
114,62,114,62,128,62,140,62,152,62
104 DATA 140,62,128,140,1,62,128,62,128,
62,114,62,1152,98,152,98,-1025,62,95,62,102,
62,114,62,114,98,171,140,140,62,152,62,171,62,171,62,
114,62,128,82,205,27,171,62,192,110,192,98
110 K=PEEK(-14400):RESTORE
120 GOTO20