使用stm32f103zet6硬件IIC驱动ch455g显示数字并写好注释
时间: 2024-05-08 11:22:06 浏览: 144
以下是使用stm32f103zet6硬件IIC驱动ch455g显示数字的示例代码,已写好注释:
```
#include "stm32f10x.h"
#include "i2c.h"
#define CH455G_ADDRESS 0x78 // CH455G I2C地址
// 数字字形定义
const uint8_t num_map[] = {
0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6
};
// 发送一个字节到CH455G
void ch455g_send_byte(uint8_t data)
{
I2C_GenerateSTART(I2C1, ENABLE); // 发送起始位
while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); // 等待起始位发送成功
I2C_Send7bitAddress(I2C1, CH455G_ADDRESS, I2C_Direction_Transmitter); // 发送I2C地址
while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); // 等待I2C地址发送成功
I2C_SendData(I2C1, data); // 发送数据
while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); // 等待数据发送成功
I2C_GenerateSTOP(I2C1, ENABLE); // 发送停止位
}
// 显示一个数字
void ch455g_show_number(uint8_t num)
{
uint8_t data = num_map[num % 10]; // 取个位数字的字形
ch455g_send_byte(data); // 发送字形数据
}
int main(void)
{
// 初始化I2C
I2C_Configuration();
// 显示数字1
ch455g_show_number(1);
while (1);
}
```
需要注意的是,这里使用的是硬件I2C驱动,需要先在I2C驱动代码中配置好相关参数,详见 `i2c.h` 和 `i2c.c` 文件。另外,数字字形定义可以根据具体需求自行修改。
阅读全文