蓝桥杯单片机学习过程记录(一)流水灯程序

蓝桥杯单片机学习过程记录(一)流水灯程序

流水灯相关程序,记录一下,省得日后找不到。包括多部分

长夜漫漫无心睡眠,京京姑娘你却早就睡着了

流水灯法1

//流水灯1
#include<STC15F2K60S2.H>
unsigned int i;
void main(void)
{
 //初始化程序;
 P2 = 0XA0;P0 = 0X00;P2 = 0X80;P0 = 0XFF;
 //0为亮 1为灭
 while(1){
  //1亮
  P00 = 0;P01 = 1;P02 =1; P03 =1; P04 =1; P05 =1;P06 = 1;P07 =1;
  for( i =0 ; i<30000;i++);
  //2亮
  P00 = 1;P01 = 0;P02 =1; P03 =1; P04 =1; P05 =1;P06 = 1;P07 =1;
  for( i =0 ; i<30000;i++);
  //3灯亮
  P00 = 1;P01 = 1;P02 =0; P03 =1; P04 =1; P05 =1;P06 = 1;P07 =1;
  for( i =0 ; i<30000;i++);
  //4亮
  P00 = 1;P01 = 1;P02 =1; P03 =0; P04 =1; P05 =1;P06 = 1;P07 =1;
  for( i =0 ; i<30000;i++);
  //5亮
  P00 = 1;P01 = 1;P02 =1; P03 =1; P04 =0; P05 =1;P06 = 1;P07 =1;
  for( i =0 ; i<30000;i++);
  //6亮
  P00 = 1;P01 = 1;P02 =1; P03 =1; P04 =1; P05 =0;P06 = 1;P07 =1;
  for( i =0 ; i<30000;i++);
  //7亮
  P00 = 1;P01 = 1;P02 =1; P03 =1; P04 =1; P05 =1;P06 = 0;P07 =1;
  for( i =0 ; i<30000;i++);
  //8亮
  P00 = 1;P01 = 1;P02 =1; P03 =1; P04 =1; P05 =1;P06 = 1;P07 =0;
  for( i =0 ; i<65535;i++);
 }
}

流水灯法2

//流水灯2
#include<STC15F2K60S2.H>
unsigned int i;
void delayms(int ms);

void main(void){
 P2 = 0XA0;P0 = 0X00;P2 = 0X80;P0 = 0XFF;
 while(1){
  P0 = 0XFF;
  delayms(1000);
  P0 = 0XFE;
  delayms(1000);
  P0 = 0XFD;
  delayms(1000);
  P0 = 0XFB;
  delayms(1000);
  P0 = 0XF7;
  delayms(1000);
  P0 = 0XEF;
  delayms(1000);
  P0 = 0XDF;
  delayms(1000);
  P0=0XBF;
  delayms(1000);
  P0=0X7F;
  delayms(1000); 
 }
}
//延时函数;
void delayms(int ms){
 int q , w;
 for(q = 0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}

流水灯法3

#include<STC15F2K60S2.H>
void delayms(int ms);
unsigned char led;

void main(void){
 //初始程序
 P2 = 0XA0;P0=0X00;P2=0X80;P0=0XFF;
 while(1){
  //移位取反
  for(led=0;led<8;led++){
   P0=~(0X01<<led);
   delayms(500);
  }
 }
}
//延时函数
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}

流水灯混合

#include<STC15F2K60S2.H>
unsigned int i;
void delayms(int ms);
int a;
unsigned char led[]={0XFF,0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
void main(void){
 int m;
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
//奇偶灯循环点亮三次;
 for(m=0;m<3;m++){
  P0=0XAA;
  delayms(200);
  P0=0X55;
  delayms(200);
 }
 P0=led[0];
 delayms(500);
//左右循环点亮3次
 for(m=0;m<3;m++){
  for(a=0;a<8;a++){
   P0=~(0x01<<a);
   delayms(100);
  }
  for(a=0;a<8;a++){
   P0=~(0X80>>a);
   delayms(100);
  }
 }
 P0=led[0];
 delayms(500);
//从两边向中间流动,中间向两边3次
 for(m=0;m<3;m++){
  P0=0X7E;
  delayms(200);
  P0=0XBD;
  delayms(200);
  P0=0XDB;
  delayms(200);  
  P0=0XE7;
  delayms(200);  
  P0=0XDB;
  delayms(200); 
  P0=0XBD;
  delayms(200); 
  P0=0X7E;
  delayms(200);
 }
 P0=led[0];
 delayms(500);
//8个全部闪烁3次;
 for(m=0;m<3;m++){
  P0=0X00;
  delayms(200);
  P0=0XFF;
  delayms(200);
 }
 P0=led[0];
 delayms(1000);
 while(1);
}
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}

sbit用法

//sbit的用法
#include<STC15F2K60S2.H>
unsigned int i;
//定义led
sbit led1 = P0^0;
sbit led2 = P0^1;
void delayms(int ms);
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 while(1){
  //灯1.2循环点亮
  led1=0;led2=1;
  delayms(1000);
  led1=~led1;led2=~led2;
  delayms(1000);
 }
}
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}
发布了7 篇原创文章 · 获赞 15 · 访问量 1751

猜你喜欢

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