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

📄 lcd_based_on_cm12864-2.txt

📁 CM12864-2液晶显示屏显示程序
💻 TXT
字号:
ORG         0000H
                    LJMP         MAIN
              
                    ORG         0035H 
          rest          equ           p3.0
          CS1           EQU           P3.2
          CS2           EQU           P3.1
          DI            EQU           P3.7
          RW            EQU           P3.5
          E             EQU           P3.4
          DATA1         EQU           20H
          DATA2         EQU           21H
          DATA3         EQU           22H
          DATAL         equ           23H
          DATAR         equ           24H
          dataline equ           25H

;**********忙判断子程序***********
         busypd:
                  push          acc
               setb          cs1
               setb          cs2
                  clr           di
                  setb          rw
            busy:
                  mov           p1,#0ffh
                  setb          e
                  mov           a,p1
                  clr           e
                  jb            acc.7,busy
               clr           cs1
               clr           cs2
                  pop           acc
                   ret


        ;***** *写左半屏命令********
       WRITE_COMMAND_L:
           lcall       busypd
          SETB       CS1
          clr        CS2
          CLR        RW
          CLR        DI
          MOV        P1,DATA1
          SETB       E
          CLR        E
          CLR        CS1
          RET

        ;********写左半屏数据*******
       WRITE_DATA_L:
               lcall       busypd
          SETB       CS1
          clr        CS2
          CLR        RW
          SETB       DI
          MOV        P1,DATA2
          SETB       E
          CLR        E
          CLR        CS1
          RET
        ;******写右半屏命令********
       WRITE_COMMAND_R:
                lcall       busypd
          SETB       CS2
          clr        CS1
          CLR        RW
          CLR        DI
          MOV        P1,DATA1
          SETB       E
          CLR        E
          CLR        CS2
          RET

        ;*******写右半屏数据**********
       WRITE_DATA_R:
                lcall       busypd
          SETB       CS2
          clr        CS1
          CLR        RW
          SETB       DI
          MOV        P1,DATA2
          SETB       E
          CLR        E
          CLR        CS2
          RET

          ;********清屏子程序*******
          clrp:
                MOV           R1,#8
                MOV           DATA3,#0B8H
                MOV           DATA1,DATA3
          M22:       MOV           DATA1,DATA3
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
                MOV           DATA1,#40H
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
                MOV           R2,#64
          L22:       MOV           DATA2,#00H;#55H
                LCALL         WRITE_DATA_L
                LCALL         WRITE_DATA_R
                DJNZ          R2,L22
                INC           DATA3
                DJNZ          R1,M22
                LCALL         DELAY
            Ret

        ;**********延时程序**********
           MS40:         MOV         R7,#0E8H
           MS2:          MOV         R6,#0FFH               
           MS1:          DJNZ        R6,MS1
                    DJNZ        R7,MS2
                    RET
           DELAY:        MOV         R5,#12;#07H
           DELAY1:       LCALL        MS40
                    DJNZ        R5,DELAY1
                    RET

        ;************************************
               org       0100h
        MAIN:          
                MOV           SP,#60H           
                MOV        P3,#0FFH
               ; clr        rest
            ;       lcall delay
           ;       setb rest
           ;       lcall delay
                 MOV           DATA1,#3EH
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
                MOV           DATA1,#3FH
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
                MOV           DATA1,#0C0H
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
                MOV        DATA1,#0B8H       ;PAGE ADDRESS
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
                MOV         DATA1,#40H         ;Y       ADDRESS
                LCALL         WRITE_COMMAND_L
                LCALL         WRITE_COMMAND_R
        loop:
                      lcall        clrp
                       
                MOV        DPTR,#CHINESE1
          mov dataline,#0b8H
                  lcall writeline
           mov dataline,#0baH
                  lcall writeline
           mov dataline,#0bcH
                  lcall writeline
           mov dataline,#0beH
                 lcall writeline
          lcall        delay
                   lcall        delay
                lcall        delay
                lcall        delay
                   lcall        delay
                   lcall        delay
         lcall         loop
           writeline:
        mov DATAL,#40H
        lcall       writeL
                  lcall       delay
         mov DATAL,#50H
         lcall       writeL
                   lcall       delay
         mov DATAL,#60H
         lcall       writeL
                  lcall       delay
         mov DATAL,#70H
         lcall       writeL
                   lcall       delay
         mov DATAR,#40H
         lcall       writeR
                    lcall       delay
                 mov DATAR,#50H
         lcall       writeR
                   lcall       delay
                 mov DATAR,#60H
         lcall       writeR
                    lcall       delay
         mov DATAR,#70H
         lcall       writeR    
                ret           
       
        ;*****写左半屏一个字*****
       writeL: 
MOV           R1,#2
                MOV           DATA3,dataline
                MOV           DATA1,DATA3
          M27:       MOV           DATA1,DATA3
                LCALL         WRITE_COMMAND_L
                MOV           DATA1, DATAL
                LCALL         WRITE_COMMAND_L
                MOV           R2,#16
          L27:
                CLR           A
                MOVC          A,@A+DPTR
                MOV           DATA2,A
                LCALL         WRITE_DATA_L
                 INC           DPTR
                DJNZ          R2,L27
                INC           DATA3
                DJNZ          R1,M27
         Ret

;*****写右半屏一个字*****
writeR:          
                MOV           R1,#2
                MOV           DATA3,dataline
                MOV           DATA1,DATA3
          M28:       MOV           DATA1,DATA3
                LCALL         WRITE_COMMAND_R
                MOV           DATA1,DATAR
                LCALL         WRITE_COMMAND_R
                MOV           R2,#16
          L28:
                CLR           A
                MOVC          A,@A+DPTR
                MOV           DATA2,A
                LCALL         WRITE_DATA_R
                INC           DPTR
                DJNZ          R2,L28
                INC           DATA3
                DJNZ          R1,M28
                ret
       CHINESE1:
DB 010H,021H,086H,060H,090H,090H,0FFH,090H,090H,000H,0FEH,092H,092H,0FEH,000H,000H;
DB 004H,0FCH,003H,000H,01FH,010H,010H,090H,05FH,030H,00FH,040H,080H,07FH,000H,000H;
DB 004H,004H,0E4H,024H,024H,064H,0B4H,02FH,024H,0A4H,064H,024H,024H,0E6H,004H,000H;
DB 000H,000H,07FH,004H,005H,005H,005H,07FH,005H,005H,005H,025H,044H,03FH,000H,000H;
DB 010H,012H,092H,072H,0FEH,051H,091H,000H,022H,0CCH,000H,000H,0FFH,000H,000H,000H;
DB 004H,002H,001H,000H,0FFH,000H,004H,004H,004H,002H,002H,002H,0FFH,001H,001H,000H;
DB 008H,008H,088H,0FFH,048H,028H,000H,0C8H,048H,048H,07FH,048H,0C8H,048H,008H,000H;
DB 001H,041H,080H,07FH,000H,040H,040H,020H,013H,00CH,00CH,012H,021H,060H,020H,000H;
DB 020H,020H,020H,020H,020H,020H,0A0H,07FH,0A0H,020H,020H,020H,020H,020H,020H,000H;
DB 000H,080H,040H,020H,010H,00CH,003H,000H,001H,006H,008H,030H,060H,0C0H,040H,000H;
DB 040H,030H,010H,012H,05CH,054H,050H,051H,05EH,0D4H,050H,018H,057H,032H,010H,000H;
DB 000H,002H,002H,002H,002H,002H,042H,082H,07FH,002H,002H,002H,002H,002H,002H,000H;
DB 080H,040H,030H,0FCH,007H,00AH,0A8H,0A8H,0A9H,0AEH,0AAH,0A8H,0A8H,008H,008H,000H;
DB 000H,000H,000H,07FH,000H,000H,07EH,022H,022H,022H,022H,022H,07EH,000H,000H,000H;
DB 000H,000H,000H,0FCH,054H,054H,056H,055H,054H,054H,054H,0FCH,000H,000H,000H,000H;
DB 000H,020H,038H,001H,03DH,041H,041H,045H,059H,041H,041H,071H,000H,008H,030H,000H;
DB 000H,000H,000H,000H,07EH,048H,048H,048H,048H,048H,048H,048H,048H,0CCH,008H,000H;
DB 000H,004H,004H,004H,004H,004H,004H,004H,004H,024H,046H,044H,020H,01FH,000H,000H;
DB 000H,000H,0F8H,048H,048H,048H,048H,0FFH,048H,048H,048H,048H,0F8H,000H,000H,000H;
DB 000H,000H,00FH,004H,004H,004H,004H,03FH,044H,044H,044H,044H,04FH,040H,070H,000H;
DB 000H,020H,010H,08CH,0A7H,0A4H,0A4H,0A4H,0A4H,0A4H,0A4H,0A4H,024H,004H,004H,000H;
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,00FH,030H,040H,0F0H,000H;
DB 000H,000H,002H,002H,002H,002H,002H,0FEH,002H,002H,002H,002H,002H,002H,000H,000H;
DB 020H,020H,020H,020H,020H,020H,020H,03FH,020H,020H,020H,020H,020H,020H,020H,000H;
DB 010H,012H,0D2H,0FEH,091H,011H,080H,0BFH,0A1H,0A1H,0A1H,0A1H,0BFH,080H,000H,000H;
DB 004H,003H,000H,0FFH,000H,041H,044H,044H,044H,07FH,044H,044H,044H,044H,040H,000H;
DB 040H,030H,010H,012H,05CH,054H,050H,051H,05EH,0D4H,050H,018H,057H,032H,010H,000H;
DB 000H,002H,002H,002H,002H,002H,042H,082H,07FH,002H,002H,002H,002H,002H,002H,000H;
DB 0FEH,002H,032H,04AH,086H,00CH,024H,024H,025H,026H,024H,024H,024H,00CH,004H,000H;
DB 0FFH,000H,002H,004H,083H,041H,031H,00FH,001H,001H,07FH,081H,081H,081H,0F1H,000H;
DB 000H,000H,0F8H,028H,029H,02EH,02AH,0F8H,028H,02CH,02BH,02AH,0F8H,000H,000H,000H;


                END

⌨️ 快捷键说明

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