导航:首页 > 操作系统 > 51单片机24个左右流水灯

51单片机24个左右流水灯

发布时间:2022-09-27 02:46:29

A. 很简的51单片机C语言流水灯程序

1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:
#include<reg51.h> //51单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit beep=P2^3;
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
uchar a,i,j;
while(1) //大循环
{
a=0xfe; //赋初值
for(j=0;j<3;j++) for(i=0;i<8;i++) //左移三次
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=0x7f;
for(j=0;j<3;j++) for(i=0;i<8;i++) //右移三次
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_cror_(a,1); //将a变量循环右移一位
}
}
}
2、51单片机是对所有兼容Intel
8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash
rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。

B. 51单片机流水灯原理

单片机流水灯控制原理就是将多个LED灯珠连接到不同的单片机输出端上,编程使单片机的这些输出端逐个的输出信号点亮LED,在设置好各个LED的通电时间和通电间隔时间后,就可以看到这些LED灯珠此起彼伏的亮起,如同流水一样.

C. 51单片机设计流水灯

;电路图在附件内,经仿真通过,不知能不能达到你的要求。
;想要您的分真难啊
;呵呵!
org 0000h
ajmp start
org 0030h
start:
mov a,#0ffh ;
clr c ;
mov r2,#08h ;循环八次。
loop: rlc a ;带进位左移。
mov p1,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop ;反复循环
mov r2,#07h ;再往回循环。
loop1: rrc a ;带进位右移
mov p1,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop1 ;反复循环
jmp start ;重新开始

delay: mov r3,#20 ;延时子程序
d1: mov r4,#20
d2: mov r5,#248
djnz r5,$
djnz r4,d2
djnz r3,d1
ret
end

D. 51单片机左右循环移动的流水灯功能,求解答每一句具体含义!

#include<reg52.h>//头文件包含,包括51硬件寄存器的宏定义,延时函数等
#define uchar unsigned char//宏定义,uchar被定义成unsigned char的简写
#define uint unsigned int//同上,uint被定义成unsigned int 的简写

#define DataPort P0//dataport(数据端口)被定为成P0口
sbit P21=P2^0;sbit是设置端口的某一位为一个变量,这样就可以直接对变量进行操作(等价于对端口该位的操作),如sbit led1=P1^1;如果P1^1接的是led的话,led1=1;就可以使led灯点亮了!
uchar code ScanCode[ ]=
{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
code表示让单片机把这个定义的ScanCode的值存在ROM(程序存储区)
定义一个无符号的字符型变量数组ScanCode,其值存放在程序存储区,写入之后不可更改
void DelayMs(uint n)//毫秒延时函数,通过设置循环次数,来设定时间
{
uchar j;
while(n--)//直到n减为0退出循环
{
for(j=0;j<113;j++);空循环114次,即延时114个指令周期
}
}
void main(void)主函数
{
uchar i;
P21=1;p2口第1位引脚置高电平
while(1)无限循环
{
for(i=0;i<8;i++)以下大括号中两句代码循环8次,即将ScanCode数组中8字节数据依次送到p0口
{
DataPort=ScanCode[i];向数据口(即p0口)送数据,数据为ScanCode数组中第i个元素
DelayMs(500);延时500毫秒
}
for(i=0;i<8;i++)同上,将scancode数字的8字节数据按相反顺序再送一次
{
DataPort=ScanCode[7-i];
DelayMs(500);
}
}
}

E. 51单片机流水灯程序

程序如下:

#include <reg52.h>

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;


void main()

{

int i,j;

//点亮第一个灯

led1 = 1;

led2 = 0;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//延时1秒

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

{

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

{

;//什么也不做

}

}

//点亮第二个灯

led1 = 0;

led2 = 1;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//点亮剩余的灯

//省略……

while(1);

}

(5)51单片机24个左右流水灯扩展阅读:

流水灯几点说明:

void:因为该延时函数不需要返回值,所以写为void

delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。

(): 不需要传入参数,所以括号中为空

至此我们可以把流水灯程序写为以下形式:

F. 用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口的八只管脚分别流水过去,但要接排阻或上拉电阻。
还有什么不懂的,尽管追问。

G. 51单片机组成的心形流水灯C语言 要求灯24个

24个灯很正常,仿真也可以给你做。

H. 51单片机中如何用汇编语言编写流水灯

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:

ORG 0000H ;复位启动
AJMP START ;
ORG 001BH ;T1中断
AJMP T1INT ;

;定义变量========================
YSJS EQU 30H;延时计数器
LED EQU 31H;LED控制缓冲器

;主程序==========================
START: MOV LED,#0FEH ;初始化数据
MOV YSJS,#0 ;
MOV TMOD,#10H ;定时器1工作于方式1,16位定时器
MOV TL1,#0B0H ;设置定时初值
MOV TH1,#3CH ;定时时间=50mS
SETB ET1 ;使能定时器1中断
SETB TR1 ;启动定时器1
SETB EA ;开总中断

MOV P1,LED ;初始化流水灯
LOOP: JMP LOOP ;循环等待中断
T1INT: PUSH PSW ;定时器1中断程序
PUSH ACC ;保护现场
MOV TH1,#3CH ;定时时间=50mS
MOV TL1,#0B0H ;
INC YSJS ;

PUSH ACC ;保护ACC
MOV A,YSJI ;
CJNE A,#2,QT1 ;50mS*2=100mS
MOV P1,LED ;
MOV A,LED ;
RL A ;累加器A的值循环左移1位
MOV LED,A ;
MOV YSJS,#0 ;
QT1: POP ACC ;恢复现场
POP PSW ;
RETI ;返回主程序
END ;汇编程序结束

(8)51单片机24个左右流水灯扩展阅读:

实现流水灯的三个方法:

第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。

第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

第三种,库函数实现流水灯。利用左移函数进行。

阅读全文

与51单片机24个左右流水灯相关的资料

热点内容
男主角是白头发的日本电影 浏览:967
androidhtml滚动条 浏览:678
在线电影网站推荐 知乎 浏览:383
python多长时间能学习 浏览:884
java正则图片 浏览:601
怎么对u盘的文件夹加密 浏览:320
手机为什么自动卸载app 浏览:51
只有一个程序员的公司 浏览:27
php敏感词检测工具 浏览:607
苹果app为什么有的不可以左滑 浏览:814
php访问access数据库 浏览:417
爱情韩国三小时合集电影 浏览:824
华为的编译器能编译哪些语言 浏览:810
单片机如何实现电气隔离 浏览:791
重生到建国初期卖军火的小说 浏览:48
php微信接入 浏览:274
隐喻pdf 浏览:446
怎么打开cuda编译器 浏览:216
linux命令vmstat 浏览:568
vc编译有错误 浏览:3