51单片机 跑马灯

cpp 复制代码
#include <reg52.h>


//毫秒级延时函数
void delay(int z)
{
	int x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--);
}



sbit LED1 = P1^0x0;
sbit LED2 = P1^0x1;
sbit LED3 = P1^0x2;
sbit LED4 = P1^0x3;
sbit LED5 = P1^0x4;
sbit LED6 = P1^0x5;
sbit LED7 = P1^0x6;
sbit LED8 = P1^0x7;

void show(int num,int state){ //state = 0 是亮  1是不亮
    switch(num){
        case 1:LED1=state;break;
        case 2:LED2=state;break;
        case 3:LED3=state;break;
        case 4:LED4=state;break;
        case 5:LED5=state;break;
        case 6:LED6=state;break;
        case 7:LED7=state;break;
        case 8:LED8=state;break;
    }
    
}
void allshow(int *arr){
    int i;
    for(i=1;i<=8;i++)
        show(i,arr[i-1]);
}
void setArr(int *a,int n1,int n2,int n3,int n4,int n5,int n6,int n7,int n8){
    a[0]=n1;a[1]=n2;a[2]=n3;a[3]=n4;a[4]=n5;a[5]=n6;a[6]=n7;a[7]=n8;
}
void main(){
    int j,a[8]={0,1,1,1,0,1,1,1},c[8]={1,1,1,1,1,1,1,1,};
        short b[4][8]={       
        1,1,1,1,1,1,1,1,
        1,1,1,1,0,0,0,0,
        0,0,0,0,1,1,1,1,
        1,1,0,0,0,0,1,1,        
    };
     
    
    for(;;){  
        delay(2000); 
        
        for(j=0;j<4;j++){
            allshow(b[j]);
            delay(1000+100*j);        
        }
        allshow(a);
        delay(1000);
        a[0]=1;
        a[4]=1;
        a[1]=0;
        a[5]=0;
        allshow(a);
        delay(1000);
        a[1]=1;
        a[5]=1;
        a[2]=0;
        a[6]=0;
        allshow(a);
        delay(1000);

        a[2]=1;
        a[6]=1;
        a[3]=0;
        a[7]=0;
        allshow(a);
        delay(1000);
        a[3]=1;
        a[7]=1;
        allshow(a);
        delay(1000);
        allshow(c);
        delay(1000);
        for(j=0;j<8;j++){
            c[j]=0;                       
            if(j!=0)
                c[j-1]=1;            
            allshow(c);
            delay(1000);            
        }
        c[j-1]=1;
        allshow(c);
        delay(1000);
        
        for(j=0;j<2;j++){
        setArr(c,0,0,1,1,1,1,1,1);
        allshow(c);
        delay(1000);
        setArr(c,1,0,0,1,1,1,1,1);
        allshow(c);
        delay(1000);
        setArr(c,1,1,0,0,1,1,1,1);
        allshow(c); 
        delay(1000);
        setArr(c,1,1,1,0,0,1,1,1);
        allshow(c);
        delay(1000);
        setArr(c,1,1,1,1,0,0,1,1);
        allshow(c);
        delay(1000);
        setArr(c,1,1,1,1,1,0,0,1);
        allshow(c);
        delay(1000);
        setArr(c,1,1,1,1,1,1,0,0);
        allshow(c);
        delay(1000);
        setArr(c,0,1,1,1,1,1,1,0);
        allshow(c);
        delay(1000);
        
        }
        setArr(c,1,1,1,1,1,1,1,1);
        allshow(c);
        delay(1000);
        for(j=0;j<2;j++){
        setArr(c,0,1,1,1,1,1,1,0);
        allshow(c);
        delay(500);
        setArr(c,0,0,1,1,1,1,0,0);
        allshow(c);
        delay(500);
        setArr(c,0,0,0,1,1,0,0,0);
        allshow(c); 
        delay(500);
        setArr(c,0,0,0,0,0,0,0,0);
        allshow(c);
        delay(1000);
        setArr(c,0,0,0,1,1,0,0,0);
        allshow(c);
        delay(500);
        setArr(c,0,0,1,1,1,1,0,0);
        allshow(c);
        delay(500);
        setArr(c,0,1,1,1,1,1,1,0);
        allshow(c);
        delay(500);
        setArr(c,1,1,1,1,1,1,1,1);
        allshow(c);
        delay(1000);
    }
        for(j=0;j<5;j++){
        setArr(c,0,0,0,0,1,1,1,1);
        allshow(c);
        delay(500);
        setArr(c,1,0,0,0,0,1,1,1);
        allshow(c);
        delay(500);
        setArr(c,1,1,0,0,0,0,1,1);
        allshow(c);
        delay(500);
        setArr(c,1,1,1,0,0,0,0,1);
        allshow(c);
        delay(500);
        setArr(c,1,1,1,1,0,0,0,0);
        allshow(c);
        delay(500);
        setArr(c,0,1,1,1,1,0,0,0);
        allshow(c);
        delay(500);
        setArr(c,0,0,1,1,1,1,0,0);
        allshow(c);
        delay(500);
        setArr(c,0,0,0,1,1,1,1,0);
        allshow(c);
        delay(500);
    }
        
        setArr(c,1,1,1,1,1,1,1,1);
        allshow(c);
        delay(1000);
        
    }
    
}
相关推荐
SY师弟19 小时前
51单片机基础部分——矩阵按键检测
嵌入式硬件·矩阵·51单片机
weixin_460186133 天前
基于51单片机的汽车雨刮器模拟proteus仿真
汽车·51单片机·proteus
SY师弟4 天前
51单片机基础部分——数码管显示
单片机·嵌入式硬件·51单片机
Geometry Fu4 天前
物联网控制技术期末复习 知识点总结 第二章 单片机
单片机·嵌入式硬件·物联网·51单片机·期末复习
敬往事一杯酒哈8 天前
第一节 51单片机概述
单片机·嵌入式硬件·51单片机
weixin_460186139 天前
基于51单片机的音乐盒键盘演奏proteus仿真
计算机外设·51单片机·proteus
gantengsheng11 天前
基于51单片机和8X8点阵屏、独立按键的飞行躲闪类小游戏
51单片机·小游戏·独立按键·普中开发板·甘腾胜·飞行躲闪类·点阵屏
weixin_4601861311 天前
基于51单片机的音乐盒汽车喇叭调音量proteus仿真
汽车·51单片机·proteus
H21220216513 天前
14.测速小车(测速模块)
单片机·嵌入式硬件·51单片机
gantengsheng15 天前
基于51单片机和8X8点阵屏、独立按键的滑动躲闪类小游戏
51单片机·小游戏·独立按键·普中开发板·8x8点阵屏·滑动躲闪类·甘腾胜