STM32-4位数码管动态显示0~9999

本章是基于STM32F1xx来写的四位数码管动态显示,通过定时器实现每秒加一。

LED数码管有两大类,一类是共阴极接法,另一类是共阳极接法,共阴极就是7段的显示字码共用一个电源的负极,是高电平点亮,共阳极就是7段的显示字码共用一个电源的正极,是低电平点亮。只要控制其中各段LED的亮灭即可显示相应的数字、字母或符号。
共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已,共阴为所有的LED负极接在一起,共阳为为所有的LED正极接在一起。

共阳极数码管编码表(0~F):
unsigned char code smg[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
共阴极数码管编码表(0~F):
unsigned char code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 

 Pproteus8进行仿真

数码管选段
uint8_t WEI_tab[]={0x0e,0x0d,0x0b,0x07};//1110,1101,1011,0111
延迟函数
void delay(unsigned int ms)
{
   unsigned int i,j;
   for(i=ms;i>0;i--)
    for(j=150;j>0;j--);
}
数码管显示代码
void display()
 {
    unsigned int shi,ge,bai,qian;
	ge=Num%1000%100%10;;
	shi=Num%1000%100/10;
	bai=Num%1000/100;;
	qian=Num/1000;
		 GPIOC->ODR=(GPIOC->ODR & 0xfffff000) | SEG_tab_CC[ge] | WEI_tab[3]<<8;
   	 delay(20);
	 	 GPIOC->ODR=(GPIOC->ODR & 0xfffff000) | SEG_tab_CC[shi] | WEI_tab[2]<<8;
   	 delay(20);
		 GPIOC->ODR=(GPIOC->ODR & 0xfffff000) | SEG_tab_CC[bai] | WEI_tab[1]<<8;
   	 delay(20);
		GPIOC->ODR=(GPIOC->ODR & 0xfffff000) | SEG_tab_CC[qian] | WEI_tab[0]<<8;
		 delay(20);
 }

物联沃分享整理
物联沃-IOTWORD物联网 » STM32-4位数码管动态显示0~9999

发表评论