|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
' @1 V2 I, u& W5 v' W5 }, k
摘要:为减少单片机键盘控制占用口线过多的问题,本文介绍了基于I2C总线结构的键盘控制方法,给出了硬件电路和软件代码。该
) M X: D" ~4 f& @& j* g方法只要占用单片机的三个口线即可实现对多达64个按键的控制,不但解决了当前单片机开发中遇到的口线不够用的问题,而且电路.# k$ U* S& [$ j' w0 }3 W# C
实现简单,同时采用中断的方式实现按键扫描码的读入,能直接读出按键扫描码,程序简单、易行。0 x6 d w% {! D1 ?! e, w
关键词:单片机;I2C总线;键盘控制;电路设计- W" H, E: c! \' D0 n/ |
1引言" I* ?4 C. L6 z
单片机已广泛应用于工业控制、智能仪表等领域,随着应用2 r& A% {+ _- B" }$ X1 v4 g/ @
和技术的发展、系统的集成度、复杂性的提高,CPU对口线的数量+ i' l8 U1 z+ h+ a1 C5 K* M! I2 V+ q
要求也越来越多,因此需通过适当的手段来对单片机进行扩展,' a0 K4 i; n4 i' a ?
或通过其它方法减少口线的占用来达到用户不同的需求。然而,. U+ e; A2 u. H7 x
传统的单片机对键盘的控制,很多还是直接采用CPU口线,或者& u9 B6 g, k+ c+ f
通过扩展外围I/0口如采用LS373、573等实行控制。常见的按键7 e6 {7 G* ?! K" y4 u5 P
结构电路分为独立式按键和行列式按键,独立式按键即每个按键
& G3 k' q9 q# T3 T' i% X- H% B占用一根IO线,直接用I0口线构成单个按键电路,但占用口线
, J2 k7 g" T- C0 k7 o! I较多,只适合数目不多的应用。行列式键盘I0是采用口线构成行
4 c+ U+ @% `. o4 H; z. [列结构,按键设置在行列的交点上。在按键较多时可节省IO口 C$ M) {. z8 S* M2 m6 K
线。但当键盘数目较多时,也需占用较多的单片机口线。而且这两0 J+ c7 f9 j: e& t5 E( p( h
“种方式都不能直接得出扫描码,必须通过计算才行。为解决这些1 w: j% d9 O0 m) }0 m% K
问题,本文提出了采用I2C结构实现键盘控制,并以SD7218A芯
/ X4 ^2 e" p6 U) a片为例,给出了硬件电路与程序代码。7 w4 u8 o) C. v
2I2C总线介绍0 l6 c5 D4 v8 L
I2C是一种新的芯片间的通讯方式,由PHILIPS开发和推广,% E9 f* o' w4 @6 J' ]
I2C通讯采用两条线进行通讯,一条数据线(SDA),-条时钟线
/ h) ^1 a3 M+ `2 g0 P(SCL),可进行多器件通讯。其最大特点是通过“地址”来确定传输9 M( B2 l( F( X: D; b
信息的目标器件,其好处就是两条线上可以接挂相当多的器件," z/ X ^1 k+ j$ [! L
所挂接的器件必须兼容I2C协议,数据传送是双向的,总线支持
. }1 m x8 s; H6 i" \% O多主机。其I2C器件地址结构如下:
3 M9 i: `/ O" t9 X高四位是器件地址,用来确定器件类型,出厂时就已经规定,5 J6 }/ J3 p6 h8 s& [4 w& V! A
是不可更改的。A2、A1、A0为引脚地址,由开发人员根据需要由所% c5 n6 L" ^8 h2 ]. ^
设计的硬件电路决定。用来确定同种器件类型的不同单元(实际
- i- e9 C3 t: G3 z5 m% C P* b就是相同器件的片选。最后一位为读写控制,即主器件发信息,从
: f* p" |# b8 b: _, K5 @( F9 g/ p"器件回应。主机总是负责启动数据的传送,并为发送和接收操作
4 g% X x6 G; v提供时钟。它的最高传输速度可达为100kbit/s,新版规范中最高6 G" h, r: k& E% H$ n' [4 r
可达400 kbit/s。
8 M: E& n% x- L9 X5 Q3利用I2C总线设计和实现键盘控制
, S' w; G+ I% I2 F' d" Q本文以SD7218A为例,运用I2C总线控制方式实现键盘控
2 p4 P: z# T2 U. f( n2 z制,只要占用单片机的三个口线即可实现对多达64个按键的控
, C2 F: @6 x1 ^制' x/ a1 ~1 D" J# ~( K) B
* q, v5 l7 A# `' i0 z g- X; z7 _( X
" G' H* r/ N! S3 q
附件下载:2 u6 E, D9 a/ P) G
% z1 P* \' D6 k$ _
|
|