单片机中怎么让循环流水灯第一个灯亮三次然后第二个灯亮三次依次下去?

作者&投稿:有梅 (若有异议请与网页底部的电邮联系)
单片机流水灯程序第一次亮一个第二次亮两个第三次亮三个以此类推~

#include #include typedef unsigned int u16; typedef unsigned char u8; sbit led=P2;//这里填你LED连接的端口(引脚),不一定是P2,也有可能是P3、P0 void delay(u16 i) { while(i--); } void shan1() { u8 i; led=0x01;//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe; for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。 { led=_crol_(led,1);//左移1位 } led=0x00; } void shan2() { u8 i; led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况 for(i=0;i<6;i++)已经点亮两个个了,所以剩6个。 { led=_cror_(led,1);//右移一位 delay(1000); } led=0x00; } void shan2() { u8 i; led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况 for(i=0;i<6;i++) { led=_cror_(led,1); delay(1000); } led=0x00; } void main() { while(1) { shan1(); delay(1000); shan2(); } }

随手写了一个飞思卡尔的,仅供参考,宏定义的有点多,这样方便你看,代码页很清晰明朗,没运行,不过应该没什么大问题,谢谢,希望采纳
#include "MC9s08aw60.h"//LED
#define LED1_D PTBD_PTBD0
#define LED2_D PTBD_PTBD1
#define LED3_D PTBD_PTBD2
#define LED4_D PTBD_PTBD3 //数据寄存器
#define LED5_D PTDD_PTDD2

#define LED1_DD PTBDD_PTBDD0#define LED2_DD PTBDD_PTBDD1
#define LED3_DD PTBDD_PTBDD2
#define LED4_DD PTBDD_PTBDD3 //方向寄存器
#define LED5_DD PTDDD_PTDDD2

#define LED1_PE PTBPE_PTBPE0#define LED2_PE PTBPE_PTBPE1
#define LED3_PE PTBPE_PTBPE2
#define LED4_PE PTBPE_PTBPE3 //上拉使能
#define LED5_PE PTDPE_PTDPE2

#define LED1_ON {LED1_D=0;}#define LED2_ON {LED2_D=0;}
#define LED3_ON {LED3_D=0;}
#define LED4_ON {LED4_D=0;}
#define LED5_ON {LED5_D=0;}

#define LED1_OFF {LED1_D=1;}
#define LED2_OFF {LED2_D=1;}
#define LED3_OFF {LED3_D=1;}
#define LED4_OFF {LED4_D=1;}
void led_test(void)
{
int i = 0;
int j = 0;
while(1)
{
for(i=0;i<4;i++)
{
LED1_ON;
Delay1ms();
LED1_OFF;
LED2_ON;
Delay1ms();
LED2_OFF;
LED3_ON;
Delay1ms();
LED3_OFF;
LED4_ON;
Delay1ms();
LED4_OFF;
}
for(j=0;j<3;j++)
{
LED4_ON;
Delay1ms();
LED4_OFF;
LED3_ON;
Delay1ms();
LED3_OFF;
LED2_ON;
Delay1ms();
LED2_OFF;
LED1_ON;
Delay1ms();
LED1_OFF;
}
}
}
void InitLed(void)
{
LED1_DD = 1;
LED2_DD = 1;
LED3_DD = 1;
LED4_DD = 1; //设置为输出
LED5_DD = 1;

LED1_PE = 1; LED2_PE = 1;
LED3_PE = 1;
LED4_PE = 1; //上拉电阻使能
LED5_PE = 1;

LED1_OFF; LED2_OFF;
LED3_OFF;
LED4_OFF; //初始化为关
LED5_OFF;
}
int main()
{
InitLed();
led_test();
return 0;
}
那个1m延迟,我没定义,自己可以写个延迟函数,差不多为500ms

只要加入延时或者使用定时器,增加标志位即可轮流闪灭任意次数。

最简单是用数组


幻灯片怎么设置循环放映
1、打开需要设置的ppt,找到幻灯片放映,选择下面的设置放映方式;2、接着在放映选项中勾选循环放映,点击确定,即可设置完毕。PPT就是PowerPoint的简称。PowerPoint最初并不是微软公司发明的。之后微软通过收购的方式将PowerPoint收入麾下,最终成为的办公软件系列(office)重要组件之一(还有Excel,Word等)。M...

如何让ppt自动循环播放
1.点击放映,在PPT工具栏页面中,点击“放映”选项卡。2.点击放映设置,在放映选项卡中,点击“放映设置”。3.点击展台自动循环播放,在放映设置选项卡中,选中“展台自动循环播放”,点击“确定”,即可设置完成。PPT是一种演示文稿图形程序,是功能强大的演示文稿制作软件。它增强了多媒体支持功能,利用...

竖式暖气片内水流循环机理一
热水比重轻上升,冷水比重大下降,这样实现循环。

赛塔林唱片机怎么循环播放
无法设置循环播放。赛塔林黑胶唱片机的包装很简约,在正面处,唱片机的外观已经让你清晰可见。细节会被印在包装盒上,然而从图片中获知和你拿到手里的感觉,是完全的两回事;通过高密度的泡沫内胆包裹着的主机。现在的黑胶唱片机(LP)已经脱离了我们过去的那种笨重和粗糙。如今的很多复古轻奢的一体化黑胶...

wps演示使用超链接实现幻灯片循环播放
选中后从“插入”菜单选择 “超链接”,在“插入超链接”设置面板中选择“本文档中的位置”→“第一张幻灯片”(图2),然后点“确定”按钮。图2 三、幻灯片循环效果 这样,我们就成功地把最后一张幻灯片链接到了第一张,当放到最后一张时,用鼠标轻轻一点,就又回到了第一张了,无限循环,就是...

循环泵工作原理是怎么样的?
1、 循环泵工作原理是通过叶轮旋转造成进、出口的压力差,然后将水循环起来。这种泵叫做循环泵,比如地暖,暖气片等供热管道中的热水就是利用循环泵进行循环的。2、循环泵——将水循环起来利用的水泵。 装置中输送反应、吸收、分离、吸收液再生的循环液用泵。一般采用单级离心泵。 ...

苹果电脑怎么让多个视频循环播放
利用ipad的照片幻灯片播放可以解决,新建一个相册,把你要循环播放的视频放进去,点右上角幻灯片播放,选项里选择上重复播放就OK。无需任何软件,还可以把图片和其他视频加进去。苹果iPad是由英国出生的设计主管乔纳森·伊夫(Jonathan Ive,或译为乔纳森·艾维)领导的团队设计的,这个圆滑、超薄的产品反映...

暖气片水循环示意图
暖气片内部水是靠重力循环运行的,当热水从进水阀门进去之后,因重力作用升到暖气片的头部,经过一段时间冷却后在沉下去,从出水口流出,热水进去,冷水出来。暖气片越高重力循环的压力就越大。利用热水上升的原理,这样不断反复的持续,就形成了暖气片的水循环工作,使得暖气片不断散热保证房屋的温度。

电影洗片机化学加工
洗片机配有药液循环系统,确保槽中药液在不断循环过程中得到过滤、调温、补充,以保持正常加工中药液所需的成分、浓度和温度恒定。电子温度调节器可将显影液温度保持在±0.1℃,其它药液为±1℃。补充液可通过流量计或计量泵定量或过量补充,也可采用与胶片通过长度成比例的批量自动补充方式。通常对各种...

苹果手机相机怎么循环播放视频?
1、首先在苹果手机中打开相册,选中相薄的页面,点击视频的选项。2、然后点击右上角选择的按钮。3、勾选要循环播放的视频,点击左下角的图标。4、在菜单栏中,点击幻灯片的选项。5、最后点击右下角的选项,在幻灯片选项的页面中,点击重复播放后面的开关键,打开即可循环播放,就完成了。

敦煌市13517873240: 单片机中流水灯如何控制 -
祁杭兰悉: 单片机中流水灯控制:硬件连接很简单,只要将8个LED指示灯接在P1口上 另一端通过220欧姆的电阻接+5V电源上,就可以了.主要靠软件控制,简单的可以使用左移或右移指令,将低电平0 逐渐移入寄存器中,即控制LED指示灯逐渐一个一个地点亮或一个一个地熄灭.复杂点: 可以进行花式流水控制.例如: 可以由两边逐渐向内点亮 然后再由内逐渐向外一个一个熄灭. 还可以由由内逐渐向两边内点亮 然后再由两边渐向内逐一个一个熄灭.在程序的实现上 可以把各种花式流水的P1口亮灭状态字 事先定义成数组 然后每隔一定的时间 取出送P1口显示. 呵呵 俺只提供给你一个号的算法 程序就自己动手自立更生.

敦煌市13517873240: keil软件用单片机控制8个LED流水灯来回点亮(C语言程序) -
祁杭兰悉: #include "reg51.h"main(){unsigned int i,j;while(1){P1=0xfe; //点亮第一个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfd; //点亮第二个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfb; //点亮第三个LEDfor(i=200;i>0;i--)for(j=500;j>...

敦煌市13517873240: 我是单片机初学者,在作流水灯的时候. 我发现 我先让一个灯亮循环左 -
祁杭兰悉: 给你编制一个例程吧.#include#include void delay(int a) { while(a--); } main() { unsigned char i; while(1){ P0=0x7f; for(i=0;iP0=0x3f; for(i=0;i}}

敦煌市13517873240: 单片机如何控制流水灯的程序 -
祁杭兰悉: 灯的亮灭是通过控制IO口数据来实现的;程序大体如下:#define led0 P1^0#define led1 P1^1#define led2 P1^2#define L 0 //亮#define M 1 //灭 void init() { led0 = M; led1 = M; led2 = M; } main() { init(); while(1) { delay_S(1); led0 = L; delay_S(1); led...

敦煌市13517873240: 如何用单片机实现流水灯,从一依次亮到八,再从八依次亮回一,一直循环? -
祁杭兰悉: 有个想法, 放一个字节LED做标志位,可位寻址. 每一位代表一个灯.对字节LED附初值1,做一个200mS的时钟,每200ms对字节LED值做左移1位指令(汇编可循环).主程序中位寻址判断字节LED的bit(0-7)点亮相应的灯.或者直接P0=LED纯想法、还没试过,感觉好玩,呵呵. 好像上述灯流的方式不对,不过可以改...

敦煌市13517873240: 单片机流水灯绿色灯怎么亮 -
祁杭兰悉: VCC|---R--- + LED - --------I/O 当IO电平=0的时候LED亮

敦煌市13517873240: 单片机中如何利用开关SW控制流水灯的启动和停止? -
祁杭兰悉: 在单片机的某个IO脚上接一个开关SW,主程序检测开关的状态,当开闭合,引脚为低电平,流水灯就停止.当开关开启,引脚为高电平,则启动流水灯流动.

敦煌市13517873240: 单片机怎么让LED第一个亮,再第三个亮(第一个不灭),再第5个亮.... -
祁杭兰悉: 0xff-1然后用_crol_循环左右2位 再减1..依次类推..到头了用IF换回0xFF 用for 或者 while 一个大循环..

敦煌市13517873240: 单片机的各种编程程序 比如流水灯 -
祁杭兰悉: //实例:使用P0口流水点亮8位LED #include<reg51.h> //包含单片机寄存器的头文件/******************************************************* 函数功能:主函数 ********************************************************/ void main(void) {while(1){P0=0xfe; //第...

敦煌市13517873240: 51单片机,用2个led灯做流水灯,怎样让1个灯亮了第十分钟后第个灭了第2才亮呢?谢谢! -
祁杭兰悉: 加延时,时间要你自己去等,如果延时不够,你再加延时【delay()】,直到够十分钟为止.下面是我给你的一个程序,你去试试吧!是循环的,就是十分钟后1灯灭,2灯亮,又十分钟后灯2灭,灯1亮.这个程序是接共阴的,就是等的正极接单片...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网