流水灯系列
- 流水灯
- 电路仿真图
-
/****************************** 项目名称:项目1彩灯控制器 任务名称:任务3流水灯控制 任务描述:P1口控制8个LED,编程实现8个LED依次亮灭并循环。 *****************************/ #include<reg51.h> #include<intrins.h> void delay(int i) { int k,j; for(k=0;k<i;k++) for(j=0;j<100;j++); } void main() { int j=0xfe; while(1) { P1=j; delay(500); j=_crol_(j,1)-1; /**for(i=0;i<7;i++) { j=(j<<=1)+1; delay(500); P1=j; } */ delay(500); } }
- 流水灯震荡
-
/****************************** 项目名称:项目1彩灯控制器 任务名称:任务3流水灯控制 任务描述:P1口控制8个LED,编程实现8个LED闪烁震荡。 *****************************/ #include<reg51.h> #include<intrins.h> void delay(int i) { int k,j; for(k=0;k<i;k++) for(j=0;j<100;j++); } void main() { int i; int j=0xfe; while(1) { for(i=0;i<7;i++) { P1=j; delay(500); j=_crol_(j,1); delay(500); } for(i=0;i<7;i++) { P1=j; delay(500); j=_cror_(j,1); delay(500); } } }
- 交通灯
/****************************** 项目名称:项目1彩灯控制器 任务名称:任务6交通灯控制 任务描述:P1口控制6个LED,编程实现交通灯。 *****************************/ #include<reg51.h> void delay(int i) { int k,j; for(k=0;k<i;k++) for(j=0;j<100;j++); } void main() { while(1) { int i; P1=0x77;//两红灯亮 delay(1000); P1=0xd7;//东西路口绿灯亮,南北路口红灯亮。 delay(6000); for(i=0;i<7;i++) { P1=0xb7;//东西路口黄灯亮,南北路口红灯亮。 delay(500); P1=0xf7; //东西路口灯灭,南北路口红灯亮。 delay(500); } P1=0x77;//两红灯亮; delay(1000); P1=0x7d;//东西路口红灯亮,南北路口绿灯亮。 delay(6000); for(i=0;i<7;i++) { P1=0x7b;//东西路口红灯亮,南北路口黄灯亮。 delay(500); P1=0x7f;// 东西路口红灯亮,南北路口灯灭。 delay(500); } } }
转向灯
/****************************** 项目名称:项目1彩灯控制器 任务名称:任务3转向灯控制 任务描述:P1口控制4个LED,编程实现开关控制小灯闪烁。 *****************************/ #include<reg51.h> sbit k1=P1^0; sbit k2=P1^1; void delay(int i) { int k,j; for(k=0;k<i;k++) for(j=0;j<100;j++); } void main() { while(1) { if(k1==0&&k2==1) //k1关闭,左转向灯亮 { P1=0xcf; delay(500); P1=0xff; delay(500); } if(k1==1&&k2==0) //k2关闭,右转向灯亮 { P1=0x3f; delay(500); P1=0xff; delay(500); } if(k1==k2) //k1关闭,左转向灯亮 { P1=0xff; } } }
方法二
/****************************** 项目名称:项目1彩灯控制器 任务名称:任务3转向灯控制 任务描述:P1口控制4个LED,编程实现开关控制小灯闪烁,使用switch语句。 *****************************/ #include<reg51.h> void delay(int i) { int k,j; for(k=0;k<i;k++) for(j=0;j<100;j++); } void main() { int r; while(1) { r=P1&0x03; switch(r) { case 0:P1=0xff;break; case 1:P1=0x3f;delay(500);P1=0xff;delay(500);break; case 2:P1=0xcf;delay(500);P1=0xff;delay(500);break; case 3:P1=0xff;break; } } }