【摘 要】红外通信以其成本低、实现容易的优点,在短距离通信中得到广泛的应用。本文探讨使用stc12ca60s2单片机的内置a/d及pwm功能实现红外语音通信的一种简易方法。
【关键词】红外语音通信;stc12ca60s2;信息传输
1 方案设计
短距离红外通信多采用编码方式实现,如果单纯考虑语音通信时,可理解为是模拟信号的传输,此时可以不采用编码方式,只要接收方能正确把发送方信号还原成语音(模拟)信号即可,基于此,本设计的思想是把语音信号通过单片机a/d采集后按信号幅度调制成不同占空比的pwm信号后送红外管发送(对于进入a/d之前的信号及接收后的音频信号放大等处理本文不做探讨)。
2 硬件设计
2.1 stc12ca60s2简介
stc12ca60s2是stc生产的单时钟/机器周期(1t)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路8位pwm,8路高速10位a/d转换器。
2.2 发送端设计
stc12ca60s2时钟电路、复位电路可与传统51单片机相同,通过对模拟输入通道功能控制寄存器p1asf的设置,采用p1.1对应的通道1做为音频信号的输入端,可将经前置处理好的模拟音频信号从此脚引入,实现音频信号到数字信号的转换。通过对工作模式寄存器cmod设置,采用系统时钟2分频做计数脉部源,实现频率为21khz的pwm信号,脉冲宽度实时与采集到的音频数字信号成正比例对应(仅用高8位)用脉宽直接反映音频信号的幅值从p1.3引脚输出,将p1.3连接到红外发送管进行红外发送。
2.3 接收端设计
接收端直接使用一体化红外接收管结合功率放大电路接扬声器。
3 软件设计
3.1 程序框图
图1
3.2 源代码
#include
//stc网站提供
#include
sbit k38=p1^7;
//38khz方波输出,可用于红外输出调制(选用)
t0int() interrupt 1 using 3
{
ea=0;
k38=~k38;
ea=1;
}
/*函数名称:delay_ms 功能:stc 12xx 1ms延时程序*/
void delay_ms(unsigned int ms)
{
unsigned int i;
while( (ms--) != 0)
{
for(i = 0; i < 133; i++);
}
}
/*函数名称:adc_init 功能:adc初始化*/
void adc_init(void)
{
p1asf |=0x02; //p1.1口做为ad转换通道
adc_res=0; //清ad转换结果寄存器
adc_contr=0x81; //打开ad转换器电源,模拟通道选p1.1
delay_ms(1); //等待adc上电稳定
}
/*函数名称:adc_getresult 功能:获取adc转换的结果*/
unsigned char adc_getresult()
{
unsigned char adc_1;
adc_contr =0x89; //启动通道1ad转换
_nop_(); _nop_(); _nop_(); _nop_();//延时
while (!(adc_contr & 0x10)); // 查询方式等待ad转换完成
adc_contr &= ~(0x10); //清除转换完成标记
adc_1=adc_res; //读取adc结果
return adc_1;
}
/*函数名称:pca_init, 功能:pca计数器初始化函数*/
void pca_init(void)
{
ccon=0; //初始化pca控制寄存器
cl=0; //清除pca计数器
ch=0;
cmod=0x82; //设置pca计数器时钟源为fosc/2
//fosc=12mhz时频率约为21khz
ccapm0=0x42; //pca模块0工作于pwm模式
cr=1; //运行pca计数器
}
void main()
{
unsigned char adc;
tmod=0x02;//38khz方波输出时使用定时器0(选用)
th0=0xf4;tl0=0xf4;
tr0=1;
et0=1;
ea=1;
adc_init(); //adc初始化
pca_init(); //pca计数器初始化
while(1)(下转第45页)
(上接第11页){
adc=adc_getresult(); //采集声音
ccap0h=ccap0l=adc; //用采集声音改变pwm占空比
}
}
4 结束语 <
br> 本设计用pwm产生21khz的信号用于红外语音传输,经过实际测试,踞离可达2米,对于红外发射管来说把信号调制成38khz时传输距离最远,如想调制成38khz信号传输,可在单片机外部增加一个与门,把p1.7引脚输出的方波同p1.3输出语音信号与运算后实现。
【参考文献】
[1]丁向荣.单片微机原理与接口技术-基于stc15系列单片机[m].电子工业出版社,2012:219-246.
[2]郭天祥.51单片机c语言教程[m].电子工业出版社,2009:282-298.
[3]邱毅凌.嵌入式系统开发之道[m].人民邮电出版社,2011:139-191.
[责任编辑:丁艳]