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);
        
    }
    
}
相关推荐
HRTOS2 天前
HRTOS应用示例:信号量机制详解
c语言·人工智能·嵌入式硬件·51单片机
HRTOS2 天前
HRTOS应用示例:Mutex互斥锁机制详解
c语言·单片机·嵌入式硬件·51单片机
HRTOS2 天前
HRTOS应用示例:事件机制与高优先级任务抢占详解
单片机·51单片机
HRTOS2 天前
HRTOS 4.0 驱动库:06_Storage 存储设备驱动——24C02 EEPROM与I²C驱动开发
c语言·驱动开发·嵌入式硬件·51单片机
HRTOS3 天前
HRTOS 4.0 正式发布:Driver Library 基础外设驱动模块介绍
驱动开发·单片机·嵌入式硬件·51单片机
jianqiang.xue3 天前
ESP-IDF保姆级入门23|MQTT物联网通信全解:发布订阅模式/QoS等级/遗嘱消息/主题设计/断线重连,掌握工业级标准消息通信
stm32·单片机·mcu·物联网·51单片机·iot
HRTOS3 天前
HRTOS 4.0 Driver Library:03_Sensor 传感器驱动
驱动开发·单片机·嵌入式硬件·51单片机
jianqiang.xue3 天前
ESP-IDF保姆级入门29|FreeRTOS任务管理与调度全解:任务创建/状态切换/优先级调度/双核负载均衡/实时性优化,掌握嵌入式多任务编程核心
stm32·单片机·mcu·物联网·51单片机·iot
jianqiang.xue3 天前
ESP-IDF保姆级入门22|WiFi联网与网络编程全解:STA/AP双模式/TCP-UDP Socket/HTTP服务端/自动重连,掌握工业级可靠网络通信
人工智能·stm32·单片机·mcu·物联网·51单片机·iot
艾芯微科技4 天前
SKY13370‑374LF|0.5‑6GHz SPDT 射频开关,WLAN/LTE 射频前端实用器件
网络·单片机·嵌入式硬件·集成测试·51单片机