TA6932介绍
8段16位,支持共阴共阳LED数码管。
2、STM32CUBEMX配置引脚
推挽配置即可。文章来源:https://www.toymoban.com/news/detail-726393.html
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位。文章来源地址https://www.toymoban.com/news/detail-726393.html
到了这里,关于STM32使用HAL库驱动TA6932数码管驱动芯片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!