1 前言
在前面的3节中,我已将基本完成了智能时钟的相关的功能,在功能中,我们需要用到的按键数码管都是一笔带过的,没有细加说明,那么在这一节中,我将进入TM1638的世界.
2 TM1638简介
TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集
成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、
空调 、家庭影院等产品的高段位显示屏驱动。\
管脚定义
![](https://i-blog.csdnimg.cn/blog_migrate/703d477854001e0c5d3a0c6f3cb4f490.png)
管脚功能说明
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();