谁知道电脑键盘按键代码表

谁知道电脑键盘按键代码表,第1张

一:字母和数字按键的建码值

二:数字键盘上的按键的建码值

三:功能按键建码值

四:控制按键的建码值

五:多媒体按键建码值

在Windows注册表中有个"Scancode Map"(即扫描码映射)的键,我们可以通过修改这个键的值来实现键位映射的更改。

"Scancode Map"的值的格式是"hex:00,00,00,00,00,00,00,00,xx,00,00,00,[yy,yy,yy,yy,,yy,yy,yy,yy,]00,00,00,00"

前8个16进制的值(即前8组00)表示版本号和头部字节,后4个16进制的值(即最后的4组00)表示结束标志,中间xx表示映射数目,最小值为01(考虑到结束标志的4组00),中括号内为可写项,也是我们修改键位比较关键的部分,每四个代表一组映射。

第一,直接使用硬件来复位,将原本要接到P33的电平接到硬件复位上,当然需要一定的设计

第二,还是硬件,直接将此电平接到看门狗电路上

第三,软件,前提是你的单片机支持软件复位(包括直接复位和内置的看门狗)

keyflag应该是判断某个按键按了几次,不安的时候为0

if(KeyFlag == 0)

{

}

按一次时执行

else if(KeyFlag == 1)

{

if(BUTTON_add == 0 && KeyLock ==0)

{

}

if(BUTTON_reduce == 0 && KeyLock ==0)

{

}

按二次时执行

else if(KeyFlag == 2){

if(BUTTON_add == 0 && KeyLock ==0)

{

}

if(BUTTON_reduce == 0 && KeyLock ==0)

{

}

一楼正解,主要按键扩展标志是用来节省资源的,用最少的按键实现最多的功能!

可以用getch来取得键值,

以下是用TC写下的。

供参考:

#include <stdioh>

#include<conioh>

void main()

{

char ch;

while(1)

{

ch =getch();

printf("\n%d",ch);

if(ch == 27)

break;

}

printf("\nend");

}

设置过程中会出现黑色框架,第一个输入f1然后按回车键第二个输入f2然后按回车键,第三个输入x然后回车,最后输入end 回车,保存,就行了,希望你能用,话说开连发很爽,我为了开连发还换成XP了,VISTA不好用连发。

不是所有键盘都能调节音量的,一般笔记本键盘或者带有音量调节功能的台式机键盘可以调节音量。

键盘上调节音量的方法:

按住FN键,点击对应的按键即可。以戴尔外星人笔记本键盘为例,按住FN,点击F7或者F8,即可调整音量大小。

有键--YES——和上次相同--No--Keyold=0;退出

| |

| YES--Keyold++;

| |

| Keyold==首键延时KEYDELAY--No--退出

| |

| YES--Keyok=1; //按下不放一定时间发首键,后面发加速键

| 保存键值到Keydata;(必要时译码)

| Keyold=KEYDELAY-KEYLOOP(按住不放的延时);--退出

|

No--Keyold==0--YES--退出

|

N0--Keyok=1; //不为0说明按了键再放开,当然作按键有效处理

保存键值到Keydata;(必要时译码)

Keyold=0;--退出所有键盘程序对外接口:

unsigned char KeyGetcode(void) //返回按键码

{

key_ok=0;

return(key_data);

}bit KeyTest(void) //检查有无按键

{

KeyScan(); //键扫描

return(key_ok);

}

//--------------------------------------------------------------------------//

// 源程序大公开 //

// (c) Copyright 2001-2005 xuwenjun //

// All Rights Reserved //

// V100 //

//--------------------------------------------------------------------------//

//标 题: P1口行列式键盘程序 //

//文件名: xwj_hlkeyc //

//版 本: V100 //

//修改人: 徐文军 E-mail:xuwenjun@21cncom //

//日 期: 05-05-13 //

//描 述: P1口行列式键盘程序 //

//声 明: //

// 以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处 //

// 如用于商业用途请与作者联系 E-mail:xuwenjun@21cncom //

// 有问题请mailto xuwenjun@21cncom 欢迎与我交流! //

//--------------------------------------------------------------------------//

//老版本: 无 老版本文件名: //

//创建人: 徐文军 E-mail:xuwenjun@21cncom //

//日 期: 05-05-13 //

//--------------------------------------------------------------------------//

#i nclude <reg52h>

#i nclude "xwj_hlkeyh" // P1口行列式键盘 //

//#i nclude "xwj_bph" //峰鸣器#define KEYDELAY 25 /首键延迟次数/

#define KEYLOOP 10 /连续键间隔次数,需小于KEYDELAY/

unsigned char key_bak;

unsigned char key_temp;

unsigned char key_old;

unsigned char key_data;

bit key_ok; // P1口行列式键盘 //

#define KEYPIN_L P1 // 定义键扫描列端口为 P1低四位输入 //

#define KEYPIN_H P1 // 定义键扫描行端口为 P1高四位扫描输出 // //内部私有函数 //

unsigned char fnKeycode(unsigned char key); // 根据键盘映射表输出顺序键值 // // P1口行列式键盘 //

//---------------------------------------------------------------------------//

void KeyScan(void) //键扫描

{

unsigned char sccode,recode;

KEYPIN_L = KEYPIN_L|0x0f; // P1低四位为列线输入 //

KEYPIN_H = KEYPIN_H&0x0f; // P1高四位为行线发全零扫描码 //

if ((KEYPIN_L&0x0f) != 0x0f) //有键按下

{

key_temp = 键值; //键扫描,获得键值

if (key_temp == key_bak)

{

key_old++;

if (key_old==KEYDELAY) //连续键,不要则把此if屏蔽

{

key_ok=1;

key_data=fnKeycode(key_temp); //键

key_old=KEYDELAY-KEYLOOP;

}

}

else

{

key_old=0;

key_bak=key_temp;

}

}

else //键抬起

{

if (key_old)

{

key_ok=1;

key_data=fnKeycode(key_temp); //键

/ if (key_old==100) //加上时间,不同时间不同功能,与连续键冲突

{

bp(1);

key_data += 0x10;

}

if (key_old==200)

{

bp(2);

key_data += 0x20;

}

/

}

key_old=0;

}

KEYPIN_H = KEYPIN_H|0xf0;

}//---------------------------------------------------------------------------//unsigned char KeyGetcode(void) //返回按键码

{

key_ok=0;

return(key_data);

}bit KeyTest(void) //检查有无按键

{

KeyScan(); //键扫描

return(key_ok);

(1);P33小键盘按下P13亮再按05秒灭。

org 0000h

ajmp main0

org 0080h

MAIN0:

CLR 21H ;清标志

main:

mov c,p33 ;检测按键

jc main

MOV R6,#200 ;设定延时

MOV R7,#200

TT0:

JNB 21H,TT2 ;检测灯状态

tt:

mov c,p33 ;检测按键

jnc tt1

JNB 20H,MAIN ;检测时间标志

CLR 20H

AJMP TT3

TT2:

mov c,p33 ;检测按键

jnc tt2

TT3:

CPL 21H ;改变灯状态

cpl p13

ajmp main

TT1: NOP ;延时但不是子程序

NOP

NOP

NOP

NOP

NOP

DJNZ R6,TT

MOV R6,#200

DJNZ R7,TT

MOV R7,#200

SETB 20H

AJMP TT

end

(2)数码管数据 p0,数码管控制p2 独立按键p1口 ,;对独立键进行按键次数计数,三位数码管显示。

;K1按下后,进行加1计数

;K2按下后,进行减1计数。

;K3按下后,进行加5计数。

;K4按下后,清计数单元,数码管显示0。

;按住键可以快速计数。

K1 BIT P14

K2 BIT P15

K3 BIT P16

K4 BIT P17

K_OLD EQU 30H

K_NEW EQU 31H

K_COUNT EQU 32H

DISSTART EQU 40H ;显示单元首地址

LED_DATA EQU P0 ;数码管数据口定义

;---------------------------------------------------------

ORG 0000H

JMP MAIN

ORG 0080H

;---------------------------------------------------------

MAIN:

MOV SP,#60H

MOV P1,#0FFH

MOV P0,#0FFH

MOV K_OLD,#00H

MOV K_COUNT,#00H

MAIN1:

CALL CONVT

CALL PLAY

CALL KEY_PROG

JMP MAIN1

KEY_PROG:

CALL K_SCAN ;键扫描

MOV A,K_NEW

CJNE A,K_OLD,KEY_P1

JMP KEY_P_END

KEY_P1:

MOV R4,#20

KEY_P2:

CALL CONVT ;用显示程序来进行键延时

CALL PLAY

DJNZ R4,KEY_P2

CALL K_SCAN ;再判断键是否按下

MOV A,K_NEW

CJNE A,K_OLD,KEY_P3

JMP KEY_P_END

KEY_P3:

JB ACC0,LOOP1 ;K1按下

JB ACC1,LOOP2 ;K2按下

JB ACC2,LOOP3 ;K3按下

JB ACC3,LOOP4 ;K4按下

JMP KEY_P_END

LOOP1:

INC K_COUNT ;键计数加1

JMP KEY_P_END

LOOP2:

DEC K_COUNT ;键计数减1

JMP KEY_P_END

LOOP3:

INC K_COUNT ;键计数加5

INC K_COUNT

INC K_COUNT

INC K_COUNT

INC K_COUNT

JMP KEY_P_END

LOOP4:

MOV K_COUNT,#00H ;键计数单元清零

KEY_P_END:

RET

;---------------------------------------------------------

;代码变换 (HEX TO BCD)

;---------------------------------------------------------

CONVT:

MOV A,K_COUNT

MOV B,#100

DIV AB

MOV DISSTART+2,A ;百位存放在DISSTART+2

MOV A,#10

XCH A,B

DIV AB

MOV DISSTART+1,A ;十位存放在DISSTART+1

MOV DISSTART,B ;个位存放在DISSTART

RET

;---------------------------------------------------------

; 键扫描子程序

;---------------------------------------------------------

K_SCAN:

MOV P1,#0FFH

MOV K_NEW,#00H

MOV A,P1

CPL A

ANL A,#0F0H

SWAP A

MOV K_NEW,A

RET

;---------------------------------------------------------

;延时子程序

;---------------------------------------------------------

DELAY:

MOV R6,#200

DEL:

MOV R7,#0FFH

DJNZ R7,$

DJNZ R6,DEL

RET

;---------------------------------------------------------

PLAY:

MOV R0,#DISSTART ;获得显示单元首地址

MOV R1,#07FH ;从第一个数码管开始

MOV R2,#03H ;共显示3位数码管

DISP1:

MOV A,@R0 ;获得当前位地址

MOV DPTR,#TAB_NU ;获得表头

MOVC A,@A+DPTR ;查表获得显示数据

MOV LED_DATA,A ;显示数据

MOV P2,R1 ;开始显示当前位

MOV A,R1 ;准备显示下一位

RR A

MOV R1,A ;下一位

INC R0 ;取下一个单元地址

LCALL DELAY2MS ;延时 2 MS

DJNZ R2,DISP1 ;重复显示下一个

MOV P2,#0FFH ;关闭显示

RET ;显示完成,返回

;---------------------------------------------------------

;延时子程序

;---------------------------------------------------------

DELAY2MS:

MOV R6,#10

DEL1:

MOV R7,#100

DJNZ R7,$

DJNZ R6,DEL1

RET

TAB_NU:

db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h ;字形代码表

;

END

两个例子我想够你明白的了。详细的解释,代表性的例子,可慢慢学习

以上就是关于谁知道电脑键盘按键代码表全部的内容,包括:谁知道电脑键盘按键代码表、c语言独立按键控制程序复位、关于单片机温度控制系统C语言程序中的按键设置程序,请求详细的介绍下按键的输入过程。while(1) { if(KeyFl等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存