历史上的今天
返回首页

历史上的今天

今天是: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;

}


推荐阅读

史海拾趣

Hasco Relays and Electronics International Corp公司的发展小趣事

作为L3Harris Technologies的一部分,Harris(原Harris Corporation)在太空和航空领域也取得了重大突破。公司参与了多个太空任务和航空项目,为这些项目提供了先进的航天器和航空电子系统。这些系统不仅支持了复杂的航天任务,还提升了航空器的性能和安全性。L3Harris在太空和航空领域的持续投入和创新,为其在电子行业中的发展注入了新的动力。

Connor-Winfield公司的发展小趣事

随着全球经济的一体化,电子行业也逐渐呈现出全球化的趋势。Connor-Winfield敏锐地把握住了这一机遇,开始实施全球化战略。公司积极拓展海外市场,与多家国际知名企业建立了紧密的合作伙伴关系。这些合作不仅为公司带来了更多的商业机会,也使其在全球化竞争中保持了领先地位。

DB Lectro Inc公司的发展小趣事

随着公司业务的不断拓展和市场竞争的加剧,DB Lectro Inc意识到知识产权保护的重要性。公司加强了知识产权的申请和保护工作,成功申请了一系列技术专利。同时,公司还积极参与知识产权维权行动,维护了自身的合法权益和公平竞争的市场环境。

Essentra Components公司的发展小趣事

Essentra Components公司一直将客户服务放在首位,通过提供优质的售前咨询、售中支持和售后服务,赢得了客户的广泛赞誉。公司不仅为客户提供了丰富的产品选择,还根据客户的具体需求提供定制化的解决方案。此外,公司还建立了完善的物流配送体系,确保产品能够及时、准确地送达客户手中。这些努力使得Essentra Components在客户中树立了良好的口碑,为公司的发展奠定了坚实的基础。

ACL staticide公司的发展小趣事

作为一家有社会责任感的企业,Essentra Components公司积极履行社会责任,关注社会公益事业。公司定期参与各种慈善活动和社会公益活动,为当地社区的发展做出了积极贡献。此外,公司还注重员工的福利和培训发展,为员工提供了良好的工作环境和发展机会。这些举措不仅树立了企业的良好形象,还增强了企业的凝聚力和向心力。

请注意,以上故事是基于对Essentra Components公司业务特性和市场环境的理解而构想出来的,并非实际发生的事件。如有需要,建议直接联系Essentra Components公司或查阅相关资料以获取更准确的信息。

Degson Electronics Co Ltd公司的发展小趣事

Degson Electronics Co., Ltd.成立于1990年,当时主要专注于电子连接器的研发和生产。在初创阶段,公司面临了诸多挑战,包括资金短缺、市场竞争激烈以及技术壁垒等。然而,Degson凭借其创始团队对电子行业的深入理解和坚定信念,成功研发出了一系列高质量、性能稳定的电子连接器产品,并逐渐在市场上赢得了客户的认可。

问答坊 | AI 解惑

430汇编C混合编程

msp430,汇编和C语言混合编程。可以看看…

查看全部问答>

二极管的动作特性与应用

基础但是很实用,都是大师级的讲座 【目 录】: 1、二极管的动作原理 2、电阻与二极管构成的应用电路 3、电容与二极管构成的应用电路…

查看全部问答>

30GHz示波器助推高速串行信号测试迈入新时代

高速串行信号带来的测试挑战消费者对通信和计算机产品的要求越来越高,不断提升的速度、不断增长的容量,但却不能成正比变化的价格,成为用户决定是否掏钱购买新款产品的基本要求。这些来自终端客户的需求通过产业链逐级传递到产品研发工程师对测试 ...…

查看全部问答>

请教如何添加D类地址

别人配置的vxworks(PC104) 小弟的组播程序试了很久都不通(我门外汉),后来用ifShow 查 显示如下: fei (unit number 0):     Flags: (0x8063) UP BROADCAST RUNNING ARP MULTICAST     Type: ETHERNET_CSMACD   ...…

查看全部问答>

STM8S207跑24MHz不行,CPU只能2分频?why

//使用外部晶振24MHz,1分频跑不起来,2分频才可以正常工作,不知道哪设置问题 void Clk_Config(void) {     ErrorStatus val;     CLK_DeInit();     //CLK_HSECmd(ENABLE);     //CLK_SYSCLKC ...…

查看全部问答>

基于LM3S9B96的uCOS-II V2.86的移值

单任务:闪烁的LED;LED/IO:PF3;直接上程序:主要是参考基于LM3S9B92的uCOSII V2.86移植,希望对初学者有帮助吧!…

查看全部问答>

STM32智能卡问题

在STM32的串口智能卡模式中,应该如何连接,手册中说TX与SW_RX要连接在一起,那么SW_RX是那个引脚…

查看全部问答>

如何使用锂电池充放电管理IC AP5900A?

1、有人知道IC AP5900A适用于单节3.7V锂电池的充放电电路吗?规格书描述不是太清楚,最好能上参考设计电路; 2、有类似功能的IC可以满足单节3.7V锂电池充电管理和升压到5V功能输出? …

查看全部问答>

时序图与状态机的转化

梦翼师兄,我想问下一如何把时序图对应转化为状态机,我发现自己时序图能够看懂,但是不太会转化为状态机,请师兄指导一下…

查看全部问答>

STM32系统上晶振重要吗

自己搭建了STM一个最小系统 就一个芯片和导线什么也没有 试了下也没有不稳定  不知道除了倍频频率低一点 和频率精度不是很高  一般用用是不是可以   …

查看全部问答>