u8 NixieLED[4] = {0,0,0,0};
uint8_t LED_0F[] =
{// 0 1 2 3 4 5 6 7 8 9 A b C d E F -
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
};
void LED595_100uSTask(void);
void LED595_10MSTask(void);
void LED595_100MSTask(void);
void LED595_1STask(void);
void HostIIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
SCLK = 1;
DIO = 1;
RCLK = 1;
}
void LED_OUT(u8 X)
{
u8 i;
for(i=8;i>=1;i--)
{
if (X&0x80) DIO=1; else DIO=0;
X<<=1;
SCLK = 0;
SCLK = 1;
}
}
void LED4_Display (void)
{
u8 *led_table; // 查表指针
u8 i;
//显示第1位
led_table = LED_0F + NixieLED[0];
i = *led_table;
LED_OUT(i);
LED_OUT(0x01);
RCLK = 0;
RCLK = 1;
//显示第2位
led_table = LED_0F + NixieLED[1];
i = *led_table;
LED_OUT(i);
LED_OUT(0x02);
RCLK = 0;
RCLK = 1;
//显示第3位
led_table = LED_0F + NixieLED[2];
i = *led_table;
LED_OUT(i);
LED_OUT(0x04);
RCLK = 0;
RCLK = 1;
//显示第4位
led_table = LED_0F + NixieLED[3];
i = *led_table;
LED_OUT(i);
LED_OUT(0x08);
RCLK = 0;
RCLK = 1;
}
void LED595_TaskManage(uint8_t TaskPeriod)
{
switch (TaskPeriod)
{
case SYSCLOCK_1MS:
LED595_100uSTask();
break;
case SYSCLOCK_10MS:
LED595_10MSTask();
break;
case SYSCLOCK_100MS:
LED595_10MSTask();
break;
case SYSCLOCK_1S:
LED595_100MSTask();
break;
default:break;
}
}
void LED595_100uSTask(void)
{
LED4_Display();
}
void LED595_10MSTask(void)
{
}void LED595_100MSTask(void)
{
}void LED595_1STask(void)
{
}
数码管74HC595驱动
最新推荐文章于 2024-02-28 06:00:00 发布