机械按键是每个电子初学者亦或是电子从业者都要接触到的电子元件,而机械按键的弊端又广为人们所诟病,在现代的电子产品尤其是便携式电子产品上其弊端日益明显、突出。近年来各大公司纷纷推出电容式触摸按键IC电路,专为取代传统的机械结构开关或普通按键而设计,面板介质可以是各种材料,市场应用将是巨大的,因此学习使用这种IC电路是必要的。
UFUN开发板上使用的电容式触摸按键IC为TTP224电路,这是一款使用电容式感应原理设计的触摸IC, 此款IC内建稳压电路给触摸感测器使用,稳定的感应方式可以应用到各种不同电子类产品,该IC电路提供4个触摸输入端口及4个直接输出端口。
其资料及手册UFUN开发板附带资料包里都很详细,在此不占用时间说明。下面就其使用做一体验。
开始搭建函数的主体部分,扫描按键,然后根据按键情况进行声音的控制。声音控制使用一个软件延时函数来控制蜂鸣器驱动引脚BEEP(见uFun原理图UFUN_SCH),输出不同长度和频率的波形来驱动蜂鸣器发声。函数Play(unsigned char t,n)中的参数t为波形的频率,n为声音持续长度。修改参数t可以使得蜂鸣器发出不同的声音,而修改n可改变这个声音的持续长度。
void Play(unsignedchar t,n)
{
unsigned char i;
for(i=0;i<n;i++)
{
BEEP=~BEEP;
delayMS(t);
}
BEEP=0;
}
首先判断有没有按键被按下,如果有,再判断是哪个键,同时根据不同的键发出不同的声音(控制不同的频率循环驱动蜂鸣器),用于区别是哪个键被按下。
While(1)
{
If(KeyNum !=0xFF)//如有按键被按下
{
Delay(10); //延迟10ms
temp=KEYPORT;//再次读取KeyNum
if(KeyNum==temp)//如有按键被按下,读取按键号
{
If(Key1)Play(1,100);//不同声调
If(Key2)Play(2,100);
If(Key3)Play(3,100);
If(Key4)Play(4,100);
}
else
{
KeyNum=0x00;
}
}
}
小结:按键开关和蜂鸣器是电子产品中最常用的电子元器件之一,是人机交互最简单的元器件,用好这两个电子元器件对于电子产品的设计和生产,使其提高电子产品的可靠性将大有裨益。