当前位置: 首页 > >

基于I2C总线的串行键盘电路设计

发布时间:


所以已经被广泛应用。

嬲制作天地 MN矿s
ib

DN莉面舔————————————————————]lI m ill一

基于12c总线的串行键盘电路设计

一、概述
本文介绍一种采用MAX7348的串行12C总线 的键盘电路以及驱动程序的设计。 12C需要连线少,仅需一条串行时钟线和一条 串行数据线。允许多主机控制,具有裁决和同步功 能,可随意添加或摘除总线上的子器件等诸多优点。



_● 豳1

二、MAX7348
MA×7348是美国MAXIM公司生产的2线接口、 低EMI键盘开关和发声控制器.可监控多达40个 按键。可对按键去抖并保存在FIFO中,去抖时间 用户可在9—40ms之间任意设置,MAX7348自 带的音调发生器在控制器的作用下可自动发出按键 声和报警声,在发声期问,输出还可以设置为高电 *或低电*.以驱动电子发声器、继电器或指示灯。 芯片采用400Kps,5.5V容限2线串行接口,工作 电压2.4~3.6V.4个12C地址选择。与MAX7348 同系列的还有MAX7347和MAX7349等。

引脚接GND、V+、SDA、SCL可形成4种逻辑组 合构成MAX7348的4个可选的12C地址,如表1; GND为接地端,V+接电源(2.4~3.6V)o
表1 2线接口地址分配表

\ADO 功能\
写键盘控制器 读键盘控制器 写音调控制器 读音调控制器

GND

V+

SDA

SCL

0x70 0x71

0x74 0x75 0x76 0x77

0x78 0x79

0x7c O×7d 0x7e

0x72
0x73

0x7a 0x7b

0x7f

2.主要内部寄存器
1.引脚图 如图1所示。SDA、SCL分别是兼容12C串行 总线的数据、时钟接口。使用时通常需要接一个典 型值为4.7kQ的上拉电阻;ROW0一ROW8为键 盘矩阵行输入端口。不用时开路;COLO—COL4 为键盘矩阵列输出端口;SOUNDER为发声器输出 端口。该输出为推挽结构,通常与地之间接一个压 电陶瓷片或其他发声设备;INT为中断输出端口; ADO为地址输入端口,用来设置器件的从地址,该
18
20lOVOL.07

(1)按键FIFO寄存器(00H)该寄存器包 含与按键FIFO状态有关的信息,以及那些经过去 抖的事件信息,该寄存器的DO~D5位表示按键 中的那些键已去抖。D6指明当前去抖按键是否是 FIFO中的最后一个;D7位是溢出标志,它表示按 键FIFO是否溢出。读按键扫描FIFO将清除中断信 号,但是只有通过执行足够次数的读操作清空FIFO 后才能再次产生中断(INT)信号。

万方数据

黼耱鬟g l l

(2 l去抖寄存器(01H)该寄存器用来设置每

r一————————i莎i:磁一凸N
寄存器数据
D7 D6 D5 D4 D3 D2

制作天地澜 PR6JE亡Ts
i幽



(5)配置寄存器(04H)该寄存器反映发声器 的状态、控制12C总线超时、使能报警输入中断、 使能发声器对报警输入和按键去抖时间做出响应, 以及控制器件关断等。该寄存器结构如表4所示, 除D1、D2设定发声器输出状态外,其余每一位对 应一个控制状态,用户可根据需要使能(置。1”)

一个去抖周期的时间,以及使能和禁用GPO端口, 其中DO~D4位用来在9—40ms范围内设置去 抖时间,步长1ms,D5一D7用来设置使能那一个 GPO端口(表2)。
表2去抖寄存器设置

功能描述 设置去抖时间9ms 设置去抖时间10ms 设置去抖时间40ms 禁用所以GP0端口
tEn03P0端口7

D1

DO

使能GP0
× × × × 0 0 0
× × × × × × × ×

去抖时间
0 0 0 0 O O O 0 0 1

1 × × × ×


× × × X


× × × ×


× × × ×


× × × ×

0 0 1

0 1 0

使能GP0端口7、6 使能6P0端口7、6、
5、4、3、2、1







×



×

×

×

(3)自动重复寄存器(02H)该寄存器用来设 置自动重复频率及其延时。当按键按下且没有释放 时,自动重复功能允许连续触发按键事件。自动重 复延时规定了第一次按下按键与开始重复之间的时 间(如果按键没有释放)。自动重复频率规定了自 动重复开始后按键事件连续触发的速度。DO~D3 设定自动重复延时,范围从8个去抖周期到128个 去抖周期。D4~D6位规定重复频率,范围是4到 32个去抖周期,D7位是自动重复功能使能位(如 表3所示)o
表3自动重复寄存器 功能描述 自动重复延时8个去抖周期 自动重复延时8个去抖周期
D7 1 1 1 D6
×

或禁止(置。0”)o (6)按键发声寄存器(06H)如果配置寄存器 (04H)中使能按键发声,那么当一个键或一组键去 抖后,发声控制器将发出声音,并由按键发声寄存 器设定发声的时间和频率。 除以上几个主要寄存器外还有端口寄存器、报 警声寄存器、发声器寄存器等多个寄存器,这些寄 存器主要用于控制发声器和扩展GPO端IZl,在此 不做详细叙述,感兴趣的读者可以自行查阅有关 MAX7348的技术资料。
D5
× × X

D4 × × × × O 1

D3 0 O

D2 0 0

D1 0 O

DO 0 1

×
× ×

自动重复延时128个去抖周期 自动重复频率4个去抖周期 自动重复频率4个去抖周期

1 1 1 1

× O 0


× × × ×


× × ×


× × ×


× ×

0 0

×
×

自动重复频率32个去抖周期 禁用自动重复功能(上电默认)

1 0

1 0

1 0

1 O

× 0

×





(4)中断寄存器(03H)该寄存器包含与中断 请求功能设置有关的信息,以及INT输出的状态, INT输出也可配置为GPO。中断寄存器是只读寄存 器。向该寄存器写入数据无效。 图2是笔者设计的MAX7348应用电路。该电 路以凌阳(SPCE061A)单片机为主控制器,结合

三、电路设计

万方数据

电孑嗣佑

19

隧制H/1N作ITS天O地P'E…13J C—TX

表4配置寄存器结构
I)7 D8

lII¨l齄黼 l l霍麓黼

D5

D4

D3

D2

D1

D0

l关断(o)

l操作(1)

按键发声使能 报警发声使能 报警中断使能 报警中断事件

发声器状态

总线超时使能

MAX7348构成了一个具有40个按键的键盘电路, 通过程序可以设置按键发声、自动连续按键、中断 输出等功能。MAX7348的SDA、SCL、INT分别 与SPCE061A单片机的IOB0、IOBl、IOB2(注: SPCE061A单片机的lOB2为外部中断1的输入口) 连接。由于12C总线允许挂接多个从机,所以在实 际使用中,可以将多个不同从机地址的设备挂接在 采用通用IO口软件模拟12C的方式来实现。图3是 同一总线上,为单片机节约大量的硬件资源。 MA×7348的总线时序。 具备12C接口,要实现二者之间的数据传输,通常 具有兼容的12C接口,而SPCE061A单片机本身不 在图2所示的键盘电路中.由于MAX7348只

四、软件编写

l曩l[X]:::::∞厂弋碉:::::::[X砸i
}。‘‘’j ;’’‘’j

; i l }i弋八瓜…爪凡爪

L8B

应答

应答

爪风压。、L风厂■{
I,,SK ’一一?一j

i i

‘一一一一j

ASK

开始条件

结束条件



图3 fC串行总线时序圈



20

2010

VOL.07

万方数据

赣疆I¨I一~O制N
*年来随着科技不断发展,单片机种类也越 来越多,功能越来越强,随着单片机在系统可编程 (ISP)和在应用可编程(1AP)技术的出现。使得许 多单片机芯片在开发编程过程中无需再使用专用仿 真开发设备,仅需通过异步串口或四线同步串口即 可在系统仿真和编程甚至实现远程软件升级。而为 了对这些具有ISP功能的单片机进行编程开发。目 前相应出现了许多单片机编程下*髟诹餍杏τ米牛 方便了单片机学*者和开发者,降低了对单片机学 *开发的成本和门槛。但对不同种类的单片机其编 程下*鞯牡缏肥迪衷砑岸陨衔换缒越樱牛斓氖 用又不尽相同,如AT89SXX、AVR系列单片机编 程下*餍柰ü衔换缒缘牟⒖诮⒂氲テ 通讯,此时编程下*鹘缒圆⒖谧晃南咄 串口向单片机下载程序。而STC、SST系列单片机 编程下*饔中柰ü衔换缒缘拇保海辰⒂氲テ

驴艄

F作Em天jEr'地T%滋

基于CH341A的USB转UART和SPI接11单片机程序下*
*鳌5比灰灿卸帜芰η康牡缱影谜呖山钢 不同的编程下*髡显谝黄鹬谱鞒瞿苁视糜诩钢 不同种类单片机的编程下*鳌5绱擞布缏酚 较复杂,使用元件也较多,电路硬件的利用率也不 高。更重要的一点是*年来很多台式电脑已不再具 备串口和并口,取而代之的是增加了USB接口的数 量,尤其是现在使用笔记本电脑的单片机爱好者越 来越多,而目前笔记本电脑基本都不具备串口和并 1:3只有USB接El。这就使得那些利用电脑串口或 并口的编程下*髌溆τ檬艿较拗啤R虼四壳坝至 行着利用一些USB转串13的专用转换芯片设计制 作的USB接13转串口或转并口的转换器经2次转 换后再配合上述编程下*魇褂茫俳徊降姆椒 就是利用这些USB转串口的专用转换芯片设计制 作的转换器直接将USB接口转换仿真成为TTL异 步串13(UART)或四线同步串13(SPI).例如用 CP2102、PL2303及CH341T芯片转TTL异步串口、 用CH341A芯片转四线同步串口等,但就目前来看 已有的各种方案都是用一片某种芯片仅完成某一种 接口的转换,而要完成多种接1:3的转换,往往是使 用相应数量的芯片来完成。下面就CH341芯片在这 方面的使用情况来看看目前的状况,并就CH341A 要在部分代码中间添加一些延时程序,否则会出现 数据丢失,造成通讯错误。

机的通讯,此时编程下*鹘缒源谧晃ⅲ
异步串口向单片机下载程序。而且两种编程下* 接口转换硬件电路使用的电子元件也不相同。诸如 此类现实问题使得单片机学*及开发者配置了一种 编程下*魇苯瞿苎*开发相应种类的单片机,而 要学*使用其他单片机时又需再配置相应的编程下 由图3所示的时序图可以看出,用软件模拟 12C总线的传输时序。大致要经历构造开始条件、 发送从机地址(含读写标志位)、等待从机响应、 发送(或读取)1个字节数据(或命令)、 源程序请从1^n^n^,.elel69.com下载。 笔者编写的模拟12c总线驱动程序,经过多 次调试,程序符合12C总线传输时序要求,与12C 总线设备通讯可靠,但需要注意的一点是:以上 代码是在SPCE061 A单片机默认时钟频率(24M) 的情况下编写的,如果采用较高的系统时钟.需

五、小结
本文介绍的MAX7348与单片机的接1:3具有电 路简单。易于实现.节省了单片机的IO口.提高了 键盘电路的稳定性和可靠性,在笔者制作的5层电 梯模型中工作稳定,性能可靠,是一种值得推广的 键盘扩展方案。可应用在工业控制、PDA、医疗器 械等多个领域。
电子钥作


21

万方数据

基于I2C总线的串行键盘电路设计
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 万选明, 刘织财 柳州铁道职业技术学院 电子制作 ELECTRONICS DIY 2010(7)

本文链接:http://d.g.wanfangdata.com.cn/Periodical_dzzz201007006.aspx




友情链接: