数码管显示

实验目的: 弄清楚数码管原理, 掌握两位数及三位数码管的显示即动态扫描.

代码:

#include "stm32f10x.h"

int main()
{
 u32 i,m,k,j;
u32 a[10] = {0xc0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
//共阳极数码管编码表0-9
 GPIO_InitTypeDef GPIO_InitStructure;                 //结构体初始化
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);     									//配置GPIOA 的引脚
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//设置50m速度
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;		
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		//推挽式输出
 GPIO_Init(GPIOA, &GPIO_InitStructure);					//初始化

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);   //打开GPIOA的引脚
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//50m的速度
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_All; //配置引脚
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		//推挽式输出
 GPIO_Init(GPIOB, &GPIO_InitStructure);					//初始化

//GPIO_SetBits(GPIOA,GPIO_Pin_All);
//GPIO_ResetBits(GPIOA,GPIO_Pin_0);
//GPIO_Write(GPIOB,a[0]);
	GPIO_SetBits(GPIOB,GPIO_Pin_All);                  //置1 GPIOB 
while(1)    																					
{
	for(m=0;m<10;m++)                                                  //十位数循环
	for(i=0;i<10;i++) 																								//个位数循环
	for(k=0;k<1000;k++)																								//循环以便辅助显示

{
	for(j=0;j<1000;j++)																							//	循环显示
{
		
GPIO_Write(GPIOA,a[m]);																						//写、关,开
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
for(j=0;j<5000;j++);}			//延迟


	for(j=0;j<1000;j++)         //循环显示
{
	

	GPIO_ResetBits(GPIOB,GPIO_Pin_1);   //  写、关、开

	GPIO_Write(GPIOA,a[i]);
	GPIO_SetBits(GPIOB,GPIO_Pin_0);
	for(j=0;j<5000;j++); 				//延迟
	}
GPIO_SetBits(GPIOB,GPIO_Pin_1);		   //关闭

	

	

	
}
  

}

}

猜你喜欢

转载自blog.csdn.net/qqGHJ/article/details/81264396