这几天闲来无事,翻腾出以前的仿真器和编程器,找出几片STC12c2052。写了个修改中继功能的小程序,主要实现:
1、在5秒内连续按三下发射键才能打开中继。
2、打开中继后,中继在每一句话后延时10s,10s内没有说话的,中继关闭。
3、每一句语音后面自动加上“滴滴”,每一组语音结束自动加上“滴滴滴”。
用华为450C试了试,发现450C的静噪点不好取,明天用2K电阻连接插头第一脚试试能不能模拟出低电平静噪信号。控制的话应该是把PNP三极管的上面一脚(B)拉低即可。
单片机附带上无语音静音控制输出和“滴滴”声音输出。
不能加附件,就把源程序贴上:
/* 本程序主要实现功能: 1、2s之内连续按键3次打开中继。 2、接收到一次信号后延时8s后关闭发射机。*/
/* 3、每次语音结束 滴滴 ,每个循环结束 滴滴滴滴*/
#include
#include
#define FV 100
#define MC 400
void delay(int);
void didi(int);
void timer0();
void timer1();
bit CHAOSHI,ZHOUQI;
sbit P1_6 = P3^4;
sbit P1_7 = P1^7;
sbit P1_5 = P1^5;
int YSJ;
int CSJ;
/* ------------------- 主程序入口------------------------*/
main()
{
CHAOSHI=0; /* 发射超时标志*/
ZHOUQI=0; /* 一组通话周期标志*/
YSJ=0;
CSJ=0;
P1=0x80;
P3=0x00;
TMOD=0x11; /* 定时器0、1皆工作于方式1 */
EA=1;
ET0=1;
ET1=1 ;
aaa: while(P1_7==1) /* 等待 接收到信号 */
{ }
if (ZHOUQI==0) /* 接收到信号,周期标志为0 */
{
TH1=0x3c; /* 12M晶振,定时0.05s */
TL1=0xb0;
TR1=1; /*开启超时计时*/
while(P1_7==0 && CHAOSHI==0) { } /*等待松键高电平*/
while(P1_7==1 && CHAOSHI==0) { } /*等待掐键低电平*/
while(P1_7==0 && CHAOSHI==0) { } /*等待松键高电平*/
while(P1_7==1 && CHAOSHI==0) { } /*等待掐键低电平*/
while(P1_7==0 && CHAOSHI==0) { } /*等待松键高电平*/
if(CHAOSHI==1)
{ CHAOSHI=0;
goto aaa;
}
P1_6=1;
bbb: TH0=0x3c; /*延时定时器启动*/
TL0=0xb0;
TR0=1;
while(ZHOUQI==0 && P1_7==1) { }
if (P1_7==0)
{
TR0=0;
while(P1_7==0){ } /* 松键时开始计时*/
YSJ=0;
didi(2); /*一个周期内,一句话完成,响两声*/
goto bbb;
}
if(ZHOUQI==1)
{
didi(3); /*一个周期完成,响三声*/
P1_6=0;
TR0=0;
ZHOUQI=0;
goto aaa;
}
}
}
/*--------------------------delay()延时程序--------------------*/
void delay(int x)
{
int a;
for (a=0;a
