stm32数码管显示数字/循环
数码管参数
"NixieLight.h"
#ifndef __NIXIELIGHT_H
#define __NIXIELIGHT_H#define NixieLight_A GPIO_Pin_7
#define NixieLight_B GPIO_Pin_0
#define NixieLight_C GPIO_Pin_4
#define NixieLight_D GPIO_Pin_2
#define NixieLight_E GPIO_Pin_1
#define NixieLight_F GPIO_Pin_6
#define NixieLight_G GPIO_Pin_5
#define NixieLight_DP GPIO_Pin_3#define NixieLight_DIG1 GPIO_Pin_9
#define NixieLight_DIG2 GPIO_Pin_10
#define NixieLight_DIG3 GPIO_Pin_11
#define NixieLight_DIG4 GPIO_Pin_8#define NixieLight_Circle_DelayTime 30
void NixieLight_Init(void);
void NixieLight_Set(unsigned short int NixieLight_DIG,char bIsDIGOpened,unsigned int num);
void NixieLight_Circle(void);
void NixieLight_OpenPower(int power1,int power2,int power3,int power4);
void NixieLight_CloseAllLight(void);
#endif
"NixieLight.c"
#include"NixieLight.h"
#include "stm32f10x.h"
#include "Delay.h"
unsigned short int NixieLight_DIG[]={NixieLight_DIG1,NixieLight_DIG2,NixieLight_DIG3,NixieLight_DIG4};
void NixieLight_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_OD;GPIO_InitStruct.GPIO_Pin=NixieLight_A|NixieLight_B|NixieLight_C|NixieLight_D|NixieLight_E|NixieLight_F|NixieLight_G|NixieLight_DP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin=NixieLight_DIG1|NixieLight_DIG2|NixieLight_DIG3|NixieLight_DIG4;
GPIO_Init(GPIOA,&GPIO_InitStruct);return;
}
void NixieLight_CloseAllPower(void){GPIO_WriteBit(GPIOA,NixieLight_DIG1,RESET);GPIO_WriteBit(GPIOA,NixieLight_DIG2,RESET);GPIO_WriteBit(GPIOA,NixieLight_DIG3,RESET);GPIO_WriteBit(GPIOA,NixieLight_DIG4,RESET);
}
void NixieLight_OpenPower(int power1,int power2,int power3,int power4){if(0==power1){GPIO_WriteBit(GPIOA,NixieLight_DIG1,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG1,SET);}if(0==power2){GPIO_WriteBit(GPIOA,NixieLight_DIG2,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG2,SET);}if(0==power3){GPIO_WriteBit(GPIOA,NixieLight_DIG3,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG3,SET);}if(0==power4){GPIO_WriteBit(GPIOA,NixieLight_DIG4,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG4,SET);}return;
}
void NixieLight_CloseAllLight(void){GPIO_WriteBit(GPIOA,NixieLight_A,SET);GPIO_WriteBit(GPIOA,NixieLight_B,SET);GPIO_WriteBit(GPIOA,NixieLight_C,SET);GPIO_WriteBit(GPIOA,NixieLight_D,SET);GPIO_WriteBit(GPIOA,NixieLight_E,SET);GPIO_WriteBit(GPIOA,NixieLight_F,SET);GPIO_WriteBit(GPIOA,NixieLight_G,SET);GPIO_WriteBit(GPIOA,NixieLight_DP,SET);return;
}
void NixieLight_Circle(void){NixieLight_OpenPower(1,1,0,0);
NixieLight_CloseAllLight();for(int i=0;i<2;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_A,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,1,1,0);NixieLight_CloseAllLight();for(int i=1;i<3;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_A,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,0,1,1);NixieLight_CloseAllLight();for(int i=2;i<4;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_A,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,0,0,1);NixieLight_CloseAllLight();for(int i=3;i<4;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,0,0,1);NixieLight_CloseAllLight();for(int i=3;i<4;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,0,0,1);NixieLight_CloseAllLight();for(int i=3;i<4;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,0,1,1);NixieLight_CloseAllLight();for(int i=2;i<4;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_D,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(0,1,1,0);NixieLight_CloseAllLight();for(int i=1;i<3;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_D,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(1,1,0,0);NixieLight_CloseAllLight();for(int i=0;i<2;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_D,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(1,0,0,0);NixieLight_CloseAllLight();for(int i=0;i<1;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_E,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(1,0,0,0);NixieLight_CloseAllLight();for(int i=0;i<1;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_F,RESET);GPIO_WriteBit(GPIOA,NixieLight_E,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();NixieLight_OpenPower(1,0,0,0);NixieLight_CloseAllLight();for(int i=0;i<1;++i){GPIO_WriteBit(GPIOA,*(NixieLight_DIG+i),SET);}GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);Delay_ms(NixieLight_Circle_DelayTime);NixieLight_CloseAllPower();}
void NixieLight_Set(unsigned short int NixieLight_DIG,char bIsDIGOpened,unsigned int num){GPIO_WriteBit(GPIOA,NixieLight_A,SET);GPIO_WriteBit(GPIOA,NixieLight_B,SET);GPIO_WriteBit(GPIOA,NixieLight_C,SET);GPIO_WriteBit(GPIOA,NixieLight_D,SET);GPIO_WriteBit(GPIOA,NixieLight_E,SET);GPIO_WriteBit(GPIOA,NixieLight_F,SET);GPIO_WriteBit(GPIOA,NixieLight_G,SET);GPIO_WriteBit(GPIOA,NixieLight_DP,SET);switch(NixieLight_DIG){case NixieLight_DIG1:{if(0==bIsDIGOpened){GPIO_WriteBit(GPIOA,NixieLight_DIG1,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG1,SET);}}break;case NixieLight_DIG2:{if(0==bIsDIGOpened){GPIO_WriteBit(GPIOA,NixieLight_DIG2,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG2,SET);}}break;case NixieLight_DIG3:{if(0==bIsDIGOpened){GPIO_WriteBit(GPIOA,NixieLight_DIG3,RESET);}else{GPIO_WriteBit(GPIOA,NixieLight_DIG3,SET);}}break;case NixieLight_DIG4:{if(0==bIsDIGOpened){GPIO_WriteBit(GPIOA,NixieLight_DIG4,RESET); }else{GPIO_WriteBit(GPIOA,NixieLight_DIG4,SET); }}break;default: break;}switch(num){case 0:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_E,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);}break;case 1:{GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);}break;case 2:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);GPIO_WriteBit(GPIOA,NixieLight_E,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);}break;case 3:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);}break;case 4:{GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);}break;case 5:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);}break;case 6:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);GPIO_WriteBit(GPIOA,NixieLight_E,RESET);}break;case 7:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);}break;case 8:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_E,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);}break;case 9:{GPIO_WriteBit(GPIOA,NixieLight_A,RESET);GPIO_WriteBit(GPIOA,NixieLight_B,RESET);GPIO_WriteBit(GPIOA,NixieLight_C,RESET);GPIO_WriteBit(GPIOA,NixieLight_D,RESET);GPIO_WriteBit(GPIOA,NixieLight_F,RESET);GPIO_WriteBit(GPIOA,NixieLight_G,RESET);}break;default:break;}return;
}