当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Linux下编写zlg7290驱动(1)

Linux下编写zlg7290驱动(1) 时间:2018-09-25      来源:未知

在智能仪表中,经常会用到键盘、数码管等外设。因此,一个稳定、占用系统资源少的人机对话通道设计非常重要。传统的键盘与数码管解决方案,由于键盘与数码管是分离的,因而电路连接比较复杂,不管是独立式键盘还是矩阵式键盘,都会浪费微控制器的端口资源,而且都需要人为进行去抖动处理,且抗干扰性差。而数码管部分,不管是静态显示方式还是动态显示方式,在不进行锁存器扩展的前提下。仍然要占用8根I/O端口线,这将严重浪费系统的端口资源。

ZLG7290可完全克服上述弊端。它采用I2C总线接口,与微控制器的连接仅需两根信号线,硬件电路比较简单。而且可以驱动8位共阴数码管或64只独立LED、64只独立按键,并可提供自动消除抖动、连击键计数等功能。这对于传统的键盘与数码管解决方案,无疑是不可想象的。强大的功能,丰富的资源,良好的接口,使得ZLG7290比传统的键盘与数码管解决方案且有更大的优越性。因此,在现代智能仪表的设计中,通过ZLG7290可为系统设计工程师设计出良好的人机对话通道,从而提供了一种理想的解决方案。

本文介绍linux下zlg7290驱动的编写。

1. Zlg7290介绍

zlg7290可以驱动64个独立按键和8个共阴极数码管,64只按键中,前 56 个按键是普通按键 K1~K56,后 8 个为功能键 F0~F7,当然这8个按键也可以当普通按键使用。

本文分两部分介绍这两部分驱动的说明。

1.1. 芯片引脚图

图 芯片引脚图

1.2. 参考原理图

图 参考原理图

1.3. 按键相关寄存器:

芯片I2C从机地址

1.4. 按键相关寄存器:

键值寄存器 Key(地址: 01H)

如果某个普通键(图 3.1 中的 K1~K56)被按下,则微控制器可以从键值寄存器 Key中读取相应的键值 1~56。如果微控制器发现 ZLG7290B 的 INT 引脚产生了中断请求,而从Key 中读到的键值是 0,则表示按下的可能是功能键。键值寄存器 Key 的值在被读走后自动变成 0。

功能键寄存器 FunctionKey(地址: 03H)

ZLG7290B 还提供有 8 个功能键(图 3.1 中的 F0~F7)。功能键常常是配合普通键一起使用的,就像电脑键盘上的 Shift、 Ctrl 和 Alt 键。当然功能键也可以单独去使用,就像电脑键盘上的 F1~F12。当按下某个功能键时,在 INT 引脚也会像按普通键那样产生中断信号。功能键的键值是被保存在 FunctionKey 寄存器中的。功能键寄存器 FunctionKey 的初始值是FFH,每一个位对应一个功能键,第 0 位( LSB)对应 F0,第 1 位对应 F1,依次类推,第 7位( MSB)对应 F7。某一功能键被按下时,相应的 FunctionKey 位就清零。功能键还有一个特性就是“二次中断”,按下时产生一次中断信号,抬起时又会产生一次中断信号;而普通键只会在被按下时产生一次中断。

1.5. 数码管相关寄存器:

显示缓冲区 DpRam0~DpRam7(地址: 10H~17H)

DpRam0~DpRam7 这 8 个寄存器的取值直接决定了数码管的显示内容。每个寄存器的8 个位分别对应数码管的 a,b,c,d,e,f,dp 段, MSB 对应 a, LSB 对应 dp。例如大写字母 H 的字型数据为 6EH(不带小数点)或 6FH(带小数点)。

图一 数码管段位定义

显示编码表

上一篇:协调器还是终端设备?

下一篇:Linux下编写zlg7290驱动(2)--键盘驱动编写

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部