导航:首页 > 操作系统 > 单片机for语句控制流水灯

单片机for语句控制流水灯

发布时间:2025-06-19 02:05:46

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序的源代码如下:

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main(void)

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++) //8个流水灯反向逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8个流水灯依次全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8个流水灯依次反向全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp>>=1;

}

void delay(uint t) //定义延时函数

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(1)单片机for语句控制流水灯扩展阅读

51单片机流水灯的源代码如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

for(i=0;i<8;i++)

{

P0=_crol_(P0,1);

delay(500);

}

}

}

Ⅱ keil软件用单片机控制8个LED流水灯来回点亮(C语言程序)

#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //点亮第一个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //点亮第二个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //点亮第三个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //点亮第四个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //点亮第五个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //点亮第六个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //点亮第七个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //点亮第八个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}

或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循环点亮LED
w<<=1; //点亮灯的位置移动,最低位补0
w=w|0x01; //将最低位置1
delay(500); //延时
}
}
}

或:
#include "reg51.h"
//程序中使用_crol_函数,所以要包含头文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延时
temp=_crol_(temp,1); //点亮LED的位置循环左移一位
}
}

Ⅲ 用两组I/O口控制16个流水灯的C51程序

在使用C51进行编程时,通过数组定义可以简化控制多个LED灯的操作。比如定义一个包含16个LED状态的数组,如下所示:

uchar led[]={0xfe,0xfd,0xfb,0x07,0x0f,0x1f,0x3f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

接着使用for循环将数组中的值依次赋给P0口,代码如下:

for(i=0;i<8;i++) {
P0=led[i];
delayms(1000)
}

这种方式适用于控制较少数量的LED灯。如果需要直接赋值,代码会稍显复杂,每次重新赋值P0都需要加入延时。

另外,还有一种更为简洁的程序实现方式,如下:

#include //包含单片机寄存器的头文件

void delay(void) {
unsigned int n;
for(n=0;n<30000;n++) ;
}

void main(void) {
unsigned char i;
while(1) {
P1=0xff;
delay();
for(i=0;i<8;i++)//设置循环次数为8 {
P1=P1>>1; //每次循环P1的各二进位右移1位,高位补0
delay(); //调用延时函数
}}
}

此程序通过循环右移P1的值来实现LED灯的流水效果,同时加入延时函数以控制闪烁速度。

该程序利用了位操作的特性,使得LED灯的控制更为灵活。通过不断右移P1的值,可以实现流水灯的效果。每次循环时,P1的值会右移一位,高位补0,从而实现LED灯的依次点亮。

整个程序中,通过while(1)循环确保程序持续运行。每次循环时,P1的值右移一位,并调用延时函数以控制闪烁速度。这样,就可以实现多个LED灯的流水效果。

这种编程方式简洁明了,易于理解和维护,适用于控制多个LED灯的流水效果。通过不断右移P1的值,可以实现LED灯的依次点亮,从而达到流水灯的效果。

Ⅳ C51单片机编程,按键控制流水灯

#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据
void delay(unsigned char time){ //延时函数
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //标志位定义及初始化
char i;
while(1){
switch (P0 & 0x0f){ //读取键值
case 0x0e:run=1;break; //K1动作,设run=1
case 0x0d:run=0,dir=0;break; // K2动作,设run=dir=0
case 0x0b:dir=1;break; //K3动作,设dir=1
case 0x07:dir=0;break; //K4动作,设dir=0
}
if (run) //若run=dir=1,自上而下流动
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流动
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部灯灭
}
}

Ⅳ 单片机流水灯程序

单片机流水灯程序答案


下面是一个基于单片机的流水灯程序示例。


详细解释


1. 程序概述


此程序用于控制单片机连接的LED灯,实现流水灯效果。即LED灯会依次亮起,形成一个流动的灯光效果。


2. 程序逻辑


* 初始化:设置单片机端口的方向为输出,并初始化所有LED灯为熄灭状态。


* 主循环:在单片机的主循环中,逐个控制端口位,使每个LED灯依次亮起。通过延时函数控制每个灯亮的时间,形成流水灯效果。


* 延时函数:为了控制LED灯的亮起和熄灭速度,需要加入延时函数。这个延时函数可以根据需要进行调整,以达到最佳效果。


3. 代码实现


c


#include <单片机头文件.h> // 根据实际单片机型号替换头文件


void delay; // 延时函数声明


void main {


P1 = 0x00; // 初始化端口,所有LED灯熄灭


while { // 主循环


for { // 控制8个LED灯


P1 = ~; // 依次点亮LED灯


delay; // 延时函数,控制点亮时间


}


}


}


void delay { // 简单的延时函数实现


unsigned int j;


for;


}


注意:以上代码仅为示例,实际应用中需要根据单片机的具体型号和硬件连接情况进行调整。单片机的编程语言和具体语法也会因型号不同而有所差异。此外,延时函数的实现也可能更为复杂,这里为了简单明了而采用了一个基础的实现方式。在实际应用中,可能还需要考虑其他因素,如中断、外部触发等。请根据具体需求进行编程和调试。

阅读全文

与单片机for语句控制流水灯相关的资料

热点内容
数字编译器如何编译单位抽样公式 浏览:716
red5服务器能干什么 浏览:493
什么安卓app支持mkv 浏览:469
程序员父母在一起 浏览:229
ai打开pdf只有一页 浏览:440
招商银行app怎么获取积分 浏览:594
linux下的vi参数命令 浏览:267
智能算法期刊 浏览:583
编译原理dfa用来做什么 浏览:626
广告屏要怎么连接服务器 浏览:330
java的gui是什么 浏览:595
为什么大家都买云服务器 浏览:664
shell命令循环执行 浏览:533
交易加密货币一年后学到什么 浏览:321
深圳中国第一程序员 浏览:574
corosapp怎么安装苹果电脑 浏览:46
加密串解密串流程 浏览:978
linux虚拟机ip地址设置 浏览:964
王者荣耀从安卓改成ios要什么要求 浏览:189
太极pdf迅雷下载 浏览:459