【傻瓜51单片机讲义】 第7课 按键实验教学.pptVIP

【傻瓜51单片机讲义】 第7课 按键实验教学.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一气呵成学51 第7课 按键实验教学 1. 单片机IO口详解。 2. 独立键盘、矩阵键盘原理。 3. 相关C语言语法。 4. 按键程序详解。 5. 实际操作,验证程序。 1. 单片机IO口详解 1.1 通用IO口,复位后为: P0口是双向口,开漏输出,作为总线扩展时,不用加上拉电阻,作为I/O口用时,需要上拉电阻。 P1/P2/P3/P4是准双向口/弱上拉。作为输入时,要先赋值“1”。 1.2 双向口、准双向口 双向口有高阻态,输入为真正的外部信号 准双向口内部有上拉,故高电平为内部给出不是真正的外部信号 2.独立键盘、矩阵键盘原理 在单片机应用系统中,除了完成基本的功能外,另一个最重要的任务是设计优秀的人机交互接口。人机交互接口用来实现控制命令及数据的输入,并且将系统运行信息显示反映给操作者。键盘以按键的形式来设置控制功能或数据,其是人机交互的最基本的途径。在键盘中,按键的输入状态本质上是一个开关量。通过键盘为按键编码,从而实现命令或数据的输入,以达到控制的目的。 在单片机应用系统中,有两种常用的键盘结构:独立式按键和矩阵式按键。其中,独立式按键比较简单,适合于较少开关量的输入场合,而矩阵式键盘则适合于输入命令或者数据较多、功能复杂的系统。采用矩阵式键盘结构可以最大限度地使用单片机的引脚资源,因此应用十分广泛。 2.1独立式键盘和矩阵式键盘结构 在单片机的人机交互系统中,键盘用于向单片机输入控制信号或数据。单片机识别键盘的不同输入信号,并做出相应的反应。 键盘有很多种类型,对于简单的系统,如果需要的按键比较少,单片机引脚比较宽裕,则可以使用独立式按键结构。对于比较复杂的系统或者按键比较多的场合,可用采用矩阵式键盘。 1.独立式按键结构 2.矩阵式键盘结构 2.2键盘设计注意事项 对于键盘的程序设计,需要及时并且准确地响应按键的动作。在进行单片机键盘接口设计的时候,需要注意如下几个方面。 1.合理的按键编码 2.可靠的输入检测 3.程序响应 2.3 按键消抖 3. C语言相关语法 3.1 预处理指令——宏定义指令 宏定义指令是指用一些标识符作为宏名,来代替其他一些符号或者常量的预处理命令。使用宏定义指令,可以减少程序中字符串输入的工作量,而且可以提高程序的可移植性。 宏名既可以是字符串或常数,也可以是带参数的宏。宏定义指令可分为带参数的宏定义和不带参数的宏定义。下面分别介绍用于宏定义的一些预处理命令。 3.2 #define命令 #define命令用于定义一个宏名。宏名是一个标识符,在源代码中遇到该标识符时,均以宏定义的串的内容代替该标识符。ANSI标准宏将定义的标识符称为“宏名”,而用定义的内容代替宏名的过程称为“宏替换”。 4.2 独立式键盘按键检测程序 void Scan_Key(void) { uchar key_value; P3 = 0xff; if((P30x3c) != 0x3c) { Delay(); // 去抖操作2-10ms; if((P30x3c) != 0x3c) { key_value = (P30x3c); switch(key_value) { … } } } } 4.3 矩阵式键盘C51程序设计 在实际应用中,大多采用矩阵式键盘 4.4 矩阵式键盘按键检测程序 uchar Scan_Key(void) { uchar sm,fh; //存放行扫描代码,返回值的低四位,返回值的高四位。 P2 = 0xf0; if((P20xf0)!=0xf0) //判断是否有按键按下 { Delay(); //去抖动延时(1~10ms) if((P20xf0)!=0xf0) { sm = 0xfe; //行扫描初值 while((sm0x10)!= 0) { P2 = sm; if((P20xf0)!=0xf0) //若本行有键按下,则执行读取键值信息 { fh=(P20xf0)|0x0f; return(((~sm)|

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档