这里写自定义目录标题
#ifndef __MAIN_H
#define __MAIN_H
unsigned char SEG_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
0x38,0x30,0x76,0x74,0x3E,0x1C,0x37,0x54,0x73,0x73,0x1E,0x1E,0x3F,0x5C,0x6D,0x6D,
0x6E,0x6E,0x00,0x40,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char char_tab[]={"0123456789ABCDEFLlHhUuNnPpJjOoSsYy -abcdef"};
#endif
#include "./BSP/IIC/myiic.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/main.h"
void iic1_init(void)
{
GPIO_InitTypeDef gpio_init_struct;
IIC1_SCL_GPIO_CLK_ENABLE();
IIC1_SDA_GPIO_CLK_ENABLE();
gpio_init_struct.Pin = IIC1_SCL_GPIO_PIN;
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_OD;
gpio_init_struct.Pull = GPIO_PULLUP;
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(IIC1_SCL_GPIO_PORT, &gpio_init_struct);
gpio_init_struct.Pin = IIC1_SDA_GPIO_PIN;
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_OD;
HAL_GPIO_Init(IIC1_SDA_GPIO_PORT, &gpio_init_struct);
iic1_stop();
TM1650_cfg_display(0x51);
Clear();
}
void iic1_start(void)
{
IIC1_SCL(1);
IIC1_SDA(1);
delay_us(4);
IIC1_SDA(0);
delay_us(4);
IIC1_SCL(0);
}
void iic1_stop(void)
{
IIC1_SCL(0);
IIC1_SDA(0);
delay_us(4);
IIC1_SCL(1);
delay_us(4);
IIC1_SDA(1);
}
uint8_t iic1_wait_ack(void)
{
uint8_t rack = 0;
IIC1_SDA(1);
delay_us(2);
IIC1_SCL(1);
delay_us(2);
if (IIC1_READ_SDA) rack=1;
IIC1_SCL(0);
delay_us(2);
return rack;
}
void iic1_send_byte(uint8_t data)
{
uint8_t t;
IIC1_SCL(0);
for (t = 0; t < 8; t++)
{
IIC1_SDA(data & 0x80);
data <<= 1;
delay_us(2);
IIC1_SCL(1);
delay_us(2);
IIC1_SCL(0);
delay_us(2);
}
}
void icc1_Write_DATA(unsigned char add,unsigned char DATA)
{
iic1_start();
iic1_send_byte(add);
iic1_wait_ack();
iic1_send_byte(DATA);
iic1_wait_ack();
iic1_stop();
}
void TM1650_cfg_display(uint8_t param)
{
iic1_start();
iic1_send_byte(0x48); iic1_wait_ack();
iic1_send_byte(param); iic1_wait_ack();
iic1_stop();
}
void Clear(void)
{
unsigned char i;
for(i=0;i<4;i++)
{
icc1_Write_DATA(0x68+2*i,0);
}
}
void Disp_Char_Fix(unsigned char add,unsigned char dis_char)
{
unsigned char i,point_flag;
if(add>3) return;
point_flag=dis_char & point;
dis_char&=0x7f;
if(dis_char<0x10)
{
icc1_Write_DATA(0x68+2*add,SEG_CODE[dis_char]|point_flag);
}
else
{
for(i=0;i<sizeof(char_tab);i++)
if(char_tab[i]==dis_char)
icc1_Write_DATA(0x68+2*add,SEG_CODE[i]|point_flag);
}
}
void display(uint16_t date)
{
unsigned char i,t;
for(i=3;i>0;i--)
{
t=date%10;
Disp_Char_Fix(i,t);
date=(date-t)/10;
}
}
void Disp_Num(unsigned long Num)
{
unsigned char i=0;
if(Num>9999)return;
Clear();
do{Disp_Char_Fix(3-i,Num%10);Num/=10;i++;}while(Num>0);
}
#ifndef __MYIIC_H
#define __MYIIC_H
#include "./SYSTEM/sys/sys.h"
#define IIC1_SCL_GPIO_PORT GPIOB
#define IIC1_SCL_GPIO_PIN GPIO_PIN_6
#define IIC1_SCL_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)
#define IIC1_SDA_GPIO_PORT GPIOB
#define IIC1_SDA_GPIO_PIN GPIO_PIN_7
#define IIC1_SDA_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)
#define IIC1_SCL(x) do{ x ? \
HAL_GPIO_WritePin(IIC1_SCL_GPIO_PORT, IIC1_SCL_GPIO_PIN, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(IIC1_SCL_GPIO_PORT, IIC1_SCL_GPIO_PIN, GPIO_PIN_RESET); \
}while(0)
#define IIC1_SDA(x) do{ x ? \
HAL_GPIO_WritePin(IIC1_SDA_GPIO_PORT, IIC1_SDA_GPIO_PIN, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(IIC1_SDA_GPIO_PORT, IIC1_SDA_GPIO_PIN, GPIO_PIN_RESET); \
}while(0)
#define IIC1_READ_SDA HAL_GPIO_ReadPin(IIC1_SDA_GPIO_PORT, IIC1_SDA_GPIO_PIN)
#define point 0x80
void iic1_init(void);
void iic1_start(void);
void iic1_stop(void);
uint8_t iic1_wait_ack(void);
void iic1_send_byte(uint8_t data);
void icc_Write_DATA(unsigned char add,unsigned char DATA);
void TM1650_cfg_display(uint8_t param);
void Clear(void);
void Disp_Char_Fix(unsigned char add,unsigned char dis_char);
void display(uint16_t date);
void Disp_Num(unsigned long Num);
#endif