|
本帖最后由 慕名而来 于 2020-4-22 19:51 编辑
最近一直在玩数码管时钟,以前一直弄74LS164、74HC595驱动数码管,看到坛里有用到数码管专用驱动芯片的,春节过后就淘了几片TM1637来玩(注:TM1637的按键是有固定键值的,不在本文讨论的范围内),STC-mcu+TM1637+DS3231+4位1.5寸数码管的时钟程序完成后翻动破烂又找到了一个广电机顶盒的控制面板,是一片PT6964+4位集成数码管+6个按键的板子,这几天开始玩这几个按键发现百度资源极少,总结了一点心得分享给各位,对于用过这类芯片的大神而言都是浅显的东西,没有技术含量的,对于刚刚接触这些芯片的新手而言这类芯片的按键控制不同于TM1650、TM1637这些具有固定键值的芯片,尤其是PT6964仅看E文的数据手册可谓云里雾里(TM1627会好很多),希望此文能够对新手有用。
下图为PT6964关于按键寄存器的描述:
刚刚看到这个图片时,百思不得其解,一些相同的数据如何代表不同的按键呢?弄明白了以后才发现,与真相值隔了一张纸,最终得以破解是因为我重新画了一张图使得按键编码得以一目了然的呈现出来了。
见下图:
以下再简单的解释一下:
键值依按键连接端口不同分成5组,每组皆为4个键值:0x01、0x02、0x08、0x10;每个key[x]对应4个按键。例如:我们读取的数据为key[3]=0x02,那么就可以确认此时K2与KS7端口连接的按键被按下了。
每次发生按键动作并启动读取键值程序后都会读出5个数据并存入key[]数组中,此后可以根据某个key[x]值来判断该按键的接线位置,也可以根据已知接线的按键键值去比对key[x]值来判断该按键是否被按下。
例如:已知“加”按键KY1连接在K1与KS1接口上,“减”按键KY2连接在K2与KS4接口上,根据上述的图表即可知道KY1的值为0x01对应于key[0]、KY2值为0x10对应于key[1],读取键值后只要我们判断数组中的这两个数据与表中数据是否一致即可.
按键程序为:
if(key[0]==0x01)
{
KY1++;
}
或者:
if(key[1]==0x10)
{
KY2--;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|