STM32使用HAL库驱动TA6932数码管驱动芯片

TA6932介绍

8段16位,支持共阴共阳LED数码管。

2、STM32CUBEMX配置引脚

推挽配置即可。

3、头文件

c 复制代码
/********************************************************************************************
* 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文件

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位。

相关推荐
清风66666620 分钟前
基于STM32单片机的无线鼠标设计
stm32·单片机·计算机外设·毕业设计·课程设计
XINVRY-FPGA3 小时前
XCVP1902-2MSEVSVA6865 AMD 赛灵思 XilinxVersal Premium FPGA
人工智能·嵌入式硬件·神经网络·fpga开发·云计算·腾讯云·fpga
一支闲人4 小时前
STM32新建工程
stm32·基础知识·适用于新手小白·新建工程
hazy1k4 小时前
STM32H750 I2C介绍及应用
stm32·单片机·嵌入式硬件
路弥行至5 小时前
从0°到180°,STM32玩转MG996R舵机
c语言·数据库·stm32·单片机·嵌入式硬件·mcu·mongodb
达不溜的日记7 小时前
ADC模数转换器详解(基于STM32)
stm32·单片机·嵌入式硬件·信息与通信·信号处理
明月清了个风7 小时前
STM32初始化串口重定向后printf调试信息不输出的问题
stm32·单片机·fpga开发·嵌入式软件
nnerddboy7 小时前
Linux嵌入式自学笔记(基于野火EBF6ULL):1.配置环境
linux·笔记·单片机·嵌入式硬件
点灯小铭7 小时前
基于MATLAB的车牌识别系统
开发语言·单片机·数码相机·matlab·毕业设计·课程设计
蜀黍@猿8 小时前
【GD32】ROM Bootloader、自定义Bootloader区别
单片机·嵌入式硬件