c语言怎么实现按键的实时检测

c语言怎么实现按键的实时检测,第1张

参照窗口程序的设计,检测按键就是用个while来不断检测是不是按到了某个键,至于要做什么就塞循环里

难道要搞机票预订系统么寒……

C是面向过程的只能这样,否则微软早就改进窗口程序代码了

据我所知,实用的快捷方式、快捷键很多,除了平时用的比较多的复制粘特ctrl+c,ctrl+V,还有以下 *** 作:

一、Winkey

winkey是键盘上刻有windows徽标的键。

winkey d :

你知道吗?

按下这个快速组合,可以将从桌面上删除的所有窗口瞬间最小化。 按这个组合可以瞬间复原。 上司和父母来看守时可以强调他。

winkey f :

“搜索:

“所有文件”对话框。

无论如何,按下此组合键后,将显示搜索框,您可以在计算机中搜索任何文件。

不需要用鼠标点移动“开始”-“搜索”-“文件和文件夹”。 (按F3键在桌面上时“搜索:

“所有文件”对话框。

)中被调用,将出现故障

winkey r :

打开“运行”对话框。 很多电脑 *** 作都会有打开驾驶的步骤,怎么办?

还是点击“开始-驾驶”吗?

现在你相信你知道有更好的方法了吧!

winkey e :

打开资源管理器。 你需要打开我的电脑的时候,直接按这个组合吧。 你想开几个吗?

Winkey U :

打开辅助功能管理器。

winkey Ctrl M :

上一个 *** 作前窗口的大小和位置将再次恢复。

winkey BREAK :

打开“系统属性”对话框。

winkey Ctrl F :

“搜索:

“计算机”对话框。

Winkey或Ctrl ESC :

打开开始菜单。

二、F1/2。

F1 :

显示当前程序或windows的帮助内容。

F2 :

选择文件后,意味着“重命名”。

F10或Alt :

激活当前程序的菜单条。

三、Ctrl

CTRL ALT DELETE :

如果无法打开“任务管理器”,死机或关闭应用程序,则可以使用此技巧进入任务管理器并删除文件。

DELETE :

删除选定的文件并将其放入回收站。

SHIFT DELETE :

直接删除选定的文件,不经由回收站。

小贴士:

这种 *** 作很少使用,如果意外删除了重要文件,可以使用强大的数据恢复软件进行恢复。

Ctrl N :

在当前使用的应用程序中创建新的空文件以进行编辑。

Ctrl O :

打开“打开文件”对话框。

Ctrl P :

打开“打印”对话框。

Ctrl S :

保存当前 *** 作的文件。

Ctrl X :

将选定的项目剪切到剪贴板。

Ctrl Insert或Ctrl C :

将选定的项目复制到剪贴板。

Ctrl V或Shift Insert :

将剪贴板的内容粘贴到当前位置。

Ctrl Z或Alt Backspace :

取消上一步的 *** 作。

Ctrl F4 :

关闭当前应用程序的当前文本(例如word的当前编辑文档)。

Ctrl F6 :

切换到当前应用程序的下一个文本。

四、Alt

Alt Shift Backspace :

是否要重新执行上一步取消的 *** 作?

属性。

Alt F4 :

关闭当前应用程序。

Alt Spacebar :

打开程序最左上角的菜单。

Alt TAB/ESC :

切换当前程序。 工作中,不知不觉会打开很多窗口,无法安装电脑下面的菜单栏。 我该怎么办? 没有alt tab键的组合吗?

首先单击Alt,然后按tab,窗口中将显示当前打开的所有对话框的名称和图标。 按tab选择要打开的窗口,松开此键即可直接打开。

此外,按alt tab shift键可反转当前打开的窗口。

ALT ENTER :

在windows上运行的MSDOS窗口和全屏状态之间切换。

ALT Print screen :

将当前活动的程序窗口作为图像复制到剪贴板。

P1MDIN是配置输入模式的,置0为模拟输入,置1位数字输入,按键应选择置1,单片机复位后引脚的缺省值是数字输入,所以程序不需要更改P0MOUT是配置输出方式的,置0是开漏输出,置1是推挽输出,按键用不到所以不需要配置C8051f330内部有弱上拉,按键不加上拉电阻也可以正常使用

有独立键盘和距阵键盘的 独立键盘的很简单我就不写了 距阵的我给你写一个

//键盘扫描

uchar Keys_Scan()

{

uchar sCode,kCode,i,k;

//低4 位置0,放入4 行

P1=0xf0;

//若高4 位出现0,则有键按下

if((P1&0xf0)!=0xf0)

{

DelayMS(2);

if((P1&0xf0)!=0xf0)

{

sCode=0xfe; //行扫描码初值

for(k=0;k<4;k++) //对4 行分别进行扫描

{

P1=sCode;

if((P1&0xf0)!=0xf0)

{

kCode=~P1;

for(i=0;i<16;i++) //查表得到按键序号并返回

if(kCode==KeyCodeTable[i])

return(i);

}

else

sCode=_crol_(sCode,1);

}

}

}

return(-1);

/

矩阵按键实验

实现现象:下载程序后数码管显示0,按下矩阵按键上的按键显示对应的数字

S1-S4:0-3

S5-S8:4-7

S9-S12:8-B

S13-S16:C-F。

注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。

/

#include "reg52h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

#define GPIO_DIG P0

#define GPIO_KEY P1

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

u8 KeyValue; //用来存放读取到的键值

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

/

函 数 名 : delay

函数功能 : 延时函数,i=1时,大约延时10us

/

void delay(u16 i)

{

while(i--);

}

/

函 数 名 : KeyDown

函数功能 : 检测有按键按下并读取键值

输 入 : 无

输 出 : 无

/

void KeyDown(void)

{

char a=0;

GPIO_KEY=0x0f;

if(GPIO_KEY!=0x0f)//读取按键是否按下

{

delay(1000);//延时10ms进行消抖

if(GPIO_KEY!=0x0f)//再次检测键盘是否按下

{

//测试列

GPIO_KEY=0X0F;

switch(GPIO_KEY)

{

case(0X07): KeyValue=0;break;

case(0X0b): KeyValue=1;break;

case(0X0d): KeyValue=2;break;

case(0X0e): KeyValue=3;break;

}

//测试行

GPIO_KEY=0XF0;

switch(GPIO_KEY)

{

case(0X70): KeyValue=KeyValue;break;

case(0Xb0): KeyValue=KeyValue+4;break;

case(0Xd0): KeyValue=KeyValue+8;break;

case(0Xe0): KeyValue=KeyValue+12;break;

}

while((a<50)&&(GPIO_KEY!=0xf0)) //检测按键松手检测

{

delay(1000);

a++;

}

}

}

}

/

函 数 名 : main

函数功能 : 主函数

输 入 : 无

输 出 : 无

/

void main()

{

LSA=0; //给一个数码管提供位选

LSB=0;

LSC=0;

while(1)

{

KeyDown(); //按键判断函数

GPIO_DIG=smgduan[KeyValue]; //

}

}

temp等于0x0e时,键值key等于7 : 这个键值是你自己定义的,就是起一个标志位的作用,然后用程序判断键值,当键值等于7时,该进行什么动作,这就相当于当你那个按键按下时执行什么动作

写单片机C程序 一定要活用标志位

还有你好像都大四了,怎么这样普通的矩阵键盘程序还看不懂,该好好学习呀 兄弟

I和J 只是一个变量 用来决定延时时间的长短 延时是为了消除按键的抖动

毕竟机械按键存在抖动(按下去并不是电平直接就跳变并稳定下来了)

延时是软件消抖 增强系统的稳定性

以上就是关于c语言怎么实现按键的实时检测全部的内容,包括:c语言怎么实现按键的实时检测、键盘上的按键各有什么作用、C8051F330单片机设计按键检测程序。。。急求大神指点!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10636696.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存