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

📄 7135+液晶显示.asm

📁 51单片机 高精度7135 模数转换的的程序,内有详细注释
💻 ASM
字号:
;*********************************************
;51中对应的RAM地址:00H-1FH 为工作寄存器组
;                  1FH-2FH 为位寻址区
;                  30H-7FH 为便笺区 
;                  7FH-FFH SFR
;8255的端口分配及7135的接法
;PA.0	D1            ;A B 口为输入口
;PA.1	D2
;PA.2	D3
;PA.3	D4
;PA.4	D5
;PB.0	B1
;PB.1	B2
;PB.2	B3
;PB.3	B4
;PC.1	AA            ;C口为输出口
;PC.2	BB
;PC.3	CC 接HC157的1号引脚 A/B端 这样4051只能靠AA BB选通4个通道

;A口读写地址:	98H
;B口读写地址:	99H
;C口读写地址:	9AH
;控制口地址:	9BH
;状态控制字      92H    A口 B口 为输入   C口为输出
;20.0为转换完毕的标志位
;R7中存放7135的状态
;**************************************************/
;POSI          EQU    30H   
FUHAO         EQU    31H
WAN           EQU    32H
DOT           EQU    33H
QIAN          EQU    34H
BAI           EQU    35H
SHI           EQU    36H
GEWEI         EQU    37H
;ST_OR         EQU    38H
;ST_POL        EQU    39H
LCD_COM	      EQU    0028H	;写指令
LCD_DATA      EQU    00A8H	;写数据
LCD_TR	      EQU    0068H	;读状态
LCD_R	      EQU    00E8H	;读数据


          ORG          0000H
	  LJMP         MAIN
	  ORG          0100H
MAIN: 
          MOV          SP,    #60H
          MOV          R2,    #0AH      ;寄存器区初始化
	  MOV          R0,    #30H
     M1:  MOV          @R0,   #00H
          INC          R0
	  DJNZ         R2,    M1
	  CLR          00H
	  MOV          DOT,   #2EH      ;显示的是小数点
	  MOV          40H,   #0D2H
          MOV          41H,   #0E7H
	  MOV          42H,   #0B3H
          MOV          43H,   #0F6H
          LCALL        LCD_INT
    M2:   LCALL        INT_8255
          LCALL        AD7135
	  LCALL        LCD_DISP
          LCALL        DELAY
          SJMP         M2
LCD_DISP:
          
          MOV          A,     R7
	  JB           ACC.2, L4         ;显示益处
          JNB          ACC.3, L2
	  MOV          FUHAO, #2DH        ;正号
	  SJMP         L6
    L2:   MOV          FUHAO, #2BH       ;负号
    L6:   MOV          DPTR, #LCD_COM
    	  CALL         BUSY
	  MOV          A,      #92H     ;LCD光标定位到92H
	  MOVX         @DPTR,  A
	  MOV          R6,     #07H
          MOV          R0,     #31H 
    L3:	  MOV          A,      @R0
	  LCALL        LCD_WR
	  INC          R0
	  DJNZ         R6, L3
	  SJMP         L1
      L4: MOV          DPTR, #LCD_COM
    	  CALL         BUSY
	  MOV          A,      #92H     ;LCD光标定位到92H
	  MOVX         @DPTR,  A
	  MOV          R5,     #04H
	  MOV          R1,     #40H
    L5:	  MOV          A,      @R1
	  LCALL        LCD_WR
	  INC          R1
	  DJNZ         R5, L5
	  
    L1:   RET      

AD7135: 
          MOV          DPTR,  #99H
 	  MOVX         A,     @DPTR      
  	  JNB          ACC.2, AD7135    ;等待BUSY为高
          ;MOV          DPTR,  #99H
    WAIT1:
          MOVX         A,     @DPTR      
  	  JB           ACC.2, WAIT1     ;等待BUSY为低
          MOV          R7,    A         ;R7中存放7135的状态

	  MOV          DPTR,  #98H
     D5:                                ;等待D5为高
          MOVX         A,     @DPTR
	  JB           ACC.4, D5
	  LCALL        DELAY1MS
          LCALL        RD_BCD
	  MOV          WAN,   A
          MOV          DPTR,  #98H
     D4:                                ;等待D4为高
          
          MOVX         A,     @DPTR
	  JB           ACC.3, D4
	  LCALL        DELAY1MS
          LCALL        RD_BCD
	  MOV          QIAN,   A
          MOV          DPTR,  #98H
     D3:                                ;等待D5为高
          MOVX         A,     @DPTR
	  JB           ACC.2, D3
	  LCALL        DELAY1MS
          LCALL        RD_BCD
	  MOV          BAI,   A
	  MOV          DPTR,  #98H
     D2:                                ;等待D5为高
          MOVX         A,     @DPTR
	  JB           ACC.1, D2
	  LCALL        DELAY1MS
          LCALL        RD_BCD
	  MOV          SHI,   A
	  MOV          DPTR,  #98H
     D1:                                ;等待D5为高
          MOVX         A,     @DPTR
	  JB           ACC.0, D1
	  LCALL        DELAY1MS
          LCALL        RD_BCD
	  MOV          GEWEI,  A
	  SETB         00H
	  RET       
;*****************读BCD码********************************
RD_BCD: 
         ;PUSH          ACC
	 PUSH          DPH
	 PUSH          DPL
         MOV           DPTR,   #9AH      ;C口设置
	 MOV           A,      #06H
	 MOVX          @DPTR,  A      ;PC.3为0,读BCD码
         MOV           DPTR,   #99H
	 MOVX          A,      @DPTR
	 ANL           A,      #0FH      ;将B1——B4读出来
	 ADD           A,      #30H      ;BCD TO  ASCII
	 POP           DPL
	 POP           DPH
	 ;POP           ACC
	 RET          
;*****************8255初始化*****************************         
INT_8255: 
          MOV          DPTR,   #9BH      ;A B口设置
	  MOV          A,      #92H
          MOVX         @DPTR,  A
	  MOV          DPTR,   #9AH      ;C口设置
	  MOV          A,      #02H
	  MOVX         @DPTR,  A         ;PC.1为0
	  MOV          A,      #04H
          MOVX         @DPTR,  A         ;PC.2为0
          MOV          A,      #07H
          MOVX         @DPTR,  A         ;PC.3为1    ;读HC157的B
	  RET   
;*****************LCD的操作******************************
LCD_INT:
          MOV          DPTR,   #LCD_COM
          CALL         BUSY
	  MOV          A,      #30H       ;基本指令集
	  MOVX         @DPTR,  A
          CALL         BUSY
	  MOV          A,      #01H       ;清屏幕
	  MOVX         @DPTR,  A
          CALL         BUSY
	  MOV          A,      #02H
	  MOVX         @DPTR,  A
	  CALL         BUSY
	  MOV          A,      #06H
	  MOVX         @DPTR,  A
          CALL         BUSY
	  MOV          A,      #0CH
	  MOVX         @DPTR,  A
	  CALL         BUSY
	  MOV          A,      #80H        ;光标定位
	  MOVX         @DPTR,  A
          RET
BUSY:     
          PUSH         ACC
          PUSH         DPH
	  PUSH         DPL
	  MOV          DPTR,   #LCD_TR
   B1:	  MOVX         A,      @DPTR
	  JB           ACC.7,  B1
          POP          DPL
	  POP          DPH
	  POP          ACC
	  RET
LCD_WR:
	  PUSH         DPH
	  PUSH         DPL
	  MOV          DPTR,   #LCD_DATA
	  CALL         BUSY
	  MOVX         @DPTR,  A
	  POP          DPL
	  POP          DPH
	  RET 

DELAY:                                     ; DELAYTIME  20MS
          MOV         R4,      #40
  DD1:    MOV         R3,      #0FFH
	  DJNZ        R3,      $
	  DJNZ        R4,      DD1
 	  RET

DELAY1MS:                                     ; DELAYTIME  1MS
          MOV         R4,      #2
  DD2:    MOV         R3,      #40H
	  DJNZ        R3,      $
	  DJNZ        R4,      DD1
 	  RET



END

⌨️ 快捷键说明

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