可以用FlexibleButton表示。
FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库,支持单击、连击、短按、长按、自动消抖,可以自由设置组合按键,可用于中断和低功耗场景。
该按键库解耦了具体的按键硬件结构,理论上支持轻触按键与自锁按键,并可以无限扩展按键数量。另外,FlexibleButton 使用扫描的方式一次性读取所有所有的按键状态,然后通过事件回调机制上报按键事件。
核心的按键扫描代码仅有三行,没错,就是经典的 三行按键扫描算法。使用 C 语言标准库 API 编写,也使得该按键库可以无缝兼容任意的处理器平台,并且支持任意 OS 和 non-OS(裸机编程)。
快速体验:
FlexibleButton 库中提供了一个测试例程 ./examples/demo_rtt_iotboard.c,该例程基于 RT-Thread OS 进行测试,硬件平台选择了 RT-Thread IoT Board Pandora v2.51 开发板。
当然你可以选择使用其他的 OS,或者使用裸机测试,只需要移除 OS 相关的特性即可。
如果你使用自己的硬件平台,只需要将 FlexibleButton 库源码和例程加入你既有的工程下即可。
DEMO 程序说明:
该示例程序可以直接在 RT-Thread stm32l475-atk-pandora BSP 中运行,可以在该 BSP 目录下,使用 menuconfig 获取本软件包。
现在来看看,c语言运行按钮如何编译。
设备:联想电脑
系统:win8
软件:VC ++6.0
1、首先启动编译软件程序,点击编译程序。
2、接下来点击链接程序按钮。
3、然后点击运行按钮。
4、也可以按下快捷键运行。此时,页面之中将会d出一个命令提示符,运行编译完成了。
主要就是按键检测,防抖呗。首先给出检测按键代码:(我这个事4*4键盘。具体你要根据实际情况编写)
uchar TestKey()
{
uchar cord_h,cord_l
P6=0x0f
cord_h=P6&0x0f
if(cord_h!=0x0f)
{
Delay_Xms(1)
if(cord_h!=0x0f)
{
cord_h=P6&0x0f
P6=cord_h|0xf0
cord_l=P6&0xf0
return(cord_h+cord_l)
}
}return(0xff)
}
--------------------------------------
然后你在Main函数里编写循环,检测按键然后做你想做的事情。。。
while(1)
{
key=TestKey()//调用键盘扫描,
switch(key)
{
case 0x7e:P4=0xa1break//0 按下相应的键显示相对应的码值
case 0x7d:Show1Menu()break//1
case 0x7b:P4=0x83break//2
case 0x77:P4=0x88break//3
case 0xbe:P4=0x99break//4
case 0xbd:P4=0x90break//5
case 0xbb:P4=0x82break//6
case 0xb7:P4=0xb0break//7
case 0xde:P4=0xc0break//8
case 0xdd:P4=0x80break//9
case 0xdb:P4=0x92break//a
case 0xd7:P4=0xa4break//b
case 0xee:P4=0xc6break//c
case 0xed:P4=0xf8break//d
case 0xeb:P4=0x99break//e
case 0xe7:P4=0xf9break//f
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)