三、驱动源码
#include "tm1652.h"
void tm1652_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_10);
}
void tm1652_send_data(u8 sdat)
{
unsigned char i=0, sfalg=0;
//起始位
TX=1; TX=0; delay_us(52); //保持52us
//发送8位数据
for(i=0; i<8; i++)
{
if(sdat & 0x01)
{
TX=1;
sfalg++;
}else
{
TX=0;
}
delay_us(52);
sdat >>=1;
}
//校验位,按照发送数据中1的个数来判断
if(sfalg%2==0)
{
TX=1;
}
else
{
TX=0;
}
delay_us(52);
//停止位
TX=1; delay_us(52);
}
|