|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
第13讲 IO 扩展(输入扩展)与按键触发实验
/ K2 d$ t9 A, |; [3 l3 v知识点:. j8 p3 ?$ A7 P8 @
5 R9 Q) r( F! M( ~% Q1、 IO 扩展之输入扩展9 l3 t. {, b' V: f
2、 74HC165用法
$ W+ U! s* H$ ]( k3、 基于 74HC165 按键扩展实验
2 Z" Z! F7 q, X; Y/ d4 Q! k- w4、 矩阵式按键扩充实验' e( r4 [ X% U
5、 时序与真值表% s6 x3 P" x0 a0 ~4 N& s
6、 学会根据器件真值表和时序图编写器件驱动程序
* Y, U9 P/ h: N; H7、 单片机外围器件驱动程序设计的两种方式(器件时序图与标准通信接口)7 s- N2 u4 U2 Z5 ]6 t+ `6 S3 _* I$ L
$ _3 y0 U5 P2 R" X, T% r一、IO扩展之输入扩展:3 {- A1 G- D( U
这里所讨论的 IO输入扩展,意思是如何通过单片机一位 IO端口去读取外部输入的一个字节的数据(8 位)。下面我们介绍一下器件74HC165。! R* o% m' o# I
! [5 l2 _& J; f$ ^
$ h* h* u5 d0 b: ]: H二、74HC165用法:$ D4 I* ?6 t1 {% t/ t
' i) U) w% x' s引脚介绍. D6 Q+ H; O+ e9 H' c
: |+ W( f! ~! h6 Q$ P
SH//LD:移位控制/置入控制(低电平有效),移位:使能移位输出;置入:把数据放入移位寄存器中# T, h. x8 L8 `2 W) b
CLK,CLK_INH:时钟输入端
# p) A5 ? R; ISER:串行数据输入端3 k4 |/ Q7 N1 Q4 \
QH:输出端# a2 }! w, i) `) i+ q, @
/QH:互补输出端
- G2 z" s" @5 A% Y0 s) O& ]A- H:并行数据输入端 其实看一个芯片如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表。 ) e! W) X* c9 P7 B' I- J
" V7 i: Z0 {+ |. a) h4 G5 ]; p
真值表:
* A5 t% P" o9 E/ x3 L" z4 u
3 E( @& I' m# o
9 y e) z- b2 u3 D; q
" K) \) K5 b( J6 S% @时序图:
1 W6 f0 ~9 H# _
$ s7 |, f b: v# G) T) X4 D, U/ |* H
3 C6 Z2 |5 l# x- ?这个时序图包含两大部分内容:装载数据(LOAD)和串行移位(SERIAL SHIFT),其中 LOAD 时, 必须 inhibit(时钟禁止),CLOCK _INHIBIT = 1;
, y; g# u* o" ?, `1 a: F首先分析如何 LOAD,所谓 LOAD 就是把通过此器件获得的 8 位数据,加载到此器件的内部移 位寄存器里。比如外接的是 8 个按键,平时没按下按键时是高电平,这时,加载到器件内部 移位寄存器里的是 0XFF,当其中某一个键被按下时,对应的 8 位编码数据就被加载内部移位6 Z& X- C$ l# V. j6 K; r$ i0 z( x
- o; n4 `' {& f S. @
寄存器里。通过时序图和真值表,我们不难发现,LOAD 时,SHIFT//LOAD 必须保持低电平。 所以加载数据时,我们可以这样编码:
2 X. H1 u7 R4 w, wSHIFT//LOAD = 0;6 L! h/ `" j6 ?* y- s
_NOP_(); //保持一段时间的低电平
# b, D6 E" E: _# u4 P
' z4 q% h0 U" l P随后,在 CLOCK_HAIBIT 保持低电平,SHIFT//LOAD 保高电平,开如一段 8 位串行数据的移 位输出,时钟上升沿状态下开始移位输出。以下是上升沿的写法,一定要记住!
, P3 D2 h2 |1 [9 X, J/ i4 d
# Y: x9 P; J# U( w, h PCLOCK = 0;
% |7 q: s% K, f; O2 G [1 g_NOP_();' Q2 K% u3 o) [- O
indata |= indata; CLOCK = 1;4 J0 v, c: h( l8 r- O* j
9 H9 {) z0 b4 {; u! ?. d
三、基于 74HC165 按键扩展实验: 实验现象:下载程序后,按下独立按键可以点亮对应 LED 灯。注意事项:必须将 74HC165 模块的 JP165 短接片短接,否则不会出现象。. O2 s; h. `8 n- L9 G! i+ D% G
! O- ?/ a% k0 l四、时序与真值表 时序,就是按照一定的时间顺序给出信号。按照这个时间顺序,你就能得到你想要的数据或 者把你要写的数据写进芯片。8 j. g# w) k# K& S: j w! m1 @% d: q
真值表:输入与输出物理电平关系 - H2 T1 b+ ~5 l8 t# m
8 p& a' w! E2 a) c/ ]) k+ C五、矩阵式按键扩充实验 不同的按键触发不同的功能(按键事件解析)
. \, j! y9 i, e
6 T# `" G2 D; Q5 ]$ p/ @六、学会根据器件真值表和时序图编写器件驱动程序
" ]9 {; K/ Y) N! {0 J |
|