STM32F407ZET6驱动TM1637芯片程序,同时提供STM32和TM1637的接线图
时间: 2023-12-03 16:46:07 浏览: 76
以下是STM32F407ZET6驱动TM1637芯片的程序和接线图:
```c
#include "stm32f4xx.h"
#define CLK_PIN GPIO_Pin_13
#define CLK_PORT GPIOB
#define DIO_PIN GPIO_Pin_15
#define DIO_PORT GPIOB
void TM1637_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin = CLK_PIN | DIO_PIN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_SetBits(CLK_PORT, CLK_PIN);
GPIO_SetBits(DIO_PORT, DIO_PIN);
}
void TM1637_WriteByte(uint8_t data)
{
uint8_t i;
for(i = 0; i < 8; i++)
{
GPIO_ResetBits(CLK_PORT, CLK_PIN);
if(data & 0x01)
{
GPIO_SetBits(DIO_PORT, DIO_PIN);
}
else
{
GPIO_ResetBits(DIO_PORT, DIO_PIN);
}
data >>= 1;
GPIO_SetBits(CLK_PORT, CLK_PIN);
}
}
void TM1637_SetBrightness(uint8_t brightness)
{
TM1637_WriteByte(0x87 + brightness);
}
void TM1637_Display(uint8_t *data)
{
uint8_t i;
TM1637_WriteByte(0x40);
GPIO_ResetBits(CLK_PORT, CLK_PIN);
TM1637_WriteByte(0xc0);
for(i = 0; i < 4; i++)
{
TM1637_WriteByte(data[i]);
}
GPIO_SetBits(CLK_PORT, CLK_PIN);
}
int main(void)
{
uint8_t data[4] = {0x01, 0x23, 0x45, 0x67};
TM1637_Init();
TM1637_SetBrightness(0x08);
TM1637_Display(data);
while(1);
}
```
接线图如下:
|STM32F407ZET6|TM1637|
|:---:|:---:|
|PB13|CLK|
|PB15|DIO|
阅读全文