如何用TA6932点亮8X8双色矩阵?(软件SPI通信)

一、软件流程(采用自动增加地址模式)

二、采用SPI通信,下面是程序代码

ta6932.h文件是关于软件SPI的引脚宏定义,可直接修改引脚进行移植

#ifndef TA6932_H
#define TA6932_H

#include "ta6932.h"
#include <stdint.h>

#define    RCU_SPI  RCU_GPIOA
#define    SPI_GPIOx    GPIOA
#define    SPI_GPIO_CS   GPIO_PIN_5      //片选
#define    SPI_GPIO_SCK     GPIO_PIN_1      //时钟
#define    SPI_GPIO_MOSI    GPIO_PIN_2      //输出

//SPI时钟    
#define 		SCK_L	   gpio_bit_write(SPI_GPIOx, SPI_GPIO_SCK, RESET)
#define 		SCK_H	   gpio_bit_write(SPI_GPIOx, SPI_GPIO_SCK, SET)

//SPI片选信号	
#define 		CS_L    gpio_bit_write(SPI_GPIOx, SPI_GPIO_CS, RESET)
#define 		CS_H    gpio_bit_write(SPI_GPIOx, SPI_GPIO_CS, SET)

//SPI输出
#define 		MOSI_L	gpio_bit_write(SPI_GPIOx, SPI_GPIO_MOSI, RESET)
#define 		MOSI_H	gpio_bit_write(SPI_GPIOx, SPI_GPIO_MOSI, SET)

void SPI_Init (void);
void TA6932_Writebyte (uint8_t byte);
void TA6932_Init(void);
void TA6932_Disp(uint8_t *p_data, int size);

#endif /* TA6932_H*/

ta6932.c文件是关于SPI引脚的初始化函数、TA6932发送数据的函数

#include "ta6932.h"

#include <stdio.h>
#include "gd32e23x.h"
#include "systick.h"
#include <stdint.h>

void SPI_Init (void)
{
	
	//CS、CLK、MOSI
	rcu_periph_clock_enable(RCU_SPI);
	
	gpio_mode_set(SPI_GPIOx, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, SPI_GPIO_CS|SPI_GPIO_SCK|SPI_GPIO_MOSI);
	
	gpio_output_options_set(SPI_GPIOx, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, SPI_GPIO_CS|SPI_GPIO_SCK|SPI_GPIO_MOSI);
	
  gpio_bit_write(SPI_GPIOx, SPI_GPIO_CS|SPI_GPIO_SCK|SPI_GPIO_MOSI, SET);
}

void TA6932_Writebyte (uint8_t byte)
{
	
		int bit_ctr;
   	for(bit_ctr=0;bit_ctr<8;bit_ctr++) 
   	{
			SCK_L;	
			if(byte & 0x01) MOSI_H; 		        
			else MOSI_L;
			byte = (byte >> 1); 			
			SCK_H;						
		  delay_us(2);										
		}	
		delay_us(2);		
			
}


void TA6932_Disp(uint8_t *p_data, int size)
{
  CS_H;
  SCK_H;
	MOSI_H;
	delay_us(2);
	
	CS_L;		
	TA6932_Writebyte (0X40);/*地址自增模式*/
	CS_H; 
	delay_us(2);	
	
	CS_L;	 	
	TA6932_Writebyte (0XC0);/*设置起始地址为00*/	
	for (int i = 0; i < size; i++) 
	{  
  TA6932_Writebyte(*(p_data+i));
  printf("*p_data=%x\r\n", *(p_data+i));//通过*,获取地址指向的内容,输出			
  printf("*p_data=%x\r\n", size);//通过*,获取地址指向的内容,输出					
	}
	CS_H; 
	delay_us(2);

	CS_L;		
	TA6932_Writebyte (0X8f);/*亮度最大*/	
	CS_H; 
	delay_us(2);	
}


主函数main.c

#include "gd32e23x.h"
#include "systick.h"
#include <stdio.h>
#include "ta6932.h"
#include "main.h"
#include "led.h"
#include "usart.h"

uint8_t data[]={0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF};
int size = sizeof(data) / sizeof(data[0]);


int main(void)
{
	systick_config();	//	初始化滴答定时器
	Led_Init ();
  SPI_Init ();
	USART1_Init ();
  TA6932_Disp(data, size);

	while(1)
	{
	
	}
}

要编写ta6932程序,首先需要了解ta6932是什么。ta6932是一款芯片或硬件设备,因此在编写程序之前,需要先了解它的规格、功能和对应的编程语言。 在开始编写程序之前,首先需要准备一个编程开发环境,例如Visual Studio、Arduino IDE等。然后,在选择适合的编程语言上,通常可以根据ta6932的规格手册或开发者指南来确定,常见的编程语言有C、C++、Python等。 接下来,就可以开始编写程序了。根据ta6932的功能和需求,可以按照以下步骤进行: 1. 导入ta6932相关的库或模块,以便可以使用其提供的功能和接口。 2. 初始化ta6932设备,例如设置通信接口、地址和其他必要的配置参数。 3. 根据需求进行数据的读取和写入操作。可以根据ta6932的规格书来了解其提供的功能和寄存器的映射关系,然后通过相应的函数或方法来访问和操作这些寄存器。 4. 进行逻辑控制和数据处理。根据需求,可以使用条件语句、循环结构等来进行逻辑判断和控制流程。 5. 最后,可以添加一些必要的错误处理和异常处理机制,以提高程序的稳定性和可靠性。 在编写程序的过程中,可以参考ta6932的规格书、示例代码和开发者社区的讨论,以获取更多的帮助和指导。此外,根据实际情况,可能还需要进行调试、测试和优化,以确保程序的正确性和性能。 总结来说,编写ta6932程序需要先了解其规格和功能,选择合适的编程语言和开发环境,然后按照步骤进行相关的设置和操作。在整个过程中,需要不断学习和探索,以提高编程技能和解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值