|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
第13讲 IO 扩展(输入扩展)与按键触发实验 : a* }' p; m& ^& \
知识点:
1 }% x7 l% ]7 |8 u) H
8 K" B# O# J2 ?2 ]+ |0 F M0 Z( C1、 IO 扩展之输入扩展9 I' e! T7 Y K o! F, k2 c
2、 74HC165用法& g- K9 d. j1 F! n0 u& t; {6 A
3、 基于 74HC165 按键扩展实验
9 R# N9 a j4 W' q, U9 c4、 矩阵式按键扩充实验+ H8 l {; [' V) n" a; o
5、 时序与真值表
) e( B4 h8 G8 l9 E6、 学会根据器件真值表和时序图编写器件驱动程序% w. A% F9 L- t& O3 [& Z
7、 单片机外围器件驱动程序设计的两种方式(器件时序图与标准通信接口)
, m7 S7 \- |1 A& \' i3 U
7 l9 {1 D& p9 e+ `一、IO扩展之输入扩展:
8 K2 ?; z& I( B7 s+ h- x这里所讨论的 IO输入扩展,意思是如何通过单片机一位 IO端口去读取外部输入的一个字节的数据(8 位)。下面我们介绍一下器件74HC165。
4 J3 v! j$ B6 d5 D0 }. L1 Q7 [* j/ _8 `* P# A: Y7 n
- R# q1 D i3 R3 k |( A( M7 Y
二、74HC165用法:
5 F. o1 }! j! W) F; B
) I1 y5 r* b) }8 ^( x ~7 s# \( T8 s引脚介绍7 X! y7 L8 L5 z2 N& U
9 X; q; b; v: aSH//LD:移位控制/置入控制(低电平有效),移位:使能移位输出;置入:把数据放入移位寄存器中* V+ P1 m( s2 t; Y: A
CLK,CLK_INH:时钟输入端
! l K$ e( }$ A$ d+ U' iSER:串行数据输入端
+ c( s7 o' a5 g# ZQH:输出端
2 }- P5 t m$ ~: R. c/QH:互补输出端
9 s3 ~0 D( w d/ e: ^A- H:并行数据输入端 其实看一个芯片如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表。
0 X0 Y, X7 _) Z' \- j. [
& t2 {4 t! _$ \5 Q2 u F. n/ I- g: X' z真值表:
7 |$ F6 a' I% I s
+ G" J# p& K2 S# b5 V+ v. o* [4 K
2 K$ {9 }: e" @- |! m* |
. B( B% [% }" S9 T6 T7 y y2 l: }时序图:
% i2 ?6 k& C. Q+ y2 b6 u
( o/ ^3 X# B% A+ V U
2 V. ?# H% H* _这个时序图包含两大部分内容:装载数据(LOAD)和串行移位(SERIAL SHIFT),其中 LOAD 时, 必须 inhibit(时钟禁止),CLOCK _INHIBIT = 1;. |3 } ?8 o4 t! l- F
首先分析如何 LOAD,所谓 LOAD 就是把通过此器件获得的 8 位数据,加载到此器件的内部移 位寄存器里。比如外接的是 8 个按键,平时没按下按键时是高电平,这时,加载到器件内部 移位寄存器里的是 0XFF,当其中某一个键被按下时,对应的 8 位编码数据就被加载内部移位% j, Y- c* ?) X- Z* L# {5 r6 b' [+ l
* H* I% x+ \/ z$ z- a" U# E寄存器里。通过时序图和真值表,我们不难发现,LOAD 时,SHIFT//LOAD 必须保持低电平。 所以加载数据时,我们可以这样编码:& O9 C# O; d5 X' Y/ Q) m+ u6 c5 o4 e
SHIFT//LOAD = 0;
) I* }8 W8 u4 w4 w0 f8 H/ E_NOP_(); //保持一段时间的低电平0 G7 Z( f4 y) S: X
, ?7 S5 A; u3 z! {6 x) e2 p! Y% z
随后,在 CLOCK_HAIBIT 保持低电平,SHIFT//LOAD 保高电平,开如一段 8 位串行数据的移 位输出,时钟上升沿状态下开始移位输出。以下是上升沿的写法,一定要记住!6 z7 }1 Z: B( K6 ~8 j p
- F# `4 A/ m5 u" r9 z
CLOCK = 0;8 q& N1 \) i r4 R
_NOP_();
6 @) s( N! ^; }/ ~# A4 b5 Cindata |= indata; CLOCK = 1;' X% A- m+ y& c( }: A
2 c/ b. \- g4 v& K+ c& ~2 b4 E三、基于 74HC165 按键扩展实验: 实验现象:下载程序后,按下独立按键可以点亮对应 LED 灯。注意事项:必须将 74HC165 模块的 JP165 短接片短接,否则不会出现象。6 D* Z: B( y; K' a" Y# {( H
4 V, Y! m5 J9 { O* v& |四、时序与真值表 时序,就是按照一定的时间顺序给出信号。按照这个时间顺序,你就能得到你想要的数据或 者把你要写的数据写进芯片。
4 s) M3 H. Z+ M真值表:输入与输出物理电平关系
2 L M* @' ~' P% q7 g
" H! N7 m0 T+ |! y五、矩阵式按键扩充实验 不同的按键触发不同的功能(按键事件解析)
8 P. z, v& U) t' B, _( O
1 N g9 S. X, I2 @0 F六、学会根据器件真值表和时序图编写器件驱动程序
5 w# {/ l. T0 s* ?3 E' W |
|