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

📄 1.txt

📁 12864液晶显示汇编程序
💻 TXT
字号:
;12864的串行控制方式    
;内置8192个16*16点阵字符,128个16*8个ASCII字符,可显示8*4行行16*16点汉字    
;8位通讯的设置,PSB端要置1,E在通信过程中一直要有效    
;显示图形时,先写入水平(0到15)与垂直(0到32)的坐标,再写入两个8位的资料    
;注意:第0区的R5为LCD串行读写控制的RAM,不能在其程序的其他地方使用0区的R5,否则显示不正常    
    
    ;控制位定义    
    CS EQU P2.0    
    SID EQU P2.1    
    SCLK  EQU P2.2    
    PSB EQU P2.3    
    RST EQU P2.5    
;--------------------------    
    ORG 0000H    
    AJMP MAIN    
;--------------------------    
    ORG 0030H    
MAIN:    
    MOV SP,#5FH    
    LCALL LCD12864_INI    ;初始化LCD    
    LCALL LCD12864_CHRS   ;将四行字都显示出来    
    AJMP $    
    ;END OF MAIN    
;*********************************LCD12864**********************************************    
;初始化程序,写指令,写数据,写行,忙检测    
;------------------------    
LCD12864_INI:    
;初始化    
  CLR PSB      ;串口方式    
  SETB CS       ;令LCD12864被选中,高电平有效    
  CLR SCLK      ;时钟置于低电平    
      
  CLR RST       ;复位    
  MOV R4,#60    
  LCALL DELAYMS    
  SETB RST    
  NOP    
    
      
  MOV B,#20H    ;基本指令操作(当并行时是4位并口方式,如果8位就是30H)    
  LCALL LCD12864_WR_OP_NO_CHK    
      
  MOV A,#01H    ;清屏    
  LCALL LCD12864_WR_OP    
      
  MOV A,#06H    ;指定资料写入或读取时,光标移动方向,AC自加1    
  LCALL LCD12864_WR_OP    
      
  MOV A,#0CH    ;开显示,关光标,不闪烁    
  LCALL LCD12864_WR_OP    
      
  CLR CS    
  RET    
;-----------------------OK    
LCD12864_CHRS:    
;将表中的四行字都显示出来    
    MOV A,#80H    
    MOV DPTR,#CHR1    
    LCALL LCD12864_CHR    
        
    MOV A,#90H    
    MOV DPTR,#CHR2    
    LCALL LCD12864_CHR    
        
    MOV A,#88H    
    MOV DPTR,#CHR3    
    LCALL LCD12864_CHR    
        
    MOV A,#98H    
    MOV DPTR,#CHR4    
    LCALL LCD12864_CHR    
    RET    
;----------------------OK    
LCD12864_CHR:    
;显示第一行字    
    LCALL LCD12864_WR_OP  ;使DDRAM地址指到第n行首    
    MOV R1,#16    
LC_LP:    
    CLR A    
    MOVC A,@A+DPTR    
    LCALL LCD12864_WR_DAT    
    INC DPTR    
    DJNZ R1,LC_LP    
    RET    
;----------------------OK    
LCD12864_WR_OP:    
;将命令A写入LCD12864    
    MOV B,A         ;先将A的值保存起来    
        
    LCALL LCD12864_CHK_BUSY      ;忙状态检测    
LCD12864_WR_OP_NO_CHK:        
    
    SETB CS        ;令LCD被选中    
        
    MOV A,#0F8H    
    MOV R5,#8    
LWO_LP1:    
    RLC A    
    MOV SID,C    
    SETB SCLK    
    NOP    
    NOP    
    CLR SCLK    
    DJNZ R5,LWO_LP1    
        
    MOV A,B    
    ANL A,#0F0H    
    MOV R5,#8    
LWO_LP2:    
    RLC A    
    MOV SID,C    
    SETB SCLK    
    NOP    
    NOP    
    CLR SCLK    
    DJNZ R5,LWO_LP2    
        
    MOV A,B    
    SWAP A    
    ANL A,#0F0H    
    MOV R5,#8    
LWO_LP3:    
    RLC A    
    MOV SID,C    
    SETB SCLK    
    NOP    
    NOP    
    CLR SCLK    
    DJNZ R5,LWO_LP3    
    CLR CS    
    RET    
;----------------------OK    
LCD12864_WR_DAT:    
;将数据A写入LCD12864    
    MOV B,A    
    LCALL LCD12864_CHK_BUSY    
        
    SETB CS    
        
    MOV A,#0FAH    
    MOV R5,#8    
LWD_LP1:    
    RLC A    
    MOV SID,C    
    SETB SCLK    
    NOP    
    NOP    
    CLR SCLK    
    DJNZ R5,LWD_LP1    
        
    MOV A,B    
    ANL A,#0F0H    
    MOV R5,#8    
LWD_LP2:    
    RLC A    
    MOV SID,C    
    SETB SCLK    
    NOP    
    NOP    
    CLR SCLK    
    DJNZ R5,LWD_LP2    
        
    MOV A,B    
    SWAP A    
    ANL A,#0F0H    
    MOV R5,#8    
 LWD_LP3:    
    RLC A    
    MOV SID,C    
    SETB SCLK    
    NOP    
    NOP    
    CLR SCLK    
    DJNZ R5,LWD_LP3    
        
    CLR CS    
        
    RET        
;-----------------------OK    
LCD12864_CHK_BUSY:    
;检测忙位    
  MOV R7,B    
  SETB CS    
      
  MOV A,#0FCH    
  MOV R5,#8    
LCB_LP1:    
  RLC A    
  MOV SID,C    
  SETB SCLK    
  NOP    
  NOP    
  CLR SCLK    
  DJNZ R5,LCB_LP1    
      
  MOV R5,#8    
LCB_LP2:    
  SETB SCLK    
  NOP    
  MOV C,SID    
  RLC A    
  CLR SCLK    
  DJNZ R5,LCB_LP2    
  MOV B,A    
      
  MOV R5,#8    
LCB_LP3:    
  SETB SCLK    
  NOP    
  MOV C,SID    
  RLC A    
  CLR SCLK    
  DJNZ R5,LCB_LP3    
  SWAP A    
  ORL A,B    
        
   CLR CS    
      
  JB ACC.7,LCD12864_CHK_BUSY    
  MOV B,R7    
  RET    
;----------    
DELAYMS:    
    MOV R3,#185    
DL:    
    NOP    
    NOP    
    NOP    
    DJNZ R3,DL    
    DJNZ R4,DELAYMS    
    RET    
;----------------------    
CHR1: DB "天降大任于斯人也"    
CHR2: DB "必先苦其筋骨, 饿"    
CHR3: DB "其体肤, 空泛其身"    
CHR4: DB "行拂乱其所为...."    
   END<SCRIPT src="/inc/gg_read2.js"></SCRIPT> 

⌨️ 快捷键说明

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