這幾天閑來無事,翻騰出以前的仿真器和編程器,找出幾片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