基于stm32智能时钟的实践(4) --- TM1638的运用

1 前言

在前面的3节中,我已将基本完成了智能时钟的相关的功能,在功能中,我们需要用到的按键数码管都是一笔带过的,没有细加说明,那么在这一节中,我将进入TM1638的世界.

2 TM1638简介

TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集
成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、
空调 、家庭影院等产品的高段位显示屏驱动。\
管脚定义

 

管脚功能说明

 

3 具体代码操作

 3.1 给TM1638写入和读取数据

        在我们的实际操作过程中,我们首先应该想到的就是如何给一个外设写入和读取数据,中间的时序规则如何,首先要可以读和写,在来考虑如何读写可以达到我们的需求和目的.在运用TM1638的时候我们将通过写入数据控制数码管和LED灯,通过读取数据捕获哪个按键按下.

如图所示就是写入和读取数据的串行数据传输格式 

格式十分简单

写入及在STB的低电平开始操作,CLK的上升沿读取数据,参考代码如下所示

/**
 * @brief 给TM1638写入数据
 * @param byte-写入的数据
 * @retval 
 */
void TM1638_Write_Byte(uint8_t byte) 
{
    uint8_t Count;
    for(Count = 0; Count < 8; Count++)
    {
        CLK_0();         //在时钟的上升沿写入数据
        if(byte & 0x01)
        {
            DIO_1(); 
        }
        else
        {
            DIO_0(); 
        }
        byte >>= 1;        //8位全部读取
        CLK_1();  		 //在时钟的上升沿写入数据
    }
}

/**
 * @brief 给TM1638写入数据(或者命令)
 * @param byte-写入的数据
 * @retval 
 */
void TM1638_Write_Data(uint8_t data) //TM1638写数据函数
{
    STB_0();                
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值