当前位置: 首页 > news >正文

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;	
}

相关文章:

  • 【Redis】Another Redis Desktop Manager 安装指南
  • podman/docker国内可用的docker镜像源(2025-05)
  • Linux btop 使用教程
  • Wireshark抓取SMTP协议报文
  • 如何提升自我执行力?
  • Linux51 安装baidunetdisk yum install rpm -ivh
  • 中科院:通过内部表示优化LLM上下文利用
  • 图解 Git 工作流:理解 Rebase、Merge 与 Pull Request 的区别
  • 21 课时精通生成式 AI:微软官方入门指南详解
  • 【设计模式】GoF设计模式之备忘录模式(Memento Pattern)
  • LTspice
  • 【软件设计师:复习】上午题核心知识点总结(二)
  • 大模型蒸馏技术
  • 【业务领域】电脑主板芯片电路结构
  • (持续更新)Ubuntu搭建LNMP(Linux + Nginx + MySQL + PHP)环境
  • 网络安全知识问答微信小程序的设计与实现
  • ProCCD:复古CCD相机应用,重现经典胶片感
  • Java 进阶--集合:告别数组的“僵硬”,拥抱灵活的数据容器
  • VSCode开发调试Python入门实践(Windows10)
  • C#实现主流PLC读写工具类封装
  • 网站开发实践实验报告/建站 seo课程
  • 网页网站怎么做/深圳网站建设找哪家公司好
  • 重庆市工信部网站/汕头网站建设方案推广
  • ps和dw怎么做网站/在线seo短视频
  • 本地网站建设电话/北京seo技术
  • 公司网站建设公司排名/网络推广渠道排名