#include<reg51h>
#define uchar unsigned char

#define uint unsigned int
uint num=0,i=0;
uchar code LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void main()
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
P1=0;
while(1)
{
if(num==2)
{
num=0;
P1=LED[i];
i++;
if(i>7) i=0;
}
}
}
void time0() interrupt 1
{
num++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
单片机中流水灯如何控制
74ls194控制8个流水灯原理如下。
1、将要控制的8个流水灯的电源供电。
2、将电源的正极接入74LS194的8个输出端,将电源的负极接入74LS194的GND,将74LS194的输入端接入一个计数器。
3、当计数器计数到一定值时,就会触发74LS194的移位操作,从而使8个流水灯依次亮起。
用单片机控制流水灯的六种方案,要程序电路图,详细讲解
单片机中流水灯控制:
硬件连接很简单,只要将8个LED指示灯接在P1口上 另一端通过220欧姆的电阻接+5V电源上,就可以了。
主要靠软件控制,简单的可以使用左移或右移指令,将低电平0 逐渐移入寄存器中,即控制LED指示灯逐渐一个一个地点亮或一个一个地熄灭。
复杂点: 可以进行花式流水控制。
例如: 可以由两边逐渐向内点亮 然后再由内逐渐向外一个一个熄灭。
还可以由由内逐渐向两边内点亮 然后再由两边渐向内逐一个一个熄灭。
在程序的实现上 可以把各种花式流水的P1口亮灭状态字 事先定义成数组 然后每隔一定的时间
取出送P1口显示。
呵呵 俺只提供给你一个号的算法 程序就自己动手自立更生。
设计一个流水灯控制电路使8只发光二极管按一定频率轮流发光
;//
;//实现功能:本程序实现在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 <reg51h>
#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;//熄灭所有灯
}
}

}
555接成多谐振荡器+4017(计数译码器)输出直接接LED就可以构成按一定频率轮流发光的电路 。
追问: 有没有原理啊 ?电路图什么的 ?我还是不会啊
回答: 电路见下图,频率可以调节C1和RP
追问:


