;=======================================================
;利用串行转并行芯片595芯片调数据表实现40个彩色LED来回流两个花样
;======================================================
MR EQU P3.4;MR低电平移位寄存器清零
SH EQU P3.7;SH上升沿数据寄存器移位
ST EQU P3.6;上升移位寄存器数据进入数据寄存器
OE EQU P3.3;高电平禁止输出(高阻态)
DSA EQU P3.5;串行数据输入
;=========初始化程序=====================================
CLR MR;复位
LCALL DELAY
SETB MR;复位复位
CLR OE;允许输出
CLR ST
CLR SH
;==================================================
ZUO:MOV 40H,#00H
KAI:MOV R0,#00H
MOV DPTR,#TAB
SS:LCALL LL;调用第一个花样共调5次
INC R0
LCALL LL
INC R0
LCALL LL
INC R0
LCALL LL
INC R0
LCALL LL
INC R0
;============================================
LCALL OUT
LCALL YAN
MOV A,R0
CJNE A,#225D,SS
INC 40H
MOV A,40H
CJNE A,#5D,KAI
;-------------------------------------------
MOV 40H,#00H
KAI2:MOV R0,#00H
MOV DPTR,#TAC
SS1:LCALL LL;调用第二个花样共调5次
INC R0
LCALL LL
INC R0
LCALL LL
INC R0
LCALL LL
INC R0
LCALL LL
INC R0
;============================================
LCALL OUT
LCALL ZYS
MOV A,R0
CJNE A,#90D,SS1
INC 40H
MOV A,40H
CJNE A,#5D,KAI2
AJMP ZUO
;=================================================
LL: MOV A,R0
MOVC A,@A+DPTR
LCALL WR_595
RET
;====================================================
;移位寄存器接收数据子程序
;==================================================
WR_595:MOV R4,#08H;确定输出为8位数据
WR_LOOP:RLC A
MOV DSA,C;写入第一位数据
SETB SH;上升沿发生移位
LCALL DELAY
CLR SH;串行数据移位
LCALL DELAY
DJNZ R4,WR_LOOP;等待数据全部发送完毕
RET
;=========================================================
OUT:SETB ST;上升沿将数据送到输出锁存器
NOP;空操作指令,延时一个程序周期
NOP
CLR ST;下降沿将数据从锁存器输出
RET
;================================================
;短延时子程序
;=============================================
DELAY:MOV R6,#5D
DEL1:MOV R7,#2D
DJNZ R7,$
DJNZ R6,DEL1
RET
;=============================================
;长延时子程序
;===============================================
YAN:MOV R6,#200D
YAN1:MOV R7,#100D
DJNZ R7,$
DJNZ R6,YAN1
RET
;=============================================================
;中延时程序
;=============================================================
ZYS:MOV R2,#200D
AA:MOV R3,#100D
NN:MOV R5,#10D
DJNZ R5,$
DJNZ R3,NN
DJNZ R2,AA
RET
;===========================================================
;数据表
;============================================================
TAB:DB 01111111B,11111111B,11111111B,11111111B,11111110B;1
DB 00111111B,11111111B,11111111B,11111111B,11111100B;2
DB 00011111B,11111111B,11111111B,11111111B,11111000B;3
DB 00001111B,11111111B,11111111B,11111111B,11110000B;4
DB 10000111B,11111111B,11111111B,11111111B,11100001B;5
DB 11000011B,11111111B,11111111B,11111111B,11000011B;6
DB 11100001B,11111111B,11111111B,11111111B,10000111B;7
DB 11110000B,11111111B,11111111B,11111111B,00001111B;8
DB 11111000B,01111111B,11111111B,11111110B,00011111B;9
DB 11111100B,00111111B,11111111B,11111100B,00111111B;10
DB 11111110B,00011111B,11111111B,11111000B,01111111B;11
DB 11111111B,00001111B,11111111B,11110000B,11111111B;12
DB 11111111B,10000111B,11111111B,11100001B,11111111B;13
DB 11111111B,11000011B,11111111B,11000011B,11111111B;14
DB 11111111B,11100001B,11111111B,10000111B,11111111B;15
DB 11111111B,11110000B,11111111B,00001111B,11111111B;16
DB 11111111B,11111000B,01111110B,00011111B,11111111B;17
DB 11111111B,11111100B,00111100B,00111111B,11111111B;18
DB 11111111B,11111110B,00011000B,01111111B,11111111B;19
DB 11111111B,11111111B,00000000B,11111111B,11111111B;20
DB 11111111B,11111111B,10000001B,11111111B,11111111B;21
DB 11111111B,11111111B,11000011B,11111111B,11111111B;22
DB 11111111B,11111111B,11100111B,11111111B,11111111B;23
DB 11111111B,11111111B,11000011B,11111111B,11111111B;24
DB 11111111B,11111111B,10000001B,11111111B,11111111B;25
DB 11111111B,11111111B,00000000B,11111111B,11111111B;26
DB 11111111B,11111110B,00011000B,01111111B,11111111B;27
DB 11111111B,11111100B,00111100B,00111111B,11111111B;28
DB 11111111B,11111000B,01111110B,00011111B,11111111B;29
DB 11111111B,11110000B,11111111B,00001111B,11111111B;30
DB 11111111B,11100001B,11111111B,10000111B,11111111B;31
DB 11111111B,11000011B,11111111B,11000011B,11111111B;32
DB 11111111B,10000111B,11111111B,11100001B,11111111B;33
DB 11111111B,00001111B,11111111B,11110000B,11111111B;34
DB 11111110B,00011111B,11111111B,11111000B,01111111B;35
DB 11111100B,00111111B,11111111B,11111100B,00111111B;36
DB 11111000B,01111111B,11111111B,11111110B,00011111B;37
DB 11110000B,11111111B,11111111B,11111111B,00001111B;38
DB 11100001B,11111111B,11111111B,11111111B,10000111B;39
DB 11000011B,11111111B,11111111B,11111111B,11000011B;40
DB 10000111B,11111111B,11111111B,11111111B,11100001B;41
DB 00001111B,11111111B,11111111B,11111111B,11110000B;42
DB 00011111B,11111111B,11111111B,11111111B,11111000B;43
DB 00111111B,11111111B,11111111B,11111111B,11111100B;44
DB 01111111B,11111111B,11111111B,11111111B,11111110B;45
;-------------------------------------------------------------------
TAC:DB 01101101B,10110110B,11011011B,01101101B,10110110B;1
DB 11101111B,10111110B,11011111B,01111101B,11110111B
DB 01111101B,11110111B,11111011B,11101111B,10111110B
DB 10110110B,11011011B,01101101B,10110110B,11011011B;2
DB 10111110B,11111011B,11101111B,10111110B,11011111B
DB 11110111B,11011111B,01111101B,11110111B,11111011B
DB 11011011B,01101101B,10110110B,11011011B,01101101B;3
DB 11111011B,11101111B,10111110B,11111011B,11101111B
DB 11011111B,01111101B,11110111B,11011111B,01111101B
DB 01001001B,00100100B,10010010B,01001001B,01001001B;4
DB 01011101B,01110101B,11010111B,01011101B,01110101B
DB 11101011B,10101110B,10111010B,11101011B,10101110B
DB 10010010B,01001001B,00100100B,10010010B,01001001B;5
DB 11110011B,11001111B,00111100B,11110011B,11001111B
DB 10011110B,01111001B,11100111B,10011110B,01111001B
DB 00100100B,10010010B,01001001B,00100100B,10010010B;6
DB 00111100B,11110011B,11001111B,00111100B,10011110B
DB 11100111B,10011110B,01111001B,11100111B,11110011B
END
|