打印

Linux下如何编写zlg7290驱动 你造吗?

[复制链接]
310|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
车水马龙|  楼主 | 2018-8-22 12:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在智能仪表中,经常会用到键盘、数码管等外设。因此,一个稳定、占用系统资源少的人机对话通道设计非常重要。传统的键盘与数码管解决方案,由于键盘与数码管是分离的,因而电路连接比较复杂,不管是独立式键盘还是矩阵式键盘,都会浪费微控制器的端口资源,而且都需要人为进行去抖动处理,且抗干扰性差。而数码管部分,不管是静态显示方式还是动态显示方式,在不进行锁存器扩展的前提下。仍然要占用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. 芯片引脚图




<img id="aimg_P7y77"  class="zoom" file="http://top.embedu.org/uploads/allimg/1603/11-16030F9264AS.jpg"  lazyloadthumb="1" border="0" alt="" />

图 芯片引脚图




1.2. 参考原理图




<img id="aimg_ZvR9C"  class="zoom" file="http://top.embedu.org/uploads/allimg/1603/11-16030F92F4101.jpg"  lazyloadthumb="1" border="0" alt="" />

图 参考原理图




1.3. 按键相关寄存器:




芯片I2C从机地址




<img id="aimg_V3E7T"  class="zoom" width="228" height="54" file="http://top.embedu.org/uploads/allimg/1603/11-16030F92919452.jpg" border="0" alt="" />




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(带小数点)。




<img id="aimg_hP9Ns"  class="zoom" width="120" height="139" file="http://top.embedu.org/uploads/allimg/1603/11-16030F9312LP.jpg" border="0" alt="" />

图一 数码管段位定义




显示编码表




<img id="aimg_j733H"  class="zoom" file="http://top.embedu.org/uploads/allimg/1603/11-16030F93143S0.jpg"  lazyloadthumb="1" border="0" alt="" />

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

474

主题

476

帖子

0

粉丝