一般的电脑声卡上只有一个LINE输入口、一个扬声器输出口和一个话筒输入口(有些有LINE输出口)。如果我们要用声卡去连接多个音频设备进行输入录音或输出放音则会比较麻烦,为此我设计制作了一个可用电脑程序控制、也可以独立工作的红外遥控电脑音源切换器。笔者曾使用电脑并行端口中的数据口线(2~9引脚)进行过相似的制作,因并口在PC启动时数据口状态是不确定的,所以会造成开机时音源切换状态不确定。本文介绍的制作使用单片机AT89C2051与PC串口通信解决以上的问题,同时AT89C2051可以独立工作,处理按键和红外接收头的信号,并作出相应的控制,这样该切换器可以脱离PC进行工作。本文介绍的PC软件只做了对切换器和对声卡的控制。
硬件电路及原理
本音源切换器用一片AT89C2051作核心控制,同时负责控制串口进行与电脑的连接。为了能使它脱离电脑也能进行控制作业,在电路中加入了4个按键和LED指示灯。电路中用了两片CD4066电子模拟开关做音源切换,可实现4路立体声输入和1路输出。在一般家庭的听音环境中,CD4066的信噪比和分离度基本上可以满足,如需要更高要求的音质,可以把CD4066改换成高质量的音源控制电路。
图1为硬件电路图,电路中选用11.0592MHz的晶振,这样可以方便地产生标准的9600波特率。AT89C2051串口通过一片MAX232转换成可与PC串口相连接的RS232信号。IC5为一片CD4069六反相器,因51单片机上电复位后,I/O口全置1,引脚为高电平,如直接连接CD4066就会选通所有音源,所以要用反相器将其全部变为低电平再去连接CD4066。SB1至SB4为4个常开按键,分别控制4个音源,P1.0和P1.1要使用10kΩ的上拉电阻把电平拉高,另两个不用也能正常工作。SB5为复位键,复位后切换状态为全部禁止。红外遥控器选用SAA3010芯片的彩电遥控器。电路制作所需元件见文后表格。

软件设计
在本期的配刊光盘里笔者提供了本文介绍的单片机制作的C语言源代码。SAA3010的编码图可以参看图2。读者在参考程序时会注意到,程序中只取了其中一个遥控编码,没有取第二个作校验用。这在实际使用中没有什么问题。读者也可以到http://cdle.yeah.net下载该源程序。在实际中笔者测试了3个不同品牌的SAA3010兼容电视遥控器,它们的编码并没有使用到指令码,且等待时间加上扫描码只占4个位的时间。

51C源码的设计思路是:上电复位后,程序初始化,P1为高电平,所有音源关闭,同时串口初始化为9600波特率,并打开串口接收中断和中断0(P3.2用于接收红外信号)。若没有收到串口字符或红外信号时,则一直运行按钮查询程序。若一旦有键按下,接收到串口字符,就根据字符内容执行相关函数操作。如有红外信号触发中断0时,则串口关闭,中断0并打开定时器中断,定时器中断采集一定数量的数据后,根据收到的数据内容进行相应操作,完成后关定时中断,再次打开串口和中断0。程序中的取码方式是用定时器0每隔大约840ns(SAA3010 RC-5码的半个位)对接收头采样一次,并以二进制位的方式保存在3个变量中。因SAA3010 RC-5码的前4位是等待时间和扫描码,它们在每次按键时并不稳定,所以采集后并不使用。具体的方法请看光盘中的程序。
PC软件的作用则是对采集到的串口字符进行作相关显示和操作,同时也可根据相应的操作输出串口字符,单片机收到字符后再进行切换和显示。
使用方法
在电路制作好后,将单片机程序烧写到AT89C2051中,基本上不用进行调试就可以使用了。
当用电脑对切换器进行控制时,要先用一根串口通信线把切换器和电脑串口连接起来,然后再运行PC控制程序,该程序界面见图3。程序是绿色软件,只有一个文件,第一次启动后,以后每次开机将自行启动。启动后在任务栏有个小图标,双击或右击即可弹出主界面,如不想再使用时先关闭程序再将相应文件删除就可以了。该程序可控制音源外,还可以控制声卡音量大小。软件中的音源1~4就代表4个音源,点击其中的某一个时,就选中了相应的音源。“音量条”用来调节电脑的声卡音量用,“静音”选项则是用来关闭声卡的声音,“关闭”选项就是关闭所有的音源,不在输出端输出,而“端口选择”就是选择你所连接的PC串口号,一般是COM1或COM2。程序在启动后会自动执行最后的音源状态,目前只支持遥控本文介绍的切换器。读者可在本期配刊光盘的“本期程序”文件夹找到这个程序,或者到http://cdle.yeah.net下载。

笔者在制作切换器时只使用到了遥控器的电源(关闭选项),1~4号(音源1~4),音量加减和静音键。其他的键读者可以在单片机C程序中进行定义再使用,配合编写PC程序就可以做到可遥控电脑的多能遥控器了。电路板上SB1~SB4是分别控制1~4号音源,而SB5用于复位,相当于关闭所用音源。当你连接了PC并打开了该软件时,无论你用遥控器的按键还是电路板上的按键进入操作,状态都会马上反映到PC软件上进行显示。
电路可以有两种音频线的连接方式。图4(a)连接方式的好处是可以通过电脑上的声卡进行音量和静音控制,就是先把音源送入切换器,再通过切换器选择后,输出端连接到声卡的LINE IN输入端,再通过声卡连接到有源音箱,这种接法要经过电脑声卡,适用于采集和编辑音源用,但是不开电脑时就无法使用切换器。图4(b)的连接方式,好处是不开电脑也可使用遥控切换音源。如果你要加入音量遥控功能就要自己动手改改电路了,这种接法就是把电脑声卡也当做一种音源处理,连同所有接上的音源经过切换控制后输出到放大设备。该接法不适合对多种音源进行采集切换,但很适合对多种音源进行监听,就算没有电脑也可以很好地工作。图5是用万用板做好的电路实物图。
读者可以在本期配刊光盘的“本期程序”文件夹中找到与本文相关的程序有:编译好的单片机HEX文件CDLE.hex,单片机C源程序CDLE.c,PC控制程序CDLE.exe。
(温正伟 牛军)