初始化
void SEG_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//ʹÄÜGPIOEʱÖÓ
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//ÆÕͨÊä³öģʽ
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//ÉÏÀ
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//100MHz
GPIO_Init(GPIOE,&GPIO_InitStructure);//³õʼ»¯
GPIO_SetBits(GPIOE,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
}
数码管显示:
void SEG_display(int n)
{
if(n<9999)
{
int i,s,a;
s=n;
w=GPIO_Pin_3;
for(i=0;i<4;i++)
{
GPIO_SetBits(GPIOE,GPIO_Pin_All);
GPIO_ResetBits(GPIOE,w);
w>>=1;
a=seg_8[s%10];
SEG_Data_Write(a);
s=s/10;
delay_ms(1);
}
}
}
数码管0~9显示
#define SEG_Data_Write(num) PEout(8)=(num&0x01);PEout(9)=(num>>1)&0x01;PEout(10)=(num>>2)&0x01;PEout(11)=(num>>3)&0x01;PEout(12)=(num>>4)&0x01;PEout(13)=(num>>5)&0x01;PEout(14)=(num>>6)&0x01;PEout(15)=(num>>7)&0x01;
u8 seg_8[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
主函数
int main(void)
{
SEG_Init();
delay_init(168);
while(1)
{
for(q=0;q<500;q++)SEG_display(q1);
for(q=0;q<500;q++)SEG_display(q2);
for(q=0;q<500;q++)SEG_display(q3);
while(1)
{
SEG_display(num);
q++;
if(q>50)
{
num++;
q=0;
}
}
}
}