TM1652.c
#include "tm1652.h"
#include "delay.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);
}
|