新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2018-5-7
- 在线时间
- 5 小时
|
4金钱
#include"stm32f10x.h"
#include "delay.h"
u8 Table_DTMF[]={0X0a,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c};
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void KEY_Init(void)
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;//KEY5-KEY1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//KEY-MianTi,key#,key*,key0,key9,key8,key7,key6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void TEL_CE_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
}
void TEL_CLK_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14;//¶Ë¿úÅäÖÃ
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//Ëù¶èÎa50MHZ
GPIO_Init(GPIOC,&GPIO_InitStructure);//¸ù¾Y2Îêy3õê¼»ˉGPIOC
GPIO_SetBits(GPIOC,GPIO_Pin_14);//3õê¼»ˉ
}
void TEL_DATA_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);//ê1ÄüGPIOC¶Ë¿úê±Öó
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;//¶Ë¿úÅäÖÃ
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//Ëù¶èÎa50MHZ
GPIO_Init(GPIOC,&GPIO_InitStructure);//¸ù¾Y2Îêy3õê¼»ˉGPIOC
GPIO_SetBits(GPIOC,GPIO_Pin_15);//3õê¼»ˉ
}
void Ht9200SndByte(u8 in)发送DTMF
{
u8 i;
for(i=0;i<5;i++)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);// HT_CE=0
if(((in>>i)&0x01) == 1)
GPIO_ResetBits(GPIOC,GPIO_Pin_15); // HT_DATA=1
else GPIO_SetBits(GPIOC,GPIO_Pin_15); // HT_DATA=0
GPIO_SetBits(GPIOC,GPIO_Pin_14);// HT_CLK=1,
GPIO_ResetBits(GPIOC,GPIO_Pin_14);// HT_CLK=0,·¢Ëíêy¾Y
}
delay_ms(50);
}
int main()
{
u8 in;
u8 flag=0;
delay_init();
LED_Init();
KEY_Init();
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)==0)//如果免提键按下
{
flag=1;
GPIO_SetBits(GPIOA,GPIO_Pin_7);//¸led3亮
while(flag==1)
{
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0)//如果按键0按下
{ }
else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12) == 0)//如果按键1按下
{
GPIO_SetBits(GPIOA,GPIO_Pin_6);//LED3áá
delay_ms(100);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12) == 0)
delay_ms(100);
Ht9200SndByte(Table_DTMF[in]);
}
else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11) == 0)//如果按键2按下
{}
else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==0)//如果按键3按下
{}
else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9) == 0)//èç1ûkey4 ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==0)//èç1ûkey5 ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0)//èç1ûkey6 ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0)//èç1ûkey7 ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==0)//èç1ûkey8 ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0)//èç1ûkey0 ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0)//èç1ûkey# ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10) == 0)//èç1ûkey* ¼ü°′ÏÂ
{}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)==0)//èç1ûKEY_MIAN_TI¼ü°′ÏÂ
{}
}
}
}
|
|