新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機連續(xù)按鍵檢測C51程序

單片機連續(xù)按鍵檢測C51程序

作者: 時間:2012-10-24 來源:網(wǎng)絡(luò) 收藏

這幾天閑來無事,翻騰出以前的仿真器和編程器,找出幾片STC12c2052。寫了個修改中繼功能的小程序,主要實現(xiàn):

1、在5秒內(nèi)連續(xù)按三下發(fā)射鍵才能打開中繼。

2、打開中繼后,中繼在每一句話后延時10s,10s內(nèi)沒有說話的,中繼關(guān)閉。

3、每一句語音后面自動加上“滴滴”,每一組語音結(jié)束自動加上“滴滴滴”。

用華為450C試了試,發(fā)現(xiàn)450C的靜噪點不好取,明天用2K電阻連接插頭第一腳試試能不能模擬出低電平靜噪信號??刂频脑拺?yīng)該是把PNP三極管的上面一腳(B)拉低即可。

附帶上無語音靜音控制輸出和“滴滴”聲音輸出。

不能加附件,就把源程序貼上:

/* 本程序主要實現(xiàn)功能: 1、2s之內(nèi)連續(xù)按鍵3次打開中繼。 2、接收到一次信號后延時8s后關(guān)閉發(fā)射機。*/
/* 3、每次語音結(jié)束 滴滴 ,每個循環(huán)結(jié)束 滴滴滴滴*/

           #include #include #define FV  100#define MC  400void 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;                  /* 發(fā)射超時標(biāo)志*/ZHOUQI=0;                   /* 一組通話周期標(biāo)志*/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)              /* 接收到信號,周期標(biāo)志為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);                   /*一個周期內(nèi),一句話完成,響兩聲*/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
 

手機電池相關(guān)文章:手機電池修復(fù)


51單片機相關(guān)文章:51單片機教程




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉