导航:首页 > 操作系统 > 单片机流水灯图示

单片机流水灯图示

发布时间:2022-06-23 23:16:39

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

;//*********************************************************
;//实现功能:本程序实现在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;//熄灭所有灯
}
}
}

㈡ 如何用单片机做流水灯

因为电路用单片机控制,所以电路非常简洁。其电路原理图见下图,印制板图如下图所示。

电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口,我们这里只用到Pl口,共8个引脚。图中Cl、R9组成典型的上电复位(即在加电时单片机复位)电路,XTAL、C2、C3与AT89C2051片内振荡电路组成时钟振荡器。值得注意的是,C2、C3的容量不能与图中数值偏差太大,否则可能引起不起振或振荡不稳定。XTAL的频率可以在4-20MHz之间,不过,频率的变化会导致程序运行速度的变化,这样就需要调整延时子函数的参数。事实上,不调整参数亦可,只是此时延迟时间不再是1秒,其延迟时间会随着XTAL频率的降低而增加。

二、软件部分

本程序包含两个函数,一个是主函数,另一个是延时子函数。源程序如下(为了便于讲解,我们为每行程序加上了编号):

程序各行作用如下:

00行:把AT89C2051的头文件“AT89x051.H”包含进来。

01行:声明Delay()延时子函数,该函数有一个无符号整型参数k,同时函数前面的void表明函数不返回函数值。

02行:延时子函数的开始,同时声明两个无符号整型变量i和j。

不过请注意,这里没有象上期的程序一样,把表示函数开始的“{”单独成行,而是把下一行写在一起了。事实上,写C程序的时候,可以把多行写作一行,C编译器只要遇到分号就认为是一行语句的结束。

当然,我们不能因为C程序有这个特点,就随意把多行合作一行书写,实际书写C程序的时候,还是要养成良好的程序书写习惯,按照约定俗成的原则来书写。

03行:声明for()循环。这个循环的初始条件是i=0,终止条件是i<k,循环计数是每循环一次,用手计数的变量i加1。因此,这个循环的循环次数就是k次。这样,只要改变k的值(即改变Delay()延时子函数的参数k的值),就可以很容易地控制循环次数,从而获得不同的延时时间。

04行:声明嵌套在03循环中的一个新的for()循环,这个循环与上一个循环相似,其循环次数是120次。本循环与上一个循环嵌套后,使得总的循环次数达120×k次。

05行:第一个分号,表示L条空语句,占用一个机器时间,以实现延时的目的。后面的两个“}”中,第一个“}”是04行for()循环的结束标志,程序遇到它时,将自动返回04行,使用于循环计数的变量j加1,同时判断j是否小于120,如果否,则转入05行;第二个是03行for()循环的结束标志,程序遇到它则会返回03行

㈢ 51单片机流水灯5v怎么画

1、首先要设计电路图,利用proteus软件进行电路图的设计。所需元器件:AT89C51单片机1个。LED-RED8个。电源VCC1个。
2、使用keil4软件进行流水灯程序的编辑。
3、方法一编写程序采用的是左移函数(_crol_(a,b))和右移函数(_cror_(a,b))的方法,需在前加上头文件#include。方法二是一个比较笨的方法,需要计算出每个灯亮的位编码。
4、总结:单片机流水灯的设计分为两个步骤,第一步是原理图的绘制;第二步是keil4流水灯控制程序的编写。在写程序的时候最好使用第一种方法,采用位移函数来进行流水灯的设计。

㈣ 51单片机8个流水灯流程图

一单片机8个流水灯的这个流程表的话,这个你这个你要看他的一个品牌牌子型号,这样的话才能更好的配合他的一个这个这个表。

㈤ 单片机,流水灯程序。急!有图!

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit key=P0^1; //用的时候需加上拉电阻
uint t;
void Delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void Led_F() //从上往下流动
{
uchar a=0xfc; //a=11111100
while(t) //当按了一下按键流水灯开始
{
P1=a;
Delay_ms(500);
a=_crol_(a,2); //a数据位向左移两位11111100->11110011
if(t==2) //如果是第二次按下按键则回到初始状态
{
t=0;
P1=0xff;
break;
}
}
}
void Key_T() //键盘检测
{
if(key==0)
{
Delay_ms(50);
if(key==0)
{
t++;
}
}
}
void main()
{
while(1)
{
Key_T();
Led_F();
}
}

㈥ 单片机流水灯设计程序,图,带开关的

开关可以装在电源上,按下电源接通! /*************************************************************51单片机流水灯C语言源程序
文件名称:led.c
文件说明:流水灯C程序
编写人员:
编写日期:程序说明:MCU采用AT89S51,外接12M晶振,P1口输出
版权标注:*************************************************************/
#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. 工具:STC系列51单片机、串口转换器(USB转TTL 或232转TTL)

  2. 材料:实验板一块(可以买现成的,也可以买面包板自己搭建),电阻、LED灯 若干,5V电源等。

  3. 以下程序可以直接用Keil C 直接编译执行。

//可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。


//具体实现方法可以参考如下程序:


#include<reg51.h>

#include<intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

voiddelay(uinta);

voidmain()

{

P1=0xfe;

while(1)

{

//向左循环点亮LED

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

{

P1=_crol_(P1,1);//左移一位,点亮下一位LED

delay(55);

}

//向右循环点亮LED

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

{

P1=_cror_(P1,1);//右移一位,,点亮上一位LED

delay(55);

}

}

}

//延时函数,延时a毫秒

voiddelay(uinta)

{

uintx,y;

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

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

}

㈧ 急求一个单片机流水灯(16个灯)电路图!!

电路如下:

将16个LED的阴极(Led-、K极)连接到单片机的IO口(P1.0、P1.1...P1.7。。。),
LED的阳极(Led+、A极)串联一个560欧姆电阻(一共16个)到电源正极
(Vcc、5V)

如果要点亮一个Led的话(P1.0)只要
CLR P1.0

要熄灭一个Led的话(P1.0)只要
SETB P1.0

即可

够详细了吧?!

㈨ 求用单片机控制流水灯的最简单的电路图!

单片机流水灯是初学者的典型例程。不但需要实现,还需要理解,并通过实现来熟悉单片机原理及编程。因此,建议你到各种开发板网站下载专业套件,这样,会更有助于你的学习。

阅读全文

与单片机流水灯图示相关的资料

热点内容
我的世界怎么进ec服务器地址大全 浏览:62
单片机和嵌入式软件开发区别 浏览:336
为什么扫一扫提示服务器繁忙 浏览:386
慎小嶷十天突破雅思口语pdf 浏览:603
解压数据丢失 浏览:47
查一下电脑上文件夹锁 浏览:294
加密聊天消息密钥输入什么 浏览:541
32位windows编译器 浏览:962
ipad邮件无法连接发件服务器地址 浏览:61
php接收websocket 浏览:564
碧蓝航线如何查账号服务器 浏览:835
msx命令 浏览:750
怎么购买app内购 浏览:490
vivo手机怎么把安卓系统提示关闭 浏览:964
汽油分配控制单片机 浏览:579
python字典最大值最小值求和 浏览:281
php7pdo扩展 浏览:941
粉笔app如何看行测 浏览:817
如何举报不正当app 浏览:255
智能家居算法组 浏览:56