用89S51单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管程序

用89S51单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管程序,第1张

在实验板上写的,放心用吧希望对你有帮助

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

方法一:查表法

;;;;;;;;;;;;;;;;;;;;;;;;;;

;作者:w418781840200865 /

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LED EQU P1

FLAG BIT 00H ;定义标志位

ORG 0

LJMP MAIN

ORG 0BH

LJMP AGA

;;;;;;主程序;;;;;;;;;;;;

ORG 0030H

MAIN: CLR FLAG ;标志位清0

;; CLR P20;打开灯开关

MOV TMOD,#01H ;赋值50MS

MOV TH0,#3CH

MOV TL0,#0B0H

MOV R0,#4 ;中断450=200MS

SETB EA

SETB ET0 ;开中断

SETB TR0

WQ: LCALL LENG ;调用

SJMP WQ

;;;;;;;;;中断服务程序;;;;;;;;;;;;;;

AGA: MOV TH0,#3CH

MOV TL0,#0B0H

DJNZ R0,LOOP ;02S到否否,返回

MOV R0,#4

SETB FLAG

LOOP: RETI

;;;;;;;;;;

LENG: MOV R1,#0

MOV DPTR,#TAB

LOP: MOV A,R1

MOVC A,@A+DPTR

MOV LED,A

JNB FLAG,$

CLR FLAG

INC R1

CJNE A,#0EEH,LOP

TAB: DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,080H,00H;左渐亮

DB 080H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH ;右渐亮

DB 7EH,3CH,18H,00H; 两边点亮值

DB 0FFH,00H,0FFH,00H,0FFH,0EEH,;闪烁两次,0EEH为结束标志

RET

END

;;;;;;;;;;;;;;;;;;;;;

方法二:不知道法,呵呵

;;;;;;;;;;;;;;;;;;;;;;;;;;

;程序功能:简单彩灯控制系统

;作者:w418781840200865 /

;;;;;;;;;;;;;;声明区;;;;;;;;;;;;;;;;;

LED EQU P1

FLAG BIT 00H ;定义标志位

ORG 0

LJMP MAIN

ORG 0BH

LJMP AGA

;;;;;;主程序;;;;;;;;;;;;

ORG 0030H

MAIN: CLR FLAG ;标志位清0

MOV TMOD,#01H ;赋值50MS

MOV TH0,#3CH

MOV TL0,#0B0H

MOV R0,#4 ;中断450=200MS

SETB EA

SETB ET0 ;开中断

SETB TR0

WQ: LCALL LED1 ;调用

LCALL LED2

LCALL LED3

SJMP WQ;;不断循环

;;;;;;;;;中断服务程序;;;;;;;;;;;;;;

AGA: MOV TH0,#3CH

MOV TL0,#0B0H

DJNZ R0,LOOP ;02S到否否,返回

MOV R0,#4

SETB FLAG

LOOP: RETI

;;;;;;LED子程序区;;;;;;;;;;

;;;;左移渐亮;;;;;;;;;;;

LED1: CLR C ;灯低电平亮

MOV A,#0FFH

LOP1: RLC A

MOV LED,A

JNB FLAG,$ ;02不到,等待

CLR FLAG ;清0,

CJNE A,#0,LOP1 ;不全亮,返回

RET

;;右移渐亮;;;;;;;

LED2: SETB C

LOP2: RRC A

MOV LED,A

JNB FLAG,$

CLR FLAG

CJNE A,#0FFH,LOP2

RET

;;;;;两边亮;;;;;

LED3: MOV R1,#0

MOV DPTR,#TAB

LOP3: MOV A,R1

MOVC A,@A+DPTR

MOV LED,A

JNB FLAG,$

CLR FLAG

INC R1

CJNE A,#0,LOP3

;;;闪烁;;;;;;;;;

MOV R2,#2

LOP4: CPL A

MOV LED,A

JNB FLAG,$

CLR FLAG

DJNZ R2,LOP4;;

TAB: DB 7EH,3CH,18H,00H; 两边点亮值

RET

END

unsigned char lights = 0; //lights到各位分别表示P10~P17

int i=0;

while (1)

{

//①L1、L2、…L8依次点亮

lights = 0x01;

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

{

delay(500);

lights = lights << 1;

}

delay(500);

//②L1、L2、…L8依次熄灭

lights = 0xfe;

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

{

delay(500);

lights = (lights << 1) + 0x01;

}

delay(500);

//③L1、L2、…L8全亮

lights = 0xff;

delay(500);

//全灭

lights = 0x00;

delay(500);

}

可中断控制循环彩灯实验原理是电路控制是通过三极管,有极性电容,电阻来控制发光二极管来实现的。根据相关资料查询显示:控制按钮选I01按一次开始,再按一次停止,停止后彩灯全灭。程序中包括了子程序的调用及中断程序的执行,在子程序中建立了初始化状态并建立于开通了中断事件。

FL1 PBO5 PBO4 FL2 PBO3 PBO2 FL3 PBO1是什么?说明再详尽点,帮你做。(1)用两个开关作为分组移动方式控制开关,其状态组合成四种控制方式:

00——1个彩灯一组;

01——2个彩灯一组并行移动;

10——2个彩灯一组串行移动;

11——3个彩灯一组串行移动;说通俗一点啊

以上就是关于用89S51单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管程序全部的内容,包括:用89S51单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管程序、如何用C语言写一个循环彩灯的程序,采用定时器方式1工作。、可中断控制循环彩灯实验原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/10631063.html

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

发表评论

登录后才能评论

评论列表(0条)

保存