历史上的今天
今天是:2025年02月20日(星期四)
2020年02月20日 | 单片机驱动LED数码管,按键TM1638芯片学习心得
2020-02-20 来源:51hei
TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。
因为步进电机实验需要用到按键,但家有婴儿,没用松香铬铁之类的(技术早就还给老师了,也没有条件
),只好在网上找,找到一个由TM1638做成的成品,感觉做工还不错,就买了一个,但其带的程序一时没看懂,花了些时间进行学习,觉得好精妙,就想分享一下。
绝不是给别人打广告,这程序确实我理解了很久。
附件是它完整的程序。
调用实现程序主要是显示与按键值获取。
1.显示:
为什么是0xc0|add呢?
因为芯片说明有:高位都是11, 就是C了。
void Write_DATA(unsigned char add,unsigned char DATA) //指定地址写入数据
{
Write_COM(0x44);
STB=0;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB=1;
}
2.按键获取:
注意这儿是从低位开始读的, 理解 的时候把B0~B7反过来理解就更好理解下面这个按键程序。在这儿花了很多时间来想这个。得到的 i 值就是按的第几个键。这儿真的这个程序写得太妙了,这个大神绝对的高手。
单片机程序
unsigned char Read_key(void)
{
unsigned char c[4],i,key_value=0;
STB=0;
TM1638_Write(0x42); //读键扫数据 命令
for(i=0;i<4;i++)
c[i][i]=TM1638_Read();
STB=1; //4个字节数据合成一个字节
for(i=0;i<4;i++)
key_value|=c[i][i]< for(i=0;i<8;i++)
if((0x01< break;
return i;
}
上一篇:42步进电机控制单片机程序
史海拾趣
|
高速串行信号带来的测试挑战消费者对通信和计算机产品的要求越来越高,不断提升的速度、不断增长的容量,但却不能成正比变化的价格,成为用户决定是否掏钱购买新款产品的基本要求。这些来自终端客户的需求通过产业链逐级传递到产品研发工程师对测试 ...… 查看全部问答> |
|
别人配置的vxworks(PC104) 小弟的组播程序试了很久都不通(我门外汉),后来用ifShow 查 显示如下: fei (unit number 0): Flags: (0x8063) UP BROADCAST RUNNING ARP MULTICAST Type: ETHERNET_CSMACD   ...… 查看全部问答> |
|
//使用外部晶振24MHz,1分频跑不起来,2分频才可以正常工作,不知道哪设置问题 void Clk_Config(void) { ErrorStatus val; CLK_DeInit(); //CLK_HSECmd(ENABLE); //CLK_SYSCLKC ...… 查看全部问答> |
|
单任务:闪烁的LED;LED/IO:PF3;直接上程序:主要是参考基于LM3S9B92的uCOSII V2.86移植,希望对初学者有帮助吧!… 查看全部问答> |
|
1、有人知道IC AP5900A适用于单节3.7V锂电池的充放电电路吗?规格书描述不是太清楚,最好能上参考设计电路; 2、有类似功能的IC可以满足单节3.7V锂电池充电管理和升压到5V功能输出? … 查看全部问答> |




