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

📄 lcd.lst

📁 1602显示测试程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
011F C292            214             CLR     LCD_EN
0121 12027B          215             LCALL   DL40US
0124 22              216             RET
0125                 217     SET_CURSOR_POS:
0125 E51C            218             MOV     A,CURSOR_POS
0127 9002F2          219             MOV     DPTR,#CURSORTAB
012A 93              220             MOVC    A,@A+DPTR
012B 12018B          221             LCALL   SET_DDRAM_ADD
012E 22              222             RET     
012F                 223     HIDE_CURSOR:
012F 75800C          224             MOV     P0,#00001100B
0132 D292            225             SETB    LCD_EN
0134 12027B          226             LCALL   DL40US
0137 C292            227             CLR     LCD_EN
0139 22              228             RET
                     229     ;------------设置移位方式-----------
013A                 230     SET_SHIFT_MODE:         ;光标移位,左移
013A 00              231             NOP
013B C290            232             CLR     LCD_RS
013D C291            233             CLR     LCD_RW
013F 758010          234             MOV     P0,#10H ;00010000B
0142 D292            235             SETB    LCD_EN
0144 12027B          236             LCALL   DL40US
0147 C292            237             CLR     LCD_EN
0149 12027B          238             LCALL   DL40US
014C 22              239             RET
                     240     ;------------功能设置---------------
014D                 241     SET_FUNC_SETTING1:
014D 00              242             NOP
014E C290            243             CLR     LCD_RS
0150 C291            244             CLR     LCD_RW
0152 758038          245             MOV     P0,#00111000B;---DL=8位,N=2行,F=5*7
0155 D292            246             SETB    LCD_EN
0157 12027B          247             LCALL   DL40US
015A C292            248             CLR     LCD_EN
015C 12027B          249             LCALL   DL40US
015F 22              250             RET
0160                 251     SET_FUNC_SETTING2:      ;F=5*10
0160 00              252             NOP
0161 C290            253             CLR     LCD_RS
0163 C291            254             CLR     LCD_RW
0165 75803C          255             MOV     P0,#00111100B
0168 D292            256             SETB    LCD_EN
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     5

016A 12027B          257             LCALL   DL40US
016D C292            258             CLR     LCD_EN
016F 12027B          259             LCALL   DL40US
0172 22              260             RET
                     261     ;--------------CGRAM地址设置----------------
0173                 262     SET_CGRAM_ADD:  ;设置CGRAM地址,完发送接收数据
0173 00              263             NOP
0174 C290            264             CLR     LCD_RS
0176 C291            265             CLR     LCD_RW
0178 E51E            266             MOV     A,LCD_CGRAM_ADD
017A 543F            267             ANL     A,#3FH  ;00111111B
017C 4440            268             ORL     A,#40H  ;01000000B
017E F580            269             MOV     P0,A            
0180 D292            270             SETB    LCD_EN
0182 12027B          271             LCALL   DL40US
0185 C292            272             CLR     LCD_EN
0187 12027B          273             LCALL   DL40US
018A 22              274             RET
                     275     ;-------------DDRAM地址设置-----------------
018B                 276     SET_DDRAM_ADD:
018B 7400            277             MOV     A,#0
018D 4480            278             ORL     A,#80H
018F F580            279             MOV     P0,A
0191 D292            280             SETB    LCD_EN
0193 12027B          281             LCALL   DL40US
0196 C292            282             CLR     LCD_EN
0198 22              283             RET
0199                 284     SET_DDRAM_ADD1:
0199 00              285             NOP
019A C290            286             CLR     LCD_RS
019C 00              287             NOP
019D C291            288             CLR     LCD_RW
019F 00              289             NOP
01A0 E51F            290             MOV     A,LCD_DDRAM_ADD
01A2 547F            291             ANL     A,#7FH  ;01111111B
01A4 4480            292             ORL     A,#80H  ;10000000B
01A6 F580            293             MOV     P0,A
01A8 D292            294             SETB    LCD_EN
01AA 120280          295             LCALL   DL80US
01AD C292            296             CLR     LCD_EN
01AF 120280          297             LCALL   DL80US
01B2 22              298             RET
                     299     ;---设置DDRAM字程序,参数为A(地址)
01B3                 300     SET_DDRAM:
01B3 C290            301             CLR     LCD_RS
01B5 4480            302             ORL     A,#80H
01B7 F580            303             MOV     P0,A
01B9 D292            304             SETB    LCD_EN
01BB 12027B          305             LCALL   DL40US
01BE C292            306             CLR     LCD_EN
01C0 22              307             RET
                     308     ;------------忙标志/读地址计数器-------------
01C1                 309     SET_LCD_CHECK:          ;读命令
01C1 00              310             NOP
01C2 751D00          311             MOV     LCD_CH,#00H
01C5 C290            312             CLR     LCD_RS
01C7 D291            313             SETB    LCD_RW
01C9 D292            314             SETB    LCD_EN
01CB 00              315             NOP
01CC 00              316             NOP
01CD E580            317             MOV     A,P0
01CF 5480            318             ANL     A,#80H
01D1 6003            319             JZ      FREE
01D3 751DFF          320             MOV     LCD_CH,#0FFH
01D6                 321     FREE:   
01D6 C292            322             CLR     LCD_EN
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     6

01D8 22              323             RET
                     324     ;-------------从D口读数据----------------
01D9                 325     SET_LCD_READ:
01D9 00              326             NOP
01DA D290            327             SETB    LCD_RS
01DC D291            328             SETB    LCD_RW
01DE D292            329             SETB    LCD_EN
01E0 12027B          330             LCALL   DL40US
01E3 E580            331             MOV     A,P0
01E5 F520            332             MOV     LCD_RAM_RD,A
01E7 C292            333             CLR     LCD_EN
01E9 12027B          334             LCALL   DL40US
01EC 22              335             RET
                     336     ;-------------从D口写数据----------------
01ED                 337     SET_LCD_WRITE:
01ED 00              338             NOP
01EE D290            339             SETB    LCD_RS
01F0 00              340             NOP
01F1 C291            341             CLR     LCD_RW
01F3 00              342             NOP
01F4 E521            343             MOV     A,LCD_RAM_WR
01F6 00              344             NOP
01F7 F580            345             MOV     P0,A
01F9 D292            346             SETB    LCD_EN
01FB 00              347             NOP
01FC 120280          348             LCALL   DL80US
01FF C292            349             CLR     LCD_EN
0201 00              350             NOP
0202 120280          351             LCALL   DL80US
0205 22              352             RET
                     353     ;----------显示字符串------------------
                     354     ;---显示字符串,参数是首地址(DPTR),一行16字
0206                 355     DISPLAY_STRING:
0206 7D00            356             MOV     R5,#0
0208                 357     DISPLAY_STRING_1:
0208 E4              358             CLR     A                                       ;LCD显示地址初值A = 00H
0209 93              359             MOVC    A,@A+DPTR                               ;---判断A是否为'#',如果不是,则跳转,
                             如果是,退出子程序
020A B42303          360             CJNE    A,#23H,DISPLAY_STRING_2
020D C290            361             CLR     LCD_RS
020F 22              362             RET
0210                 363     DISPLAY_STRING_2:
0210 D290            364             SETB    LCD_RS
0212 F580            365             MOV     P0,A
0214 D292            366             SETB    LCD_EN
0216 12027B          367             LCALL   DL40US
0219 C292            368             CLR     LCD_EN
021B A3              369             INC     DPTR
021C 0D              370             INC     R5
021D BD10E8          371             CJNE    R5,#16,DISPLAY_STRING_1         
0220 7440            372             MOV     A,#40H                          ;---第二行显示数据
0222 C290            373             CLR     LCD_RS                          
0224 1201B3          374             LCALL   SET_DDRAM
0227 80DF            375             SJMP    DISPLAY_STRING_1        
                     376     ;--------------DISP_RAM------------------
                     377     ;R1地址增量,R0为显示区地址指针
                     378     ;----------------------------------------
0229                 379     RAM:    
0229 7900            380             MOV     R1,#0H          ;DISPLAY RAM
022B 7835            381             MOV     R0,#35H         ;显示缓冲区首地址指针
022D 00              382             NOP
022E                 383     RAM_ALL:
022E E9              384             MOV     A,R1
022F 93              385             MOVC    A,@A+DPTR               ;DPTR=?
0230 B42302          386             CJNE    A,#23H,RDIS_NEND        ;23H->MODE_NU
0233 800D            387             SJMP    RAM_NEND
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     7

0235                 388     RDIS_NEND:      
0235 F6              389             MOV     @R0,A
0236 08              390             INC     R0
0237 09              391             INC     R1
0238 B920F3          392             CJNE    R1,#20H,RAM_ALL
023B 800B            393             SJMP    RALL_END
023D                 394     RDIS_END:       
023D B92002          395             CJNE    R1,#20H,RAM_NEND
0240 8006            396             SJMP    RALL_END
0242                 397     RAM_NEND:       
0242 768F            398             MOV     @R0,#8FH
0244 09              399             INC     R1
0245 08              400             INC     R0
0246 80F5            401             SJMP    RDIS_END
0248                 402     RALL_END:       
0248 22              403             RET
                     404     ;--------------RAM_WR--------------------
                     405     ;将35H~54H所有显示数据写如LCD显示RAM中
                     406     ;R3为地址增量,R0为显示区地址指针
                     407     ;----------------------------------------
0249                 408     RAM_WR:
0249 751F00          409             MOV     LCD_DDRAM_ADD,#0H               ;INPUT MCS51 RAM INTO ALL OF THE LCD RAM
024C 12018B          410             LCALL   SET_DDRAM_ADD                   ;发ADD_DD地址字符命令
024F 00              411             NOP
0250 7B00            412             MOV     R3,#0H
0252 7835            413             MOV     R0,#35H
0254                 414     RAM_WR1:        
0254 00              415             NOP
0255 8621            416             MOV     LCD_RAM_WR,@R0          ;35H~54H显示数据区数据,通过显示缓冲区写入LCD显示数
                             据区
0257 1201ED          417             LCALL   SET_LCD_WRITE                   ;
025A 0B              418             INC     R3
025B 08              419             INC     R0
025C BB10F5          420             CJNE    R3,#10H,RAM_WR1         ;16bytes
025F 00              421             NOP
                     422     ;第二行显示数据
0260 751F40          423             MOV     LCD_DDRAM_ADD,#40H              ;第二行起始地址40H
0263 12018B          424             LCALL   SET_DDRAM_ADD
0266 00              425             NOP
0267 7B00            426             MOV     R3,#0H
0269                 427     RAM_WR2:        
0269 00              428             NOP
026A 8621            429             MOV     LCD_RAM_WR,@R0
026C 1201ED          430             LCALL   SET_LCD_WRITE
026F 0B              431             INC     R3
0270 08              432             INC     R0
0271 BB10F5          433             CJNE    R3,#10H,RAM_WR2

⌨️ 快捷键说明

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