蓝桥杯单片机学习过程记录(三)静态数码管

蓝桥杯单片机学习过程记录(三)静态数码管

单片机静态数码管

数码管0-9显示

//静态数码管0-9显示,led1亮
#include<STC15F2K60S2.H>
unsigned int seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0XBF};
unsigned int i;
void delayms(int ms);
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 //数码管初始化,打开第一个数码管
 P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
 for(i=0;i<11;i++){
   P0=seg[i];
   delayms(200);
 }
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 P01=0;
 while(1);
}
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}

按键+数码管显示

//按键+数码管显示
#include<STC15F2K60S2.H>
unsigned int tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0XBF};
unsigned int i,num;
void delayms(int ms);
void key_scan(void);
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 //数码管初始化,打开第一个数码管
 P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
 while(1){
  key_scan();
 }
}
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}
void key_scan(void){
 //s7为手动0-9显示
 if(P30==0){
  delayms(5);
  if(P30==0){
   num++;
   P0=tab[num];
   if(num==10)
    num=0;
  }
  //等待抬起
  while(!P30);
 }
 //s6为自动0-9显示
 else if(P31==0){
  delayms(5);
  if(P31==0){
   for(i=0;i<11;i++){
   P0=tab[i];
   delayms(200);
   }
  }
  while(!P31);  
 }
 //s5显示C
 else if(P32==0){
  delayms(5);
  if(P32==0) 
   P0=0XC6;
  while(!P32); 
 }  
 //s4关闭数码管
 else if(P33==0){
  delayms(5);
  if(P33==0) 
   P0=0XFF;
  while(!P33);
 }  
}

00-99数码管计数

//99计数后打开led流水灯
#include<STC15F2K60S2.H>
unsigned int seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0XBF};
unsigned int i,j,m,led;
void delayms(int ms);
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 //数码管初始化,打开2个数码管
 P2=0XC0;P0=0X03;P2=0XFF;P0=0XFF;
  //00-99显示 
 while(j<10){
  for(m=0;m<10;m++){
   P2=0XC0;P0=0X02;P2=0XFF;P0=0XFF;
   P0=seg[i];
   delayms(15);
   P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
   P0=seg[j];
   delayms(15);
  }
  i++;
  if(i==10){
   i=0;
   j++;
  }
 }
 //数码管关闭
 P2=0XC0;P0=0X03;P2=0XFF;P0=0XFF;
 P0=0XFF;
 //LED流水
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 for(led=0;led<9;led++){
  P0=~(0X01<<led);
  delayms(200);
 }
 //LED全灭
 P0=0XFF;
 delayms(10);
 while(1);
}
//延时
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}
发布了7 篇原创文章 · 获赞 15 · 访问量 1749

猜你喜欢

转载自blog.csdn.net/weixin_44747240/article/details/104103284