Dell键盘电路板的接线

核心提示你说的线应该是键盘的连接线。就是将键盘接到主机的线(只有这根线才分颜色),每个牌子的键盘这四根线的颜色顺序都不一定,所以不愿修,实际上,如果你能找到与原键盘一样的键盘,小心打开看好,记下后就可将原键盘修复,这四根线可以用烙铁焊接,但最好用2

你说的线应该是键盘的连接线。就是将键盘接到主机的线(只有这根线才分颜色),每个牌子的键盘这四根线的颜色顺序都不一定,所以不愿修,实际上,如果你能找到与原键盘一样的键盘,小心打开看好,记下后就可将原键盘修复,这四根线可以用烙铁焊接,但最好用20W内热式,焊接时将烙铁电源拔掉,以免因烙铁漏电将键盘芯片击穿。 另:如能提供牌子、键盘型号,可帮忙找。 很遗憾,只找到Y-SP32的罗枝键盘;可能顺序不一样。 但还有一法,按键盘接口标准,将插头的针正对自己,让里面的小长方形定位键处在上方12点钟方向,然后其1点钟位置的插脚记为1脚,按顺时针方向数分别为2、3、4、5、6脚,用万用表测量各脚与连线的关系:其中 1脚、3脚为空,即,1、3脚与各线均不连通。 2脚为+5V电源线;4脚为键盘数据线;5脚为接地线;6脚为时钟脉冲信号。记下2、4、5、6脚分别对应的颜色。 现在再确定键盘印板上接线已脱落的4个焊点:如果对应的位置上有“V、G、L、D”这四个字母,那么:V代表接2脚+5V电源,G代表接5脚接地线,L代表接时钟脉冲的6脚,D则是接4脚数据线。若没有上述标志,则可试按以下办法查找: 键盘印刷电路板上一般都有一只电解电容,该电容是并接在该板的电源上的,所以与该电容正极连接的接点为V,应与2脚连接,与电解电容负极(对应外壳上有负号标志的一边的引线)相连通的接点应接地,即与5脚相连,其余两点难区分,但只要电源和接地没错,即使接反了再换过来就是了。电源与接地接好,其余两线先临时接上,装好键盘,上机一试,如果不能使用,那可能是时钟与数据线反了,再打开将4、6脚连线互换,应该能将键盘恢复。 累请给分吧.谢谢了

希望采纳

#include<reg51.h>

unsigned char Line,Row,Val;

void delay()

{

unsigned char count;

for(count=0;count<255;count++)

;

}

void delay1()

{

unsigned char count,rt;

for(count=0;count<40;count++)

for(rt=0;rt<100;rt++)

;

}

void InitialCPU(void)

{

P0=0xFF;

P1=0x0F;

P2=0xFF;

P3=0xFF;

}

unsigned char leddata[]=; //"0-9"

unsigned char ledbai(unsigned char dat)

{

unsigned char bai;

bai=dat/100;

if(bai==0)

return 0x00;

P2=0x20;

P0=leddata[bai];

delay();

P2=0x00;

return 0x00;

}

unsigned char ledshi(unsigned char dat)

{

unsigned char shi;

shi=(dat%100)/10;

if(shi==0)

return 0x00;

P2=0x40;

P0=leddata[shi];

delay();

P2=0x00;

return 0x00;

}

void ledge(unsigned char dat)

{

unsigned char ge;

ge=dat%10;

P2=0x80;

P0=leddata[ge];

delay();

}

unsigned char bin=1;

void ledplay(unsigned char dat)

{ //LED显示函数

if(bin==1){

ledbai(dat);

bin++;

}

else if(bin==2){

ledshi(dat);

bin++;

}

else if(bin==3){

ledge(dat);

bin=1;

}

}

unsigned char futemp=0,data1=0,data2=0;

void InitialTimer0(void)

{

TMOD=0x01;

TH0=(65536-1000)/256;

TR0=1; //启动T0

EA=1;

ET0=1; //允许T0中断

}

void Timer0(void) interrupt 1 using 3

{

TR0=0;

if(data1==0&&futemp==0&&data2==0){ //LED显示data1,即初始值

ledplay(data1);

}

else if(data1!=0&&futemp==0&&data2==0) // data1有值了,显示data1,

ledplay(data1);

else if(data1==0&&futemp!=0&&data2==0) //有两种可能,1、数据data1为零;2、直接data1没有给它值。总之显示data1

ledplay(data1);

else if(data1!=0&&futemp!=0&&data2==0) //输入的是符号,接着显示data1

ledplay(data1);

else if(data1!=0&&futemp!=0&&data2!=0) //显示的是data2

ledplay(data2);

TH0=(65536-100)/256;

TR0=1;

}

void denghou()

{

data2=0;

futemp=0;

}

unsigned char KeyTemp,CheckValue,Key1=0x00,Key2=0x00;

void Dispose()

{

unsigned char Val;

if(Line==0x01)

Line=0;

else if(Line==0x02)

Line=1;

else if(Line==0x04)

Line=2;

else if(Line==0x08)

Line=3;

if(Row==0x10)

Row=0;

else if(Row==0x20)

Row=1;

else if(Row==0x40)

Row=2;

else if(Row==0x80)

Row=3;

Val=Line*4+Row;

if(Val<10){ //存数

if(futemp==0){ //存在data1中

if(data1==0)

data1=Val;

else

data1=data1*10+Val;

}

else{ //存在data2中

if(data2==0)

data2=Val;

else

data2=data2*10+Val;

}

}

else if(Val>9&&Val<16){

if(Val!=13&&Val!=12)

futemp=Val; //存符号并进行响应处理

else if(Val==12){

data1=0;

data2=0;

futemp=0;

}

else if(Val==13){

if(futemp==10){

data1=data1*data2;

denghou();

}

else if(futemp==11){

data1=data1/data2;

denghou();

}

else if(futemp==14){

data1=data1-data2;

denghou();

}

else if(futemp==15){

data1=data1+data2;

denghou();

}

else{

while(1){

P2=0xff;

P0=0x00;

}

}

}

}

else

while(1){

P2=0xff;

P0=0x00;

} //显示错误

}

unsigned char GetKey1(void)

{

P1=0x0F;

CheckValue=P1^0x0F;

if(CheckValue==0x00)

return 0x00;

else if(CheckValue==0x01)

Line=CheckValue;

else if(CheckValue==0x02)

Line=CheckValue;

else if(CheckValue==0x04)

Line=CheckValue;

else if(CheckValue==0x08)

Line=CheckValue;

Key1=0x0F;

return Key1;

}

unsigned char GetKey2(void)

{

P1=0xF0;

CheckValue=P1^0xF0;

if(CheckValue==0x00)

return 0x00;

else if(CheckValue==0x10)

Row=CheckValue;

else if(CheckValue==0x20)

Row=CheckValue;

else if(CheckValue==0x40)

Row=CheckValue;

else if(CheckValue==0x80)

Row=CheckValue;

delay1();

KeyTemp = P1^0xF0;

if(KeyTemp==CheckValue)

return 0x00;

Key2=0xF0;

return Key2;

}

void main()

{

unsigned char Key1,Key2;

InitialCPU();

InitialTimer0();

while(1)

{

Key1=GetKey1();

Key2=GetKey2();

if(Key1!=0x00&&Key2!=0x00)

{

Dispose();

P3=0x00;

}

}

}

 
友情链接
鄂ICP备19019357号-22