单片机原理及应用输入输出端口.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LED0闪烁的代码(二) void delay(unsigned int i) { unsigned int data j,k; /* Approximately i*1000 clock */ for(k=0; ki;k++) for(j=0; j1000;j++); } /*---End of File ---*/ I/O口例程 I/O口作为输出控制LED I/O口作为输入检测开关状态 I/O口作为输入检测矩阵键盘 I/O口作为输入检测开关状态 当开关置于H时,LED0点亮;当开关置于L时,LED0熄灭。 方案设计: 开关输入数字型信号,所以可以利用P3作为输入口来控制。 因为只检测一个开关的状态,所以可以利用P3的一位口线,如P3.0(RXD)来检测开关状态。 LED0的控制方法同前面例题,用P1.0来控制LED0。 I/O口作为输入检测开关状态 由于P3.0作为输入,所以应该先向该I/O口写“1”,使该I/O口工作于输入方式,然后再读引脚。 开关输入的代码(一) #include reg51.h #define LED_ON 0 #define LED_OFF 1 #define L_Level 0 #define H_Level 1 sbit LED0 = P1 ^ 0; sbit Switch = P3 ^ 0; void main(void) { for(;;) { Switch = 1; /* P3.0 input */ if(Swtich == H_Level) { /* Switch is H */ LED0 = ON; /* Turn on LED0 */ } else {/* Switch is L */ LED0 = OFF; /* Turn off LED0 */ } /* if(Swtich == H_Level) */ } /* for(;;) */ } /* main */ P1口接8个发光二极管,P3口接按钮开关S,利用S控制指示灯LED0~LED7,初始状态为LED0~LED7都暗,第一次按S,LED0亮,其他暗,第二次按S,使LED1亮,其他暗… …第八次按S,使LED7亮,其他暗,第九次按S,全暗,如此循环。 用C语言编程。 I/O口实验 I/O口例程 I/O口作为输出控制LED I/O口作为输入检测开关状态 I/O口作为输入检测矩阵键盘 I/O口作为输入检测矩阵键盘 键盘检测电路 1 2 3 4 5 6 * 0 # 7 8 9 下面两种键盘响应方式的区别? 固定电话机键盘检测程序的要求 能够把键码(KeyCode)翻译成键值(Keyvalue) 如键码0x41对应键值3 去抖 按键按下后,无论持续多长时间,键盘检测程序都视为一次输入,即不存在“连击” 键盘输入信息的主要过程 CPU判断是否有键按下。 确定按下的是哪一个键。 把此键代表的信息翻译成计算机所能识别的代码,如ASCII或其它特征码。 以上第2、3步主要由硬件完成的,称为编码键盘;如果主要由软件完成,则称为非编码键盘。单片机应用系统中通常采用的是非编码键盘,如行列式键盘。 4*4键盘的扫描程序 查询是否有键按下。 查询按下键所在的行列位置。 对得到的行号和列号译码,得到键值。 键的抖动处理 1.查询是否有键按下 首先单片机向行扫描口P1.0~P1.3输出全为“0”,扫描码F0H,然后从列检测口P1.4~P1.7输入列检测信号,只要有一列信号不为“1”,即P1口不为F0H,则表示有键按下。接着要查出按下键所在的行、列位置。 2. 查询按下键所在的行列位置 单片机将得到的信号取反,P1.4~P1.7中的为1的位便是键所在的列。 接下来要确定键所在的行,需进行逐行扫描。单片机首先使P1.0接地,P1.1~P1.7为“1”,即向P1口发送扫描码FEH,接着输人列检测信号,若为全“1”,表示不在第一行。接着使 P1.1接地,其余为“1”,再读入列信号……,这样逐行发“0”扫描码,直到找到按下键所在的行,将该行扫描码取反保留。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的误动作。 3.对行号和列号译码得到键值 译码可以通过查表的方法。 4.键的抖动处理 当用手按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键抖动,抖动的持续时间不一,通常不会大于10 mo.若抖动问题不解决,就会引起对闭合键的多次读人。 对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行逐行扫描,而是延时10 ms后再进行。由于键按下的时间持续上百ms,延时后再扫描

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档