连续取 20 次,其中有10 次,按的是这个键,有10 次,按的是那个键,
平均一下,判定结果:是按下了一个根本就没有按的键。
========
#include<reg52.h>键蔽
#include<intrins.h>
unsigned char code k_AD[] = {
10, 40, 70, 100, 130, 160, 190, 210, 230}//九个按基兆键所对应的ADC值
unsigned char code duan[] = { //共阳段码
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}
//--------------------------------------------
void delay(int x)
{
int i
while(x--) for(i = 115i >0i--)
}
//--------------------------------------------
unsigned char keyscan()
{
unsigned char k1, k2
k1 = GetADCResult(0)//读出
if(k1 <238) { //按下了
delay(20)//延时
k2 = GetADCResult(0) //再次读出
if((k1 >(k2 - 5) &&(k1 <(k2 + 5)) { //两者相差无几
k1 /= 2 k2 /= 2 k1 += k2//两次的平均值
for(k2 = 0k2 <9k2++) //稿锋州在表格中查找9次
if(k1 >(k_AD[k2]) - 5) &&(k1 <(k_AD[k2]) + 5)) //找到了
return(k2) //就返回键值
}
}
return(255) //没有按键
}
//--------------------------------------------
void main()
{
unsigned char key
while(1) {
key = keyscan()
if(key != 255) P0 = duan[key]//显示键值
}
}
//--------------------------------------------
本程序未经验证,仅供参考。
电脑ad键桥数变成左右了处理办法
还原方法:
1.如果仍在游戏中可通过游戏设置来将这四个键的用途恢复。
2.如果使用的是台式机,可以同时按住Fn+W,就可以还原。如果使用的是笔记本,可以同时按住Fn+W+上键,即可还大消稿原。
3.如果电脑是win8系统,可以尝试同时按住Ctrl+Fn+Alt+W来还原。
扩展资料
对一些玩游戏的朋友来说,键盘中的ASDW与上下左右键的使用频率比其他按键要更多,玩游戏时就需要熟练 *** 控这些按键。而键盘中的ASDW与上下滚孝左右键可以相互转换,不同品牌的键盘可能转换方式不一样。
另外,如果上述三种都不能相互转换,那就用驱动方法解决,下载一个万能驱动,安装检测即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)