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

📄 lcd.sdi

📁 用PROTEUS仿真LCD-LM032L的汇编程序。
💻 SDI
字号:
,,,; LCD Display Driver Demo.
,,,; Timing code assumes 6MHz Clock
,,,;
,,,;***********************************************
,,,;指定LCD地址 LCD Registers addresses
,,,;LCD_CMD_WR     equ 0                                   ;写命令寄存器
,,,;LCD_DATA_WR    equ     1                               ;写数据寄存器
,,,;LCD_BUSY_RD    equ     2                               ;读忙标志及RAM地址
,,,;LCD_DATA_RD    equ     3                               ;读RAM数据
,,,
,,,;指定LCD命令 LCD Commands
,,,;LCD_CLS                equ     1         ;清屏
,,,;LCD_HOME       equ     2                                               ;光标归位
,,,;LCD_SETMODE    equ     4                               ;输入模式
,,,;LCD_SETVISIBLE equ     8                       ;显示致能、禁能
,,,;LCD_SHIFT      equ     16                              ;显示、光标移位
,,,;LCD_SETFUNCTION        equ     32      ;功能设定
,,,;LCD_SETCGADDR  equ     64              ;字符器RAM地址设定
,,,;LCD_SETDDADDR  equ     128             ;显示数据存储器RAM地址设定
,,,        ORG     00H
0000,01 30,,        AJMP    MAIN
,,,        ORG     30H
,,,;主程序
0030,,MAIN,MAIN:
0030,75 81 5F,,        MOV     SP,#5FH         ;栈指针
0033,11 45,,        ACALL   INIT                    ;LCD初始化
0035,11 6D,,        ACALL   FIRST                   ;第一行显示位置
0037,90 00 B4,,        MOV     DPTR,#TABLE1;取要显示字符
003A,11 60,,        ACALL   DISPLAY         ;显示
003C,11 72,,        ACALL   SECOND          ;第二行显示位置
003E,90 00 C9,,        MOV     DPTR,#TABLE2;取要显示字符
0041,11 60,,        ACALL   DISPLAY         ;显示
0043,80 EB,,        JMP     main                    ;返回
,,,;初始化子程序
0045,,INIT,INIT:
0045,11 AB,,        ACALL   DELAY;
,,,
0047,74 39,,        MOV     A,#39H          ;复位数据
0049,11 77,,        ACALL   WRCOM                   ;写命令寄存器
004B,74 39,,        MOV     A,#39H          ;设定数据长度为8位
004D,11 77,,        ACALL   WRCOM                   ;写命令寄存器
,,,;
004F,74 08,,        MOV     A,#08H          ;设定LCD不显示光标,不闪烁字符
0051,11 77,,        ACALL   WRCOM                   ;写命令寄存器
,,,;
0053,74 01,,        MOV     A,#01H          ;清屏
0055,11 77,,        ACALL   WRCOM                   ;
,,,;
0057,74 06,,        MOV     A,#06H          ;设定输入模式
0059,11 77,,        ACALL   WRCOM                   ;
,,,;
005B,74 0C,,        MOV     A,#0CH          ;显示致能,不显示光标
005D,11 77,,        ACALL   WRCOM                   ;
005F,22,,        RET
,,,;显示子程序
0060,,DISPLAY,DISPLAY:
0060,79 00,,        MOV     R1,#00H         ;取第一个字符
0062,,NEXT,NEXT:
0062,E9,,        MOV     A,R1                    ;
0063,93,,        MOVC    A,@A+DPTR       ;
0064,B4 23 01,,        CJNE    A,#23H,DSP;判断是否显示完全部字符(“#”对应代码是0010 0011B=23H)
0067,22,,        RET
0068,,DSP,DSP:
0068,11 88,,        ACALL   WRDATA          ;显示
006A,09,,        INC     R1                              ;下一字符
006B,01 62,,        AJMP    NEXT                    ;
006D,,FIRST,FIRST:
006D,74 80,,        MOV     A,#10000000B;第一行显示位置
006F,11 77,,        ACALL   WRCOM                   ;
0071,22,,        RET
,,,;
0072,,SECOND,SECOND:
0072,74 C0,,        MOV     A,#11000000B;第一行显示位置
0074,11 77,,        ACALL   WRCOM;
0076,22,,        RET
,,,;写命令寄存器
0077,,WRCOM,WRCOM:
0077,11 99,,        ACALL   BUSY;
0079,75 A0 F8,,        MOV     P2,#11111000B;
007C,00,,        NOP
007D,D2 A2,,        SETB    P2.2;
007F,F5 80,,        MOV     P0,A;
0081,00,,        NOP
0082,C2 A2,,        CLR     P2.2;
0084,12 00 AB,,        CALL   DELAY
0087,22,,        RET
,,,;写数据寄存器
0088,,WRDATA,WRDATA:
0088,11 99,,        ACALL   BUSY;
008A,75 A0 F9,,        MOV     P2,#11111001B;
008D,00,,        NOP
008E,D2 A2,,        SETB    P2.2;
0090,F5 80,,        MOV     P0,A;
0092,00,,        NOP
0093,C2 A2,,        CLR     P2.2;
0095,12 00 AB,,        CALL   DELAY
0098,22,,        RET
,,,;忙判断
0099,,BUSY,BUSY:
0099,C0 E0,,        PUSH    ACC;
009B,,WAIT,WAIT:
009B,75 A0 FA,,        MOV     P2,#11111010B;
009E,00,,        NOP
009F,D2 A2,,        SETB    P2.2;
00A1,E5 80,,        MOV     A,P0;
00A3,20 E7 F5,,        JB      ACC.7,WAIT;
00A6,C2 A2,,        CLR     P2.2;
00A8,D0 E0,,        POP     ACC
00AA,22,,        RET
,,,;延时
00AB,,DELAY,DELAY:
00AB,7E 80,,        MOV     R6,#80H
00AD,7F 80,DL1,DL1:    MOV     R7,#80H
00AF,DF FE,,        DJNZ    R7,$
00B1,DE FA,,        DJNZ    R6,DL1
00B3,22,,        RET
,,,;显示字符
00B4,20 20 41 42,TABLE1,TABLE1:  DB      "  ABCDEFG  HIGKLMN  ";
00C8,23,,        DB      "#";
00C9,20 20 4F 50,TABLE2,TABLE2:  DB      "  OPQ RST  UVW XYZ  ";
00DD,23,,        DB      "#"
000E,,,        END

⌨️ 快捷键说明

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