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