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

📄 disp.asm

📁 多种液晶显示驱动程序。使用汇编语音编写。
💻 ASM
📖 第 1 页 / 共 2 页
字号:

;;;;;;;;;;;;          一简单演示程序

;320*240LCD,型号EDMMU96B0F,控制芯片SED1335
;P1为数据总线
;定义LCD控制线
  WRA       EQU   P3.1
  RDA       EQU   P3.0
  AO        EQU   P3.2
  REST      EQU   P3.6  
  CSS       EQU   P3.4
;四线电阻型触摸屏
;定义ADS7843控制线 
         
         ; DCLK     EQU  P3.3
          DCLK     EQU  P0.5
          DIN      EQU  P0.3
          DOUT     EQU  P0.1    ;CS(片选信号直接接地)
  
  TEMP     EQU  3FH  
  TEMP1    EQU  30H          ;通用变量
  TEMP2    EQU  31H
  TEMP3    EQU  32H
  TEMP4    EQU  33H
  TEMP5    EQU  34H
  TEMP6    EQU  35H
  CULA     EQU  39H
  ROW      EQU  3AH
  COUNT1   EQU  3BH
  COUNT2   EQU  3CH
  CODEN    EQU  3EH
  ADDRL    EQU  40H             ;地址低8位
  ADDRH    EQU  41H             ;地址高8位

;定义变量
      KEYCOUT   EQU  48H      ;
      FLAG_KEY  EQU  49H      ;键值寄存器 
      AD_CH     EQU  4AH      ;信道选择寄存器
      AD_DAT    EQU  4BH      ;存放8BIT A/D值
      CHX_DAT   EQU  4EH      ;存放信道CHX的值
      CHY_DAT   EQU  4FH      ;存放信道CHY的


 CSEG   AT  0000H
 NOP
 CLR   CSS                  ;1335片选
MAIN:
  NOP
 
  CLR   REST
  LCALL   DELAY             ;1335复位
  SETB  REST
  NOP
  LCALL   INTLCD           ;调用LCD初始化子程序
  NOP
  LCALL  CLEAR1           ;清屏第一区
  LCALL  CLEAR2           ;清屏第二区
  NOP
  LCALL  DISPLAY
  MOV   KEYCOUT,#00H
  NOP
  NOP
LOOP:
  NOP
  LCALL  GETKEYID
  MOV   A,FLAG_KEY
  MOV   TEMP3,A
  CJNE  A,#0FFH,WIRR
  NOP
  LJMP  LOOP

WIRR:
  LCALL  GETKEYID
  MOV   A,FLAG_KEY
  CJNE  A,#0FFH,WIRR
  LCALL  DELAY2
  LCALL  GETKEYID
  MOV  A,FLAG_KEY
  CJNE  A,#0FFH,WIRR
  LCALL  DELAY2
  LCALL  GETKEYID
  MOV  A,FLAG_KEY
  CJNE  A,#0FFH,WIRR
  

  MOV  A,KEYCOUT
  CJNE  A,#00H,WIRR2
  MOV  ADDRL,#064H
  MOV  ADDRH,#28H
  LCALL  SETADDR
WIRR2:
  MOV   A,TEMP3
  LCALL  PASSID
  JNZ    WIRR4
WIRR5:
  MOV  ADDRL,#064H
  MOV  ADDRH,#28H
  LCALL  SETADDR
  MOV   R1,#12
WIRR3:
  MOV  P1,#00H
  CLR  WRA
  SETB  WRA
  DJNZ  R1,WIRR3
  MOV  KEYCOUT,#0
  LJMP  WIRR8
WIRR4:
  MOV   P1,A
  CLR   WRA
  SETB  WRA
   INC     KEYCOUT
   CLR     C
   MOV     A,KEYCOUT
   SUBB    A,#12
   JC      WIRR8
   LJMP   WIRR5
WIRR8:
  LCALL  GETKEYID
  MOV  A,FLAG_KEY
  CJNE  A,#0FFH,WIRR8
  LCALL  DELAY2
  LCALL  GETKEYID
  MOV  A,FLAG_KEY
  CJNE  A,#0FFH,WIRR8
  LJMP  LOOP

DELAY:
  MOV  R5,#0
  MOV  R6,#0
  MOV  R7,#2
DEL:
  DJNZ  R5,DEL
  DJNZ  R6,DEL
  DJNZ  R7,DEL
  RET
DELAY2:
  MOV  R5,#0
  MOV  R6,#12
DEL2:
  DJNZ  R5,DEL2
  DJNZ  R6,DEL2
  RET
DEL2S:
  MOV  R5,#0
  MOV  R6,#0
  MOV  R7,#20
D2S:
  DJNZ  R5,D2S
  DJNZ  R6,D2S
  DJNZ  R7,D2S
  RET

PASSID:
  CJNE  A,#024H,PASSID2
  MOV  A,#030H
  RET
PASSID2:
  CJNE  A,#011H,PASSID3
  MOV  A,#031H
  RET
PASSID3:
  CJNE  A,#021H,PASSID4
  MOV  A,#032H
  RET
PASSID4:
  CJNE  A,#031H,PASSID5
  MOV  A,#033H
  RET
PASSID5:
  CJNE  A,#012H,PASSID6
  MOV  A,#034H
  RET
PASSID6:
  CJNE  A,#022H,PASSID7
  MOV  A,#035H
  RET
PASSID7:
  CJNE  A,#032H,PASSID8
  MOV   A,#36H
  RET
PASSID8:
  CJNE  A,#013H,PASSID9
  MOV   A,#37H
  RET
PASSID9:
  CJNE  A,#023H,PASSID10
  MOV   A,#38H
  RET
PASSID10:
  CJNE  A,#033H,PASSID11
  MOV  A,#39H
  RET
PASSID11:
  MOV  A,#0
  RET

;=============================================================
DISPLAY:         ;演示子程序
  LCALL  DISKEY
  NOP
  MOV   CODEN,#0
  MOV   ADDRL,#0B5H
  MOV   ADDRH,#04H
  LCALL  WRCHINA
  LCALL  WRCHINA
  LCALL  WRCHINA
  LCALL  WRCHINA
  LCALL  WRCHINA
  LCALL  WRCHINA
  LCALL  WRCHINA
  NOP
  MOV  ADDRL,#043H
  MOV  ADDRH,#07H
  LCALL  SETADDR
  MOV  R7,#6
KKT:
  MOV   P1,#0FFH
  CLR   WRA
  SETB  WRA
  MOV   P1,#0F0H
  CLR   WRA
  SETB  WRA
  DJNZ  R7,KKT
  NOP
  MOV   ADDRL,#00
  MOV   ADDRH,#28H
  LCALL  SETADDR
  MOV   P1,#77H
  CLR   WRA
  SETB  WRA
  MOV   P1,#77H
  CLR   WRA
  SETB  WRA
  MOV   P1,#77H
  CLR   WRA
  SETB  WRA
  MOV   P1,#2EH
  CLR   WRA
  SETB  WRA
  MOV   P1,#51H
  CLR   WRA
  SETB  WRA
  MOV   P1,#58H
  CLR   WRA
  SETB  WRA
  MOV   P1,#4CH
  CLR   WRA
  SETB  WRA
  MOV   P1,#43H
  CLR   WRA
  SETB  WRA
  MOV   P1,#44H
  CLR   WRA
  SETB  WRA
  MOV   P1,#2EH
  CLR   WRA
  SETB  WRA
  MOV   P1,#63H
  CLR   WRA
  SETB  WRA
  MOV   P1,#6FH
  CLR   WRA
  SETB  WRA
  MOV   P1,#6DH
  CLR   WRA
  SETB  WRA
  RET

;_______________________________________________________________________

INTLCD:                       ;初始化LCD子程序
  MOV  P1,#40H
  SETB AO
  CLR  WRA
  SETB WRA
  CLR  AO
  MOV  R6,#08
  MOV DPTR,#SYSTAB        ;初始化设置
INTR1:
  CLR  A
  MOVC  A,@A+DPTR
  MOV  P1,A
  CLR   WRA
  SETB  WRA
  INC  DPTR
  DJNZ  R6,INTR1
  MOV  P1,#44H
  SETB AO
  CLR  WRA
  SETB WRA
  CLR  AO
  MOV  R6,#10
  MOV  DPTR,#SCRTAB      ;显示域设置
INTR2:
  CLR  A
  MOVC A,@A+DPTR
  MOV  P1,A
  CLR  WRA
  SETB WRA
  INC  DPTR
  DJNZ  R6,INTR2
  MOV  P1,#5AH            ;点位移设置
  SETB AO
  CLR  WRA
  SETB WRA
  MOV  P1,#00H 
  CLR  AO 
  CLR  WRA
  SETB WRA
  MOV  P1,#4CH            ;光标移动方向设置,4CH向右,4FH向下
  SETB  AO
  CLR   WRA
  SETB  WRA
  MOV  P1,#5BH             ;显示合成设置
  SETB  AO
  CLR  WRA
  SETB WRA
  MOV  P1,#08H             ;显示一区为文本,显示二区为图形
  CLR  AO 
  CLR  WRA 
  SETB WRA
  MOV   P1,#59H            ;开LCD
  SETB  AO
  CLR   WRA
  SETB  WRA
  CLR   AO
  MOV   P1,#14H             
  CLR   WRA
  SETB  WRA
  RET

;==============================================
;清第一显示区
CLEAR1:  
  MOV    ADDRL,#00H
  MOV    ADDRH,#28H            
  LCALL  SETADDR         ;设置地址位2800H
  MOV  R6,#5
  MOV  R7,#00H
CLR11:
  MOV  P1,#00H       ;写入显示数据00H                 
  CLR  WRA
  SETB  WRA
  DJNZ  R7,CLR11
  DJNZ  R6,CLR11
  RET
;清第二显示区
CLEAR2:    
  MOV   ADDRL,#0
  MOV   ADDRH,#0          
  LCALL  SETADDR         ;设置地址为0000H
  MOV  R6,#39
  MOV  R7,#37
CLR21:
  MOV  P1,#00H       ;写入显示数据为00H
  CLR  WRA
  SETB  WRA
  DJNZ  R7,CLR21
  DJNZ  R6,CLR21
  RET
;=========================================================================

SETADDR:                        ;设置LCD地址子程序
  MOV  P1,#46H         ;光标指针设置指令
  SETB  AO
  CLR   WRA
  SETB  WRA
  MOV  P1,ADDRL
  CLR  AO
  CLR  WRA
  SETB WRA
  MOV  P1,ADDRH
  CLR  WRA
  SETB  WRA
  MOV  P1,#42H
  SETB AO 
  CLR  WRA
  SETB WRA
  CLR  AO
  RET

;-------------------------------------------------------------
;显示一个中文子程序
WRCHINA:
  MOV    TEMP1,ADDRL
  MOV    TEMP2,ADDRH
  LCALL   SETADDR
  MOV   DPTR,#CHINTAB
  MOV   A,CODEN
  MOV   B,#32
  MUL   AB
  ADD   A,DPL
  MOV   DPL,A
  MOV   A,B
  ADDC  A,DPH
  MOV   DPH,A
  MOV   R5,#16
WRCHIN1:
  CLR   A
  MOVC  A,@A+DPTR
  MOV   P1,A
  CLR   WRA
  SETB  WRA
  INC   DPTR
  CLR   A
  MOVC  A,@A+DPTR
  MOV   P1,A
  CLR   WRA
  SETB  WRA
  MOV  A,#40
  ADD  A,ADDRL
  MOV  ADDRL,A
  CLR  A
  ADDC A,ADDRH
  MOV  ADDRH,A
  LCALL  SETADDR
  INC  DPTR
  DJNZ  R5,WRCHIN1
  INC   CODEN
  MOV  A,#2
  ADD  A,TEMP1
  MOV  ADDRL,A
  CLR   A
  ADDC  A,TEMP2
  MOV  ADDRH,A
  RET


;***************************************************************
DISKEY:                     ;显示按键图形 
  MOV   ROW,#70
  MOV   CULA,#8
  MOV   DPTR,#KTAB1
  LCALL  WRINU            ;1
  MOV   CULA,#16
  LCALL  WRINU            ;2
  MOV   CULA,#24  
  LCALL  WRINU            ;3
  MOV   ROW,#115
  MOV   CULA,#8
  LCALL  WRINU            ;4
  MOV   CULA,#16
  LCALL  WRINU            ;5
  MOV   CULA,#24
  LCALL  WRINU            ;6
  MOV   ROW,#160
  MOV   CULA,#8
  LCALL   WRINU           ;7
  MOV   CULA,#16
  LCALL   WRINU           ;8
  MOV   CULA,#24
  LCALL   WRINU           ;9
  MOV   ROW,#205
  MOV   CULA,#8
  LCALL   WRINU           ;C
  MOV   CULA,#16
  MOV   DPTR,#KTAB0
  LCALL   WRINU
  MOV   CULA,#24
  MOV   DPTR,#KTABB
  LCALL   WRINU
  RET

⌨️ 快捷键说明

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