电脑键盘常见故障维修与维护方法大全
由于整个机械式键盘是安装在一整块印刷板电路上的,要取下一个按键,特别是里层的按键,操作比较麻烦的事。
键盘在使用过程中,若按某键失效或反应迟钝,此时即使用力敲打键盘也无济于事,所以必须及时进行修理。
下面介绍一下拆御顺序及方法:
一、键盘常见故障维修
键盘在使用过程中,故障的表现形式是多种多样的,原因也是多方面的。有接触不良故障,有按键本身的机械故障,还有逻辑电路故障、虚焊、假焊、脱焊和金属孔氧化等故障.维修时要根据不同的故障现象进行分析判断,找出产生故障原因,进行相应的修理。
1、某些字符不能输入。若只有某一个键字符不能输入,则可能是该按键失效或焊点虚焊。检查时,按照上面叙述的方法打开键盘,用万用表电阻档测量接点的通断状态。若键按下时始终不导通,则说明按键簧片疲劳或接触不良,需要修理或更换;若键按下时接点通断正常,说明可能是因虚焊、脱焊或金屑孔氧化所致,可沿着印刷线路逐段测量,找出故障进行重焊;若因金属孔氧化而失效,可将氧化层清洗干净,然后重新焊牢;若金属孔完全脱落而造成断路时,可另加焊引线进行连接。
2、键盘上一些键,如空格键、回车键不起作用,有时,需按无数次才输入—个或两个字符,有的键,如光标键按下后不再起来,屏幕上光标连续移动,此时键盘其它字符不能输入,需再按一次才能弹起来。
这种故障为键盘的“卡键”故障,不仅仅是使用很久的旧键盘,有个别没用多久的新键盘上,键盘的卡键故障也有时发生。出现键盘的卡键现象主要由以下两个原因造成的:一种原因就是键帽下面的插柱位置偏移,使得键帽按下后与键体外壳卡住不能弹起而造成了卡键,此原因多发生在新键盘或使用不久的键盘上。
另一个原因就是按键长久使用后,复位弹簧弹性变得很差,弹片与按杆摩擦力变大,不能使按键弹起而造成卡键,此种原因多发生在长久使用的键盘上。当键盘出现卡键故障时,可将键帽拨下,然后按动按杆。若按杆弹不起来或乏力,则是由第二种原因造成的,否则为第一种原因所致。
若是由于键帽与键体外壳卡住的原因造成“卡键”故障,则可在键帽与键体之间放一个垫片,该垫片可用稍硬一些的塑料(如废弃的软磁盘外套)做成,其大小等于或略大于键体尺寸,并且在按杆通过的位置开一个可使铵杆自由通过的方孔,将其套在按杆上后,插上键帽;用此垫片阻止键帽与键体卡住,即可修复故障按键;若是由于弹簧疲劳,弹片阻力变大的原因造成卡键故障,这时可特键体打开,稍微拉伸复位弹簧使其恢复弹性;取下弹片将键体恢复。通过取下弹片,减少按杆弹起的阻力,从而使故障按键得到了恢复。
3、若有多个既不在同一列,也不在同一行的按键都不能输入,则可能是列线或行线某处断路,或者可能是逻辑门电路产生故障。这时可用100MHz的高频示波器进行检测,找出故障器件虚焊点,然后进行修复。
4、键盘输入与屏幕显示的字符不一致。此种故障可能是由于电路板上产生短路现象造成的,其表现是按这一键却显示为同一列的其他字符,此时可用万用表或示波器进行测量,确定故障点后进行修复。
5、按下一个键产生一串多种字符,或按键时字符乱跳,这种现象是由逻辑电路故障造成的。先选中某一列字符,若是不含回车键的某行某列,有可能产生多个其他字符现象;若是含回车键的一列,将会产生字符乱跳且不能最后进入系统的现象,用示波器检查逻辑电路芯片,找出故障芯片后更换同型号的新芯片,排除故障
二、键盘的拆卸与基本维护:
1、翻转键盘,将原来卡住的底板用锣丝刀往左右方向敲击。拆下键盘外壳,取出整个键盘,将键帽拔出。
2、用电烙铁将按键的焊角从印刷电路板上焊掉,使开关和印刷电路板脱离(电铬铁应有良好的接地,以防将键盘逻辑器件击穿)。
3、用镊子将按键两边的定位片向中间靠拢,轻轻从下面一顶,按键便能从定位铁中取出.
4、取下键杆,拿下弹簧和簧片,用无水酒精或四氯化碳等清洗液将链杆、键帽、弹簧和簧片上的灰尘和污垢清除干净,用风扇吹干或放通风处风干。
5、若簧片产生裂纹或已断裂,则应予以更换;若簧片完好,而弹力不足时,可将其折弯部位再轻轻折弯一些,以便增强对接触簧片的压力。
6、装好簧片、弹簧和键杆,将按键插入原位置,使焊角插入焊孔并露出尖端部分,用电烙铁将其与焊孔焊牢,装上键帽即可。
2012-7-22 19:35:30rfjpnbgaynd2452013328uz
在max函数中你使用 if (x>y>z)并不能实现你的想法,这句在程序中执行时先判断 x>y 是否为真,如果为真,则表达式值为1,为假表达式值为0,然后再拿表达式的值与 z 去比较的,所以程序需要修改。
还有在你输入a,b,c三个变量的值时应该要用逗号隔开,因为输入格式必须和scanf中的格式一致。
第6行:缺了一个引号。第10行:多了一个冒号。
程序修改如下:
# include
void main ()
{
int max(int x ,int y, int z);
int a,b,c,h;
scanf ("%d,%d,%d",&a,&b,&c);
h=max(a,b,c);
printf ("max=%d\n", h);
}
int max (int x,int y, int z)
{
int s;
if ( x>y)
{
if(x>z)
s=x;
else
s=z;
}
else
{
if(y>z)
s=y;
else
s=z;
}
return (s);
}
输入:1,2,3
3,4,5楼的那种比较方法都不完全,比如输入:1,3,2 就不能出现正确结果。
第一个错误:scanf ("%d,%d,%d,&a,&b,&c);中少了个",第二个错误,在函数max的定义中,如果输进去的3个数的实际大小是x>z>y的话,那就是说没有你说的情况,也就是说返回值s无值,那样也会导致程序不能运行,如果你要找最大值的话,可以这样定义max函数:
int s;
s=((x>y?x:y)>z?(x>y?x:y):z);
之后返回s就可以了
scanf ("%d,%d,%d,&a,&b,&c); 改为 scanf ("%d,%d,%d",&a,&b,&c);
if (x>y>z)s=x; 改为 if( x>=y && x>= z ) s=x;
if(y>x>z) s=y; 改为 if( y>=x && y>=z ) s=y;
大于号不像赋值,不能a>b>c。因为>的返回值是bool
int max(int x, int y, int z)
{
x = (x > y) ? x : y;
x = (x > z) ? x : z;
return x;
}