temp=P3//读回P3口的状态
temp=temp&0xf0//temp&1111 0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高饥此四位对应的端口状态读进来。
while(temp!=0xf0) //上步处理后,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图)
{
delay(5)
temp=P3
temp=temp&0xf0//这三句跟上面重复,功能是软件消抖
while(temp!=0xf0) //延时一段时间后判断还有按键按闷滑下,说明是真有按键按下,进入按键扫描与键值的判断,否则可能是意外抖动引起的,就不进行按键扫描。
{
temp=P3
switch(temp).....
我想注释完应该能读懂,关键是要理解矩阵键盘的扫描原理。
一个小巧的检测键盘的软件,有了它你可以用最快的时间来检验你键盘上的键位是否好用,这样在买键盘纤并的时候带上它就不会被奸商给蒙混过关了,你可以根据软件测试的参数来辨别键盘的优劣,而且还可以按键个数进行计数。功能介绍
Keyboard Test Utility(键盘测试软件)可以帮助您检测每一个按键,每敲打一下虚拟键盘就会在所打的键位上高亮颜色,并显示出该键盘的vk code和scan code。软件是绿色、免费的,解压后直接打开使用即可。
你的键盘失灵过吗?键盘失灵怎么解决呢?键盘失灵有比较多种,那么,今天笔者为大家介绍一些常见的键盘失灵现象和解决办法。
一:键盘上数字小键盘失灵
这个是很多新手朋友会经常犯的最低级错误,一般是台式机大键盘,导致键盘数字小键盘(0123456789)按键失灵多数原因是大家关闭了数字小键盘,大家可以看看Numlock键是否开启,对应上面有个数字键盘灯,按Numlock键上面的灯亮了即开启了数字小键盘。
还有一些笔记本新手朋友毁和迹经常会问为什么我笔记本键盘右边部分字母键打出来的确是数字而不是字母,很纠结!其实这是因为笔记本数字键与字母键存在结合,当开启了数字键盘,部分右边的字母键就被排列成数字键,主要是因为笔记本键盘比较少,厂家设置了智能切换功能。
解决办法如下:
如果只是小键盘被锁,那么请同时按住 fn+Numlk 键切换即可,反之亦然。还有一点新手朋友会经常不知所措,字母打出来的全是大写字母,这个是因为开启了大写字母键功能,取消只需要按下“Caps Lock"键即可切换正常。
二:键盘上部分键盘按键失灵,没有任何规律的按键失灵
造成键盘部分按键失灵,这种情况多数是电脑键盘内部线路板出现故障,这种现象一般都是因为在线路板或导电塑胶上有污垢,从而使得两者之间无法正常接通。其他因素也有可能,如:键盘 插头 损坏,线路有问题,主板损坏、CPU工作不正常等,但并非主要原因。前者大家可以尝试以下方法去解决,后者一般和电脑故障或键盘故障有关不在本文讨论范围。
1.拆棚梁开键盘。注意在打开键盘时,一定要按钮面(也就是我们 *** 作的一面)向下,线路板向上,否则每个按键上的导电塑胶会纷纷脱落,给您的修理带来麻烦。
2.翻开线路板,线路板一般都用软塑料制成的薄膜,上面刻有按键排线,用浓度在97%以上酒精 棉花 (75%的医用酒精棉花也可以,因为本人曾使用过,但最好是用高浓度的酒精棉花)轻轻地在线路板上擦洗二遍。对于按键失灵部分的线路要多照顾几遍。
3.查看按键失灵部分的导电塑胶,如果上面积攒了大量的污垢的话,同样使用酒精擦洗。假设导电塑胶有损坏的话,那么笔者建议您可以把不常用按键上的导电塑胶换到已损坏的部分,虽然这种“拆东墙补西墙”的举措无法让键盘发挥出所有功能,但最起码可以延长常用按键的寿命。
4.清除键盘内角落中污垢,工具可用 毛笔 、小刷子等,但要注意动作要轻柔一些。
5.查看 焊接 模块有无虚焊或脱焊,如果您会使用电烙铁的话,可以进行补焊工作。当然此步骤只适用于对会使用电烙铁的朋友,不会使用的朋友,请跳过此步骤。
6.装好键盘。这里有一点须注意,那就是一定要等酒精挥发干净后再进行。
三、以上方法还不能解决,大家可以尝试使用以下方法排查
修改键盘的驱动:通过“我的电脑”打开系统属性,选择硬件标签:打开设备管理器,我们发现中文Windows XP *** 作系统下,默认的键盘驱动是“标准101/102键或Microsoft自然PS/2键盘”。
1. 右键点击选择更新驱动程序,会出现硬件更新向导:选择“从列表或指定位置安装(高级)”,单击“下一步”,选择“不要搜索。我要自己选择要安装的驱动程序。”
单击“下一步”,进入“选择要为此硬件安装的设备驱动程序”页去掉复选框“显示兼容硬件”前的小勾。在“标准键盘型号”栏中选择“Japanese PS/2 Keyboard (106/109 Key)”,单击“下一步”,d出“更新驱动程序警告”,点“是”。“确认设备安装”窗口继续点“是”。
2. 完成硬件更新向导,重新启动计算机。
修改 注册表 :单击“开始”菜单,点“运行”,输入“regedit”,打开注册表,进入“HKEY_LOCAL_MACHINE SYSTEMControlSet001ControlKeyboard Layouts”,里面有很多子项,通过观察我发现,以“0804”结尾的都是简体中文输入法。打开“E00E0804”,可以看到右侧子项里有“Layout File”子项,双击打开该项,将“数值数据”中的“kbdus.dll”改为“kbdjpn.dll”,“确定”即可。依此类推,可以将所有的以“0804”结尾的子项中“Layout File”全部改为“kbdjpn.dll”,具体就根据自己常用的输入法进行选择了。然后重新启动计算机就好了!
如果以上方法都不可以解决,那么很可能是硬件出现故障,最常见的就是键盘硬件故障,键盘内部扳子被氧化,造成断路等,大家可以换个键盘试试,绝大多数都可以解决问题,当然也有极少数出现的由于键盘插头损坏,线路有问题,主板损坏、CPU工作不正常等,这些我们就需要拿去维修地方具体检测下。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1 = P2^0//定义管脚;
sbit led2 = P2^1
sbit led3 = P2^2
sbit led4 = 贺缺P2^3
sbit led5 = P2^4
sbit led6 = P2^5
sbit key = P1^0
uchar tcount=0,count=0//定义时间变量和按键计数变量;
void Delay(uchar i)//机械延时;
{
while(--i)
}
void LedLight(void)//LED控制函数;
{
switch(count)
{
case 3 : led1 = 0break//3下时,LED1亮;
case 5 : led2 = 0break//5下时,LED2亮;
case 7 : led3 = 0break//7下时,LED3亮;
case 9 : led4 = 0break//9下时,LED4亮;
case 11: led5 = 0break//11下时,LED5亮;
case 13: led6 = 0break//13下时,LED6亮;
default: P2 = 0xffbreak//其余的都不亮;
}
}
void InitTimer0(void)//定时器0初始化;
{
TMOD = 0x00
TH0 = (65536-50000)/256
TL0 = (65536-50000)%256
TR0 = 1
}
void main(void)//主猛芦函数
{
InitTimer0()
while(1)//无限循环
{
if(key==0)//检查按键是否枝拍带按下;
{
Delay(10)//机械延时
if(key==0){count++}//按键计数
while(key==0)
}
if(TF0==1)//复位定时器0
{
TF0=0
TH0 = (65536-50000)/256
TL0 = (65536-50000)%256
tcount++
if(tcount==20)//1秒的时间
{
LedLight()
Delay(100)
count=0//复位按键计数变量
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)