TA6932介绍
8段16位,支持共阴共阳LED数码管。
2、STM32CUBEMX配置引脚
推挽配置即可。
3、头文件
/********************************************************************************************
* TA6932:8段16位数码管驱动
*********************************************************************************************/#ifndef __TA6932_H
#define __TA6932_H#include "main.h"typedef enum
{LEV_0 = 0x80,LEV_1 = 0x88,LEV_2 = 0x89,LEV_3 = 0x8a,LEV_4 = 0x8b,LEV_5,LEV_6,LEV_7,LEV_8,
}lightLevType_E;void TA6932_Init(void);
void TA6932_LightLevel(lightLevType_E _eLev);
void TA6932_Disp(uint8_t *_ucPtr,uint8_t _ucLenth);
#endif
4、C文件
#include "ta6932.h"/********************************************************************************************
* 共阴极数码管段码
*********************************************************************************************/
const uint8_t SEG_CODE[23] =
{0x3f,/*0*/0x06,/*1*/0x5b,/*2*/0x4f,/*3*/0x66,/*4*/0x6d,/*5*/0x7d,/*6*/0x07,/*7*/0x7f,/*8*/0x6f,/*9*/0xBf,/*0.*/0x86,/*1.*/0xDb,/*2.*/0xCf,/*3.*/0xE6,/*4.*/0xEd,/*5.*/0xFd,/*6.*/0x87,/*7.*/0xFf,/*8.*/0xEf,/*9.*/ 0x00,/*熄灭*/0X40,/*-*/0X61,/*℃*/
};#define TA6932_CLK(x) HAL_GPIO_WritePin(TA6932_CLK_GPIO_Port,TA6932_CLK_Pin,(GPIO_PinState)(x))
#define TA6932_DIN(x) HAL_GPIO_WritePin(TA6932_DIN_GPIO_Port,TA6932_DIN_Pin,(GPIO_PinState)(x))
#define TA6932_STB(x) HAL_GPIO_WritePin(TA6932_STB_GPIO_Port,TA6932_STB_Pin,(GPIO_PinState)(x))static void TA6932_WriteByte(uint8_t _ucData)
{uint8_t i;for(i=0; i<8; i++){TA6932_CLK(1);if(_ucData & 0x01){TA6932_DIN(1);}else{TA6932_DIN(0);}TA6932_CLK(0);_ucData >>= 1;}TA6932_CLK(1);
}/********************************************************************************************
* 说明:TA6932初始化
*********************************************************************************************/
void TA6932_Init(void)
{TA6932_CLK(1);TA6932_STB(1);TA6932_DIN(1);HAL_Delay(10);TA6932_STB(0);TA6932_WriteByte(0x40);/*地址自增模式*/TA6932_STB(1);TA6932_STB(0);TA6932_WriteByte(0x8f);/*亮度最大*/TA6932_STB(1);}/********************************************************************************************
* 说明:TA6932亮度设置
* 输入:_eLev
*********************************************************************************************/
void TA6932_LightLevel(lightLevType_E _eLev)
{TA6932_STB(0);TA6932_WriteByte(_eLev);/*亮度设置*/TA6932_STB(1);
}/********************************************************************************************
* 说明:TA6932显示一串字符,从地址00开始
*********************************************************************************************/
void TA6932_Disp(uint8_t *_ucPtr,uint8_t _ucLenth)
{uint8_t i;TA6932_STB(0);TA6932_WriteByte(0x40);/*地址自增模式*/TA6932_STB(1);TA6932_STB(0);TA6932_WriteByte(0xc0);/*设置起始地址为0x00*/for(i=0; i<_ucLenth; i++){TA6932_WriteByte(SEG_CODE[*_ucPtr]);/*显示段码*/_ucPtr++;}TA6932_STB(1);
}
5、使用注意
1、使用TA6932_Init进行初始化
2、使用TA6932_Disp(uint8_t *_ucPtr,uint8_t _ucLenth)进行显示,_upPtr指针指向段码,_ucLenth为显示长度,不超过16位。