?? c.txt
字號(hào):
/*********** 畢業(yè)設(shè)計(jì)DTMF*********************
*日期: 2008/4/20
*功能: LPC901操作HT9200,進(jìn)行DTMF雙音頻發(fā)送演示程序
****************************************************/
#include "reg932.h"
#define uchar unsigned char
sbit CE=P3^1;
sbit KEY=P0^4;
sbit DATA=P0^5; //數(shù)據(jù)口
sbit CLK=P1^2; //CLK口
uchar Buffer[3]={0x02,0x0A,0x04}; //撥號(hào)204,這里編碼"0A"對(duì)應(yīng)數(shù)字"0"
void Start_DTMF();
void SendData(uchar Temp);
void Stop_DTMF();
void delayms(uchar j);
//---------------------------
main()
{
uchar i;
P0M1=0x00; //端口初始化,均為準(zhǔn)雙向口
P0M2=0x00;
P1M1=0x00;
P1M2=0x00;
P3M1=0x00;
P3M2=0x00;
while(1)
{
if(KEY==0) //判斷鍵是否按下
{
delayms(15); //延時(shí)15ms
while(KEY==0); //判斷鍵是否松開(kāi)
for(i=0;i<3;i++)
{
Start_DTMF(); //DTMF初始化
SendData(Buffer[i]); //發(fā)送數(shù)據(jù)
delayms(100); //延時(shí)100ms
Stop_DTMF(); //停止DTMF
}
}
}
}
//----------------------------
//功能:DTMF初始化
//入口參數(shù)
//----------------------------
void Start_DTMF()
{
CE=0; //拉低CE,片選
CLK=1; //拉高CLK,
delayms(10); //延時(shí)10ms
}
//----------------------------
//功能:停止DTMF
//入口參數(shù)
//----------------------------
void Stop_DTMF()
{
SendData(0xff); //發(fā)送DTMF終止幀0xff
CLK=1; //拉高CLK
CE=1; //拉高片選線CE
}
//----------------------------
//功能:發(fā)送數(shù)據(jù)低5位
//入口參數(shù):uchar Temp
//----------------------------
void SendData(uchar Temp)
{
uchar i=5; //循環(huán)次數(shù)5
uchar j=0;
while(i>0)
{
j=Temp&0x01; //暫存Temp的最低位
if(j==0) //對(duì)最低位進(jìn)行判斷
{
DATA=0; //數(shù)據(jù)線為0
}else
{
DATA=1; //數(shù)據(jù)線為1
}
Temp=Temp>>1; //Temp右移1位
i--;
CLK=0; //CLK產(chǎn)生下降沿
CLK=1; //恢復(fù)CLK為高
}
}
//----------------------------
//功能:ms級(jí)延時(shí),(7.373Mhz晶振條件下,誤差us級(jí))
//入口參數(shù):uchar j
//----------------------------
void delayms(uchar j)
{
int i;
while(j>0)
{
for(i=0;i<=669;i++);
j--;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -