⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.asm

📁 显示四个字的LED原理图及程序
💻 ASM
字号:
;B  ------移动时内存单元的数据要移的次数
;20H------作模式选择用
;30H-6FH--显示内容存储单元64个单元
;2BH------扫描还剩几行寄存
;2CH------应该选通那一行寄存
;2DH------寻址偏址
;2EH------每次移入内存单元的数据要左移的次数临时值
;2FH------左移速度
;29H,2AH-----延时同步修正寄存器
;*************************************************************
;***************引脚定义,根据使用不同的管脚而改动*************
;*************************************************************
;A,B,C,D分别用P2。0至P2。3线
SER     EQU    P3.0   ;内容发送
SRCLK   EQU    P3.1   ;串行CP端
RCLK    EQU    P1.7   ;输出CP端
EN      EQU    P1.6   ;EN为138使能端.高电平关闭显示;低电平显示
;*************************************************************	
;*********************中断入口程序****************************
        ORG     0000H
        LJMP    MAIN
        ORG     0003H
        RETI
        ORG     000BH
        RETI
        ORG     0013H
        RETI
        ORG     001BH
        RETI
        ORG     0023H
        RETI
        ORG     0100H
;***************主程序****************************************
MAIN:   SETB   EN               ;关显示端口
        MOV    20H,#01H         ;设开始为模式1
STRAT:  MOV    SP,#70H          ;堆栈首址
        MOV    R0,#30H          ;初使化寄存显示单元
        MOV    R1,#64           ;30H~6FH单元清零
        MOV    A,#00H
ST:     MOV    @R0,A
        INC    R0
        DJNZ   R1,ST
;********************显示内容*********************************
LOOP:	MOV    DPTR,#TAB	;赋查表初址
LOOP1:	MOV    R1,#4		;送幕数(即字数除以4,每幕4个字)
LOOP2:  JB 00H,L00              ;4个字一齐显示
	JB 01H,L10              ;下移
	JB 02H,L20              ;上移
LOOP3:	MOV    A,DPL            
        CLR    C
        ADD    A,#128		;查表地址改为下一段,即增加128(四个字为128)
	MOV    DPL,A            ;如每次显示字数不同要作相应改动
	MOV    A,DPH
        ADDC   A,#0
	MOV    DPH,A
	DJNZ   R1,LOOP2		;一种模式下显示完了没有?如未继续显示
        MOV    A,20H            ;一种模式下如显示完就改变显示模式
        RL     A
        MOV    20H,A
        JB     ACC.3,MAIN	;如所有模式全部显示完了没有?如还未完就继
                                ;续显示下一种模式
        LJMP   STRAT		;如显示完所有模式,就重新开始循环显示内容
        RET
;***********************************************************************
;************************以下为显示模式的子程序*************************
;***********************************************************************
L00:    LCALL  PLAY
	LJMP LOOP3

;***********************************************************************
;****************************以下为下移程序*****************************
;***********************************************************************
L10:	MOV    28H,#16
L11:	MOV    2FH,#60
L12:	MOV    A,#17
	CLR    C
        SUBB   A,28H
	MOV    26H,A
	MOV    B,A
	MOV    2BH,28H
	MOV    27H,#15
L13:	MOV    A,27H
	RL     A
	MOV    2DH,A	
	LCALL  MSTR
 	LCALL  SEND
	LCALL  XH
	DEC    27H
	INC    2BH
	DJNZ   26H,L13
	LCALL  ZYXZ  
	DJNZ   2FH,L12
	DJNZ   28H,L11
	LCALL  PLAY	     ;运行PLAY一次后,内容左移显示八次,寻址偏址不变
	LJMP LOOP3
;**************************************************************************
;****************************以下为上移程序********************************
;**************************************************************************
L20:	MOV    28H,#16
L21:	MOV    2FH,#40
L22:	MOV    A,#17
	CLR    C
        SUBB   A,28H
	MOV    26H,A
	MOV    B,A
	MOV    2BH,A
	MOV    27H,#0
L23:	MOV    A,27H
	RL     A
	MOV    2DH,A	
	LCALL  MSTR
 	LCALL  SEND
	LCALL  XH
	INC    27H
	DEC    2BH
	DJNZ   26H,L23
	LCALL  ZYXZ  
	DJNZ   2FH,L22
	DJNZ   28H,L21
	LCALL  PLAY             ;运行PLAY一次后,内容左移显示八次,寻址偏址不变
	LJMP LOOP3
;*****************************************************************************
;*************************整屏四个字一齐显示的程序****************************
PLAY:	 MOV   2DH,#0
NLINE:   MOV   2FH,#150     ;左移速度
GG:      LCALL LINE16       ;扫描显示1帧
         DJNZ  2FH,GG
         RET
;*********扫描显示1帧行子程序*******************
LINE16:  MOV  2BH,#16       ;扫描的行数,共16行,经行程序处理后显示应显示的行
FF:      LCALL  LINE1       ;扫描显示1行子程序
         DJNZ   2BH,FF	    ;扫描下一行
         MOV    A,2DH
         SUBB   A,#32       ;扫描完16行后要重头开始,在MSTR子程序中,减32
         MOV    2DH,A
         RET
;*********扫描显示一行子程序********************
LINE1:  LCALL  MSTR        ;将显示内容移入内存单元21H~28H ,跳出后29H加2
	LCALL  SEND        ;发送串行口子程序
        LCALL  XH          ;选通行子程序
        RET

;****************************************************************************
;****************************************************************************
;*************************显示内容移入内存单元子程序*************************
MSTR:   MOV    R0,#30H
        MOV    R4,#5            ;每幕显示的字数加1;如每幕显示字数不同要作相应改动
        MOV    A, 2DH
BB:     MOVC   A, @A+DPTR
        MOV    @R0,A         
        INC    R0
	MOV    A,2DH
	INC    A
	MOVC   A,@A+DPTR
	MOV    @R0,A
	MOV    A,2DH
        ADD    A,#32            ;加32,移到下一个字节的对应位置
	MOV    2DH,A
	INC    R0	
	DJNZ   R4,BB
	MOV    A,2DH
	SUBB   A,#158           ;每次显示4个字,减158;如每次显示字数不同要作相应改动
	MOV    2DH,A
	RET
;*****************************发送数据到串口子程序*********************************
SEND:   MOV  R0,#30H
        MOV  R5,#8		;一行有8个字节;如每次显示字数不同要作相应改动
LQ:     CLR  C			;清C方便每个字节的移动
	MOV  R2,#8		;每个字节有8位
        MOV  A,@R0		;将显存的字节的单元移入A
	CPL A
        LCALL  DD1		;调用显示一个字节的子程序
        INC  R0			;指向下一个显存的单元
        DJNZ R5,LQ		;8个字节全部移入了没有,未继续
        RET
DD1:    CLR  SRCLK		;清串行CP端
        RLC  A			;将每个字节移位
        MOV  SER,C		;将移入C的位移入信号端
        SETB SRCLK		;触发串行CP端
        DJNZ R2,DD1		;每个字节位移8次够了没有?
        RET
	
;*******选通行子程序**********************************************
XH:      CLR   RCLK		;将输出CP变为低电平为上升沿作准备
	 SETB  EN               ;将使能端变为高电平为下降沿作准备
         MOV   2CH,2BH          ;2BH存运行剩几行数值
         MOV   A,#16	        ;共16行
	 CLR   C
         SUBB  A,2CH      	;16行减去剩余行数得现在应该扫描行
         MOV   P2,A       	;送P2口
         SETB  RCLK		;输出CP为上升沿,显示一个
         CLR   EN               ;138可显示
         RET
;********************移动查模式时速度同步修正子程序*******************
ZYXZ:    MOV   29H,B
         MOV   A,#17
         SUBB  A,29H
         MOV   2AH,A
AA:      LCALL DL22US
         DJNZ  2AH ,AA
         RET
;***************************800US延时子程序***********************
DL800US: MOV   R6,#9		;1DH
DL1:     MOV   R5,#17		;18H
DL2:     DJNZ  R5,DL2
         DJNZ  R6,DL1
         RET
;******22US延时子程序*****************
DL22US:  MOV   R6,#100
DL3:     DJNZ  R6,DL3
         NOP
         RET

;*********************************************************************************
;***********************************字码表****************************************
;*********************************************************************************
TAB:
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;*******************************以上字码用作黑屏**********************************
;*********************************************************************************
;***********以横向8个连续点构成一个字节,最左边的点为字节的最高位,即BIT7,**********
;***********最右边的点为BIT0.16×16汉字按每行2字节,共16行取字模,每个汉字***********
;***********共32字节.点阵四个角取字顺序为左上角→右上角→左下角→右下角。*********
;*********************************************************************************
;祝   CD7A3
DB 020H,000H,011H,0F8H,011H,008H,0FDH,008H,005H,008H,009H,008H,011H,008H,039H,0F8H
DB 054H,090H,094H,090H,010H,090H,010H,090H,011H,012H,011H,012H,012H,012H,014H,00EH

;大   CB4F3
DB 001H,000H,001H,000H,001H,000H,001H,000H,001H,000H,0FFH,0FEH,001H,000H,002H,080H
DB 002H,080H,002H,040H,004H,040H,004H,020H,008H,010H,010H,018H,020H,00EH,040H,004H

;家   CBCD2
DB 002H,000H,001H,000H,03FH,0FEH,040H,004H,05FH,0E8H,001H,000H,002H,000H,00FH,020H
DB 072H,0B0H,004H,0C0H,019H,0C0H,066H,0B0H,018H,08EH,060H,084H,005H,000H,002H,000H

;:   CA3BA
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,030H,000H,030H,000H,000H,000H,030H,000H,030H,000H,000H,000H,000H,000H

;身   CC9ED
DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,000H,00FH,0F0H,00CH,0F0H,00BH,012H
DB 00CH,0FCH,01FH,0D8H,010H,0F0H,007H,090H,07DH,010H,000H,0F0H,000H,000H,000H,000H

;体   CCCE5
DB 000H,000H,000H,000H,000H,000H,000H,000H,004H,0C0H,0F8H,0C0H,073H,0F8H,010H,0E0H
DB 011H,0F0H,013H,0DCH,01CH,0CEH,013H,0F6H,010H,0C0H,010H,040H,000H,000H,000H,000H

;健   CBDA1
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,060H,018H,0F8H,0F7H,0FCH,052H,0F8H
DB 011H,0F8H,01FH,0F8H,013H,0A0H,03CH,0F0H,030H,03FH,000H,00EH,000H,000H,000H,000H

;康   CBFB5
DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,080H,01FH,0F8H,017H,0F0H,010H,090H
DB 01FH,0F8H,017H,0F0H,032H,0D0H,06FH,0B8H,048H,08EH,001H,080H,000H,000H,000H,000H


;一   CD2BB
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,004H,07FH,0FEH
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;切   CC7D0
DB 010H,000H,010H,000H,013H,0FCH,010H,044H,010H,044H,01EH,044H,0F0H,044H,010H,044H
DB 010H,044H,012H,084H,014H,084H,019H,004H,011H,004H,002H,014H,004H,008H,000H,000H

;顺   CCBB3
DB 000H,000H,045H,0FEH,054H,020H,054H,040H,055H,0FCH,055H,004H,055H,004H,055H,024H
DB 055H,024H,055H,024H,055H,024H,054H,020H,044H,050H,084H,08CH,005H,004H,000H,000H

;利   CC0FB
DB 000H,002H,003H,082H,03CH,002H,004H,022H,004H,022H,07FH,0A2H,00CH,022H,00CH,022H
DB 016H,022H,015H,022H,025H,0A2H,045H,022H,084H,002H,004H,012H,004H,00AH,004H,004H


;*********************************以下字码表用作黑屏******************************
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

END
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -