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

📄 ds1302dis.asm

📁 自己学习单片机期间 自己遍的一个 LCD 显示模块 可以调整时间并且哟闹铃功能
💻 ASM
字号:
;***************************************************************************
;连线图: *LCM---8031* *LCM---8031* *LCM------------8031*
;        *DB0---P1.0* *DB4---P1.4* *RS-------------P3.5*
;        *DB1---P1.1* *DB5---P1.5* *RW-------------P3.4*
;        *DB2---P1.2* *DB6---P1.6* *E--------------P3.6*  (参见说明书)
;        *DB3---P1.3* *DB7---P1.7* *VLCD接10K可调电阻到GND*
;注:8031的晶振频率为12MHz
;**************************************************************************
      RS   EQU P3.5
	  RW   EQU P3.4
	  E    EQU P3.6
	  XPOS EQU 20H		;行方向
	  YPOS EQU 21H		;列方向
	  LED3CLK BIT P2.1
      LED4IO  BIT P2.2
      RST     BIT P2.3
      SECOND  EQU 60H
	  ORG  00H
	  LJMP START
	  ORG  30H
START: 
      MOV  SP,#30H
      CLR  E
      MOV  DPTR,#TAB       
MN_LP2:MOV  R5,#0
      MOV   YPOS,#0
      MOV   XPOS,#0
      LCALL LCDRESET
	  ;LCALL SET1302
MN_LP:MOV   A,R5
      MOVC  A,@A+DPTR
      LCALL LCDFILL
      INC   R5
      CJNE  R5,#32,MN_LP
MAIN: LCALL R_1302
      LCALL EXCHANG
	  AJMP  MAIN
          
EXCHANG:
     MOV  A,60H
     MOV  B,#10H
     DIV  AB
     MOV  71H,A
     MOV  70H,B
     MOV  A,61H
     MOV  B,#10H
     DIV  AB
     MOV  73H,A
     MOV  72H,B
     MOV  A,62H
     MOV  B,#10H
     DIV  AB
     MOV  75H,A
     MOV  74H,B 
     LCALL ADD_ASCII
	 LCALL  DISBUF
     RET
ADD_ASCII:
     MOV  A,70H
     ADD  A,#48
     MOV  70H,A
     MOV  A,71H
     ADD  A,#48
     MOV  71H,A
     MOV  A,72H
     ADD  A,#48
     MOV  72H,A
     MOV  A,73H
     ADD  A,#48
     MOV  73H,A
     MOV  A,74H
     ADD  A,#48
     MOV  74H,A
     MOV  A,75H
     ADD  A,#48
     MOV  75H,A
     RET
DISBUF:
     MOV   XPOS,#11
     MOV   YPOS,#1
     MOV   A,70H
     LCALL LCDWRITE
     MOV   XPOS,#10
     MOV   YPOS,#1
     MOV   A,71H
     LCALL LCDWRITE
     MOV   XPOS,#8
     MOV   YPOS,#1
     MOV   A,72H
     LCALL LCDWRITE
     MOV   XPOS,#7
     MOV   YPOS,#1
     MOV   A,73H
     LCALL LCDWRITE
     MOV   XPOS,#5
     MOV   YPOS,#1
     MOV   A,74H
     LCALL LCDWRITE
     MOV   XPOS,#4
     MOV   YPOS,#1
     MOV   A,75H
     LCALL LCDWRITE
     RET
;-------------------------------LCD 写满屏幕地址和字符数据指令--------------------------------
LCDFILL:
      LCALL LCDWRITE
      INC   XPOS
      MOV   A,XPOS
      CJNE  A,#16,RETURN
      INC   YPOS
      MOV   A,YPOS
      CJNE  A,#2,RETURN
RETURN:	RET
;-----------------------------------LCD 写一个地址和字符数据指令-----------------------------------
LCDWRITE:
      LCALL LCDPOS	;lcd 写地址指令
      LCALL LCDWD	;LCD 写字符指令
	  RET
;------------------------------LCD 写地址指令--------------------------------------------------------
LCDPOS:PUSH ACC
      ANL   XPOS,#0FH
	  ANL   YPOS,#01H
	  MOV   A,YPOS
	  CJNE  A,#00,LPS_LAY
	  MOV   A,XPOS
	  LJMP  LPS_LAX
LPS_LAY:MOV A,XPOS
      ADD   A,#40H
LPS_LAX:ORL A,#80H
      LCALL LCDWC
	  POP   ACC
	  RET
;------------------------------------LCD RESET--------------------------------------------------------------------	     
LCDRESET:
      LCALL DELAY5MS
	  LCALL DELAY5MS
	  LCALL DELAY5MS 
      MOV   A,#38H
	  LCALL LCDWCN
	  LCALL DELAY5MS
	  MOV   A,#38H
	  LCALL LCDWCN
	  LCALL DELAY5MS
	  MOV   A,#38H
	  LCALL LCDWCN
	  MOV   A,#38H
	  LCALL LCDWC
	  MOV   A,#08H
	  LCALL LCDWC
	  MOV   A,#01H
	  LCALL LCDWC
	  MOV   A,#06H
	  LCALL LCDWC
	  MOV   A,#0CH
	  LCALL LCDWC
	  RET
LCDWC:LCALL WAITIDLE
;----------------------------------LCD write not check,写指令------------------------
LCDWCN:CLR  RS
      CLR   RW
	  MOV   P1,A
	  SETB 	E
	  NOP
	  CLR   E
      RET
;--------------------------LCD busy check,wait till not busy(读状态,判断是否忙)-----------------------------------
WAITIDLE:
      PUSH  ACC
	  MOV   P1,#0FFH
	  CLR   RS
	  SETB  RW
	  SETB  E
WTD_PA:NOP
	  JB    P1.7,WTD_PA
	  CLR   E
	  POP   ACC
	  RET
;--------------------------LCD WRITE TATA(写数据)----------------------------------------
LCDWD:LCALL WAITIDLE
      MOV   P1,A
      CLR   RW
	  SETB 	RS
	  SETB  E
	  NOP
	  CLR   E
	  RET
;----------------------------DS1302--------------------------------
;-------------------R_1302----------------------
R_1302:             MOV    R0,#SECOND         ;读取1302时间
                    MOV    R7,#7
                    MOV    R1,#81H
R_1302A:            CLR    RST
                    CLR    LED3CLK
                    SETB   RST
                    MOV    A,R1
                    LCALL  R_BIT
                    LCALL  W_BIT
                    MOV    @R0,A
                    INC    R0
                    INC    R1
                    INC    R1
                    SETB   LED3CLK
                    CLR    RST
                    DJNZ   R7,R_1302A
                    RET
;------------------R_BIT------------------
R_BIT:              MOV    R4,#8
R_BIT1:             RRC    A
                    MOV    LED4IO,C
                    SETB   LED3CLK
                    CLR    LED3CLK
                    DJNZ   R4,R_BIT1
                    RET
;-------------------W_BIT-----------------------
W_BIT:              MOV    R4,#8
W_BIT1:             MOV    C,LED4IO
                    RRC    A
                    SETB   LED3CLK
                    CLR    LED3CLK
                    DJNZ   R4,W_BIT1
                    RET
;-------------------SET_1302-------------------------
SET1302:            CLR    RST           ;2006年12月15日20:15:00
                    CLR    LED3CLK
                    MOV     SECOND,#00H
                    MOV     61H,#15H
                    MOV     62H,#20H
                    MOV     63H,#15H
                    MOV     64H,#12H
                    MOV     65H,#5H
                    MOV     66H,#06H
                    SETB   RST
                    MOV    A,#8EH
                    LCALL  R_BIT
                    MOV    A,#00H
                    LCALL  R_BIT
                    SETB   LED3CLK
                    CLR    RST
                    MOV    R0,#SECOND
                    MOV    R7,#7
                    MOV    R1,#80H
SET1302A:           CLR    RST
                    CLR    LED3CLK
                    SETB   RST
                    MOV    A,R1
                    LCALL  R_BIT
                    MOV    A,@R0
                    LCALL  R_BIT
                    INC    R0
                    INC    R1
                    INC    R1
                    SETB   LED3CLK
                    CLR    RST
                    DJNZ   R7,SET1302A
                    CLR    RST
                    CLR    LED3CLK
                    SETB   LED3CLK
                    NOP
                    CLR    RST
                    NOP
                    CLR    led3clk
                    SETB   RST
                    MOV    A,#90H
                    LCALL  R_BIT
                    MOV    A,#10100101B         ;充电器设置
                    LCALL  R_BIT
                    SETB   LED3CLK
                    CLR    RST
                    CLR    LED3CLK
                    SETB   RST
                    MOV    A,#8EH
                    LCALL  R_BIT
                    MOV    A,#80H
                    LCALL  R_BIT
                    SETB   LED3CLK
                    CLR    RST
                    RET

;----------------------------DELAY---------------------------------
DELAY5MS:MOV R5,#5
    DL2: MOV R6,#250
    DL1: NOP
         NOP
	     DJNZ R6,DL1
	     DJNZ R5,DL2
	     RET
DELAY400MS:
        MOV     R5,#20              ;延时子程序(400MS)
DL4_PA: MOV     R6,#100
DL4_PB: MOV     R7,#100
        DJNZ    R7,$
        DJNZ    R6,DL4_PB
        DJNZ    R5,DL4_PA
        RET
       
TAB:    DB 'S','e','t',' ','t','i','m','e',' ','t','o',' ','r','i','n','g'
        DB '*','*','*','*','0','0',':','0','0',':','0','0','*','*','*','*'
END

⌨️ 快捷键说明

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