51单片机流水灯设计(51单片机流水灯设计串联还是并联)
51单片机 流水灯的设计,10后流水灯关闭
void T0_time() interrupt 1
{
TH0=(65536-45872)/256; //50ms中断一次
TL0=(65536-45872)%256;
pp++;
}
51单片机12展流水灯的程序怎么设计?
我就写个顺时针亮的程序(详细解释,其它的你就自己写),全手打的哦,用的是汇编,我水平也不怎么高,但是你的问题也是入门级的,还有我假设是高电位亮,一共12灯从P0.0开始到P1.4(P1.4和P0.0相接)。ORG 4000HSTART:CLR P0CLR P1 /P0 P1清零MOV P0,#80H/1灯亮LCALL DEL/调用延时程序MOV P0,#0C0HLCALL DELMOV P0,#0E0HLCALL DELMOV P0,#0F0HLCALL DELMOV P0,#0F8HLCALL DELMOV P0,#0FCHLCALL DELMOV P0,#0FEHLCALL DELMOV P0,#0FFHLCALL DELSTEB P0/P0口值位,前8灯全亮MOV P1,#080HLCALL DELMOV P1,#0C0HLCALL DELMOV P1,#0E0HLCALL DELMOV P1,#0F0HLCALL DELMOV P1,#0F8HLCALL DELLJMP START/程序跳到开始,进行循环DEL:MOV R7,#200MOV R5,#20DEL1:MOV R6,#123 NOPDEL2:DJNZ R6,DEL2DJNZ R7,DEL1DJNZ R5,DEL1RET/延时程序 共约1SSJMP $起始位4000H 可能不对 要自己找。
51单片机流水灯用C语言编写的设计程序是什么?
#includereg51.h
#includeintrins.h
#define uchar unsigned char
void delay(void)
{
uchar i,j;
for(i=0;i150;i++)
for(j=0;j240;j++);
}
main()
{
uchar led,i,j;
while(1)
{
for(i=0;i8;i++)
{
led=0xfei;
for(j=0;j8-i;j++)
{
P0=led;
led=_crol_(led,1);
delay();
}
}
}
}
c51单片机中如何用汇编语言编写流水灯
51单片机用汇编语言编写流水灯程序,就是控制多个LED
,使其在特定时间间隔内,只有一个LED
发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:
;假设晶振12MHZ,P1控制8个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
;汇编程序结束
51单片机中如何用汇编语言编写流水灯
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:
ORG 0000H;复位启动
AJMP START;
ORG 001BH;T1中断
AJMP T1INT;
;定义变量========================
YSJSEQU 30H;延时计数器
LEDEQU 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;汇编程序结束
扩展资料:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。