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

📄 demo_lcd.asm

📁 本程序为驱动LCD为LCM161(HD44780驱动器)字符显示器. 接线:LCD D0-D8(PIN7-14) 对映用户板P0.0--P0.7 LCD VSS(PIN1) 接 GND,VDD
💻 ASM
字号:
      ;说明:本LCD为LCM161(HD44780驱动器)字符显示器.
      ;接线:LCD D0-D8(PIN7-14) 对映用户板P0.0--P0.7
      ;      LCD VSS(PIN1) 接 GND,VDD(PIN2)接+5V,LCD驱动电源V0(PIN3)接可调电阻ADJ,调节亮度
      ;      LCD寄存器选择RS(PIN4)接P2.0,读写选择R/W(PIN5)接P2.1,使能端EN(PIN6)接P2.2(高电平有效)
      ;本程序采用I/O口模仿总线时序,故无需做任何硬件扩展.屏幕显示:"I'm SuperICES! ",
;-----------------------------------------------------------------------------------------------
        RS  BIT  P2.0
        R_W BIT  P2.1
        EN  BIT  P2.2 
        COM EQU 20H	    
        DAT EQU 21H

               ORG 0000H
               AJMP  MAIN
               ORG 100H
         MAIN: MOV SP,#50H
               MOV P0,#0FFH
               MOV P2,#0FFH
               mov p0,#00h
               CLR EN
               mov a,#00h
               mov r1,#20h
               mov r0,#40h
       loop:   mov @r1,a
               inc r1
               djnz r0,loop
               MOV R2,#03H
      INTK11:  MOV COM,#30H
               LCALL PR1
               LCALL DELAY_K1
               lcall delay_k1
               DJNZ R2,INTK11
               MOV COM,#38H     ;工作方式为2行,5*7点阵        
               LCALL   PR1
	         MOV COM,#01H     ;清零
 	         LCALL PR1
	         MOV COM,#06H     ;AC自动加1
	         LCALL PR1
	         MOV COM,#0FH     ;光标,闪烁
               LCALL PR1
               MOV  COM,#80H    ;显示RAM前8位首地址
	         LCALL PR1
	         MOV DPTR,#TAB1
	         MOV R2,#08H      ;前8位
	         MOV R3,#00H
        WRIT1: MOV A,R3
               MOVC A,@A+DPTR
               MOV DAT,A
               LCALL PR2
               LCALL DELAY_K1
               INC R3
               DJNZ R2,WRIT1
               MOV COM,#06H   
               LCALL PR1
               MOV COM,#0FH
               LCALL PR1
               MOV  COM,#0C0H    ;显示RAM后8位首地址
	         LCALL PR1
	         MOV DPTR,#TAB2
	         MOV R2,#08H       ;后8位
	         MOV R3,#00H
        WRIT2: MOV A,R3
               MOVC A,@A+DPTR
               MOV DAT,A
               LCALL PR2
               LCALL DELAY_K1
               INC R3
               DJNZ R2,WRIT2
               jb p3.0,$           ;等待S0按钮,重新演示
               ajmp main


    DELAY_K1:MOV R6,#00H
             MOV R7,#00H
    DEL1_K1: NOP
             DJNZ  R7, del1_k1
             DJNZ R6,DEL1_K1
             RET

      PR0:   PUSH ACC             ;READ BF OR AC
             CLR RS
             SETB R_W
             SETB EN
             MOV A,P0
             MOV COM,A
             CLR EN        
             POP    ACC
             RET
           
          PR1:   PUSH ACC          ;WRITE COMMAMD
                 CLR RS
                 SETB R_W
                 SETB EN
            PR11:MOV A,P0
                 JB ACC.7,PR11
                 CLR RS
                 CLR R_W
                 MOV  A, COM
                 MOV P0,A
                 LCALL DELAY_K1
                 CLR EN
                 POP    ACC
                 RET

          
            PR2: PUSH ACC               ;WRITE DATA
                 CLR RS
                 SETB R_W
                 SETB EN
            PR21:MOV  A,P0
                 JB   ACC.7,PR21
                 MOV  A, DAT
                 SETB RS
                 CLR R_W
                 MOV  P0,A
                 NOP
	           CLR EN
                 POP    ACC
                 RET
                 
      PR3:   PUSH ACC             ;READ DATA
             SETB RS
             SETB R_W
             SETB EN
             MOV A,P0
             MOV COM,A
             CLR EN        
             POP    ACC
             RET

         TAB1:DB 49H,27H,6DH,0A0H,53H,75H,70H,65H       ;"I'm Supe"
         TAB2:DB 72H,49H,43H,45H,53H,0A0H,21H ,0A0H      ;"rICES !"
         END

               

⌨️ 快捷键说明

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