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

相关推荐
xu_wenming2 小时前
嵌入式软件架构中的6种解耦艺术
c语言·驱动开发·嵌入式硬件·架构
sramdram2 小时前
国产32位mcu微控制器高速风筒方案
单片机·嵌入式硬件·32位mcu·mcu微控制器·国产32位mcu
单片机仿真设计2 小时前
【proteus仿真】基于STM32单片机直流电机控制设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
天空'之城2 小时前
单片机基础核心知识点汇总(十八)
单片机·嵌入式硬件
736c3 小时前
STM32-看门狗 10
stm32·单片机
虎王物联3 小时前
工业Modbus TCP协议深度实战:STM32 HAL库实现从机通信与数据上云
stm32·物联网·网络协议·tcp/ip·嵌入式
luiyarch3 小时前
汽车电子ISO 26262功能安全系列(第17期):系统集成与测试——验证系统级安全机制
嵌入式硬件·安全·车载系统·汽车
DevHub6 小时前
CANopen 教程:STM32 实现 CANopen 从站,3 个回调替代手写对象字典
c语言·驱动开发·stm32·单片机·嵌入式硬件·mcu
单片机仿真设计8 小时前
【proteus仿真】基于 STM32 农业大棚巡检小车 (仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
Hello_Damon_Nikola10 小时前
AiP9M161个人护理产品方案从设计到实现
单片机·嵌入式硬件