导航:首页 > 操作系统 > 单片机如何做两组流水灯

单片机如何做两组流水灯

发布时间:2023-08-19 00:52:25

① 用单片机控制流水灯的六种方案,要程序电路图,详细讲解

;//*********************************************************
;//实现功能:本程序实现在P0口模拟一种流水灯程序
;//*********************************************************
p_out equ P0 ;宏定义P0为p_out
org 00h ;程序的开始地址
ajmp main ;跳到main
org 030h
;//******************主函数***************************
;//描 述:实现在P0口模拟一个流水灯程序
;//设计人: lishengling24
;//****************************************************
main: ;主函数
mov sp,#50h ;设置sp堆栈的初始位置
mov a,#0feh ;初始化acc
main_1:
mov p_out,a ;点亮一个灯
mov r1,#250 ;
mov r0,#250 ;
Call delay_time;调用时间延迟子程序,上面两句是设置延迟时间
mov p_out,#0ffh;熄灭灯
RL a ;循环左移一位准备点亮下一个灯
JMP main_1 ;跳到main_1循环
;//******************时间延迟函数**********************
;//描 述:用指令实现延时一段时间
;//入口参数:r1为高位,r0为低位,都是十六进制表示?
;//出口参数:无
;//设计人:lishengling24
;//****************************************************
delay_time:
push acc ;acc入栈
push psw ;psw入栈
mov a,r0 ;把r0赋给acc
inc r1 ;r1加1,因为djnz是先减1再比较是否为零,如果不加1
;当r1的初值为0的时候,减1后变成了0x0ff,改变了当
;初预想的延迟时间计数值
inc r0 ;道理和inc r1 一样,当然r0和r1的初值不能为0x0ff
loop:
nop
nop
nop
nop
nop
nop
djnz acc,loop ;
mov a,r0 ;
djnz r1,loop ;
pop psw ;psw出栈
pop acc ;acc出栈
ret
end ;需要其他5种方案的程序和电路,在网络HI我。

以下是C的写法:
//*********************************************************
//实现功能:本程序实现在P0口模拟一个流水灯程序
//*********************************************************
#include <reg51.h>
#define p_out P0 //宏定义输出的i/o口为p0
//******************时间延迟函数**********************
//描 述:用指令实现延时一段时间
//入口参数:int i,为时间延迟参数
//****************************************************
void delay_time(int i)
{
while(i)
i--;
}
//******************主函数***************************
//描 述:实现在P0口模拟一个流水灯程序
//****************************************************
void main(void)
{
unsigned char i=0; //初始化一个局部变量为0
p_out=0xff; //初始化将要输出的i/o口,输出高电平,熄灭所有灯
while(1)
{
for(i=0;i<8;i++)
{
p_out=~(1<<i);//点亮一个灯,
delay_time(50000); //延迟一段时间
p_out=0xff;//熄灭所有灯
}
}
}

② 51单片机流水灯依次点亮循环两次怎么实现只循环两次!

#include<reg52.h> // 这是下图的程序,可以仿真 试试

#define uchar unsigned char

#define uint unsigned int

uchar i,t;

uchar code table[]={0xf6,0xed,0xdb,0xf6,0xed,0xdb}; // 发光二极管循环点亮可以有很多方法

uchar code tabled[]={0xaa,0x55,0xaa,0x55,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay(uint z) // 延时程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main()

{

t=30;

while(1)

{

t++;

if(t==100) t=10;

for(i=0;i<20;i++) // 发光二极管 循环亮

{

P1=tabled[i];

delay(250); // 调用延时程序

}

}

}

③ 求51单片机驱动32盏LED流水灯(单向流水,全部亮时闪烁两次,双向流水,全部亮时闪烁两次)的C程序!谢谢

这个比较简单吧
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay();//自己写吧 延迟一秒
void led_blink();//~~~~~~~~~~~~
void single_stream();//单向流水函数声明
void double_stream();//~~~~~~~~

void led_blink() //全部亮时闪烁两次

{
uchar i;
if(P3^7==0)

{ i=2;

while(i--)

{
P0=0x00;//低电平点亮
P1=0x00;
P2=0x00;
P3=0x00;
delay();
P0=0xff;//熄灭
P1=0xff;
P2=0xff;
P3=0xff;
delay();

}
}

}
void single_stream()//单向流水灯
{
uchar i;//自己定义一下 unsigned char

for(i=0;i<8;i++)
{
P0=table[i];//逐个点亮led0-7 第零组

delay();

}
for(i=0;i<8;i++)
{
P1=table[i];//第一组
delay();
}
for(i=0;i<8;i++)
{
P2=table[i];//第二组
delay();
}
for(i=0;i<8;i++)
{
P3=table[i];//第三组
delay();
}

}

void double_stream()//这个你也自己写吧
{

}

void main()//main 函数就调用下 前面的就可以了。。

{
while(1)
{
single_stream();
led_blink();
double_stream();
led_blink();
}

}// 大概就是这样。。我没测试

④ 用51单片机做多只流水灯(跑马灯)

元件表:
12M晶振 1个
30P瓷片电容 2个
10U电解电容 1个
4.7K电阻 1个
51单片机 1个
1K电阻 N个(你要显示的字需要多少个LED就用多少个电阻)
LED发光二极管 N个(同上)
电路板、焊锡、导线什么的我就不说了。

硬件电路制作:
去搜索图片“单片机最小系统”或“跑马灯”就能找到很多电路图,依图做。

程序设计:
#include <reg52.h>
void delay()
{
int a,b;
for(a=245;a>0;a--)
for(b=100;b>0;b--);
}
void main()
{
int temp=0x01;
while(1)
{
P0=temp;
delay();
temp<<=1;
}
}
P0口的八只管脚分别流水过去,但要接排阻或上拉电阻。
还有什么不懂的,尽管追问。

⑤ 用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)

#include<reg51.h>拿薯歼

voiddelay(void)

{

unsignedinti,j;

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

for(j=0;j<1000;j++)

;

}

voidmain(void)

{

while(1)

{

P3=0xfe;//第一个灯亮

delay();//延时

P3=0xfd;//第二个灯亮

delay();

P3=0xfb;//第三个灯亮

delay();

P3=0xf7;//第四个灯手烂亮

delay();

P3=0xef;//第五个灯亮

delay();

P3=0xdf;//第六个灯亮

delay();

P3=0xbf;//第七消冲个灯亮

delay();

P3=0x7f;//第八个灯亮

delay();

}

}

(5)单片机如何做两组流水灯扩展阅读

单片机C语言16种方式流水灯

voidmain()

{

while(1)

{

P1=0xfe;//点亮第一个发光管

Delay(5000);

P1=0xfd;//点亮第二个发光管

Delay(5000);

P1=0xfb;

Delay(5000);

P1=0xf7;

Delay(5000);

P1=0xef;

Delay(5000);

P1=0xdf;

Delay(5000);

P1=0xbf;

Delay(5000);

P1=0x7f;//点亮第八个发光管

}

}

阅读全文

与单片机如何做两组流水灯相关的资料

热点内容
裘锡圭pdf 浏览:720
android模拟器调试 浏览:129
sap命令大全 浏览:290
mysql导出数据命令 浏览:949
文件夹隐藏了出不来 浏览:562
电信网上大学源码 浏览:204
rr轮转调度算法 浏览:253
我的世界无法登入服务器怎么办 浏览:148
文件加密授权特定隐藏访问控制 浏览:801
程序员剑灵官网 浏览:516
php调用static方法 浏览:934
天正命令版 浏览:86
聚合支付加密币 浏览:313
蜜源app是什么时候创立的 浏览:706
计算机专业学51单片机 浏览:210
程序员不接受反驳 浏览:298
微软自带的压缩软件 浏览:289
中国玩家在日本服务器做什么 浏览:51
12864和单片机 浏览:898
25匹空调压缩机 浏览:649