#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++);
}
扩展资料
51单片机流水灯的源代码如下
#include<reg51h>
#include<intrinsh>
void delay(int a)
{
int i;
while(a--)for(i=0;i<110;i++);
}
main()
{
int i;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。
这样左移的延迟大一点的!
先把P1口全部接低电平!
ORG 0000H
AJMP START
ORG 0040H
AA:MOV P1,#55H
ACALL DELAY
MOV P1,#0AAH
ACALL DELAY
MOV P1,#00H
ACALL DELAY
AJMP AA
DELAY:MOV R5,#256
LOOP2:MOV R4,#256
LOOP1:NOP
NOP
DJNZ R4,LOOP1
DJNZ R5,LOOP2
RET
这个非常简单啊
#include <reg51h>
unsigned int code dat[16]={0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff};//要什么花样取决于这里的数据,这里是单个流水灯
//
void delay(unsigned int ms)
{
unsigned char j;
for(;ms>0;ms--)
{
for(j=0;j<150;j++);
}
}
//
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<16;i++)
{
P1=dat[i];
P2=dat[i]>>8;
delay(300);
}
}
}//简单吧
//AT89C52 的引脚 和STC89C51的 引脚一样的,不一样的是RAM大小
以上就是关于单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)全部的内容,包括:单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)、单片机右移到左移,左移到右移的花样流水灯程序问题、请帮忙编写一个花样流水灯单片机程序(要求1,3,5,7灯亮,2,4,6,8灯亮然后全灭)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)