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

状态1:控制系统通电或复位后,8个LED发光二极管依次从左向右开始逐个点亮,间隔时间为0.2S
状态2:8个LED发光二极管全亮后,从右向左LED发光二极管再逐个熄灭,间隔时间仍为0.2S
状态3:8个LED发光二极管全灭后,从左右两边开始同时点亮LED发光二极管,全亮后,8个LED发光二极管再明暗一起闪烁2次,间隔时间仍为0.2s
要求程序

在实验板上写的,放心用吧.希望对你有帮助
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
方法一:查表法.
;;;;;;;;;;;;;;;;;;;;;;;;;;

;作者:w418781840.2008.6.5 */

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED EQU P1
FLAG BIT 00H ;定义标志位
ORG 0
LJMP MAIN
ORG 0BH
LJMP AGA
;;;;;;主程序;;;;;;;;;;;;
ORG 0030H
MAIN: CLR FLAG ;标志位清0
;; CLR P2.0;打开灯开关.
MOV TMOD,#01H ;赋值50MS
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#4 ;中断4*50=200MS
SETB EA
SETB ET0 ;开中断.
SETB TR0
WQ: LCALL LENG ;调用.
SJMP WQ
;;;;;;;;;中断服务程序;;;;;;;;;;;;;;
AGA: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,LOOP ;0.2S到否?否,返回
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
;;;;;;;;;;;;;;;;;;;;;
方法二:不知道法,呵呵.
;;;;;;;;;;;;;;;;;;;;;;;;;;
;程序功能:简单彩灯控制系统.
;作者:w418781840.2008.6.5 */

;;;;;;;;;;;;;;声明区;;;;;;;;;;;;;;;;;
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 ;中断4*50=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 ;0.2S到否?否,返回
MOV R0,#4
SETB FLAG
LOOP: RETI
;;;;;;LED子程序区;;;;;;;;;;
;;;;左移渐亮;;;;;;;;;;;
LED1: CLR C ;灯低电平亮.
MOV A,#0FFH
LOP1: RLC A
MOV LED,A
JNB FLAG,$ ;0.2不到,等待.
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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-05
?现在的孩子啊?
给你个
p1控制
灌电流
1
p1=0xff;
p1.0=0;
延时0.2s
p1.1=0;
延时0.2s
p1.2=0;
延时0.2s
p1.3=0;
延时0.2s
p1.4=0;
延时0.2s
p1.5=0;
延时0.2s
p1.6=0;
延时0.2s
p1.7=0;
延时0.2s

2
p1=0x00;
p1.0=1;
延时0.2s
p1.1=1;
延时0.2s
p1.2=1;
延时0.2s
p1.3=1;
延时0.2s
p1.4=1;
延时0.2s
p1.5=1;
延时0.2s
p1.6=1;
延时0.2s
p1.7=1;
延时0.2s
3
p1=0xff;
p1.0=0;
p1.7=0;
延时0.2s
p1.1=0;
p1.6=0;
延时0.2s
p1.2=0;
p1.5=0;
延时0.2s
p1.3=0;
p1.4=0;
延时0.2s

p1=0xff
延时0.2s
p1=0
延时0.2s
p1=0xff
延时0.2s
p1=0x本回答被提问者采纳
相似回答