本帖最后由 abc0010 于 2014-1-9 21:18 编辑
极限编程!2条语句实现电容触摸按键驱动,可以长期稳定工作,不需要消抖延迟,不需要中断处理
之前买模块的时候获得一份编程资料,因为项目忙没看过。。。
直接上代码:
if (key1 != key1_flg) //键1驱动程序, 每按一次只进入一次
{
key1_flg = key1;
KeyProc(1); //这里是按返回值处理,不属于驱动程序
}
有视频:
http://v.youku.com/v_show/id_XNjU5NDgwMzAw.html
有资料:
电容触摸IC-xaj2013-实用框架.rar
(836 Bytes, 下载次数: 94)
2014-1-9 16:07 上传
点击文件名下载附件
C语言编程资料
C语言方面我是个菜鸟,不过我发现,资料 电容触摸IC-xaj2013-实用框架.c 上的GetKey()函数不论放在主程序的什么地方,程序都可以正常工作,不知道对不对。欢迎大家指正。
这是原作者的文档:
/*****************************************************
注意,本程序只是一个框架。不能直接编译。使用者需要一定
的编程基础,然后加进自己的具体功能才能实现相应的功能。
从本框架上可以看出,wxaj2013用于键盘,不需要作消抖延迟
也不需要中断处理。同时又确保按键无重复、无效等操作。让
单片机发挥更大的效率。
*****************************************************/
#include <stdio.h>
#include <reg52.h>
void systeminit(void);
void getkey(void);
void keyproc(char keyreturnval);
void funtion1(void);
void funtion2(void);
....
void otherjob(void);
void main()
{
systeminit();
while(1)
{
getkey();
funtion1();
funtion2();
......
otherjob();
}
}
//wxaj2013按键处理程序,只需要定义相应的引脚即可
//===============================================
void getkey()
{
if(key1 != key1_flag) //只有标志和引脚状态不同时才进入
{
key1_flag = key1; //更新标志, 和引脚同步, 防止多次进入
KeyProc(1); //按键处理
}
if(key2 != key2_flag)
{
key2_flag = key2;
KeyProc(2);
}
if(key3 != key3_flag)
{
key3_flag = key3;
KeyProc(3);
}
if(key4 != key4_flag)
{
key4_flag = key4;
KeyProc(4);
}
}
//按键处理程序, 根据自己的需求补充完整即可
//=========================================
void KeyProc(char keyReturnVal)
{
switch(keyReturnVal)
{
case 1: ... break;
case 2: ... break;
...
default: break;
}
}
关键问题在于,我在想,如果我连续摸这个按钮,按代码,就只会执行一次了。所以我果断不会使用这段代码。
一周热门 更多>