单片机系统应用设计概论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机系统应用设计概论

一、键盘控制 如图所示,AT89S51 单片机的 P1.0-P1.3 接四个发光二极管 L1-L4,P1.4-P1.7 接了四个开关 K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。;不考虑按键消抖 ORG 0000H START:MOV A,#0FFH MOV P1,A SK1:MOV A,P1 RR A RR A RR A RR A ORL A,#0F0H MOV P1,A SJMP SK1 END;考虑按键消抖 一个按键从按下到释放是一个完整的过程,因此在按键按下的时候,要把干扰信号以及按键的机械接触等干扰信号给滤除掉,除采用电容滤波外,还需要采用软件滤波的方法去除这些干扰。 程序设计时,从按键被识别按下之后,延时5ms以上,可避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。; ORG 0000H START: MOV A,#0FFH MOV P1,A SK1:MOV A,P1 ORL A,#0FH CJNE A,#0FFH,SK2 SJMP SK1 SK2:LCALL DELAY10MS ;延时10ms MOV A,P1 ORL A,#0FH CJNE A,#0FFH,SK3 SJMP SK1 SK3:RR A RR A RR A RR A ORL A,#0F0H MOV P1,A SJMP SK1 D10MS: MOV R6,#20 MOV R7,#248 D1: DJNZ R7,$ DJNZ R6,D1 RET END;矩阵键盘; KEYBUF EQU 30H ORG 0000H START: MOV KEYBUF,#00H MOV R3,#00H ;行号初值送R3 WAIT: MOV P3,#0FFH CLR P3.0 MOV A,P3 ANL A,#0F0H XRL A,#0F0H JZ NOKEY1 LCALL DELY10MS MOV A,P3 MOV R2,A ANL A,#0F0H XRL A,#0F0H JZ NOKEY1 LCALL GETKEY ;判断键值,入口R2、R3 NOKEY1: ---- ;R2存P3值,R3存行号;NOKEY2: INC R3 MOV P3,#0FFH CLR P3.2 MOV A,P3 ANL A,#0F0H XRL A,#0F0H JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0F0H XRL A,#0F0H JZ NOKEY3 LCALL GETKEY; ;GETKEY 判断键值,入口 R2存P3值,R3存行号 GETKEY: MOV A, R3 ; 行号送入A RL A ; 行号×2 RL A ; 行号×4 MOV R5,A ; 存入R5中 MOV A,R2 ; P3值送A SWAP A ; 取列值 LK1:RRC A JNC LK2 ; 该位为 0 则转 INC R5 ; 列号加 1 SJMP LK1 ; 列号未判完则继续 LK2: INC R5 MOV KEYBUF,R5 ; 存键值 RET DELY10

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档