基于MM32F0010A单片机的tm1624驱动程序
时间: 2023-11-26 07:02:47 浏览: 83
以下是基于MM32F0010A单片机的tm1624驱动程序示例代码:
```
#include "MM32F0010.h"
#define SDA_PORT GPIOA
#define SDA_PIN GPIO_Pin_5
#define SCL_PORT GPIOA
#define SCL_PIN GPIO_Pin_6
#define TM1624_CMD1 0x8a
#define TM1624_CMD2 0x40
void TM1624_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SDA_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SCL_PIN;
GPIO_Init(SCL_PORT, &GPIO_InitStructure);
}
void TM1624_SendByte(uint8_t data)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
if (data & 0x80)
GPIO_SetBits(SDA_PORT, SDA_PIN);
else
GPIO_ResetBits(SDA_PORT, SDA_PIN);
data <<= 1;
GPIO_SetBits(SCL_PORT, SCL_PIN);
GPIO_ResetBits(SCL_PORT, SCL_PIN);
}
}
void TM1624_WriteCmd(uint8_t cmd)
{
GPIO_ResetBits(SCL_PORT, SCL_PIN);
GPIO_ResetBits(SDA_PORT, SDA_PIN);
TM1624_SendByte(cmd);
GPIO_SetBits(SCL_PORT, SCL_PIN);
}
void TM1624_WriteData(uint8_t address, uint8_t data)
{
TM1624_WriteCmd(TM1624_CMD1);
TM1624_WriteCmd(address << 1);
TM1624_WriteCmd(data);
}
void TM1624_Clear(void)
{
uint8_t i;
TM1624_WriteCmd(TM1624_CMD1);
TM1624_WriteCmd(0x00);
for (i = 0; i < 16; i++)
TM1624_WriteData(i, 0x00);
}
int main(void)
{
TM1624_Init();
TM1624_Clear();
TM1624_WriteData(0, 0x01);
TM1624_WriteData(1, 0x02);
TM1624_WriteData(2, 0x03);
TM1624_WriteData(3, 0x04);
while (1)
{
}
}
```
该代码实现了对tm1624的初始化、发送字节、写入命令和数据、清屏等操作。需要注意的是,SDA和SCL的引脚需要根据实际连接进行修改。
阅读全文