ImageVerifierCode 换一换
格式:DOCX , 页数:78 ,大小:463.05KB ,
资源ID:28885221      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28885221.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(4X4矩阵式键盘输入程序.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

4X4矩阵式键盘输入程序.docx

1、4X4矩阵式键盘输入程序4*4 键盘程序readkeyboard:orl a,#0f0hmov a, r2begin: acall key_onmov r6,aswap ajnz delaycpl aadd a,r3ajmp readkeyboardjz nextretdelay:acall delay10msajmp key_ckey_ccode:push aacall key_onnext: mov a,r7swap ajnz key_numjnb acc.7,erroranl a,#0fhajmp beginrl adec akey_num:acall key_pmov r7,arl a

2、; 行号乘anl a,#0FFhajmp l_loop4jz beginerror:mov a,#00hrl aacall key_ccoderetmov r7,apush akey_c:mov r2,#00hpop akey_off:acall key_onmov r3,#00hanl a,#0fhjnz key_offmov a,r6dec apop amov r5,#04hadd a,r7retagain1:jnb acc.0,out1retkey_on: mov a,#00hrr adelay10ms:orl a,#0fhinc r2anl tmod,#0f0hmov p1,adjnz

3、 r5, again1orl tmod,#01hmov a,p1out1: inc r2mov th0,#0d8horl a,#0f0hmov a,r7mov tl0,#0f0hcpl amov r5,#04hsetb tr0retagain2:jnb acc.4,out2wait:jbc tf0,overkey_p: mov r7,#0efhrr aajmp waitl_loop:mov a,r7inc r3clr tr0mov p1,amov a,p1djnz r5,again2out2: inc r3 单片机键盘设计over:ret二)从电路或软件的角度应解决的问题软件消抖:如果按键较多

4、,硬件消抖将无法胜任,常采用软件消抖。通常采用软件延时的方法:在第一次 检测到有键按下时,执行一段延时 10ms 的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电 平,则确认真正有键按下, 进行相应处理工作, 消除了抖动的影响。 (这种消除抖动影响的软件措施是切实可行的。 )2.采取串键保护措施。串键:是指同时有一个以上的键按下,串键会引起 CPU错误响应。通常采取的策略:单键按下有效,多键同时按下无效。3. 处理连击。连击:是一次按键产生多次击键的效果。要有对按键释放的处理,为了消除连击,使得 一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。否则

5、的话,键功能程序的 执行次数将是不可预知,由按键时间决定。连击是可以利用的。连击对于用计数法设计的多功能键特别有效。三、键盘工作方式单片及应用系统中,键盘扫描只是 CPU的工作内容之一。CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。考虑仪表系统中 CPU任务的份量,来确定键盘的工作方式。键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又不过多的占用 CPU的工作时间。键盘的工作方式有:查询方式(编程扫描,定时扫描方式)、中断扫描方式。四、键盘电路结构(一)独立式按键接口设计 优点:电路配置灵活,软件结构简单。此键盘是用于按键较少或操作速度较高的场合。也可以用扩展 I

6、/O 口搭接独立式按键接口电路,可采用 8255 扩展 I/O 口,用三态缓冲器扩展。这两种 配接方式,都是把按键当作外部 RAM某一工作单元的位来对待,通过读片外 RAM的方法,识别按键的工作状态。上电路中独立式按键电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各 I/O 有确定的高电平。如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。(二)矩阵式键盘接口设计 矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上。节省 I/O 口。矩阵键盘工作原理:行线通过上拉电阻接到 +5V 上。无按键,行线处于高电平状态,有键按下,行线电平状态 将由与此行线相连

7、的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。五、 双功能及多功能键设计在单片机应用系统中, 为简化硬件线路, 缩小整个系统的规模, 总希望设置最少的按键, 获得最多的控制功能。 矩阵键盘与独立式按键键盘相比,硬件电路大大节省。可通过软件的方法让一键具有多功能。方法:选择一个RAM工作单元,对某一个按键进行按键计数,根据不同计数值,转到子程序。这种计数多功能键最好与显示器结合 用,以便知道当前计数值,同时配合一个启动键。复合键是使用软件实现一键多功能的另一个途径。所谓复合键,就是两个或两个以上的键的联合,当这些键同时按下时,才能执行相应的功能程序。实际情况做不到“

8、同时按下”,他们的时间差别可以长到 50ms,解决策略是:定义一个或两个引导键,这些引导键按下时没什么意义,执行空操作。引导键的例子:微机键盘上的 CTRL、SHIFT、ALT。缺点:一是操作变得复杂,二是操作时间变长。 多功能键的利用,应具体情况具体分析。要求速度的场合最好做一键一功能。如果系统功能很多,一键一功能不 现实,可采取一键多功能。六、 功能开关及拨码盘接口设计设计原因:键盘输入灵活性大,操纵方便。但某些重要功能或数据由键盘输入,误操作将产生一些不 良后果。因此常设定静态开关的方法来执行这些功能或输入数据。静态开关一经设定,将不再改变,一直维持设定 的开关状态。通常这些开关状态是在

9、单片机系统加电时由 CPU读入内存RAM的,以后CPU将不再关注这些开关的状态,因此,即使加电后,这些开关的状态发生变化,也不会影响 CPU的正常工作,只有在下一次加电时,这些新状态才能生效。第一,功能开关:主要是根据开关的状态执行一些重要的功能。 第二,拨码盘:单片机应用系统中,有时要输入一些控制参数,这些参数一经设定,将维持不变,除非给系统 断电后重新设定。这时使用数字拨码盘既简单直观,又方便可靠。七、 按键介绍常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键(又称触摸式键盘)。 机械触点式按键是利用弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造。但是触点处 易侵入灰尘而导

10、致接触不良,体积相对较大。导电橡胶按键是利用橡胶的弹性来复位,通过压制的方法把面板上所有的按键制成一块,体积小,装 配方便,适合批量生产。但是时间长了,橡胶老化而使弹力下降,同时易侵入灰尘。柔性按键是近年来迅速发展的一种新型按键,可以分为凸球型和平面型两种。凸球型动作幅度触感明 显,富有立体感,但制造工艺相对复杂;平面型幅度微小,触感较弱,但工艺简单,寿命长。柔性按键最大特点是 防尘、防潮、耐蚀,外形美观,装嵌方便。而且外形和面板的布局、色彩、键距可按照整机的要求来设计。八、 单片机系统键盘设计实例键盘工作方式采用定时扫描方式。采用定时器 T0定时,CPU每隔200ms扫描键盘一次,即通过读取

11、 573的输出数据,识别按键的工作状态。对于重键 (串键: 指同时有一个以上的键按下) ,采用软件提供保护, 当判断为一个以上的键按下, 则不处理, 返回重新进行监测。只有监测到一个键按下时,才判断键值,执行相应键处理工作。在每一页中, 键盘对数据的修改是通过键盘对液晶显示的控制是通过显示画面的页码作为接口参数来完成的。对按键次数的计算作为接口参数来实现的。 具体例程如下:void keyscan()/* 键盘扫描 */oId=newz;/*原键值ucher data newz, temp, pat ;等于新键值*/if(time_out)keymana();/*调键散ACC=MJP;/* 读

12、转程序 */取 573 数据 */temp=ACC&0x0f ,/* 取低四位 */if(temp ! =0x0f)/* 有键按下*/eIse;msec(10);/* 延时 10MS*/eIse;ACC=MJP;/* 读取573数据 */eIsr;temp=ACC&0x0foId=temp;/* 原键if(temp=0x0f)值不变 */newz=temp;/* 读取新键time_out=0/*标志位值*/置零 */pat=n ewzSId;/* 键值有无变化*/eseI;if(pat)0)/* 有变化 */4*4 键盘程序; 0 1 2 3 -P30K1: LCALL DELAY2PUSH

13、ACCDJNZ R5,L7; 4 5 6 7 -P31LCALL KSK4: LCALL DELAY2RET; 8 9 A B -P32JNZ K2LCALL KSTAB:DB 0C0H;0; C D E F -P33AJMP KEYJNZ K4DB 0F9H;1; P34 P35 P36 P37K2: MOV R2,#0EFHPOP ACCDB 0A4H;2ORG 0000hMOV R4,#00HRETDB 0B0H;3LJMP MAINK3: MOV P3,R2NEXT:INC R4DB 099H;4ORG 0030hL6: JB P3.0,L1MOV A,R2DB 092H;5MAIN:

14、MOV A,#00HJNB ACC.7,KEYDB 082H;6MOV DPTR,#TABAJMP LKRL ADB 0F8H;7LCALL KEYL1: JB P3.1,L2MOV R2,ADB 080H;8MOVC A,A+DPTRMOV A,#04HAJMP K3DB 090H;9MOV P0,AAJMP LKKS: MOV P3,#0FHDB 088H;ACLR P1.3L2: JB P3.2,L3MOV A,P3DB 083H;bLJMP MAINMOV A,#08HXRL A,#0FHDB 0C6H;CKEY: LCALL KSAJMP LKRETDB 0A1H;dJNZ K1L3

15、: JB P3.3,NEXTDELAY2: MOV R5,#08HDB 086H;ELCALL DELAY2MOV A,#0cHL7: MOV R6,#0FAHDB 08EH;FAJMP KEYLK: ADD A,R4L8: DJNZ R6,L8END4X4矩阵键盘扫描汇编程序PROCKEYCHKNEXT3:CJNEA,#0A0H,EXITRLAKEYNAMEDATAORL KEYNAME,40H#0E0HADDA,R2;(b7-b5 纪录按键状态,b4 位为有效WAIT: MOVA,KEYRTIME位, ;b3-b0纪录按键 )JNZEXITMOVDPTR,#KEKEYRTIMEDATA43

16、HKEYSCAN:YTABSIGNALDATA50HMOV R1,#0MOVCA,A+DPTRKEYEQUP3MOVR3,#11110111BANLKEYNAME,#0E0HKEYPLEQUP0.6LOOP: MOVA,R3ORLKEYNAME,RLAARTIMEEQU30MOVR3,AMOVKEYRTIME,#RTIMEKEYCHK: MOVKEY,#0FHMOVKEY,ACLRKEYPLMOVA,KEYMOVA,KEYORLA,#0F0HMOVSIGNAL,#CJNEA,#0FH,NECJNEA,#0FFH,NEXT3110XT1EXIT: MOVKEY,#0FFHJCLRCINCR1RE

17、TNEXT1:CJNER1,#4,LOOPKEYTAB: ;/=按键名称表 =JSETBCDB1AH; 扫描码0,对应 ASJMPEXITDB1BH; 扫描码1,对应BMOVA,KEYNAMDB1CH; 扫描码2,对应CENEXT31: JBACC.0,NEXT32DB1DH; 扫描码3,对应DANLKEYNAME,MOVR2,#0DB11H; 扫描码4,对应1#1FHDB14H; 扫描码5,对应4RRCASJMPNEXT5DB17H; 扫描码6,对应7NEXT32:JBACC.1,NEXT33DB1EH; 扫描码7,对应EANLA,#0E0HMOVR2,#1DB12H; 扫描码8,对应2DB

18、15H; 扫描码9,对应5ORLKEYNAME,SJMPNEXT5DB18H; 扫描码A,对应8ANEXT33:JBACC.2,NEXT34DB10H; 扫描码B,对应0CJNEA,#0C0H,NMOVR2,#2DB13H; 扫描码C,对应3EXT2DB16H; 扫描码D,对应6SJMPKEYSCANSJMPNEXT5DB19H; 扫描码E,对应9NEXT2: CJNEA,#0E0H,NEXT3NEXT34:MOVR2,#3DB1FH; 扫描码F,对应FSJMPWAITNEXT5: MOVA,R1ENDRL A4X4矩阵式键盘keyscan:lcall keypress;mov p1,#0bf

19、h;jnb p1.3,$mov r1,#02hjnz k1mov r0,#02hmov r1,#03hmov a,r0jmp keyscanmov a,p1mov a,r0mov b,#4k1: lcall delayanl a,#0fh;mov b,r3mul ablcall keypressmov r2,amul abadd a,r1jnz k2xrl a,#0fhadd a,r1jmp responsejmp keyscanjnz k3jmp responsekeypress:mov p1,#0fhk2: mov r0,#00hmov p1,#07fh;k4: jnb p1.0,$ ;m

20、ov a,p1mov r1,#00hmov r0,#03h;mov r1,#00hxrl a,#0fhmov p1,#0efhmov a,p1mov a,r0retmov a,p1anl a,#0fh;mov b,#4delay: mov r7,#50anl a,#0fh;mov r2,amul abd1: mov r6,#248mov r2,axrl a,#0fhadd a,r1djnz r6,$xrl a,#0fhjnz k3jmp responsedjnz r7,d1jnz k3jmp keyscank5: jnb p1.1,$retmov p1,#0dfhk3: mov a,r2mov

21、 r1,#01htable: dbmov r0,#01hrrc a ;mov a,r03fh,06h,5bh,4fh;0 1 2 3mov a,p1jnc k4 ;mov b,#466h,6dh,7dh,07h;4 5 6 7anl a,#0fhrrc amul ab7fh,6fh,77h,7ch;8 9 a bmov r2,ajnc k5 ;add a,r139h,5eh,79h,71h;c d e fxrl a,#0fhrrc ajmp responseend *jnz k3jnc k6 ;k6: jnb p1.2,$4X4矩阵式键盘KEYNAME DATA40HSJMPEXIT1INC

22、R5NEXT25:MOV A, R5ORG 0000HNEXT11:SETB F0DJNZ R7, LOOP1RL ALJMPMAINEXIT1:RETSJMPEXIT2RL AORG 0030HKEYSCAN:NEXT21:ADD A, R4MAIN:MOV SP, #80HJNB F0, EXIT2JNB Acc.4, NEXT22MOV DPTR, #KEYTABCLR F0MOV R7, #4MOV R4, #0MOVCA, A+DPTRLOOP:LCALL KEYCHKMOV R5, #0SJMPNEXT25MOV KEYNAME,ALCALL KEYSCANMOV R6, #011

23、11111BNEXT22:EXIT2:RETSJMPLOOPLOOP1:MOAV, R6JNB Acc.5, NEXT23DELAY_10MS:SETB RS1KEYCHK:MOV P1, #0F0HRL AMOV R4, #1SETBRS0MOV A, P1MOV R6, ASJMPNEXT25MOV R2,#20CJNEA, #0F0H, $+3MOV P1, ANEXT23:DELAY0:MOV R3,#250LCALL DELAY_10MSMOV A, P1JNB Acc.6, NEXT24DJNZ R3,$MOV A, P1ANL A, #0F0HMOV R4, #2DJNZ R2,

24、DELAY0CJNEA, #0F0H, NEXT11XRL A, #0F0HSJMPNEXT25RETCLR F0JNZ NEXT21NEXT24:MOV R4, #3KEYTAB:DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15END4X4键盘输入数码管移位显示#include #include#include uchar num,num1,temp;sbit dula=P2A6;sbit wela=P2A7;uchar code table=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7

25、c, 0x39,0x5e,0x79,0x71,0x00;uchar keyscan();void delay(uchar z) /10MS 延时uint x;for(z;z!=0;z-)for(x=1250;x!=0;x-);void main()wela=1;dula=0;P0=0xc0;num=17;P0=0;wela=0; / 所有数码管不亮dula=1;while(1)num1=keyscan();P0=tablenum1-1;uchar keyscan()P3=0xf0;temp=P3;while(temp!=0xf0)delay(1);temp=P3;while(temp!=0xf

26、0)P3=0xfe;1temp=P3&0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xee:num=1,temp=0xf0; break;case 0xde:num=2,temp=0xf0; break;case 0xbe:num=3,temp=0xf0; break;case 0x7e:num=4,temp=0xf0; break;/ default:temp=0xf0;P3=0xfd;temp=P3&0xf0; while(temp!=0xf0)temp=P3;switch(temp)case 0xed:num=5,temp=0xf0;break;case 0xdd:num=6,temp=0xf0;break;case 0xbd:num=7,temp=0xf0;break;case 0x7d:num=8,temp=0xf0;break;/ default:temp=0xf0;P3=0xfb;temp=P3&0xf0;while(temp!=0xf0)te

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1