用C语言编写一个基于BAT32G135芯片实现I2C通讯方式驱动TM1651驱动LED不同亮度显示不同地址
时间: 2023-12-03 13:45:07 浏览: 59
首先,需要了解一些基本的知识:
1. BAT32G135芯片:这是一款基于ARM Cortex-M3内核的微控制器芯片,具有丰富的外设资源,包括多个UART、SPI、I2C等通信接口,可广泛应用于各种嵌入式系统中。
2. I2C通信:I2C是一种串行通信协议,采用双线传输数据,其中SCL线是时钟线,SDA线是数据线。在I2C通信中,每个设备都有一个唯一的地址,可以通过地址来寻址不同的设备。通常情况下,主机向从机发送数据,从机接收数据。
3. TM1651驱动芯片:这是一款专门用于LED数字显示的驱动芯片,支持4位7段LED数字显示,可以通过I2C接口进行控制。
基于以上的基础知识,我们可以编写以下的代码:
```c
#include "bat32g135.h"
#include "i2c.h"
#define TM1651_ADDR 0x24
void TM1651_Init(void)
{
uint8_t cmd[] = {0x8f, 0x01};
I2C_WriteBytes(I2C0, TM1651_ADDR, cmd, sizeof(cmd));
}
void TM1651_SetBrightness(uint8_t brightness)
{
uint8_t cmd[] = {0x87, brightness};
I2C_WriteBytes(I2C0, TM1651_ADDR, cmd, sizeof(cmd));
}
void TM1651_ShowNumber(uint16_t num)
{
uint8_t buf[4] = {0};
uint8_t i;
for (i = 0; i < 4; i++) {
buf[i] = num % 10;
num /= 10;
}
for (i = 0; i < 4; i++) {
buf[i] |= 0x80;
}
I2C_WriteBytes(I2C0, TM1651_ADDR, buf, sizeof(buf));
}
int main(void)
{
BAT32G135_Init();
I2C_Init(I2C0, 400000);
TM1651_Init();
TM1651_SetBrightness(3);
while (1) {
TM1651_ShowNumber(1234);
BAT32G135_DelayMs(1000);
TM1651_ShowNumber(5678);
BAT32G135_DelayMs(1000);
}
}
```
在上述代码中,我们使用了BAT32G135芯片的I2C0接口来控制TM1651驱动芯片。首先,我们需要调用TM1651_Init函数来初始化TM1651芯片,其中发送了0x8f和0x01两个字节,0x8f是命令字节,0x01是数据字节,用于设置TM1651的工作模式和时钟分频系数。然后,我们通过调用TM1651_SetBrightness函数来设置TM1651的亮度,其中发送了0x87和亮度值两个字节,0x87是命令字节,用于设置亮度。最后,我们通过调用TM1651_ShowNumber函数来显示一个四位数值,其中需要将数值转换为四个字节,并在每个字节的最高位设置为1,表示该字节为数码段的数据。
在main函数中,我们实现了一个简单的循环,每隔1秒钟切换显示不同的四位数值。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)