OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1860|回复: 1

电话线路板程序,写了好几天都没写出来,兄弟姐弟们帮忙看看,主函数和拨号ht9200a子函数哪里不行?

[复制链接]

4

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-5-7
在线时间
5 小时
发表于 2018-5-10 14:48:54 | 显示全部楼层 |阅读模式
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,·¢&#203;íêy&#190;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);//&#184;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)//è&#231;1&#251;key4 &#188;ü°′&#207;&#194;
                                                    {}      
                                                 else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==0)//è&#231;1&#251;key5 &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0)//è&#231;1&#251;key6 &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0)//è&#231;1&#251;key7 &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==0)//è&#231;1&#251;key8 &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0)//è&#231;1&#251;key0 &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0)//è&#231;1&#251;key# &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10) == 0)//è&#231;1&#251;key* &#188;ü°′&#207;&#194;
                                                    {}
                                                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)==0)//è&#231;1&#251;KEY_MIAN_TI&#188;ü°′&#207;&#194;
                                                    {}
                          }
                  }
        }


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-5-11 01:35:10 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 05:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表