课件:单片机输入输出端口.ppt

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

第 *页 扫描式键盘简单示意图 当RC4输出0时, SW2状态能从RC3读入; 当RC3输出0时, SW2状态能从RC4读入; 0 1 0 第 *页 4×4键盘矩阵原理图示意图 RC4 RC5 RC6 RC7 RC0 RC1 RC2 RC3 0 0 0 0 1 1 1 1 0 1 0 1 1 第 *页 4×4键盘矩阵原理图示意图 RC4 RC5 RC6 RC7 RC0 RC1 RC2 RC3 1 1 1 1 0 0 0 0 0 1 1 1 0 第 *页 基于C口的4×4键盘矩阵的扫描流程图 C口高四位输出0 ,低四位输入 C口低四位为1111吗? 延时20ms左右消除抖动 N C口高四位为1111吗? Y KeyH4=C口高四位 N KeyL4=C口低四位 C口高四位输入,低四位输出0 KeyValue=KeyL4 | KeyH4; Y 无按键 KeyValue=0; 第 *页 基于C口的4×4键盘矩阵的扫描代码 char KeyValue=0,keyH4=0,keyL4=0; // KeyValue保存键值,KeyH4保存高四位,…… TRISC=0x0F; //高四位输出,低四位输入 PORTC=0x00; //高四位输出0000 asm(nop); // 延时等待输出稳定 asm(nop); // 延时等待输出稳定 keyL4=PORTC; // 读取低四位内容 keyL4=keyL40x0F; //屏蔽高四位,书写格式? if(keyL4!=0x0F) // 低四位不为1111说明有键按下 { iDelayMS(20); // 软件消除抖动 // 未完待续 第 *页 基于C口的4×4键盘矩阵的扫描代码(续) TRISC=0xF0; // 高四位输入,低四位输出 PORTC=0x00; //低四位输出0000 asm(“nop”); // 延时等待输出稳定 asm(“nop”); // 延时等待输出稳定 keyH4=PORTC; // 读取高四位内容 keyH4=keyH4 0xF0; //屏蔽低四位 if(keyH4 != 0xF0) //不等于1111说明不是抖动 { KeyValue=keyH4 | keyL4 ; // 高低4位通过或运算组成一个字节 } } PORTD=KeyValue; // 送D口显示 第 *页 4*4键盘扫描电路图运行图示 第 *页 如何写成函数形式(函数模块编写方法)? 明确函数的功能: 获得按键的键值,即扫描码(高四位+低四位); 函数起名为:GetScanCode 明确函数的输入(参数)和输出(返回值): 输入参数: 无; 输出: 按键的扫描码,是8位数据,char型即可. 则函数声明为: char GetScanCode(void); 由于此函数功能相对独立,所以建立一个.c文件保存函数内容,同时建立.h文件保存函数声明.设分别为keyboard44.c和keyboard44.h 第 *页 函数内容编写(keyboard44.c) char GetScanCode(void) // 函数首部 { //根据功能流程编写函数内容; //函数结束时用return获得返回值; return KeyValue; } 头文件编写(keyboard44.h) char GetScanCode(void); 第 *页 模块的使用方法 函数定义: keyboard44.c 函数声明: keyboard44.h 在项目中添加模块的定义文件keyboard44.c : 在主程序中添加模块的声明文件keyboard44.h: #include “keyboard44.h” main() { char chData=0; //临时变量 TRISD=0x00; // D口输出,控制LED while(1) { chData=GetScanCode (); //读取按键 if(chData!=0) // 不等0则显示按键值 PORTD=chData; //扫描码赋值 } } 第 *页 思考与练习 6.1 I/O的全称是什么? 6.2 简述4位数码管动态扫描输出原理。 6.3 单片机读取机械按键状态时为什么要消除抖动,如何消除抖动。 6.4 简述4×4按键动态扫描输入原理。 6.5 电路如图 6.18所示。要求编程控制LED实现效果:D0到D7依次全被点亮,即先是D0亮,过一会儿是D0和D1亮,再过一会儿是D0、D1、D2亮,……,最后是D0到D7全亮,而后是重新循环。 第 *页 思考与练习 6.6 用“Proteus I

文档评论(0)

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

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

1亿VIP精品文档

相关文档