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

📄 total.asm

📁 基与74HC595与51单片机控制数码管显示程序 利用74595的总线结构节约51的IO口
💻 ASM
字号:
SDA      BIT  P1.7          ;I2C的总线结构
CLK      BIT  P1.6
ADDRESS  EQU  70H
CLRLCD   EQU  0E0H
MODE     EQU  0D8H
DSP      EQU  0F0H
RAM      EQU  00H
;****************************************************
         ORG  00H
         LCALL  CLEAR	
STAR:            
STAR1:   JNB    P3.7,MAIN1
	 JNB    P1.0,MAIN2
	 AJMP   STAR1
CLEAR:
	 MOV    DPTR, #TABLEN0
	 LCALL  MAIN3
	 RET


MAIN1:   MOV    DPTR, #TABLE0
         LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE1
	 LCALL  MAIN
	 LCALL  DELAY1M
         MOV    DPTR, #TABLE2
         LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE3
	 LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE4
         LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE5
	 LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE6
         LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE7
	 LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE8
	 LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE9
	 LCALL  MAIN
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE01
	 LCALL  MAIN
	 LJMP   STAR
	 
MAIN2:   MOV    DPTR, #TABLE10
         LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE11
	 LCALL  MAIN3
	 LCALL  DELAY1M
         MOV    DPTR, #TABLE12
         LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE13
	 LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE14
         LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE15
	 LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE16
         LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE17
	 LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE18
	 LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE19
	 LCALL  MAIN3
	 LCALL  DELAY1M
	 MOV    DPTR, #TABLE101
	 LCALL  MAIN3
 	 LJMP   STAR

MAIN:
	LCALL  START         ;启动程序 
	LCALL  MODESET       ;显示初始化
	LCALL  DSPLAY        ;显示程序
NEXT4:	LCALL  STOP          ;停止程序
	RET
MAIN3:
	LCALL  START         ;启动程序 
	LCALL  MODESET       ;显示初始化
	LCALL  DSPLAY31        ;显示程序
NEXT34:	LCALL  STOP          ;停止程序
	RET
;*********************************************
MODESET:                     ;模式设置
        MOV    A,  #ADDRESS  ;发送器件地址     70H
	LCALL  SENDBIT
        MOV    A,  #CLRLCD   ;发送清除屏幕地址 E0H
	LCALL  SENDBIT
	MOV    A,  #MODE     ;器件模式设置     D8H
	LCALL  SENDBIT
	MOV    A,  #DSP      ;显示控制         F0H
        LCALL  SENDBIT
	MOV    A,  #RAM      ;发送单元地址     00H
	LCALL  SENDBIT 
        RET
;*********************************************
DSPLAY: 	             ;命令输入
        MOV    R0,  #09H     ;数据循环数
	MOV    R2,  #00H
DSPLAY1:
        MOV    A,   R2
	MOVC   A,   @A+DPTR
        LCALL  SENDBIT
	INC    R2
	DJNZ   R0,  DSPLAY1
	RET


DSPLAY31: 	             ;命令输入
        ;MOV    DPTR,#TABLE01
        MOV    R0,  #0FH     ;数据循环数
	MOV    R2,  #00H
DSPLAY11:
        MOV    A,   R2
	MOVC   A,   @A+DPTR
        LCALL  SENDBIT
	INC    R2
	DJNZ   R0,  DSPLAY11
	RET
;*********************************************
SENDBIT:	    	     ;发送数据
        SETB   SDA
	LCALL  DELAY5US
	CLR    CLK
        MOV    R1,  #08H
SENDBIT1:
        RLC    A
	MOV    SDA, C
	LCALL  DELAY5US
        LCALL  CHANGE
        DJNZ   R1,  SENDBIT1
	SETB   SDA          ;最后CLK还要跳变一个电平,WHY???难道还真的有个应答信号??
	LCALL  DELAY5US
	SETB   CLK
	LCALL  DELAY5US
	CLR    CLK
	LCALL  DELAY5US
        RET
CHANGE: 
        SETB   CLK
	LCALL  DELAY5US
	CLR    CLK
	LCALL  DELAY5US
        RET
	
;*********************************************        
START:			     ;开I2C总线
	SETB   SDA
        LCALL  DELAY5US      ;SCL = 1,SDA from 1 to 0
	SETB   CLK
	LCALL  DELAY5US
	CLR    SDA
	LCALL  DELAY5US
	CLR    CLK
	LCALL  DELAY5US
        SETB   SDA
        LCALL  DELAY5US
	RET
;*********************************************	 
STOP:                       ;关I2C总线
	CLR    SDA          ;SCL = 1,SDA from 0 to 1
        LCALL  DELAY5US
	SETB   CLK
	LCALL  DELAY5US
	SETB   SDA
	LCALL  DELAY5US
        CLR    CLK
        LCALL  DELAY5US
	RET	
;*********************************************
DELAY5US:	      	    ;delay5US 
	NOP
	NOP
	NOP
	NOP
	NOP
        RET

DELAY1M:
        MOV  R7,#20
D2:     MOV  R6,#100
D1:     MOV  R5,#200
        DJNZ R5,$
        DJNZ R6,D1
	DJNZ R7,D2
	RET

TABLE9:                      ;只显示9的数值
        DB  11111100B	  ;1   
	DB  11111100B	  ;2
	DB  11111100B	  ;3
	DB  11111100B     ;4
	DB  11111100B	  ;5
	DB  11111100B     ;6
	DB  11111100B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE8:                      ;只显示8的数值
        DB  11111110B	  ;1   
	DB  11111110B	  ;2
	DB  11111110B	  ;3
	DB  11111110B     ;4
	DB  11111110B	  ;5
	DB  11111110B     ;6
	DB  11111110B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE7:                      ;只显示7的数值
        DB  11100000B	  ;1   
	DB  11100000B	  ;2
	DB  11100000B	  ;3
	DB  11100000B     ;4
	DB  11100000B	  ;5
	DB  11100000B     ;6
	DB  11100000B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE6:                      ;只显示6的数值
        DB  10111110B	  ;1   
	DB  10111110B	  ;2
	DB  10111110B	  ;3
	DB  10111110B     ;4
	DB  10111110B	  ;5
	DB  10111110B     ;6
	DB  10111110B	  ;7
	DB  00000000B	  ;8
	db  00000000b
		

TABLE5:                      ;只显示5的数值
        DB  10111100B	  ;1   
	DB  10111100B	  ;2
	DB  10111100B	  ;3
	DB  10111100B     ;4
	DB  10111100B	  ;5
	DB  10111100B     ;6
	DB  10111100B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE4:                      ;只显示4的数值
        DB  01101100B	  ;1   
	DB  01101100B	  ;2
	DB  01101100B	  ;3
	DB  01101100B     ;4
	DB  01101100B	  ;5
	DB  01101100B     ;6
	DB  01101100B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE3:                      ;只显示3的数值
        DB  11110100B	  ;1   
	DB  11110100B	  ;2
	DB  11110100B	  ;3
	DB  11110100B     ;4
	DB  11110100B	  ;5
	DB  11110100B     ;6
	DB  11110100B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE2:                      ;只显示2的数值
        DB  11010110B	  ;1   
	DB  11010110B     ;2
	DB  11010110B     ;3
	DB  11010110B     ;4
	DB  11010110B	  ;5
	DB  11010110B     ;6
	DB  11010110B	  ;7
	DB  00000000B	  ;8
	db  00000000b

TABLE1:                      ;只显示1的数值
        DB  01100000B     ;1   
	DB  01100000B	  ;2
	DB  01100000B     ;3
	DB  01100000B	  ;4
	DB  01100000B	  ;5
	DB  01100000B	  ;6
	DB  01100000B	  ;7
	DB  00000000B	  ;8
        db  00000000b

TABLE0:                      ;只显示0的数值
        DB  11111010B	  ;1   
	DB  11111010B	  ;2
	DB  11111010B	  ;3
	DB  11111010B     ;4
	DB  11111010B	  ;5
	DB  11111010B     ;6
	DB  11111010B	  ;7
	DB  00000000B	  ;8	
        db  00000000b

TABLE01:                      ;全部显示
        DB  11111111B	  ;1   
	DB  11111111B	  ;2
	DB  11111111B	  ;3
	DB  11111111B     ;4
	DB  11111111B	  ;5
	DB  11111111B     ;6
	DB  11111111B	  ;7
	DB  11111111B	  ;8
	db  11111111b

;****************************************************8

TABLE19:                      ;只显示9的数值
        DB  0CFH	  ;1   
	DB  0CFH	  ;2
	DB  0CFH	  ;3
	DB  0CFH          ;4
	DB  0CFH	  ;5
	DB  0CFH          ;6
	DB  0CFH	  ;7
	DB  0CFH	  ;8
	DB  0CFH	  ;9
	DB  0CFH	  ;10
	DB  0CFH          ;11
	DB  00H	          ;12
	DB  00H           ;13
	DB  00H           ;14
	DB  00H	          ;15
TABLE18:                      ;只显示8的数值
        DB  11101111B	  ;1   
	DB  11101111B	  ;2
	DB  11101111B	  ;3
	DB  11101111B     ;4
	DB  11101111B	  ;5
	DB  11101111B     ;6
	DB  11101111B	  ;7
	DB  11101111B	  ;8
	DB  11101111B	  ;9
	DB  11101111B	  ;10
	DB  11101111B     ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15

TABLE17:                      ;只显示7的数值
        DB  0EH	          ;1   
	DB  0EH	          ;2
	DB  0EH	          ;3
	DB  0EH           ;4
	DB  0EH	          ;5
	DB  0EH           ;6
	DB  0EH	          ;7
	DB  0EH	          ;8
	DB  0EH	          ;9
	DB  0EH	          ;10
	DB  0EH           ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE16:                      ;只显示6的数值
        DB  0EBH	  ;1   
	DB  0EBH	  ;2
	DB  0EBH	  ;3
	DB  0EBH          ;4
	DB  0EBH	  ;5
	DB  0EBH          ;6
	DB  0EBH	  ;7
	DB  0EBH	  ;8
	DB  0EBH	  ;9
	DB  0EBH	  ;10
	DB  0EBH          ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15
		

TABLE15:                      ;只显示5的数值
        DB  0CBH	  ;1   
	DB  0CBH	  ;2
	DB  0CBH	  ;3
	DB  0CBH          ;4
	DB  0CBH	  ;5
	DB  0CBH          ;6
	DB  0CBH	  ;7
	DB  0CBH	  ;8
	DB  0CBH	  ;9
	DB  0CBH	  ;10
	DB  0CBH          ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE14:                      ;只显示4的数值
        DB  0C6H	  ;1   
	DB  0C6H	  ;2
	DB  0C6H	  ;3
	DB  0C6H          ;4
	DB  0C6H	  ;5
	DB  0C6H          ;6
	DB  0C6H	  ;7
	DB  0C6H	  ;8
	DB  0C6H	  ;9
	DB  0C6H	  ;10
	DB  0C6H          ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE13:                      ;只显示3的数值
        DB  4FH	          ;1   
	DB  4FH	          ;2
	DB  4FH	          ;3
	DB  4FH           ;4
	DB  4FH	          ;5
	DB  4FH           ;6
	DB  4FH	          ;7
	DB  4FH	          ;8
	DB  4FH	          ;9
	DB  4FH	          ;10
	DB  4FH           ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE12:                      ;只显示2的数值
        DB  6DH	          ;1   
	DB  6DH	          ;2
	DB  6DH	          ;3
	DB  6DH           ;4
	DB  6DH	          ;5
	DB  6DH           ;6
	DB  6DH	          ;7
	DB  6DH	          ;8
	DB  6DH	          ;9
	DB  6DH	          ;10
	DB  6DH           ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE11:                      ;只显示1的数值
        DB  06H	          ;1   
	DB  06H		  ;2
	DB  06H		  ;3
	DB  06H	          ;4
	DB  06H		  ;5
	DB  06H	          ;6
	DB  06H		  ;7
	DB  06H		  ;8
	DB  06H		  ;9
	DB  06H		  ;10
	DB  06H	          ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE10:                      ;只显示0的数值
        DB  0AFH	  ;1   
	DB  0AFH	  ;2
	DB  0AFH	  ;3
	DB  0AFH          ;4
	DB  0AFH	  ;5
	DB  0AFH          ;6
	DB  0AFH	  ;7
	DB  0AFH	  ;8
	DB  0AFH	  ;9
	DB  0AFH	  ;10
	DB  0AFH          ;11
	DB  00000000B	  ;12
	DB  00000000B     ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15	

TABLE100:                      ;除了点和数值外的数
        DB  00010000B	  ;1   
	DB  00010000B	  ;2
	DB  00010000B	  ;3
	DB  00000000B     ;4
	DB  00000000B	  ;5
	DB  00000000B     ;6
	DB  00000000B	  ;7
	DB  00000000B	  ;8
	DB  00010000B	  ;9
	DB  00010000B	  ;10
	DB  00010000B     ;11
	DB  11111111B	  ;12
	DB  11111111B     ;13
	DB  11111111B     ;14
	DB  11111111B	  ;15

TABLE101:                      ;全部显示
        DB  11111111B	  ;1   
	DB  11111111B	  ;2
	DB  11111111B	  ;3
	DB  11111111B     ;4
	DB  11111111B	  ;5
	DB  11111111B     ;6
	DB  11111111B	  ;7
	DB  11111111B	  ;8
	DB  11111111B	  ;9
	DB  11111111B	  ;10
	DB  11111111B     ;11
	DB  11111111B	  ;12
	DB  11111111B     ;13
	DB  11111111B     ;14
	DB  11111111B	  ;15
TABLEN0:
	DB  00000000B	  ;1
	DB  00000000B     ;2
	DB  00000000B     ;3
	DB  00000000B	  ;4
	DB  00000000B	  ;5
	DB  00000000B     ;6
	DB  00000000B     ;7
	DB  00000000B	  ;8
	DB  00000000B	  ;9
	DB  00000000B     ;10
	DB  00000000B     ;11
	DB  00000000B	  ;12
	DB  00000000B	  ;13
	DB  00000000B     ;14
	DB  00000000B	  ;15
END  														    

⌨️ 快捷键说明

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