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

相关推荐
普中科技15 分钟前
【普中51单片机开发攻略--基于普中-2&普中-3&普中-4】-- 第 8 章 51 单片机工程模板创建
单片机·嵌入式硬件·51单片机·keil·普中科技·工程模版
强化学习与机器人控制仿真2 小时前
ProtoMotions 3 入门教程(一)开源 GPU 加速人形机器人强化学习仿真训练框架
人工智能·stm32·深度学习·机器人·强化学习·人形机器人·模仿学习
请叫我7plus2 小时前
用QEMU进行嵌入式Linux开发
linux·驱动开发·嵌入式硬件
d111111111d2 小时前
锁相环是什么,为什么可以用来放大时钟频率,怎么做到的,还有预分频起,为什么可以进行分频和倍频?
笔记·stm32·单片机·嵌入式硬件·学习
1379号监听员_5 小时前
hc05蓝牙模块
stm32·单片机·物联网
error:(5 小时前
【保姆级】WSL 2 中使用 PlatformIO 开发 ESP32 完整教程
stm32·单片机·嵌入式硬件
就是蠢啊5 小时前
51单片机——DS18B02(二)
单片机·嵌入式硬件·51单片机
沧海一条狗5 小时前
Ecat从站SSC代码与GD32H75E接口的适配注意事项
单片机·嵌入式硬件
minglie16 小时前
clion+RP2040-Zero的ws2812
单片机
2401_853448236 小时前
QT控制----单片机控制外设项目
stm32·qt·uart