电子开发 | 基础入门 | 电路原理图 | 婵犳鍠栭オ鎾垂娴煎瓨鍤嬪ù鍏兼綑閻愬﹪鏌熼鍡楁噺濠㈡牗绻涢幘瀵稿暡闁瑰嚖鎷� | PLC闂備胶纭堕弲鐐测枍閿濆鈧線鏁撻敓锟�   闂備線娼уΛ妤呮晝閵堝鈧懓顦圭€殿喚枪楗即宕橀埡鍐х钵婵犵數鍋涘Λ搴ㄥ垂閸濆嫸鑰块柟娈垮枤閸楁碍绻涢崱妯兼噮缂佲偓婢舵劖鍋i柛銉墯閺侀亶鎮楃喊澶嬪 Ctrl+D 闂備礁缍婂ḿ褔顢栭崨顔藉弿闁冲搫鎳庣紒鈺呮煙椤栨粌顣兼い銉﹀灴閺屻劌鈽夊Δ鍐ㄥ闂佸憡鏌ㄩ幊鎰板箯椤愶箑顫呴柍銉ュ帠閹查箖姊哄Ч鍥у閻庢凹鍙冨顐︻敋閳ь剟鐛幇顓熷缁剧増锚娴滈箖鏌ㄩ悤鍌涘濠电偞鍨堕幐鎾磻閹剧粯鍋g憸宥夊床閺屻儺鏁嗛柣鏂挎憸閳绘洟鏌eΟ澶稿惈妞ゅ繘浜堕幃纭咁槾闁哄苯顦遍幑銏犖熸笟顖涙〃闂侀潧顦介崹宕囩矆婢舵劖鐓熼柕蹇嬪€栧☉褔鏌i埄鍐噧妞ゆ洩缍侀崺鈧い鎺戝閻鏌熺€电ǹ孝缂佹梻鍋撶换娑㈠幢閹邦剛浼囩紓浣筋嚙椤戝鐛崘顔光偓锕傚箳閺冨偊绱�.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

闁宠棄鎳愰弫鍝ユ崉椤栨艾褰嗙€殿喖绻戞晶婊堝礃瀹€瀣闁哄牃鍋撻柡鍌涘婢ф濡存繝鍕毄閻庢稒鍔楅弫鍝ユ崉椤栨艾褰嗙€殿喖绻楅鍝ョ不濡も偓濞呮帡濡寸€e墎绀夐柣顫祷閻箖宕楅鈧槐锟犲蓟閵夘煈鍤勯柟闈涱儏閸烇拷 闁活澀绲婚惌楣冨礂椤掆偓缁憋紕鎷嬮敍鍕毈闁革絻鍔婇埀顒佸姉閺佸摜鈧稒鍔掔划鐘崇▔濮橆偅鐪介柛娑櫭换鈧璺烘处婢ф粓宕樼仦鐑╁亾閿燂拷
闁宠棄妫楀畷鍕緞閳轰緡鍔呭ù鍏艰壘瀹曠喖鎮ч崶銊︾皻閻庡湱鍋樼欢锟�100 c閻犲浂鍙€閳伙拷 chm闁哄秶鍘х槐锟犲Υ閸屾繄銈柡鍌涚懃閸炲鈧湱顢婇娑氱磼閸☆厾绀夐悷鏇炴濞插﹥绗熺€n亞鎽嶅鑸电啲缁辨繈宕橀崨顓у晣妤犵偠锟ラ埀顒佸姉閺佸摜鈧稒鍔掔划鐘崇▔濮橆偅鐪介柛娑櫭换鈧璺烘处婢ф粓宕樼仦鐑╁亾閿燂拷
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

单片机系统中PS/2键盘驱动程序的设计

作者:佚名    文章来源:本站原创    点击数:1496    更新时间:2008-10-31

    在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择.
    文中在介绍PS/2协议和PS/2键盘工作原理与特点的基础上,给出了一个在单片机上实现对PS/2键盘支持的硬件连接与驱动程序设计实现.该
设计实现了在单片机系统中对PS/2标准104键盘按键输入的支持.使用Keil C51开发的驱动程序接口和库函数可以方便地移植到其他单片机或嵌入式系统中.所有程序在Keil uVision2上编译通过,在单片机AT89C51上测试通过.

1 PS/2协议
目前,PC机广泛采用的PS/2接口为mini-DIN 6pin的连接器,如图1所示.
PS/2接口图 
    PS/2设备有主从之分,主设备采用Female插座,从设备采用Male插头.现在广泛使用的PS/2键盘鼠标均在从设备方式下工作.PS/2接口的时钟
与数据线都是集电极开路结构,必须外接上拉电阻(一般上拉电阻设置在主设备中).主从设备之间数据通信采用双向同步串行方式传输,时钟信号由从设备产生.

1.1 从设备到主设备的通信
    当从设备向主设备发送数据时,首先检查时钟线,以确认时钟线是否为高电平.如果是高电平,从设备就可以开始传输数据;反之,从设备要等待获得总线的控制权,才能开始传输数据.传输的每一帧由11位组成,发送时序及每一位的含义如图2所示.
从设备到主设备的通信 
    每一帧数据中开始位总是为0,数据校验采用奇校验方式,停止位始终为1.从设备到主设备通信时,从设备总是在时钟线为高时改变数据线状态,主设备在时钟下降沿读人数据线状态.

1.2 主设备到从设备的通信
    主设备与从设备进行通信时,主设备首先将时钟线和数据线设置为“请求发送”状态,具体方式为:首先下拉时钟线至少100us抑制通信,然后下拉数据线“请求发送”,最后释放时钟线.在此过程中,从设备在不超过10us的间隔内必须检查这个状态,当设备检测到这个状态时,它将开始产生时钟信号.此时数据传输的每一帧由12位构成,其时序和每一位含义如图3所示.
主设备到从设备的通信 
    与从设备到主设备通信相比,其每帧数据多了一个ACK位.这是从设备应答接收到字节的应答位,由从设备通过拉低数据线产生,应答位ACK总
是为0.主设备到从设备通信过程中,主设备总是在时钟线为低电平时改变数据线的状态,从设备在时钟上升沿读人数据线状态.

2 PS/2键盘的编码与命令集
2.1 PS/2键盘的编码
    目前,PC机使用的PS/2键盘都默认采用第2套扫描码集.扫描码有两种不同的类型:“通码(make code)”和“断码(break code)”.当一个键被按下或持续按住时,键盘会将该键的通码发送给主机;而当一个键被释放时,键盘会将该键的断码发送给主机.根据键盘按键扫描码的不同,可将按键分为3类:
第1类按键 通码为一个字节,断码为0xF0+通码形式.如A键,其通码为0x1C;断码为0xF0 0x1C.
第2类按键 通码为两字节0xE0+0xXX形式,断码为0xE0+0xF0+0xXX形式.如Right Ctrl键,其通码为0xE0 0x14;断码为0xE0 0xF0 0x14.
第3类特殊按键 有两个,Print Screen键,其通码为0xE0 0x12 0xE0 0x7C;断码为0xE0 0xF0 0x7C 0xE0 0xF0 0x12.Pause键,其通码为0xE1 0x14 0x77 0xE1 0xF0 0xl4 0xF0 0x77;断码为空.
    组合按键扫描码的发送是按照按键发生的次序,如按下面顺序按左Shift十A键:① 按下左Shift键;② 按下A键;③ 释放A键;④ 释放左Shift键,那么计算机上接收到的一串数据为0x12 0x1C 0xF0 0x1C 0xF0 0x12.
    在文中的驱动程序设计中,就是根据按键的分类对其分别进行处理.

2.2 PS/2键盘的命令集
    主机可通过向PS/2键盘发送命令对键盘进行设置或者获得键盘的状态等操作.每发送一个字节,主机都会从键盘获得一个应答0xFA(“重发
resend”和“回应echo”命令例外).驱动程序在键盘初始化过程中所用的指令:0xED,主机在该命令后跟随发送一个参数字节,用于指示键盘上Num Lock,Caps Lock,Scroll Lock Led的状态;0xF3,主机在这条命令后跟随发送一个字节参数定义键盘机打的速率和延时;0xF4,用于当主机发送0xF5禁止键盘后,重新使能键盘.

3 PS/2键盘与单片机的连接电路
    PS/2键盘与AT89C51单片机的连接方式如图4所示.P1.0接PS/2数据线;P3.2(INT0)接PS/2时钟线.因为单片机的P1,P3口内部是带上拉电阻的,所以PS/2的时钟线和数据线可以直接与单片机的P1,P3相连接.
 

4 驱动程序设计
    驱动程序的开发使用Keil C51语言以及KeiluVision2编程环境.PS/2 104键盘驱动程序主要任务是实现单片机与键盘间PS/2通信,同时将接收到的按键扫描码转换为该按键的键值KeyVal,提供给系统上层软件使用.

4.1 单片机与键盘间PS/2通信的程序设计
    在PS/2通信过程中,主设备(文中是单片机)是在时钟信号为低时发送和接收数据信号.因为单片机向键盘发送的是指令,需要键盘回应,所以这
部分程序采用查询方式;而单片机接收键盘数据时,数据线上的信号在时钟为低时已经稳定,所以这部分程序采用中断方式,且不需要在程序中加入延时程序.
    单片机向PS/2键盘发送数据程序代码为:
void ps2_sentchar(unsigned char sentchar){//ps2主设备向从设备发送数据
unsigned char sentbit_cnt= 0x00;
unsigned char sentchar_chk = 0x00;
EX0=0; //关外部中断0
//发起一个传送,发起始位
PS2_SGN_CLOCK = 0; //将时钟线拉低并保持100 us
delay100us();
PS2_SGN_DATA= 0; //起始位
PS2_SGN_CLOCK = 1;
//发送DATA0-7
for(sentbit_cnt=0;sentbit_cnt< 8;sentbit_cnt++){
while(PS2_SGN_CLOCK) _nop_(); //等待时钟线变为低
PS2_SGN_DATA = sentchar& 0x01;//发送数据
if(PS2_SGN_DATA) sentchar_chk++; //计算校验
while(!PS2_SGN_CL0CK) _nop_(); //等待时钟线变高
sentchar>>=1; //待发送数据右移一位
}
//发送校验位
while(PS2_SGN_CLOCK) _nop_(); //等待时钟线变低
switch(sentchar_chk){
case 0:
case 2:
case 4:
case 6:PS2_SGN_DATA =1;break;//奇校验
case 1:
case 3:
case 5:
case 7:PS2_SGN_DATA = 0;break;//奇校验
default;break;
)
while(!PS2_SGN_CLOCK) _nop_(); //等待时钟线变高
while(PS2_SGN_CLOCK) _nop_(); //等待时钟线变低
PS2_SGN_DATA =1;//发送停止位,停止位总为1
while(!PS2_SGN_CLOCK) _nop_(); //等待时钟线变高
while(PS2_SGN_CLOCK) _nop_(); //等待时钟线变低
//接收ACK
//if(PS2_SGN_DATA) error();
//ACK信号由键盘发出,总为低电平
while(!PS2_SGN_CLOCK) _nop_(); //等待时钟线变高
EX0= 1; //开外部中断0
}

单片机由PS/2键盘接收数据程序:外部中断0设置为下降沿触发
void int0() interrupt 0 using 0 {//
EX0=0; //关外部中断0
switch(ps2_revchar_cnt){
case 1:
……
case 8:mcu_revchar<<=1;
if(PS2_SGN_DATA) mcu_revchar |= 0x01;
ps2_revchar_cnt++;
break;
case 0:ps2_revchar_cnt++;break; //开始位,
case 9:ps2_revchar_cnt++;break; //校验位,可添加校验程序
case 10: _nop_();//停止位
ps2_revchar_cnt= 0;
revchar_flag=1;//置接收到数据标识位
break;
default:break;
}
EX0=1;//开外部中断0
}

4.2 键盘扫描码转换程序设计
    由于键盘扫描码无规律可循,因此由键盘扫描码获得相应按键的键值(字符键为其ASCII值,控制键如F1,Ctrl等为自定义值),只能通过查表的方式获得.由于按键的3种类型及部分按键对应着两个键值(如A键的键值根据Caps和Shift键状态有0x41(A)和0x61(a)两种),因此综合考虑查表转换速度和资源消耗,设计中使用4个键盘表:键盘扫描码转换基本集和切换集(kb_plain_map[NR_KEYS]与kb_shift_map[NR_KEYS]);包含E0前缀的键盘扫描码转换基本集和切换集(kbeO_plain_map[NR_KEYS]与kbe0_shiftmap[NR_KEYS]).PS/2 104键盘按键扫描码最大值为0x83,所以设置NR_KEYS为132.所有4个键盘表的定义均为如下形式:KB_MAP[MAKE CODE]=KEYVAL,如果扫描码对应的按键为空(如KB_MAP[0x00]),则定义相应键值为NULL_KEY(0x00).以下是键盘扫描码基本集的部分代码实例:
kb_plain_map[NR_KEYS]={……
NULL_KEY;0x2C;0x6B;0x69;0x6F;0x30;0x39;
NULL_KEY; //扫描码0x40~0x47
//对应按键空,逗号,K,I,O,0,9,空
//对应键值0x00,',','k','i','o','O','9',0x00…… };
    如此设计键盘转换表的另一个好处在于,以后如需扩展支持有ACPI、Windows多媒体按键键盘时,只需要将键表中相应处修改即可,如ACPI
Power按键通码为0xE0 0x37,修改kbe0_plain_map[0x37]=KB_ACPI_PWR即可.
    特殊按键Pause使用单独程序处理,如果接收到0xE1就转入这段程序.而Print Screen键则将其看作是两个通码分别为0xE0 0x12和0xE0 0x7C
的“虚键”的组合键处理.在驱动程序中设定如下全局变量:led_status记录Scroll Lock Led,Num Lock Led和Caps Lock Led的状态(关为0,开为1);agcs_status记录左右Shift Ctrl Gui Alt状态,相应键按下则对应位为1,释放为0.E0_FLAG接到0xE0置1;E1_FLAG接收到0xE1置1;F0_FLAG接收到0xF0置1.按键键值通过KeyVal提供上层程序使用.PS/2键盘扫描码键值转换程序ps2_codetrans()流程框架如图5所示.
扫描码键值转换程序流程框架 

第1类按键的扫描码键值转换程序代码。
if(F0_FLAG){//接收扫描码为断码
switch(mcu_revchar){//处理控制键
case 0x11:ages_status&=0xF7;break;//左alt释放
case 0x12:ages_status&=0xFE;break;//左shift释放
case 0x14:agcs_status&=0xFD;break;//左ctrl释放
case 0x58;if(led_status&0x04) led_status &= 0x03; //caps lock
else led_status |=0x04;
ps2_ledchange();
break;
case 0x59: agcs_status &= 0xEF;break;//右shift释放
case 0x77: if(led_status&0x02)led_status&=0x05;//num lock
else led_status |=0x02;
ps2_ledchange();
break;
case 0x7E:if(led_status&0x01) led_status&=0x06;//scroll lock
else led_status |=0x01;
ps2_ledchange();
break;
default;break;
}
F0_FLAG=0;
}
else{//接收扫描码为通码
if(led_status&0x04) caps_flag=1;else caps_flag = 0;
if(led_status&0x02) num_flag =1;else num_flag =0;
if(agcs_status&0x11) shift_flag = 1;else
shift_flag=0;
//扫描码键值转换
if((caps_flag == shift_flag) || (!num_flag)) KeyVal=kb_plain_map[mcu_revchar];
else KeyVal = kb_shift_map[mcu_revchar];
switch(mcu_revchar)(//处理控制键或状态键
case 0x11:agcs_status|= 0x08;//左alt按下
Case 0x12:agcs_status|= 0x01;//左shift按下
case 0x14:agcs_status|= 0x02;//左ctrl按下
case 0x59:agcs_status|= 0x10;//右shift按下
default:break;
}
}
    第2类按键的扫描码键值转换程序与上面相似.注意:在退出该程序段时,对E0_FLAG和F0_FLAG标识清0.Pause键的处理程序,如果接收到0xE1,置E1_FLAG=1,然后顺次将后续接收到的7个字节数据和Pause的通码后7个字节比较,一致则返回KeyVal=KB_PAUSE;在比较完所有7个字节后清除E1_FLAG标识.键盘初始化程序kb_init()流程为:
① 上电后,接收键盘上电自检通过信号0xAA,或者自检出错信号0xFC.单片机接收为0xAA则进入下一步,否则进行出错处理.
② 关LED指示,单片机发送0xED,然后接收键盘回应0xFA,接着发送0x00接收0xFA.
③ 设置机打延时和速率:单片机发送0xF3,接收0xFA,发送0x00(250 ms,2.0 cps),接收0xFA.
④ 检查LED,发送0xED,接收0xFA,发送0x07(开所有LED),接收0xFA.发送0xED,接收0xFA,发送0x00(关LED),接收0xFA.
⑤ 允许键盘,发送0xF4,接收0xFA.键盘LED改变ps2_ledchange()函数流程:发送0xED;接收0xFA;发送led_status;接收0xFA.

5 结语
  该驱动程序经Keil uVision2 编译,在AT89C51单片机上运行通过,实现了对PS/2 104键盘的支持,实现了对字符按键大小写切换,Num Lock切换、控制键及组合按键的支持.同时该程序对其他嵌入式或单片机系统中PS/2键盘的应用也有借鉴意义.


Tags:单片机,键盘设计,驱动程序设计  
责任编辑:admin
相关文章列表
没有相关文章
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
閻㈤潧鐡欏鈧崣鎴犵秹閿涙碍鐪归梿鍡欐偅閸氬牆鎮囩猾鑽ゆ暩鐎涙劕鍩楁担婊€绗岄悽浣冪熅閸ュ墽娈戠純鎴犵彲閿涘lc瀹搞儲甯堕幎鈧張锟�,濡紕鏁搁弫鎵暩閻儴鐦�,閸楁洜澧栭張绡岲A缁涘鐡戦敍浣藉疮閽€鍐暩鐠侯垰娴樼純鎴犵彲缁儳宕曢敍灞艰礋瀹搞儳鈻肩敮鍫濆灡闁姳鐜崐绗衡偓鍌涱偨鏉╁骸鍙у▔銊ヤ簳娣団€冲彆娴兼褰块敍姘辨暩鐎涙劕绱戦崣鎴犵秹閿涳拷
最新推荐
鐠у嫭鏋¢崠鍛瑓鏉烇拷
 [闂傚倸鍊风粈渚€骞夐敓鐘偓鍐幢濡炴洖鎼オ浼村礋椤掍胶褰块梻浣告惈缁嬩線宕㈤懖鈹惧亾濮橆剦妲搁摶鏍煥閺囨氨鍔嶇痪顓炵埣閺屾洟宕奸顫枈闂佸搫鐭夌换婵嗙暦閹烘鏅滈柦妯侯樈娴硷拷]闂傚倸鍊风粈渚€骞夐敓鐘参﹂柣鎰暩閻棗銆掑锝呬壕婵犵鈧磭浠涚€垫澘瀚禒锔剧矙婢剁ǹ顥氭繝鐢靛仦閸ㄧ數澹曢鐘愁潟闁规鍠氱壕濂告煕濞嗘兎顏勭暤閸℃瑢鍋撶憴鍕┛缂佺粯绻傞锝夊箻椤旇棄浜归悗鐟板閸犳袙閸儲鈷掑ù锝呮啞閹牓鏌eΔ鈧Λ婵嬬嵁閺嶎収鏁冮柨鏃囨娴犻箖姊洪崨濠冨闁告挻鐩幃鐤亹閹烘挾鍙嗛梺缁樻礀閸婂湱鈧熬鎷�100 c闂傚倷娴囧畷鍨叏閺夋嚚褰掑礋椤栨氨顔嗛梺璺ㄥ櫐閹凤拷
 [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]濠电姷鏁搁崑鐐哄垂閸洖绠伴柟闂寸蹈閸モ斁鍋撻崷顓炐炲ù婊冩贡缁辨帡鍩€椤掑嫭鍊婚柣顐ゅ█濮婅櫣鎷犻幓鎺濆妷闂佸憡鍔樺畷鐢垫閹炬剚娼╅柛妤冨仜琚i梻浣告啞濞诧箓宕滃☉鈧偓鍛存倻閼恒儱浠梺璇″幗鐢帗淇婃禒瀣厱闁宠桨绀侀埀顒€鐏濋锝夊醇閺囩喎鈧鏌涢埄鍐炬畼濞寸姍鍐f斀闁绘劕寮堕敍宥夋煛娓氬洨鍘�-TR
 [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]LM324闂傚倷绀侀幖顐λ囬锕€鐤炬繝濠傜墕缁€澶愭煛瀹ュ骸骞栨俊顐o耿閺屻劑鎮ら崒娑橆伓4~20mA闂傚倷绀侀幖顐λ囬柆宥呯?闁硅揪绠戠粻顖炴煥閻曞倹瀚�1~5V闂傚倸鍊烽悞锕傛儑瑜版帒鍨傜憸鐗堝笚閸婅埖鎱ㄥΟ澶稿惈闁活厼鐗撻弻銊╂偆閸屾稑顏�
 [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]LM386濠电姷顣槐鏇㈠磻濞戞﹫鑰块弶鍫氭櫅閸ㄦ繃銇勯弽顐沪闁稿﹤鐏氶妵鍕箳瀹ュ洤濡芥繝娈垮灡閹告娊寮婚悢鐓庣闁逛即娼у▓顓烆渻閵堝棙鐓ラ柨鏇ㄤ邯瀵鈽夊⿰鍛澑闂佺懓鐏濋崯顐﹀礈鐠轰警娓婚柕鍫濆暙閸旀粓鏌熼悷鐗堟悙妞ゆ洩缍佹俊鎼佸煛娴h櫣鏆伴柣鐔哥矊椤戝棛绮嬪澶嬫櫜濠㈣泛顑囬崢閬嶆⒑閹稿海绠撻柛鐕佸亝娣囧﹥绺介崨濠備缓濡炪倖鐗撻崐鏍偓姘炬嫹
 [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]936闂傚倸鍊烽懗鍓佸垝椤栨粍鏆滈柟鐑橆殕閺呮繈鏌曢崼婵堝濞存粌缍婇弻鐔虹磼閵忕姵鐏嶉梺绋款儍閸斿矂婀侀梺鎸庣箓閹冲酣寮抽悢鍏肩厽闁哄倹瀵ч崵鍥煛鐏炲墽鈽夐摶锝夋煟閹惧啿顒㈤柣蹇庣窔濮婅櫣鎷犻垾铏亪闂佹寧娲︽禍婊堟偩閻戣棄閱囬柡鍥╁枑濞呫垽姊虹捄銊ユ珢闁瑰嚖鎷�
 [闂傚倸鍊风粈渚€骞夐敓鐘偓鍐幢濡炴洖鎼オ浼村礋椤掍胶褰块梻浣告惈缁嬩線宕㈤懖鈹惧亾濮橆剦妲搁摶鏍煥閺囨氨鍔嶇痪顓炵埣閺屾洟宕奸顫枈闂佸搫鐭夌换婵嗙暦閹烘鏅滈柦妯侯樈娴硷拷]闂傚倷鑳堕崕鐢稿礈濠靛牊鏆滈柟鐑橆殔缁犵娀骞栧ǎ顒€濡介柡鍜佸墴閺岀喖鏌囬敃鈧崢鎾煛鐎n偆澧甸柡灞炬礉缁犳盯濡疯閿涚喖姊洪棃娑氬闁瑰憡濞婇獮鍐亹閹烘挸浠忛柣搴㈢⊕閿氭い蹇ユ嫹+婵犵數濮烽弫鎼佸磻閻愬搫绠伴柟缁㈠枛閻ょ偓绻涢幋鐐茬劰闁稿鎹囬幆鍌炲川婵犲偆浼�+闂傚倸鍊烽懗鍫曘€佹繝鍕濞村吋娼欑壕鍧楁煙缂併垹娅橀柡浣告閺岋綁寮崹顔藉€梺绋块缁夊綊寮诲☉銏犲嵆闁靛ǹ鍎扮花鑽ょ磽娴f彃浜鹃梺璺ㄥ櫐閹凤拷
 [闂傚倸鍊搁崐椋庢閿熺姴纾婚柛娑卞弾濞尖晠鏌曟繛鐐珔闁哄绶氶弻鏇㈠醇濠垫劖效闂佺ǹ顑冮崝鎴濐潖婵犳艾閱囬柣鏃€浜介埀顒佸浮閺岀喖鎸婃径灞澭囨煙椤旀娼愰柟宄版嚇閹兘骞嶉鍛炲┑锛勫亼閸婃牠骞愰幖浣哥疅闁炽儳绻€缂傛碍銇勮箛鎾跺⒈闁轰礁绉电换娑㈠幢濡搫袝闂佺ǹ顑戦幏锟�]S7-200PLC闂傚倸鍊烽悞锕傛儑瑜版帒绀夌€光偓閳ь剟鍩€椤掍礁鍤ù婊呭仱楠炴劙骞掑Δ鈧~鍛存煏閸繃顥滈柛鎾村▕濮婅櫣绱掑Ο鐑╂嫻濠碘€冲级鐢繝鐛箛娑辨晝闁抽攱鑹剧紞濠囧箖椤忓牆宸濇い鏃傗拡娴硷拷 S7_2
 [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]S7-200闂傚倷绀佸﹢閬嶅储瑜旈幃娲Ω閳轰胶顔囨繝鐢靛У閼归箖宕欓悩缁樼厱闁硅埇鍔嶅▍鍥ㄣ亜閳哄啫鍘撮柟顔款潐閹峰懘宕ㄦ繝鍛攨缂傚倷璁查崑鎾绘煕閺囥劌鐏¢柣鎾存礋閻擃偊宕舵搴㈠仹闂佸憡蓱缁海妲愰幒妤€绠熼悗锝庡亜椤忥拷,STEP7
 [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]ModbusPoll闂傚倸鍊风粈渚€骞夐敍鍕灊鐎光偓閸曞灚鏅㈤梺缁樼墪閻涙矚usSalve闂傚倸鍊烽懗鑸电仚婵°倗濮寸换姗€鐛箛娑欐櫢闁跨噦鎷�
 [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]STEP7婵犵數濮烽。钘壩i崨鏉戝瀭妞ゅ繐鐗嗙粈鍫熺節闂堟稓澧愰柛瀣尭椤繈顢橀悩鍐叉珰闂備礁鎼懟顖炴儗娴h櫣涓嶆繛鎴欏灩濡﹢鎮归幁鎺戝闁宠鑻埞鎴︽倷瀹割喖娈舵繝娈垮枙閸楀啿鐣烽幇鏉垮嵆闁绘ê鎼皬闂備浇娉曢崳锕傚箯閿燂拷 Smart_
 [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]Modbus闂傚倷娴囧畷鍨叏閹绢噮鏁勯柛娑欐綑閻ゎ噣鏌熼幆鏉啃撻柛搴★攻閵囧嫰寮介妸褏鐓€闂佹悶鍔嶇换鍫ュ蓟濞戙垹绠绘俊銈傚亾闁稿﹨宕甸幉鎾晸閿燂拷 v1.024 缂傚倸鍊搁崐鎼佸磹妞嬪孩顐介柕鍫濐槸缁狀垶鏌ㄩ悤鍌涘
 [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]Modscan32闂傚倸鍊风粈渚€骞夐敍鍕灊鐎光偓閸曞灚鏅㈤梺缁樼墪閻涙硞im32,modb
 [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]89c51闂傚倸鍊烽懗鑸电仚缂備胶绮崝娆掓闂備緡鍓欑粔鐢稿磻閻斿摜绠鹃柟瀛樼懃閻忊晜淇婇锝忚€挎慨濠冩そ椤㈡洟鏁愰崶鍓佷紘闂傚倸鍊稿Λ妤冪礊婵犲洤钃熼柨婵嗩樈閺佸倿鏌涢埄鍐炬畷闁绘縿鍨荤槐鎾存媴娴犲鎽甸梺缁樹緱濡叉籍tues
 [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]濠电姷鏁搁崑鐐哄垂閸洖绠扮紒瀣紩濞差亜围濠㈣泛锕﹂ˇ鐗堜繆閵堝繒鍒伴柛鐕佸亰瀹曟帡濡搁埡鍌滃幈闂佺粯鍔栧ḿ娆掆叿otues濠电姷鏁搁崑娑㈩敋椤撶喐鍙忛柟顖嗏偓閺嬫牠鏌¢崶鈺佸壋闁兼澘娼¢弻銊モ槈濡警浼€闂佹椿鍘介悷鈺呭箖濡ゅ懏鏅查幖瀛樼箘閺佹牜绱掗悙顒佺凡缂佸鏁搁幑銏犫攽婵犲孩歇闂備礁鎲″褰掋€冩繝鍥х畺闁靛鏅滈弲鎼佹煥閻曞倹瀚�
 [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]51闂傚倸鍊风粈渚€骞夐敓鐘偓鍐幢濡炴洖鎼オ浼村礋椤掍胶褰块梻浣告惈缁嬩線宕㈤懖鈹惧亾濮橆剦妯€闁哄本绋戦埞鎴﹀幢濡ゅ﹣鎮i梻浣侯潒閸愬灝濮涚紓浣介哺鐢偤鍩€椤掑﹦绉柛鈺傜墱閳ь剚鐔幏锟� protues濠电姷鏁搁崑娑㈩敋椤撶喐鍙忛柟顖嗏偓閺嬫牠鏌¢崶鈺佸壋闁兼澘娼¢弻銊╂偆閸屾稑顏�
閺堚偓閺傜増鏋冪粩锟�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询