Linux下编写zlg7290驱动(1)

大家好,今天给大家介绍Linux下编写zlg7290驱动(1),文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。

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

Linux下编写zlg7290驱动(1)_第1张图片

图 芯片引脚图

1.2. 参考原理图

Linux下编写zlg7290驱动(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驱动(1)_第3张图片

图一 数码管段位定义

显示编码表

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,

差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理免费领取)

扫码进群领资料icon-default.png?t=N7T8https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html

Linux下编写zlg7290驱动(1)_第4张图片

你可能感兴趣的:(linux,运维,服务器)