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

📄 st7920.txt

📁 ST7920的测试程序
💻 TXT
字号:
;************************************************************
;ST7920的测试程序,该程序使用并口,可测试128×64点阵。其接口为
;RS---P3.3     R/W---P3.1     E---------P3.0     DB0~7-----P1
;************************************************************
RS EQU P3.0
RW EQU P3.1
E EQU P3.3



 ORG 0000H
 AJMP START



;主程序
 ORG 0100H
START:
 MOV  IE,#81H         ;EXT. INT0 PERMIT
 MOV  IP,#01H         ;INT0 IS FIRST INT. LEVEL
 MOV  TCON,#00H        ;TIMER/COUNTER CONTROLER INIT.
 MOV  SP, #67h
 
 LCALL DELAY
 LCALL DELAY
 LCALL SETUP
 
 MOV  A,#80H  ;第一,三行汉字测试
 LCALL WRITE_COM
 MOV  DPTR,#CHINESE1
 LCALL WRITE_HZ
 MOV  A,#90H  ;第二,四行汉字测试
 LCALL WRITE_COM
 MOV  DPTR,#CHINESE2
 LCALL WRITE_HZ
 
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY



 MOV  A,#80H  ;第一,三行字符测试
 LCALL WRITE_COM
 MOV DPTR,#TABLE1
 LCALL WRITE_ASCII
 MOV  A,#90H  ;第二,四行字符测试
 LCALL WRITE_COM
 MOV DPTR,#TABLE2
 LCALL WRITE_ASCII
 
 
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY



AAA: LJMP START



;初始化
SETUP:
 LCALL DELAY
 LCALL DELAY
 LCALL DELAY
 MOV  A,#01H  ;清除显示
 LCALL WRITE_COM
 MOV  A,#00110000B ;8位MPU控制界面,基本指令集动作
 LCALL WRITE_COM
 MOV  A,#00000010B ;DDRAM的计数器(AC)到"00H",降游标移动到开头原点位置
 LCALL WRITE_COM
 MOV  A,#00000100B ;
 LCALL WRITE_COM
 MOV  A,#00001100B ;DISPLAY ON
 LCALL WRITE_COM
 MOV  A,#00000001B ;CLEARING SCREEN
 LCALL WRITE_COM
 MOV  A,#10000000B ;SET DDRAM ADDRESS
 LCALL WRITE_COM
 RET



;写指令
WRITE_COM:    
 LCALL DELAY  
 CLR  RS
 CLR  RS
 CLR  RW
 CLR  RW
 MOV  P1,A
 MOV  P1,A
 SETB E
 SETB E
 NOP
 NOP
 CLR  E
 CLR  E
 RET
 
;写显示数据 
WRITE_DAT:   
 LCALL DELAY1
 SETB RS
 SETB RS
 CLR  RW
 CLR  RW
 MOV  P1,A
 MOV  P1,A
 SETB E
 SETB E
 NOP
 NOP
 CLR  E
 CLR  E
 RET
 
;延时1×1+16×1+16×16×2+16×2+1×2=563us 
DELAY1:
 MOV  R7,#10H
D11: MOV  R6,#10H
 DJNZ R6,$
 DJNZ R7,D11
 RET
 
;延时1×1+256×1+256×256×2+256×2+1×2=131843us
DELAY:
 MOV  R1,#00H
D2: MOV  R2,#00H
 DJNZ R2,$
 DJNZ R1,D2
 RET
 
;写32个字符到128×64液晶模块,前16个汉字在第一(二)行,后16个汉字在第三(四)行。
WRITE_ASCII:
  MOV  R4,#32
DDDD: CLR  A
  MOVC A,@A+DPTR
  LCALL WRITE_DAT
  INC  DPTR
  DJNZ R4,DDDD
  RET



;写16个汉字到128×64液晶模块,前8个汉字在第一(二)行,后8个汉字在第三(四)行。
WRITE_HZ:  
  MOV  R4,#16
DD:  CLR  A
  MOVC A,@A+DPTR
  
  LCALL WRITE_DAT
  INC  DPTR
  CLR  A
  MOVC A,@A+DPTR
  
  LCALL WRITE_DAT
  INC DPTR
  DJNZ R4,DD
  RET
 
;定位,使汉字代码以偶字节开始
ORG 1000H
;"这里是16*16点阵的汉字代码表"
CHINESE1:             DB      
CHINESE2:             DB   ;"这里是16*8点阵的字符代码"
TABLE1:   DB         
TABLE2:   DB         ;结束
END

⌨️ 快捷键说明

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