键盘驱动
修复键盘驱动的方法
修复键盘驱动的方法
以下是修复键盘驱动的方法:
1. 检查键盘连接:首先,确定键盘是否正确连接到计算机。
如果是USB键盘,则确保它插在正确的USB端口上,并尝试在另一个USB端口上重插键盘。
如果是PS/2键盘,则确保键盘插在正确的PS/2插口上,并确保计算机已关闭。
2. 检查设备管理器:进入设备管理器,看看是否有任何关于键盘的警告或错误消息。
如果有,右键单击键盘驱动程序,选择“卸载”选项。
此后,计算机应该自动重新安装驱动程序。
3. 更新驱动程序:有时,键盘出现问题是因为过时的驱动程序。
在这种情况下,建议尝试手动更新键盘驱动程序。
可以在计算机制造商的网站或键盘制造商的网站上查找最新版本的驱动程序。
4. 检查病毒:有时,计算机上的病毒或恶意软件可能会影响键盘的功能。
运行杀毒软件并进行完整的系统扫描,以查找并清除任何病毒或恶意软件。
5. 检查操作系统:最后,如果所有上述步骤都失败,则键盘问题可能与操作系统有关。
在这种情况下,建议使用Windows安装光盘或恢复分区来修复操作系统文件。
电脑无法识别键盘如何解决电脑无法识别键盘的问题
电脑无法识别键盘如何解决电脑无法识别键盘的问题电脑无法识别键盘的问题是很常见的故障之一。
当我们的电脑无法正常识别键盘时,会导致我们无法进行正常的输入工作。
本文将介绍一些常见的原因和解决方法,帮助你解决电脑无法识别键盘的问题。
一、USB接口问题在大部分电脑上,键盘通过USB接口与主机连接。
如果电脑无法识别键盘,首先要检查USB接口是否正常工作。
可以尝试将键盘插入其他USB接口,或者将其他设备插入同一个USB接口,来确定是键盘本身的问题还是USB接口的问题。
如果是USB接口的问题,可以尝试更换USB线或者修复USB接口。
二、驱动程序问题有时,电脑无法识别键盘是因为缺少或者损坏了相应的键盘驱动程序。
在这种情况下,我们可以通过以下步骤来解决问题:第一步,打开设备管理器。
在桌面上按下Win + X组合键,选择“设备管理器”。
第二步,找到键盘设备。
在设备管理器中找到“键盘”选项,展开键盘选项。
第三步,更新驱动程序。
右击键盘设备,选择“更新驱动程序”,系统将自动搜索并安装最新的驱动程序。
三、键盘故障如果上述方法都无效,那么很有可能是键盘本身出现了故障。
可以尝试将键盘连接到其他电脑上,看看是否能够正常工作。
如果在其他电脑上也无法识别,那么键盘很可能已经损坏,需要更换新的键盘。
四、系统设置问题有时,电脑无法识别键盘是由于某些系统设置的问题。
我们可以尝试以下步骤来解决问题:第一步,按下Win + X组合键,选择“设备管理器”。
第二步,找到键盘设备。
第三步,右击键盘设备,选择“属性”,进入键盘属性设置界面。
第四步,检查设置。
在属性设置界面中,确保键盘没有被禁用,且没有其他设置导致无法识别。
总结:电脑无法识别键盘的问题可能由多种原因引起,包括USB接口问题、驱动程序问题、键盘故障以及系统设置问题等。
在解决问题时,可以按照上述步骤逐一排查,找到原因并采取相应的措施来解决。
希望本文能对你解决电脑无法识别键盘的问题有所帮助。
键盘驱动不兼容
键盘驱动不兼容1. 简介键盘驱动不兼容是指在某些情况下,计算机无法正确识别和响应键盘输入。
这可能是由于不正确的驱动程序安装、驱动程序过期或键盘硬件故障等原因造成的。
在本文档中,我们将探讨一些常见的键盘驱动不兼容问题以及相应的解决方法。
2. 常见问题及解决方法2.1 驱动程序未安装或过期在某些情况下,键盘驱动程序可能未被正确安装,或者驱动程序已过期,无法与计算机的操作系统正常通信。
在这种情况下,用户可能会遇到以下问题:•键盘无法正常工作。
用户可能会发现键盘上的按键无法产生相应的输入。
•键盘输入延迟。
用户可能会发现键盘输入的响应时间较长。
为了解决这些问题,用户可以按照以下步骤操作:1.检查驱动程序是否已正确安装。
用户可以在计算机设备管理器中查看键盘是否显示为正常运行的设备。
如果键盘显示为问题设备或未安装驱动程序,用户应尝试重新安装键盘驱动程序。
2.更新驱动程序。
用户可以访问键盘制造商的官方网站,下载最新的驱动程序,并按照说明进行安装。
这将确保驱动程序与操作系统的最新版本兼容。
3.使用通用键盘驱动程序。
如果用户无法找到适合其键盘的最新驱动程序,他们可以尝试使用通用键盘驱动程序。
这些驱动程序通常适用于大多数标准键盘,并可以解决一些常见的键盘驱动不兼容问题。
2.2 键盘硬件故障除了驱动程序问题外,键盘硬件本身可能也存在故障。
在这种情况下,用户可能会遇到以下问题:•某些键无法正常工作。
用户可能发现某些按键无法产生相应的输入。
•键盘无法连接到计算机。
用户可能无法将键盘正确连接到计算机端口。
为了解决这些问题,用户可以采取以下措施:1.检查键盘连接。
用户应确保键盘正确连接到计算机的键盘端口。
他们可以尝试重新插拔键盘,以确保连接良好。
2.尝试在其他计算机上测试键盘。
如果键盘在其他计算机上工作正常,那么问题可能是与用户计算机相关的。
这可能意味着用户需要修复或更换计算机的键盘端口。
3.检查键盘是否有物理损坏。
用户应仔细检查键盘是否有可见的物理损坏,例如损坏的按键或断开的线缆。
【精品文档】苹果电脑win7键盘驱动-实用word文档 (3页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==苹果电脑win7键盘驱动篇一:201X款最新MacbookAir装windows7键盘失灵201X款最新Macbook Air装windows7键盘失灵解决办法 201X款air装win7后键盘触摸板都失灵的问题1. 打开Boot Camp助理2.插上U盘,选择前两个(前两个是自动制作操作系统和驱动,并放在一个U 盘里)3.选择操作系统镜像,继续继续之后,bootcamp会将自动下载驱动并将系统镜像一起做成装机U盘4.U盘做好后,回到第2步,选择第三项,安装windows75.选择windows磁盘空间6.然后电脑会重启,进入安装windows画面设置语言7.选择安装分区。
选Bootcamp盘,注意*****注意******然后点Load Driver加载驱动,******8.选Browse浏览,然后找到U盘里的驱动文件,位置在BootCamp\Drivers\Intel\Chipset\WIN7这个文件夹篇二:Mac换为Win7系统后,苹果蓝牙鼠标无法使用的解决方法Mac换为Win7系统后,苹果蓝牙鼠标无法使用的解决方法今天将mac air 换为win7了。
可是刚装完后键鼠正常,但装上bootcamp3.1之后,就无法使用苹果鼠标了。
搜索了很久终于找到方法,在这里记录与大家分享下。
关闭蓝牙设备,然后按以下操作:1.升级蓝牙驱动右键计算机,管理->设备管理器,双击“Bluetooth无线电收发器”,在"Generic Bluetooth" 上点右键选属性。
点“驱动程序”->更新驱动程序->浏览计算机以查找驱动程序软件->从计算机的设备驱动程序列表中选择->去掉“显示兼容硬件”前面的勾选->选Apple Inc.型号选apple broadcom build-in bluetooth,如果弹出警告窗口直接选是或确定。
USB键盘驱动程序
USB键盘驱动程序什么是USB键盘驱动程序?USB键盘驱动程序是指用于控制和操作连接到计算机的USB键盘的软件。
它可以让计算机识别和响应键盘上的按键操作,并将其转换为文本或控制命令等计算机可以理解的语言。
USB键盘驱动程序的工作原理USB键盘驱动程序的工作原理是与USB控制器通信,将USB键盘发送的数据转换成可识别和处理的格式。
当用户在键盘上按下一个按键时,键盘会发送一个信号到USB控制器,控制器将该信号传递给USB键盘驱动程序。
驱动程序解析该信号并将其转换为相应的字符代码或控制命令,并将其传输到计算机操作系统的键盘输入队列中。
USB键盘驱动程序的类型USB键盘驱动程序通常分为两种类型:内核驱动程序和用户空间驱动程序。
内核驱动程序内核驱动程序运行在计算机的内核空间中,可以直接访问硬件设备和操作系统资源。
它通常具有较高的性能和稳定性,并具有良好的兼容性。
内核驱动程序可以提供对USB键盘的完整支持,包括高级功能和按键映射等。
用户空间驱动程序用户空间驱动程序运行在计算机的用户空间中,它通过调用内核空间提供的API来与USB键盘进行通信。
用户空间驱动程序通常具有较高的灵活性和可定制性,但对于一些高级功能和安全性较高的应用程序可能不够稳定和可靠。
USB键盘驱动程序的安装和卸载USB键盘驱动程序通常随着操作系统安装而一同安装。
可以通过设备管理器来检查并安装或更新键盘驱动程序。
对于需要卸载键盘驱动程序的情况,可以通过设备管理器或控制面板中的程序和功能来卸载。
USB键盘驱动程序的更新和维护USB键盘驱动程序通常需要定期更新以适应新的操作系统版本和硬件设备。
更新键盘驱动程序可以解决一些已知的问题,并提高键盘的性能和稳定性。
可以通过设备管理器或厂商官方网站下载并更新键盘驱动程序。
在日常使用过程中,USB键盘驱动程序也需要进行维护和保养。
可以定期清除键盘上的灰尘和污垢,检查键盘连接处的电缆和接口,并避免键盘接触水和阳光直射等因素。
操作系统课程设计键盘驱动
操作系统课程设计键盘驱动一、实验选题 (1)二、模块整体功能介绍及主要目标 (1)三、头文件的分析 (2)四、数据结构的分析 (2)1、数组tty_table[] (2)2、tty_struct 数据结构 (2)3、tty 等待队列数据结构 (3)4、各个数据结构间的关系图 (3)五、函数的分析 (4)1、采用中断驱动的I / O设备键盘的循环周期 (4)2、键盘中断处理程序 (5)3、ctrl和alt键的处理 (7)4、caps、scroll、num键的处理 (8)5、数字小键盘的处理 (11)6、减号键的处理 (13)7、功能键的处理 (14)8、do_self的处理 (15)9、左,右shift键的处理 (16)六、分析体会及亮点说明 (16)七、参考文献 (20)一、实验选题实验题目是:Linux0.11字符设备驱动中的键盘驱动程序源代码分析,这部分涉及到操作系统的中断、I/O应用接口、I/O子系统等相关知识,程序源代码参考Linux0.11中kernel目录下的keyboard.s文件。
二、模块整体功能介绍及主要目标该模块键盘中断处理程序 keyboard.s 主要用于读入用户键入的字符并放入read_q 缓冲队列中。
其具体实现机制是:当用户在键盘上键入了一个字符时,会引起键盘中断响应(中断请求信号IRQ1,对应中断号INT 33),此时键盘中断处理程序就会从键盘控制器读入对应的键盘扫描码,然后根据使用的键盘扫描码映射表译成相应字符,放入tty 读队列read_q 中。
然后调用中断处理程序的C函数do_tty_interrupt(),它又直接调用行规则函数copy_to_cooked()对该字符进行过滤处理,并放入tty 辅助队列secondary 中,同时把该字符放入tty 写队列write_q 中,并调用写控制台函数con_write()。
此时如果该终端的回显(echo)属性是设置的,则该字符会显示到屏幕上。
电脑无法识别键盘输入如何解决键盘问题
电脑无法识别键盘输入如何解决键盘问题一、背景介绍在我们使用电脑的过程中,有时候会遇到电脑无法识别键盘输入的问题,这给我们的工作和生活带来了很大的困扰。
本文将探讨一些常见的原因和解决办法,帮助大家解决键盘问题,恢复正常的键盘输入。
二、常见键盘问题及解决方法1. 检查连接线路首先,我们需要检查键盘的连接线路是否松动或者接触不良。
如果键盘连接线未插紧,或者松动导致接触不良,就会导致电脑无法正常识别键盘输入。
解决方法是重新插拔键盘连接线,确保插头与插槽良好接触。
2. 检查键盘驱动程序另一个常见的问题是键盘驱动程序的异常。
有时电脑在更新操作系统或者驱动程序之后,可能会导致键盘驱动程序出现问题,进而无法正常工作。
这时,我们可以通过以下步骤解决:依次点击“开始”菜单、“控制面板”、“设备管理器”,在“键盘”分类下找到键盘驱动程序,右键选择“更新驱动程序软件”,然后选择“自动搜索更新的驱动程序软件”。
3. 检查键盘灯光有时候,键盘上的某些按键无法正常工作,这可能是因为我们不小心将键盘上的大写锁定或者Num Lock键打开。
这时,我们只需要按下大写锁定或者Num Lock键,切换到正确的状态即可。
4. 检查键盘电池如果你使用的是无线键盘,也有可能是因为电池电量不足导致的键盘输入问题。
这时候,我们需要更换电池,确保电池的电量充足。
5. 使用系统自带的故障检测工具一些操作系统自带了故障检测工具,可以帮助我们检测和解决键盘问题。
我们可以尝试使用这些工具,按照提示进行操作。
三、进一步解决键盘问题的方法如果以上方法都无法解决键盘问题,我们可以考虑以下几点进一步排查和解决键盘问题。
1. 更新操作系统有时候,键盘问题可能与操作系统相关。
我们可以尝试更新操作系统,安装最新的补丁程序和驱动程序,以解决可能存在的兼容性问题。
2. 检查其他设备驱动程序某些情况下,其他设备的驱动程序异常也可能导致键盘问题。
我们可以检查其他设备的驱动程序是否正常,及时更新或修复异常的驱动程序。
usb键盘驱动 (2)
USB键盘驱动简介USB键盘驱动是一种用于连接计算机和USB键盘的软件程序。
它的作用是使计算机能够正确地识别和响应来自USB键盘的输入信号,并将其转化为计算机可以理解的指令。
在计算机发展的早期阶段,键盘通常是通过传统的PS/2接口连接到计算机主机。
但随着USB(Universal Serial Bus,通用串行总线)技术的不断发展,USB键盘开始逐渐取代传统的PS/2键盘。
与PS/2键盘相比,USB键盘具有更高的传输速度、更大的数据带宽和更广泛的兼容性。
为了正常使用USB键盘,用户需要安装正确的USB键盘驱动程序。
本文将介绍USB键盘驱动的工作原理、安装方法和常见问题解决方法。
工作原理USB键盘驱动的工作原理可以简单分为以下几个步骤:1.设备识别:当用户将USB键盘插入计算机时,计算机会自动检测到新的USB设备并尝试识别其类型。
在识别过程中,计算机会自动加载适当的驱动程序。
2.驱动加载:计算机根据USB设备的类型加载相应的驱动程序。
对于USB键盘,计算机会加载USB键盘驱动程序。
驱动程序通常存储在操作系统的驱动库中。
3.功能映射:USB键盘驱动会解析来自键盘的输入信号,并将其转化为计算机可以理解的指令。
这些指令通常与键盘上的特定按键和功能相对应。
4.指令传递:USB键盘驱动将转化后的指令传递给操作系统,操作系统会根据指令执行相应的操作。
例如,当用户按下键盘上的某个按键时,驱动程序会将相应的指令传递给操作系统,并在屏幕上显示相应的字符或执行相应的操作。
安装方法安装USB键盘驱动可以通过以下几种方式实现:1.自动安装:大多数操作系统(如Windows、Mac和Linux)都具有自动安装驱动程序的功能。
当用户将USB键盘插入计算机时,操作系统会自动检测并加载相应的驱动程序。
用户只需要按照系统提示进行操作即可完成安装过程。
2.手动安装:在某些情况下,操作系统可能无法自动安装USB键盘驱动程序。
这时,用户可以尝试手动安装驱动程序。
实验 8-2 键盘中断驱动实验
实验8-2 键盘中断驱动实验【实验目的】掌握键盘原理。
熟悉驱动的中断机制。
【实验步骤】第一步:利用vi编辑器,编写一个Keypad.c驱动代码;1、增加驱动所需的头文件和变量#include<linux/module.h>#include<linux/kernel.h>#include<linux/init.h>#include<linux/delay.h>#include<linux/poll.h>#include<linux/spinlock.h>#include<asm/hardware.h>#include<asm/arch-pxa/pxa-regs.h>MODULE_LICENSE("GPL");#define DEVICE_NAME "emdoor_kbd"#define KEYVALUE_HAVE 1#define KEYVALUE_NO 0#define KPC_DIR 1<<5#define KPC_MAT 1<<22static int Emdoor_kbd_fasync(int, struct file* ,int); typedef unsigned char KBD_RET;struct fasync_struct * fasync;//键盘结构体定义typedef struct {KBD_RET kbd_buff; /* protect against overrun */ unsigned int kbd_status;wait_queue_head_t wq;spinlock_t lock;} KBD_DEV;2、实现键盘驱动读操作函数static ssize_t Emdoor_kbd_read(struct file *filp, char *buffer, size_t count, loff_t *ppos){KBD_DEV * kbd=filp->private_data;KBD_RET kbd_ret;while(1){if(kbd->kbd_status==KEYVALUE_HAVE){kbd_ret = kbd->kbd_buff;copy_to_user(buffer, &kbd_ret, sizeof(KBD_RET));kbd->kbd_status=KEYVALUE_NO;return sizeof(KBD_RET);}else{if (filp->f_flags & O_NONBLOCK)return -EAGAIN;interruptible_sleep_on(&(kbd->wq));if (signal_pending(current))return -ERESTARTSYS;}}return sizeof(KBD_RET);}3、实现键盘驱动中断服务例程static void Emdoor_isr_kbd(int irq, void *dev_id, struct pt_regs *reg){printk(KERN_EMERG"Emdoor_isr_kbd,Interrupt\n");int kpc_value;KBD_DEV * kbd = (KBD_DEV *) dev_id;spin_lock_irq(&(kbd->lock));kpc_value=KPC;if(kpc_value&KPC_MAT) {kbd->kbd_buff=KPAS&0xFF;if(kbd->kbd_buff!=0xFF){switch(kbd->kbd_buff){case 0x0: kbd->kbd_buff=5; break;case 0x1: kbd->kbd_buff=6; break;case 0x2: kbd->kbd_buff=7; break;case 0x5: kbd->kbd_buff=8; break;case 0x10: kbd->kbd_buff=9; break;case 0x11: kbd->kbd_buff=10; break;case 0x12: kbd->kbd_buff=11; break;case 0x15: kbd->kbd_buff=12; break;case 0x20: kbd->kbd_buff=13; break;case 0x21: kbd->kbd_buff=14; break;case 0x22: kbd->kbd_buff=15; break;case 0x25: kbd->kbd_buff=16; break;default: break;}kbd->kbd_status=KEYVALUE_HAVE;}}else if(kpc_value&KPC_DIR){kbd->kbd_buff=KPDK&0xFF;if(kbd->kbd_buff!=0x0){switch(kbd->kbd_buff){case 0x40: kbd->kbd_buff=1; break;case 0x2: kbd->kbd_buff=2; break;case 0x4: kbd->kbd_buff=3; break;case 0x20: kbd->kbd_buff=4; break;default: break;}kbd->kbd_status=KEYVALUE_HAVE;}}if ( fasync )kill_fasync( &(fasync), SIGIO, POLL_IN );wake_up_interruptible(&(kbd->wq));spin_unlock_irq(&(kbd->lock));}4、实现键盘驱动设备打开操作函数static int Emdoor_kbd_open(struct inode *inode, struct file *filp) {int ret;printk(KERN_EMERG " Emdoor_kbd_open!\n");KBD_DEV * kbd;kbd =(KBD_DEV *) kmalloc(sizeof(KBD_DEV ), GFP_KERNEL);KPC=KPC_ASACT | (3<<26) | (7<<23 ) | KPC_IMKP | KPC_MS6 |KPC_MS5 |KPC_MS4 | KPC_MS3 | KPC_MS2 | KPC_MS1 | KPC_MS0 | KPC_ME |KPC_MIE | (7<<6) | KPC_DE | KPC_DIE;init_waitqueue_head(&(kbd->wq));pxa_gpio_mode(94 | GPIO_ALT_FN_1_IN);//KP_DKIN<1>pxa_gpio_mode(95 | GPIO_ALT_FN_1_IN);//KP_DKIN<2>pxa_gpio_mode(98 | GPIO_ALT_FN_1_IN);pxa_gpio_mode(99 | GPIO_ALT_FN_1_IN);pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN);pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN);pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN);pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT);//KP_MKOUT<0>pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT);//KP_MKOUT<1>pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT);//KP_MKOUT<2>pxa_gpio_mode(108 | GPIO_ALT_FN_2_OUT);//KP_MKOUT<5>kbd->kbd_status=KEYVALUE_NO;filp->private_data=kbd;ret = request_irq(IRQ_KEYPAD, Emdoor_isr_kbd, SA_INTERRUPT, DEVICE_NAME, kbd);if (ret){printk(KERN_EMERG " Interrupt init=%x!!!!\n",ret);return ret;}return 0;}5、实现键盘驱动select和poll操作函数static unsigned int Emdoor_kbd_poll(struct file *filp,struct poll_table_struct *wait){printk(KERN_EMERG " Emdoor_kbd_poll!\n");KBD_DEV * kbd=filp->private_data;poll_wait(filp,&(kbd->wq),wait);return (kbd->kbd_status==KEYVALUE_HAVE) ? (POLLIN|POLLRDNORM): 0 ;}static int Emdoor_kbd_release(struct inode *inode, struct file *filp){printk(KERN_EMERG " Emdoor_kbd_release!\n");KBD_DEV * kbd = filp->private_data;KPC=0x0;Emdoor_kbd_fasync(-1, filp, 0);kfree(kbd );free_irq(IRQ_KEYPAD, kbd);return 0;}6、实现键盘驱动非阻塞访问操作函数static int Emdoor_kbd_fasync(int fd, struct file * file, int mode) {return fasync_helper(fd, file, mode, &(fasync) );}7、键盘驱动文件结构体定义static struct file_operations Keypad_fops = {open: Emdoor_kbd_open,read: Emdoor_kbd_read,release: Emdoor_kbd_release,poll: Emdoor_kbd_poll,fasync: Emdoor_kbd_fasync,owner: THIS_MODULE,};8、键盘驱动初始化函数定义static int __init Emdoor_kbd_init(void){printk(KERN_EMERG " Emdoor_kpd initialized\n");int ret;ret = register_chrdev(62, DEVICE_NAME, &Keypad_fops);if (ret < 0) {printk(DEVICE_NAME " can't get major number\n");return ret;}free_irq(IRQ_KEYPAD,NULL);udelay(10);return 0;}9、键盘驱动退出函数定义static void __exit Emdoor_kbd_exit(void){printk(KERN_EMERG " Emdoor_kpd exit\n");unregister_chrdev(62, DEVICE_NAME);}module_init(Emdoor_kbd_init);module_exit(Emdoor_kbd_exit);MODULE_AUTHOR("Ben.li@");MODULE_DESCRIPTION("This is a Keypad driver demo");第二步: 利用vi编辑器,编写一个用于编译Keypad驱动的Makefile# Makefile for the Keypad. #CFLAGS +=$(DEBFLAGS) -Wallifneq ($(KERNELRELEASE),)obj-m :=Keypad.oelseKERNELDIR ?=/root/work/linux-2.6.9PWD :=$(shell pwd)ALL:$(MAKE) $(CFLAGS) -C $(KERNELDIR) M=$(PWD) modulesendifclean:rm -fr *.o *.ko *~ core .depend .*.cmd *.mod.c .tmp_versions第三步:运行make编译命令,用ls命令查看编译后的结果,在该目录中应生成Keypad.ko模块文件,利用file命令查看Keypad.ko文件的格式,应为ARM 格式的ELF文件。
4×5矩阵键盘驱动程序
4×5矩阵键盘驱动程序一、工作原理及接口电路4×5矩阵键盘有4条列线,5条行线共20个按键。
每个按键对应不同键值,键盘扫描采用外部中断扫描方式,本系统中键盘为无源结构,键盘工作时不依靠任何外部电源。
4×5矩阵键盘结构图如图2-10 所示。
图2-10 4×5矩阵键盘结构图1)4×5矩阵键盘结构及按键抖动消除当键盘中按键数量较多时为减少I/O口的占用,通常将按键排列成矩阵形式,如图2-12所示。
在矩阵式键盘中,每条行线和列线在交叉处不直接连通,而是通过一个机械弹性开关加以连接。
这样5条列线(R0~R4)和4条行线(L0~L3)就可以构成20个按键的矩阵键盘。
键盘采用了无源结构,工作是不依靠任何外部电源。
由于机械弹性开关的机械触点的弹性作用,一个按键开关在闭合时并不会马上稳定的闭合,在断开时也不会马上断开,因而机械开关在闭合及断开瞬间均伴有一连串的抖动,如图2-11所示。
图2-11 按键时的抖动抖动的时间长短由按键开关机械特性及按键的人为因素决定,一般为5ms~20ms。
按键抖动如果处理不当会引起一次按键被误处理多次,所以消除抖动是必要的。
消除抖动的有硬件处理和软件处理两种方法。
当按键较多一般采用软件消抖方式。
软件消抖原理为当检测出按键闭合后执行一个延时程序(产生5ms~20ms的延时),待前沿抖动消失后再次检测按键的状态,如果按键仍保持闭合状态则可确认为有键按下。
当检测到按键释放并执行延时程序,待后沿抖动消失后才转入按键的处理程序。
1)矩阵键盘的工作原理从4×5矩阵键盘的4条列线和5条行线分别引出9条端线接于单片机的9个I/O 口,由于键盘采用了无源结构所以行列线的电平由单片机I/O口的电平决定。
进入按键处理程序后先使4条列线全为低电平,5条行线全为高电平,为读行线状态做准备,没有按键时这种状态不会被改变。
当键盘上的某个按键闭合时,则该键所对应的行线和列线被短路。
有效解决电脑键盘故障的方法
有效解决电脑键盘故障的方法电脑键盘是我们日常使用电脑时不可或缺的一部分,然而,键盘故障常常会给我们的使用带来很大的困扰。
本文将介绍一些有效解决电脑键盘故障的方法,帮助读者快速解决键盘故障问题,提高使用效率。
一、清洁键盘键盘故障的一个常见原因是键盘上积累了灰尘和污垢,导致按键无法正常按下或按键粘滞。
因此,定期清洁键盘是解决键盘故障的首要步骤。
清洁键盘的方法有很多种,最简单的方法是使用清洁喷雾剂和棉签。
首先,关闭电脑,将喷雾剂喷洒在键盘上,然后用棉签擦拭每个按键,确保清除污垢和灰尘。
另外,也可以使用键盘清洁胶,将其放在键盘上轻轻按压,然后将胶体撕下,污垢和灰尘会粘在胶体上。
二、检查键盘连接键盘故障的另一个常见原因是键盘与电脑连接不良。
有时,键盘线松动或连接不正确会导致键盘无法正常工作。
因此,检查键盘连接是解决键盘故障的重要步骤。
首先,确保键盘线与电脑正确连接。
如果键盘线松动,可以尝试重新插拔键盘线,确保连接牢固。
另外,还可以尝试将键盘连接到不同的USB接口,以排除接口故障的可能性。
三、更新键盘驱动程序键盘故障的另一个常见原因是键盘驱动程序过时或损坏。
键盘驱动程序是键盘与操作系统之间的桥梁,如果驱动程序出现问题,键盘可能无法正常工作。
因此,更新键盘驱动程序是解决键盘故障的有效方法。
更新键盘驱动程序的方法有很多种,最简单的方法是通过设备管理器进行更新。
首先,打开设备管理器,找到键盘选项,右键点击键盘选项,选择“更新驱动程序”。
系统会自动搜索并安装最新的键盘驱动程序。
如果设备管理器中没有键盘选项,可以尝试访问电脑制造商的官方网站,下载并安装最新的键盘驱动程序。
四、使用虚拟键盘如果键盘故障无法通过以上方法解决,可以考虑使用虚拟键盘作为临时替代方案。
虚拟键盘是一种通过鼠标或触摸屏模拟物理键盘的软件工具。
虚拟键盘可以在屏幕上显示出来,用户可以通过点击屏幕上的按键来输入文字。
使用虚拟键盘的方法很简单,只需在操作系统中找到虚拟键盘选项,打开虚拟键盘即可。
驱动键盘 Logger详解
驱动键盘Logger详解首先讲述一下键盘消息的传递流程:Win32程序是基于消息驱动的程序,其中就有键盘消息。
键盘消息是由csrss.exe进程的win32!RaoInputThread线程发送给应用程序的。
在Ring3层我们可以使用SetWindowsHook(WH_KEYBOARD或者WM_MESSAGE类型的钩子)的方法获得键盘消息。
win32!RawInputThread这个线程通过一个GUID(GUID_CLASS_KEYBOARD)获得键盘设备栈中的PDO的符号链接名。
win32!RawInputThread执行到win32k!openDevice,调用zwCreateFile打开设备,然后调用zwReadFile与键盘驱动通信了。
它会创建一个IRP_MJREAD的IRP发送给键盘驱动,而键盘驱动通常使这个IRP Pending,这样它就会一直被放在那里等待,等来来自键盘的数据,即win32!RawInputThread这个线程也会一直等待,等待这个读操作的完成。
当键盘有键按下时这个IRP将会完成,win32!RawInputThread 将对得到的数据进行处理,分发给合适的进程(通常是获得焦点的进程)这时win32!RawInputThread又会立即再调用nt!ZwReadFile要求读入数据,又开始了下一个等待,周而复始。
常见的键盘保护都会关注消息钩子,因此用SetWindowsHook做键盘记录容易暴露。
我们看键盘消息在驱动的传递过程:Kdbclass.sys—>i8042prt.sys—>ACPI.sys。
用DeviceTree可以看到i8042prt.sys建立了一个unnamed的设备,attach在Kdbclass.sys建立的KeyboardClass0设备上。
从名字可以看出来Kdbclass.sys是个类驱动,表示键盘这一类,无论是ps/2键盘还是usb键盘,都走这个驱动。
如何解决电脑无法识别键盘驱动问题
如何解决电脑无法识别键盘驱动问题电脑无法识别键盘驱动是一个较为常见的问题,会导致键盘无法正常工作,给用户带来不便。
本文将介绍几种解决电脑无法识别键盘驱动问题的方法。
一、检查硬件连接首先,我们需要确认键盘是否正确连接到电脑。
请检查键盘的连接端口,确保插头与插孔完全匹配,并牢固地连接在一起。
如果使用的是无线键盘,确保接收器与电脑的连接也是正常的。
二、重新安装驱动程序如果键盘无法正常工作,可能是驱动程序出现了问题。
我们可以尝试重新安装键盘的驱动程序。
1. 打开设备管理器:在Windows操作系统中,右键点击“此电脑”或“我的电脑”,选择“属性”或“打开设备管理器”。
2. 定位键盘:在设备管理器中找到键盘选项,展开该选项。
3. 卸载驱动程序:右键点击键盘驱动程序,选择“卸载设备”。
确认操作后,系统将会删除该驱动程序。
4. 重新安装驱动程序:重新启动电脑后,系统会自动重新安装键盘驱动程序。
如果系统没有自动安装,我们可以从键盘制造商的官方网站下载最新的驱动程序,然后手动安装。
三、更新操作系统有时,电脑无法识别键盘驱动是因为操作系统的问题。
我们可以尝试更新操作系统来解决这个问题。
1. 打开Windows更新:在Windows操作系统中,点击“开始”按钮,选择“设置”或“控制面板”,找到“更新和安全”,点击“Windows更新”。
2. 检查更新:点击“检查更新”按钮,系统会自动检测并下载最新的操作系统更新。
3. 安装更新:等待更新下载完成后,点击“安装”按钮,系统会自动安装更新。
完成后,重新启动电脑。
四、检查病毒或恶意软件有时,键盘无法正常工作是因为病毒或恶意软件的攻击。
我们需要运行杀毒软件来扫描并清除电脑中的病毒或恶意软件。
1. 更新杀毒软件:确保杀毒软件是最新版本,并及时更新病毒库。
2. 运行杀毒扫描:打开杀毒软件,选择“全盘扫描”或“自定义扫描”,让软件对整个系统或指定文件夹进行扫描。
3. 清除病毒或恶意软件:如果杀毒软件发现了病毒或恶意软件,请按照软件的指示进行清除操作。
usb键盘驱动
USB键盘驱动简介USB(Universal Serial Bus)是一种用于计算机的通用串行总线接口标准。
它可以将计算机与各种外部设备连接起来,如键盘、鼠标、打印机等。
而USB键盘驱动则是为了实现计算机与USB键盘的通信而设计的软件程序。
USB键盘驱动的主要功能包括识别键盘的插拔、处理键盘输入、实现按键和组合键的功能等。
正常工作的USB键盘驱动应能够实时响应键盘的输入,并将输入转换成可识别的字符和命令。
不同的操作系统可能使用不同的USB键盘驱动,因此,为了使USB键盘能够正常工作,需要安装相应操作系统所需的驱动程序。
USB键盘驱动的原理USB键盘驱动的工作原理可以分为以下几个步骤:1.插拔识别:当USB键盘插入计算机时,操作系统会检测到新的设备,并通过USB总线通信协议与设备进行握手通信,从而识别出键盘设备的类型和特性。
2.设备初始化:识别完键盘设备后,驱动程序会对设备进行初始化设置,包括设备的功能配置、默认按键映射等。
3.输入处理:USB键盘驱动会实时监测键盘的输入信号,并将信号转换成相应的字符和命令。
对于组合键的处理,驱动程序会判断当前按下的按键组合,并执行相应操作(如复制、粘贴等)。
4.键盘事件通知:USB键盘驱动会将键盘输入的事件通知给操作系统。
操作系统可以利用这些事件来实现各种功能,如文本输入、游戏控制等。
USB键盘驱动的安装和更新通常情况下,操作系统会自动识别和安装USB键盘驱动。
当插入新的USB键盘时,操作系统会自动搜索并安装合适的驱动程序。
如果USB键盘无法正常工作,可能是因为驱动程序未正确安装或驱动版本过旧。
这时,可以通过以下步骤更新或重新安装USB键盘驱动:1.打开设备管理器:可以通过控制面板或计算机管理中的设备管理器找到键盘设备,检查是否有驱动程序错误或问题。
2.更新驱动程序:右键点击键盘设备,选择“更新驱动程序”,然后选择自动搜索更新或手动选择驱动程序进行更新。
3.重新安装驱动程序:如果更新驱动程序无效,可以尝试卸载驱动程序并重新安装。
如何解决电脑无法识别键盘的问题
如何解决电脑无法识别键盘的问题在使用电脑时,有时我们可能会遇到电脑无法识别键盘的问题。
这种问题的出现会严重影响我们的工作效率和正常使用体验。
幸运的是,通常情况下,这个问题可以很容易地解决。
本文将为你提供一些常见的解决方法,帮助你解决电脑无法识别键盘的问题。
一、检查物理连接首先,我们需要确保键盘正确地连接到电脑上。
请检查键盘的插头是否完好无损,并且插入到电脑的键盘接口中。
有时候,插头松动或者接口灰尘过多都会导致键盘无法被电脑正常识别。
所以,我们需要确保键盘插头与接口的连接牢固,并将键盘接口上的灰尘清理干净。
二、重新启动电脑如果键盘连接正确,但电脑仍然无法识别键盘,那么我们可以尝试重新启动电脑。
有时候,电脑在启动过程中可能会出现一些临时的错误,导致键盘无法正常工作。
通过重新启动电脑,可以清除这些错误,使电脑重新识别键盘。
三、更新驱动程序如果键盘仍然无法被电脑识别,我们可以尝试更新键盘的驱动程序。
驱动程序是用来使硬件设备与操作系统正常通信的软件。
有时候,旧的驱动程序可能不兼容新的系统或者存在一些错误,导致键盘无法被正确地识别。
我们可以通过以下步骤来更新键盘的驱动程序:1. 打开计算机的“设备管理器”。
2. 在设备管理器中找到键盘相关的选项,右键点击选择“更新驱动程序”。
3. 系统会自动搜索最新的驱动程序并进行安装。
更新驱动程序后,重新启动电脑,看看键盘是否能够被正常识别。
四、检查键盘布线有时候,键盘布线不正确也会导致电脑无法识别键盘。
请检查键盘的布线是否正确连接到电脑。
在这个过程中,确保键盘布线的连接牢固,没有松动或断裂。
五、使用其他电脑进行测试如果以上方法都无法解决问题,那么我们可以尝试将键盘连接到其他电脑上进行测试。
如果在其他电脑上键盘可以正常工作,那么问题很可能出现在你的电脑上。
这时,我们可以尝试卸载电脑中的键盘驱动程序,然后重新安装。
六、寻求专业帮助如果以上方法仍然无法解决问题,那么我们可以考虑寻求专业的技术支持。
电脑键盘无响应的解决方法
电脑键盘无响应的解决方法电脑键盘是我们日常工作和生活中必不可少的输入设备,然而有时候会遇到键盘无响应的情况,给我们的工作和学习带来不便。
本文将为大家介绍几种常见的电脑键盘无响应问题的解决方法。
一、检查连接线和接口键盘无响应的第一步就是检查键盘的连接线和接口是否松动。
有时候键盘连接线可能被拔掉了一点点,导致键盘无法正常工作。
我们可以尝试重新插拔键盘连接线,确保连接稳固。
同时,也要检查键盘接口是否有杂质或脏污,可以用棉签轻轻擦拭接口。
二、调整键盘输入法设置在使用电脑键盘时,有时候我们会遇到按下某个键无响应,但是其他键却能正常工作的情况。
这时候,可能是因为键盘的输入法设置不正确导致的。
我们可以尝试调整键盘输入法设置,确保选择了正确的键盘布局和语言。
三、重启电脑如果前两种方法无效,我们可以尝试重启电脑。
有时候电脑系统出现问题会导致键盘无响应,重启电脑可以解决一些临时的系统故障。
在重启电脑之后,键盘通常能够恢复正常工作。
四、检查键盘驱动程序键盘驱动程序是使电脑能够正确识别和使用键盘的重要软件。
如果键盘无响应,可能是键盘驱动程序出现问题。
我们可以通过以下步骤检查和修复键盘驱动程序:1. 打开设备管理器:在Windows系统中,可以通过按下Win + X键,然后选择“设备管理器”来打开设备管理器界面。
2. 展开键盘选项:在设备管理器中,找到“键盘”选项,并展开该选项。
3. 卸载键盘驱动程序:选中键盘驱动程序,右键点击,并选择“卸载设备”。
4. 重新安装键盘驱动程序:在卸载完键盘驱动程序后,重新启动电脑,系统会自动重新安装键盘驱动程序。
五、使用虚拟键盘如果以上方法都无效,临时解决方案是使用虚拟键盘。
虚拟键盘是电脑系统内置的一项功能,可以通过屏幕上的软件键盘进行输入。
在Windows系统中,可以在“开始”菜单中找到虚拟键盘选项。
尽管使用虚拟键盘不如使用物理键盘方便,但可以暂时解决键盘无响应的问题。
六、更换键盘如果经过以上方法仍然无法解决键盘无响应的问题,那可能是键盘硬件本身出现故障。
电脑键盘驱动更新方法
电脑键盘驱动更新方法在使用电脑键盘的过程中,有时候我们可能会遇到一些问题,比如键盘按键失灵、按键延迟等。
这些问题可能是由于键盘驱动文件损坏或过时所致。
因此,及时更新键盘驱动是解决这些问题的重要步骤。
本文将介绍一些电脑键盘驱动更新的方法,帮助您解决键盘使用中可能遇到的问题。
1. Windows操作系统自动更新键盘驱动Windows操作系统提供了自动更新驱动的功能,它会在您连接键盘到计算机上时自动搜索并下载适用于您的键盘的最新驱动。
您只需要按照以下步骤进行操作:- 右键点击开始菜单,选择“设备管理器”。
- 在设备管理器中找到并展开“键盘”选项。
- 右键点击您的键盘设备,选择“更新驱动程序”。
- 在弹出的窗口中选择“自动搜索更新的驱动程序软件”选项。
- Windows会自动搜索并下载适用于您的键盘的最新驱动。
2. 制造商官方网站下载键盘驱动除了Windows自动更新驱动外,您还可以直接从键盘制造商的官方网站上下载最新的键盘驱动。
这种方法可以确保您下载到的是经过官方认证的合适驱动,以获得更好的兼容性和稳定性。
以下是具体的操作步骤:- 打开浏览器,进入键盘制造商的官方网站。
- 在网站上找到“支持”、“驱动下载”或类似的选项。
- 根据您的键盘型号和操作系统版本,选择合适的驱动程序进行下载。
- 下载完成后,双击驱动程序安装文件,按照提示完成驱动的安装。
3. 使用第三方驱动更新工具除了以上两种方法,您还可以使用一些第三方的驱动更新工具来协助您自动搜索并更新键盘驱动。
这些工具通常能够帮助您快速扫描并检测您计算机中需要更新的驱动程序,并提供下载和安装的功能。
以下是一个常用的第三方驱动更新工具的使用步骤:- 在浏览器中搜索并下载适用于您的驱动更新工具。
- 安装并运行驱动更新工具。
- 点击“扫描”或类似的选项,工具将自动扫描并检测您计算机中需要更新的驱动程序。
- 在扫描完成后,选择需要更新的键盘驱动,并点击“更新”或类似的选项进行下载和安装。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果 KeyBufRp=0; 减 1 后则为 FFH,大于 KeyBufSize,即从数组头退回到数组尾。或者由于干扰使得 KeyBufRp 超出队列位置,也要调整回到正常位置, */ if( --KeyBufRp >= KeyBufSize ) KeyBufRp=KeyBufSize-1; KeyBuf[ KeyBufRp ] = ucKeyVal; } 下面渐进讲解键盘物理层的驱动。 电路共同点:P2 端口接一共阴数码管,共阴极接 GND,P2.0 接 a 段、P2.1 接 b 段、…、P2.7 接 h 段。 软件共同点:code unsigned char Seg7Code[10] 是七段数码管共阴编码表。 Code unsigned char Seg7Code[16]= // 0 1 2 3 4 5 6 7 8 9 A b C d E F {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; 例一:P1.0 接一按键到 GND,键编号为‘6’ ,显示按键。 #include <at89x52.h> #include “KEY.H” void main( void ) { P1_0 = 1; while( 1 ) { { } if( keyHit() != 0 ) } } 例二:在例一中考虑按键 20ms 抖动问题。 #include <at89x52.h> #include “KEY.H” void main( void ) { P1_0 = 1; while( 1 ) { { //作为输入引脚,必须先输出高电平 //永远为真,即死循环 //如果按键,则为低电平 //保存按键编号值为按键队列 //如果一直按着键,则不停地执行该循环,实际是等待松键 //如果队列中有按键 //从队列中取出按键值,并显示在数码管上 P2=Seg7Code[ keyGet() ]; //作为输入引脚,必须先输出高电平 //永远为真,即死循环 //如果按键,则为低电平 //保存按键编号值为按键队列 //如果一直按着键,则不停地执行该循环,实际是等待松键 //回存键值
retVal = KeyBuf[ KeyBufRp ]; return( retVal ); } void keyPut( unsigned char ucKeyVal ) { } KeyBuf[ KeyBufWp ] = ucKeyVal;
if( ++KeyBufRp >= KeyBufSize ) KeyBufRp=0;
//键值存入数组 //存入位置加1,超出队列则循环回初始位置
if( ++KeyBufWp >= KeyBufSize ) KeyBufWp=0;
/***************************************************************************************** 由于某种原因,读出的按键,没有用,但其它任务要用该按键,但传送又不方便。此时可以退回按键队列。 就如取错了信件,有必要退回一样 ******************************************************************************************/ void keyBack( unsigned char ucKeyVal ) { /*
键盘驱动
指提供一些函数给任务调用,获取按键信息,或读取按键值。 定义一个头文档 <KEY.H>,描述可用函数,如下: #ifndef _KEY_H_ #define _KEY_H_ //防止重复引用该文档,如果没有定义过符号 _KEY_H_,则编译下面语句 //只要引用过一次,即 #include <key.h>,则定义符号 _KEY_H_ //如果按键,则返回非0,否则返回0 //读取按键值,如果没有按键则等待到按键为止 //保存按键值 ucKeyVal 到按键缓冲队列末 //退回键值 ucKeyVal 到按键缓冲队列首
if( keyHit() != 0 ) } }
P2=Seg7Code[ keyGet() ];
例四:状态图编程法。通过 20ms 周期中断,扫描按键。 /**************************************************************************************** 采用晶体为 12KHz 时,指令周期为 1ms(即主频为 1KHz) ,这样 T0 工作在定时器方式 2,8 位自动重载。 计数值为 20,即可产生 20ms 的周期性中断,在中断服务程序中实现按键扫描 *****************************************************************************************/ #include <at89x52.h> #include “KEY.H” void main( void ) { TMOD = (TMOD & 0xf0 ) | 0x02; //不改变 T1 的工作方式,T0 为定时器方式 2 TH0 = -20; TL0=TH0; TR0=1; ET0=1; EA=1; while( 1 ) { if( keyHit() != 0 ) } } void timer0int( void ) interrupt 1 { static unsigned char sts=0; P1_0 = 1; switch( sts ) { case 0: if( P1_0==0 ) sts=1; break; case 1: //按键则转入状态 1 //作为输入引脚,必须先输出高电平 //20ms;T0 的中断号为 1 //如果队列中有按键 //从队列中取出按键值,并显示在数码管上 P2=Seg7Code[ keyGet() ]; //计数周期为 20 个主频脉,即 20ms //先软加载一次计数值 //允许 T0 开始计数 //允许 T0 计数溢出时产生中断请求 //允许 CPU 响应中断请求 //永远为真,即死循环
if( P1_0==1 ) sts=0; break;
//假按错,或干扰,回状态 0
else{ sts=2; keyPut( 6 ); } //确实按键,键值入队列,并转状态 2 case 2: if( P1_0==1 ) sts=3; break; case 3: if( P1_0==0 ) sts=2; else sts=0; } } 例五:状态图编程法。 /**************************************************************************************** 如果采用晶体为 12MHz 时, 指令周期为 1us (即主频为 1MHz) , 要产生 20ms 左右的计时, 则计数值达到 20000, T0 工作必须为定时器方式 1,16 位非自动重载,即可产生 20ms 的周期性中断,在中断服务程序中实现按 键扫描 *****************************************************************************************/ #include <at89x52.h> #include “KEY.H” void main( void ) { TMOD = (TMOD & 0xf0 ) | 0x01; //不改变 T1 的工作方式,T0 为定时器方式 1 TL0 = -20000; TH0 = (-20000)>>8; TR0=1; ET0=1; EA=1; while( 1 ) { if( keyHit() != 0 ) } } void timer0int( void ) interrupt 1 { static unsigned char sts=0; TL0 = -20000; TH0 = (-20000)>>8; P1_0 = 1; switch( sts ) { case 0: if( P1_0==0 ) sts=1; break; case 1: if( P1_0==1 ) sts=0; break; case 2: if( P1_0==1 ) sts=3; break; //如果松键,则转状态 3 //假按错,或干扰,回状态 0 else{ sts=2; keyPut( 6 ); } //确实按键,键值入队列,并转状态 2 //按键则转入状态 1 //方式 1 为软件重载 //右移 8 位,实际上是取高 8 位 //作为输入引脚,必须先输出高电平 //20ms;T0 的中断号为 1 //如果队列中有按键 //从队列中取出按键值,并显示在数码管上 P2=Seg7Code[ keyGet() ]; //计数周期为 20000 个主频脉,自动取低 8 位 //右移 8 位,实际上是取高 8 位 //允许 T0 开始计数 //允许 T0 计数溢出时产生中断请求 //允许 CPU 响应中断请求 //永远为真,即死循环 //假松键,回状态 2 //真松键,回状态 0,等待下一次按键过程 //如果松键,则转状态 3
//如果存入位置与读出位置相同,则表明队列中无按键数据
unsigned char keyGet( void ) { unsigned char retVal; while( keyHit()==0 ); //暂存读出键值 //等待按键,因为函数 keyHit()的返回值为 0 表示无按键 //从数组中读出键值 //读位置加1,超出队列则循环回初始位置
} if( keyHit() != 0 ) } } 例三:在例二中考虑干扰问题。即小于 20ms 的负脉冲干扰。 //如果队列中有按键 //从队列中取出按键值,并显示在数码管上 P2=Seg7Code[ keyGet() ];