流水灯相关程序,记录一下,省得日后找不到。包括多部分
长夜漫漫无心睡眠,京京姑娘你却早就睡着了
流水灯法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--);
}
}