⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.txt

📁 LPC901操作HT9200
💻 TXT
字号:
/*********** 毕业设计DTMF*********************
*日期:	2008/4/20
*功能:	LPC901操作HT9200,进行DTMF双音频发送演示程序
****************************************************/
#include	"reg932.h"
#define	uchar	unsigned char

sbit	CE=P3^1;
sbit	KEY=P0^4;
sbit	DATA=P0^5;					//数据口
sbit	CLK=P1^2;					//CLK口

uchar	Buffer[3]={0x02,0x0A,0x04};			//拨号204,这里编码"0A"对应数字"0"

void	Start_DTMF();
void	SendData(uchar	Temp);
void	Stop_DTMF();
void	delayms(uchar j);

//---------------------------
main()
{
	uchar	i;
	P0M1=0x00;					//端口初始化,均为准双向口
	P0M2=0x00;
	P1M1=0x00;
	P1M2=0x00;
	P3M1=0x00;
	P3M2=0x00;		

	while(1)
	{
		if(KEY==0)				//判断键是否按下
		{
			delayms(15);			//延时15ms
			while(KEY==0);			//判断键是否松开

			for(i=0;i<3;i++)
			{
				Start_DTMF();		//DTMF初始化
				SendData(Buffer[i]);	//发送数据
				delayms(100);		//延时100ms
				Stop_DTMF();		//停止DTMF
			}

		}
	}
}

//----------------------------
//功能:DTMF初始化
//入口参数
//----------------------------
void	Start_DTMF()
{
	CE=0;						//拉低CE,片选
	CLK=1;						//拉高CLK,
	
	delayms(10);					//延时10ms
}
//----------------------------
//功能:停止DTMF
//入口参数
//----------------------------
void	Stop_DTMF()
{
	SendData(0xff);					//发送DTMF终止帧0xff
	CLK=1;						//拉高CLK
	CE=1;						//拉高片选线CE
}

//----------------------------
//功能:发送数据低5位
//入口参数:uchar Temp
//----------------------------
void	SendData(uchar Temp)
{
	uchar	i=5;					//循环次数5
	uchar	j=0;

	while(i>0)
	{
		j=Temp&0x01;				//暂存Temp的最低位
		if(j==0)				//对最低位进行判断
		{
			DATA=0;				//数据线为0
		}else
		{
			DATA=1;				//数据线为1
		}

		Temp=Temp>>1;				//Temp右移1位
		i--;

		CLK=0;					//CLK产生下降沿
		CLK=1;					//恢复CLK为高
	}
}
//----------------------------
//功能:ms级延时,(7.373Mhz晶振条件下,误差us级)
//入口参数:uchar j
//----------------------------
void	delayms(uchar j)
{
	int	i;
	while(j>0)
	{
		for(i=0;i<=669;i++);	
		j--;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -