单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1611|回复: 0
收起左侧

单片机讲义13:IO扩展(74HC165输入扩展)与按键触发实验

[复制链接]
heiba 发表于 2017-11-19 02:59 | 显示全部楼层 |阅读模式
13IO 扩展输入扩按键触发实验

知识点:

1、 IO 扩展之输入扩展
2、 74HC165用法
3、 基于 74HC165 按键扩展实验
4、 矩阵式按键扩充实验
5、 时序与真值表
6、 学会根据器件真值表和时序图编写器件驱动程序
7、 单片机外围器件驱动程序设计的两种方式(器件时序图与标准通信接口)

一、IO扩展之输入扩展:
这里所讨论的 IO输入扩展,意思是如何通过单片机一位 IO端口去读取外部输入的一个字节的数据(8 位)。下面我们介绍一下器件74HC165。


二、74HC165用法:
0.png
引脚介绍

SH//LD:移位控制/置入控制(低电平有效),移位:使能移位输出;置入:把数据放入移位寄存器中
CLK,CLK_INH:时钟输入端
SER:串行数据输入端
QH:输出端
/QH:互补输出端
A- H:并行数据输入端 其实看一个芯片如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表。

真值表:
0.png


时序图:
0.png

这个时序图包含两大部分内容:装载数据(LOAD)和串行移位(SERIAL SHIFT),其中 LOAD 时, 必须 inhibit(时钟禁止),CLOCK _INHIBIT = 1;
首先分析如何 LOAD,所谓 LOAD 就是把通过此器件获得的 8 位数据,加载到此器件的内部移 位寄存器里。比如外接的是 8 个按键,平时没按下按键时是高电平,这时,加载到器件内部 移位寄存器里的是 0XFF,当其中某一个键被按下时,对应的 8 位编码数据就被加载内部移位

寄存器里。通过时序图和真值表,我们不难发现,LOAD 时,SHIFT//LOAD 必须保持低电平。 所以加载数据时,我们可以这样编码:
SHIFT//LOAD = 0;
_NOP_();        //保持一段时间的低电平

随后,在 CLOCK_HAIBIT 保持低电平,SHIFT//LOAD 保高电平,开如一段 8 位串行数据的移 位输出,时钟上升沿状态下开始移位输出。以下是上升沿的写法,一定要记住!

CLOCK = 0;
_NOP_();
indata |= indata; CLOCK = 1;

三、基于 74HC165 按键扩展实验: 实验现象:下载程序后,按下独立按键可以点亮对应 LED 灯。注意事项:必须将 74HC165 模块的 JP165 短接片短接,否则不会出现象。

四、时序与真值表 时序,就是按照一定的时间顺序给出信号。按照这个时间顺序,你就能得到你想要的数据或 者把你要写的数据写进芯片。
真值表:输入与输出物理电平关系

五、矩阵式按键扩充实验 不同的按键触发不同的功能(按键事件解析)

六、学会根据器件真值表和时序图编写器件驱动程序





这是以前给小学生培训单片机做的一套讲义,尽可能的做到了通俗易懂,现分享给大家,绝对的纯原创资料.
全部资料下载地址(共15章,pdf格式):http://www.51hei.com/bbs/dpj-98524-1.html



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机. 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表