解决了吗?求教程 |
q3075105 发表于 2017-4-20 17:31 好吧,你说的是。 |
ahshmj 发表于 2017-4-20 14:37 只是个作业。。。怎么能算作弊呢。。。。。 |
本帖最后由 zl2168 于 2017-4-20 16:05 编辑 随便你怎么闪,只要编制相应的亮灯数组。 实例9 键控花样循环灯 ⑴ 花样循环1 ① 从两边到中心依次点亮,每次增加1个,直至全亮; ② 从两边到中心依次暗灭,每次减少1个,直至全暗; ③ 闪烁1次; ④ 重复上述过程,不断循环(亮灯间隔0.5秒)。 ⑵ 花样循环2 ① 从中心到两边,每次亮2个,并重复一次; ② 从中心到两边,每次亮3个,并重复一次; ③ 每次亮4个,并重复一次; ④ 重复上述过程,不断循环(亮灯间隔0.5秒)。 ⑶ 花样循环3 ① 每次间隔亮4个,并重复一次; ② 从上至下,每次亮2个; ③ 从上至下,每次增加亮2个,直至全亮; ④ 闪烁2次; ⑤ 重复上述过程,不断循环(亮灯间隔0.5秒)。 ⑷ 花样循环4 ① 全亮; ② 从上至下依次暗灭,每次减少一个,直至全灭; ③ 从上至下依次点亮,每次增加一个,直至全亮; ④ 重复上述过程,不断循环(亮灯间隔0.5秒)。 先Proteus仿真一下,确认有效。 ![]() ![]() 以上摘自张志良编著《80C51单片机Proteus仿真设计实例教程》清华大学出版社ISBN 978-7-302-41682-1。书中电路和程序设计有详细说明,程序语句条条有注解。 |
这个多花时间学习 还是不难的 |
又帮你作弊的嫌疑。![]() |
按灯的数字顺序点亮,然后闪烁5秒,灭一秒,再从左往右全亮,L- E- D ,后再全亮3秒 |
#include <reg51.h> #define unsigned int sbit S1=P1^7; //按下启动开关 void delay(ms) //延时函数 { int i; while(ms--) { for(i=0;i<120;i++); } } void main() { int i=0,run=0; //定义变量 while(1) { if(S1==0) //延时去抖动 { delay(20); if(S1==0) { for(i=0;i<7;i++) { P1=P1&(~(1<<i)); //从P1.0口依次输出点亮,L依次亮 delay(50); } for(i=0;i<8;i++) { P3=P3&(~(1<<i)); //从P3.0口依次输出点亮 E依次亮 delay(50); } for(i=0;i<8;i++) { P2=P2&(~(1<<i)); //从2.0口依次输出点亮 E依次亮 delay(50); } for(i=0;i<8;i++) { P0=P0&(~(1<<i)); //从0.0口依次输出点亮 D依次亮 delay(50) ; } delay(200); for(i=0;i<8;i++) { P1=0xff;P2=0xff;P3=0xff;P0=0xff; delay(250); P1=0x80;P2=0x00;P3=0x00;P0=0x00; delay(250); } P0=0xff;P1=0xff;P2=0xff;P3=0xff; //端口设置为高电平 delay(500); } } } } |