单片机89C51控制彩灯程序设计(汇编程序)实现用P1口控制8个彩灯流水点亮和闪烁,以及三种花样变化

单片机89C51控制彩灯程序设计(汇编程序)实现用P1口控制8个彩灯流水点亮和闪烁,以及三种花样变化,第1张

利用取表的方法,使端口P1 做单一灯的变化:左移2 次,右移2 次,闪烁2 次

(延时的时间02 秒)。

汇编源程序

ORG 0

START: MOV DPTR,#TABLE

LOOP: CLR A

MOVC A,@A+DPTR

CJNE A,#01H,LOOP1

JMP START

LOOP1: MOV P1,A

MOV R3,#20

LCALL DELAY

INC DPTR

JMP LOOP

DELAY: MOV R4,#20

D1: MOV R5,#248

DJNZ R5,$

DJNZ R4,D1

DJNZ R3,DELAY

RET

TABLE: DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

DB 07FH,0BFH,0DFH,0EFH

DB 0F7H,0FBH,0FDH,0FEH

DB 07FH,0BFH,0DFH,0EFH

DB 0F7H,0FBH,0FDH,0FEH

DB 00H, 0FFH,00H, 0FFH

DB 01H

END

unsigend char LED1[k]={彩灯花样代码,你可以自己编写}; //k值是花样的数目 unsigend char LED2[k]={彩灯花样代码,你可以自己编写};

void main(void)

{

unsigend char i;

while(1)

{

if(p10==0) // 假设按键在p10口

{

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

{

p10=LED1[i];

delay(N);

}

if(i>k)i=0;

}

else

{

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

{

p10=LED2[i];

delay(N);

}

if(i>k)i=0;

}

}

}

#include<reg51h>

#include<intrinsh>

#define uchar unsigned char

uchar key,led=0xfe;

void delay(uchar a)

{

uchar i,j;

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

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

}

main()

{

while(1)

{

key=P1&0x0f;

switch(key)

{

case 0x0e:

P0=0xff;

delay(200);

P0=0x00;

delay(200);

break;

case 0x0d:

P0=0x00;

break;

case 0x0b:

P0=led;

led=_crol_(led,1);

delay(100);

break;

case 0x07:

P0=led;

led=_cror_(led,1);

delay(100);

break;

default:break;

}

}

}

可以用外部中断来控制;如果单片机中断是低有效,将按钮设置成按下时为低电平,触发中断,在中断中设置一个标志位,然后退出中断;主程序来判断这个标志位,如果为1,则退出led跑灯程序; 如果为0,则继续跑灯。如果单片机中断是高有效,将按钮设置成按下时为高电平,同理。 设置一个全局变量a,并且赋值a=0,一旦有按钮按下,则进入中断,并且a赋值为1,即a=1;在主程序中判断a的值,如果为0,则执行跑灯;若为1,则停止。

那个这是我自己写的,我也在自学单片机,这程序我可能写的不够简洁,但我试了一下在我的板子上显示的和你要求的一样。下面是程序:

#include<reg52h>

#include <intrinsh>

#define uint unsigned int

#define uchar unsigned char

sbit beep=P2^3;

void delay(uint z)

{

uint x,y;

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

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

}

void main()

{ uchar a;

int i;

a=0xfe;

while(1)

{

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

{

P1=a;

delay(300);

P1=0xff;

delay(300);

}

a=_crol_(a,1);

}

}

希望采纳吧,说一下,郭天祥的十天学会单片机不错额。就是我正在学的,加油!!

以上就是关于单片机89C51控制彩灯程序设计(汇编程序)实现用P1口控制8个彩灯流水点亮和闪烁,以及三种花样变化全部的内容,包括:单片机89C51控制彩灯程序设计(汇编程序)实现用P1口控制8个彩灯流水点亮和闪烁,以及三种花样变化、急求在51单片机中用一个开关控制两种方式亮的彩灯的源程序。。谢谢、以单片机为核心,设计一个节日彩灯控制器,设计要求如下:在单片机的p0口接有8个发光二极管作为指示灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9282560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存