单片机按键程序
******************************************************************************/ #include <reg51.h> #include "cdef.h" #define PORT_0 P3 //P3.3 直接接按键 //去抖动的时间(待定) #define c_wobble_time 100 //等待按键进入连击的时间(待定) ,该常数在设计时要比按键按下的常规时间长一点, //并且小于 5 秒 #define c_keyover_time 20000 //等待按键抬起的连击时间 #define c_keyquick_time 2000 byte BUT_bNum=0;//延时
******************************************************************************/ void main(void) { while(1) { BUT_bNum=BUT_bCheck(); } }
5
嵌入式应用软件园,版权所有,请勿转载/销售。
4
嵌入式应用软件园,版权所有,请勿转载/销售。
PORT_0|=0x40; nc=PORT_0&0x40; if(nc==0x40)//没有按键按下 { key_count=0;// 去抖变量清 0 keyover_time=c_keyover_time; } else { if(key_count==c_wobble_time)//去抖的时间结束则键值加 1. { key_value++; if(key_value==8) key_value=0; return key_value;//则键值加 1 } else { if(key_count>c_wobble_time)//进入连击状态. { key_count=0;//去抖变量清 0 keyover_time=c_keyquick_time;//将处于连击模式 } } } } /****************************************************************************** 函数名:main 输 入:无 输 调 描 出:无 用:BUT_bCheck() 述:只是为了编译的需要,用户可以删去。将 Check_key()用到自己的代码中。
/****************************************************************************** 声 明: 版权所有,嵌入式应用软件园。 此文件只限购买者个人使用,请勿在互联网中传播,如有侵权,将追究相应 责任。 如需单片机代码/技术支持,请访问:嵌入式应用软件园 ******************************************************************************/
如需源代码/此代码技术支持,请访请勿转载/销售。
第 3 章 按键用途
按键有很多类型,按键也是嵌入式应用中常用的元件。接触式的 按键,是通过识别其逻辑电平,来判断按键的按下还是抬起。 如果单片机的 IO 口自带上拉电阻,那么可以将按键直接接到一 个 IO 口上,而不需要再接上拉电阻。按键的另一端直接接地。这样, 按键按下后,读到的逻辑电平是 0,没有按下,读到的就是 1。
2
嵌入式应用软件园,版权所有,请勿转载/销售。
第 1 章 程序功能
我的按键程序中,按键是接在 P3.3 上的,P3 自带上接电阻。按 键在使用中, 必须去除抖动。 去除抖动可以通过软件和硬件两种方法。 这里使用软件方法。 按键的返回值, 用户可以自己选择的。 可以返回按键按下的次数, 按一下,次数加一,按着不放,次数会连续增加;也可以返回按键被 按下的标志,这个标志,可以持续一个 LOOP。 此代码,不仅可以用于单个按键,也可以用于多个按键。
键 的时间超 5 秒后,确认并返回键值。 ******************************************************************************/ byte BUT_bCheck(void) { static byte key_value=0;// 按键值初始键值 key_value=0 static byte key_count=0;//key_count 用于计数去抖 static word keyover_time=c_keyover_time; byte nc=0;//key_flag,进入按键设置的标志。
/****************************************************************************** 函数名:Check_key 输 入:无 输 调 描 出:返回键值 用: 述:按下按键 5 秒后,LED 数码管闪烁,松开按键后,每按一次转换一个数字,松开按
嵌入式应用软件园,版权所有,请勿转载/销售。
按键程序
作者: 嵌入式应用软件园
1
嵌入式应用软件园,版权所有,请勿转载/销售。
目
录
第 1 章 程序功能 ................................................................................... 3 第 2 章 按键程序 ................................................................................... 4 第 3 章 按键用途 ................................................................................... 7
3
嵌入式应用软件园,版权所有,请勿转载/销售。
第 2 章 按键程序
/****************************************************************************** 模 块: 文件名:Button.c 作 者:嵌入式应用软件园 修 订: 版本号 1.0 原因 初始版本
7