|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源程序如下:
- ORG 0000H;程序從0000h開始存放
- START: MOV SP,#60H;設(shè)置堆棧首地址
- MOV SCON,#01010000B;方式1,允許接收
- MOV TMOD,#20H;定時(shí)器工作方式1
- ORL PCON,#10000000B;波特率倍數(shù)
- MOV TH1,#0F3H;設(shè)置定時(shí)初始值
- MOV TL1,#0F3H;設(shè)置定時(shí)初始值
- SETB TR1;啟動(dòng)定時(shí)器1
- MOV R6,#4;給初始值
- LJMP LOOP;跳轉(zhuǎn)到LOOP
- A1: CJNE R6,#0,A2;如果R6不等于0,則跳轉(zhuǎn)
- MOV P1,#0FEH;點(diǎn)燈
- LCALL DELAY130MS;延時(shí)
- MOV P1,#0FDH
- LCALL DELAY130MS
- MOV P1,#0FBH
- LCALL DELAY130MS
- MOV P1,#0F7H
- LCALL DELAY130MS
- MOV P1,#0EFH
- LCALL DELAY130MS
- MOV P1,#0DFH
- LCALL DELAY130MS
- MOV P1,#0BFH
- LCALL DELAY130MS
- MOV P1,#07FH
- LCALL DELAY130MS
- A2:CJNE R6,#1,A3;如果R6不等于1,則跳轉(zhuǎn)
- MOV P1,#07FH
- LCALL DELAY130MS
- MOV P1,#0BFH
- LCALL DELAY130MS
- MOV P1,#0DFH
- LCALL DELAY130MS
- MOV P1,#0EFH
- LCALL DELAY130MS
- MOV P1,#0F7H
- LCALL DELAY130MS
- MOV P1,#0FBH
- LCALL DELAY130MS
- MOV P1,#0FDH
- LCALL DELAY130MS
- MOV P1,#0FEH
- LCALL DELAY130MS
- A3:CJNE R6,#2,A6;如果R6不等于2,則跳轉(zhuǎn)
- MOV P1,#0E7H
- LCALL DELAY130MS
- MOV P1,#0DBH
- LCALL DELAY130MS
- MOV P1,#0BDH
- LCALL DELAY130MS
- MOV P1,#7EH
- LCALL DELAY130MS
- A6:CJNE R6,#3,A5;如果R6不等于3,則跳轉(zhuǎn)
- MOV P1,#7EH
- LCALL DELAY130MS
- MOV P1,#0BDH
- LCALL DELAY130MS
- MOV P1,#0DBH
- LCALL DELAY130MS
- MOV P1,#0E7H
- LCALL DELAY130MS
- A5: JB P2.0,A9
- INC R6
- CJNE R6,#5,A9
- MOV R6,#0
- A9:CJNE R6,#4,LOOP;如果R6不等于4,則跳轉(zhuǎn)
- MOV P0,#0FFH
- SJMP LOOP;跳轉(zhuǎn)
- A4:LJMP A1;跳轉(zhuǎn)
- LOOP: JNB RI,A4;如果RI不是1,則跳轉(zhuǎn)
- CLR RI;清零
- MOV A,SBUF;把接收到的數(shù)據(jù)給累加器
- CJNE A,#30H, B1;如果累加器A不等于'0',則跳轉(zhuǎn)
- MOV R6,#0
- LCALL MSG1;調(diào)用子程序
- B1: CJNE A,#31H,B2;如果累加器A不等于'1',則跳轉(zhuǎn)
- MOV R6,#1
- LCALL MSG2;調(diào)用子程序
- B2: CJNE A,#32H,B3;如果累加器A不等于'2',則跳轉(zhuǎn)
- MOV R6,#2
- LCALL MSG3;調(diào)用子程序
- B3: CJNE A,#33H,B4;如果累加器A不等于'3',則跳轉(zhuǎn)
- MOV R6,#3
- LCALL MSG4;調(diào)用子程序
- B4: CJNE A,#34H,B5;如果累加器A不等于'4',則跳轉(zhuǎn)
- MOV R6,#4
- LCALL MSG5;調(diào)用子程序
- MSG1: MOV DPTR,#M1
- LCALL PRINT;調(diào)用中斷程序
- B5:SJMP LOOP;跳轉(zhuǎn)
- MSG2: MOV DPTR,#M2;取M2首地址給程序指針
- LCALL PRINT
- SJMP LOOP
- MSG3: MOV DPTR,#M3;取M3首地址給程序指針
- LCALL PRINT
- SJMP LOOP
- MSG4: MOV DPTR,#M4;取M4首地址給程序指針
- LCALL PRINT
- SJMP LOOP
- MSG5: MOV DPTR,#M5;取M5首地址給程序指針
- LCALL PRINT
- SJMP LOOP
- PRINT: MOV R0,#00H
- DP1: MOV A,R0
- MOVC A,@A+DPTR;查表
- CJNE A,#00H,OUTPUT;如果累加器A不等于00H,則跳轉(zhuǎn)
- RET
- DELAY130MS: ;延時(shí)130ms
- MOV R4,#255
- DELAY10MSA:
- MOV R5,#255
- DJNZ R5,$
- DJNZ R4,DELAY10MSA
- RET
- OUTPUT: MOV SBUF,A
- JNB TI,$
- CLR TI
- INC R0
- SJMP DP1
- M1: DB 'Light_Mode0',0DH,00H;發(fā)送給pc端的字符串
- M2: DB 'Light_Mode1',0DH,00H;發(fā)送給pc端的字符串
- M3: DB 'Light_Mode2',0DH,00H;發(fā)送給pc端的字符串
- M4: DB 'Light_Mode3',0DH,00H;發(fā)送給pc端的字符串
- M5: DB 'Light_OFF',0DH,00H;發(fā)送給pc端的字符串
- END
復(fù)制代碼
全部資料51hei下載地址:
(RS232串口)基于 51 單片機(jī)的多種流水燈上位機(jī)控制系統(tǒng).rar
(114.22 KB, 下載次數(shù): 17)
2020-10-24 21:27 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|