Linux下编写zlg7290驱动(1)

发布时间:2024年01月14日

大家好,今天给大家介绍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.?芯片引脚图

图?芯片引脚图

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

图一?数码管段位定义

显示编码表

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

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

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

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

文章来源:https://blog.csdn.net/D_ovis/article/details/135590644
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。