8片74hc164级联数码管显示
extern u8 LED_DIS[8];//数码管显示数组
extern u8 Table[];//数码管段码表
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB, ENABLE); //使能PA,PD端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //LED_Start-->PC6 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOC6
GPIO_SetBits(GPIOC,GPIO_Pin_6); //PC6 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_14; //U0_A&&U0_B-->PB15,CLK-->PB14端口配置
GPIO_Init(GPIOB, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOB,GPIO_Pin_15); //PD.2 输出高
GPIO_SetBits(GPIOB,GPIO_Pin_14); //PD.2 输出高
}
//传入数据
void write_164(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
LED_CLK=0;
if(dat&0x80)
LED_UAB = 1;//由32的io控制芯片的A、B引脚
else
LED_UAB = 0;
LED_CLK=1;
dat<<=1;
}
}
```
void LED_Display(void)
{
unsigned char i=0;
LED_DIS[0] = para[3]%10;
LED_DIS[1] = para[3]/10%10;//音乐led
LED_DIS[2] = para[2]%10;
LED_DIS[3] = para[2]/10%10;//处方led
LED_DIS[4] = para[1]%10;
LED_DIS[5] = para[1]/10%10;//角度led
LED_DIS[6] = para[0]%10;
LED_DIS[7] = para[0]/10%10;//时间led
for(i=0;i<8;i++)
{
write_164(Table[LED_DIS[i]]);
}
}