微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 玩转蓝牙4.0系列教程(第一季)-第七课 CC2540的触摸开关的控制

玩转蓝牙4.0系列教程(第一季)-第七课 CC2540的触摸开关的控制

时间:10-02 整理:3721RD 点击:

今天为大家带来触摸开关操作,利用TTP223电容式触摸芯片,广泛应用于消费用产片,防水电气,按钮取代产品。

电气功能图如下:



电路原理图:




J1,J2多种组合电平变化如下:




下面我们进行程序的编写,按这个键去控制小灯,亮灭;首先得配置P2_3为上拉输入,P0_5输出;

  P2SEL &= ~0X02;   //设置P2_3为普通IO口

  P2DIR &= ~0X08;   //设置P2_3为输入模式

  P2INP &= ~0X08;   //配置P2_3为上拉输入









源代码如下:

/**************************************************

** 本程序只供学习使用,未经作者许可,不得用于其它任何用途

** 蓝牙4.0底板开发板

** 作者: shizhe

** 创始时间:2014-05-08

** 修改人:shizhe

** 修改时间:2014-05-08

** 修改人:shizhe

** 修改时间:2014-05-08

** 描述:  

**  触摸按键功能操作…

** 版权所有,盗版必究。

** Copyright(C) 联控智能 2014-2020

** All rights reserved

*************************************************/


#include<ioCC2540.h>


#define uint unsigned int

#define uchar unsigned char

#define LED1    P0_5

#define LED2    P1_0

#define LED3    P1_1

#define TOUCH   P2_3


uchar ch;

uchar sw_back;

/****************************

延时函数

*****************************/

void Delayms(uint xms)   //i=xms

{

  uint i,j;

  for(i=xms;i>0;i--)

    for(j=600;j>0;j--);

}

/****************************

      LED初始化函数

*****************************/

void InitLed(void)

{

  P1SEL &= ~0x03;  //P1_0,P1_1定为普通IO口

  P1DIR |= 0x03;  //P1_0,P1_1定义为输出

  P0SEL &= ~0x20;  //P0_5定为普通IO口

  P0DIR |= 0x20;  //P0_5定义为输出

  LED1 = 0;       //LED1灯熄灭   

  LED2 = 0;       //LED2灯熄灭   

  LED3 = 0;       //LED3灯熄灭

}


/****************************

     按键初始化函数

*****************************/

void InitKey()

{


  P2SEL &= ~0X02;   //设置P2_3为普通IO口

  P2DIR &= ~0X08;   //设置P2_3为输入模式

  P2INP &= ~0X08;   //配置P2_3为上拉输入

}


void main()

{

   InitLed();

   InitKey();

   while(1)

   {

     if(sw_back != 0x00){

     if(TOUCH == 0x00){

       Delayms(100);

       if(TOUCH == 0x00){

         sw_back =  0x00;

          ch++;

          if(ch > 3) ch = 1;

       }

      // while(!SWITCH1);

      }

     }

     if(TOUCH) sw_back =  0x01;

     switch(ch)

     {

     case 0x01:

             LED1 = 1;       //LED1灯熄灭   

             LED2 = 0;       //LED2灯熄灭   

             LED3 = 0;       //LED3灯熄灭

       break;

     case 0x02:

             LED1 = 0;       //LED1灯熄灭   

             LED2 = 1;       //LED2灯熄灭   

             LED3 = 0;       //LED3灯熄灭

       break;

     case 0x03:

             LED1 = 0;       //LED1灯熄灭   

             LED2 = 0;       //LED2灯熄灭   

             LED3 = 1;       //LED3灯熄灭

       break;

     default:

       break;

     }

   }

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top