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

📄 12864液晶屏已经调试通过,下面是源程序,无偿奉献.txt

📁 压缩包中包括多个驱动程序的原代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
12864液晶屏已经调试通过,下面是源程序,无偿奉献 
发表时间:2005-10-28 14:50:54   浏览人数:258 
   XCS BIT 00H    ;显示器片选0=CS1,1=CS2      ;20H-2FH为位
寻址区,位地址从00H-7FH
                        BZPD BIT 01H           ;0=上8X8半字,1=下8X8半字
                        HHBZ BIT 02H             ;换行标志
                        HZDH BIT 03H            ;0=显示汉字,1=显示动画
                        LCD_RW BIT P3.0
                        LCD_DI BIT P3.1
                        LCD_E  BIT P3.3
                        LCD_CS1 BIT P3.5
                        LCD_CS2 BIT P3.4

                        LCD_OPEN DATA 30H
                        LCD_LINE DATA 31H
                        LCD_PAGE DATA 32H
                        LCD_Y    DATA 33H
                        YCPD     DATA 34H           ;左右半屏溢出判断
                        HHPD     DATA 35H           ;换行判断
                        XWPD     DATA 36H            ;写完一整屏判断
                        ORG 0000H

                        MOV SP,#40H

                        SETB XCS                   ;选择CS2
                        MOV LCD_OPEN,#01H          ;开显示器1,关显示器
0         ;CS2
                        LCALL LCDOPEN

                        MOV LCD_LINE,#00H         ;设置起始
行                   ;CS2
                        LCALL SETLINE

                        MOV LCD_PAGE,#00H         ;设置页地址              ;CS2
                        LCALL SETPAGE

                        MOV LCD_Y,#00H            ;设置列地
址                ;CS2
                        LCALL SETY


                        LJMP CLRST1
                   CLR4:INC LCD_PAGE
                 CLRST1:LCALL SETPAGE
                        MOV R7,#40H
                   CLR5:MOV A,#0FFH                ;显示校
验                     ;CS2
                        LCALL LCDWRDATA
                        DJNZ R7,CLR5
                        MOV A,LCD_PAGE
                        CJNE A,#07H,CLR4

                        MOV LCD_LINE,#00H
                        LCALL SETLINE
                        MOV LCD_PAGE,#00H
                        LCALL SETPAGE
                        MOV LCD_Y,#00H
                        LCALL SETY


                        LJMP CLRST2
                   CLR6:INC LCD_PAGE
                 CLRST2:LCALL SETPAGE
                        MOV R7,#40H
                   CLR7:MOV A,#00H                     ;清显
示                     ;CS2
                        LCALL LCDWRDATA
                        DJNZ R7,CLR7
                        MOV A,LCD_PAGE
                        CJNE A,#07H,CLR6

                        CLR XCS                    ;选择CS1
                        MOV LCD_OPEN,#01H          ;开显示器1, 关显示器
0           ;CS1
                        LCALL LCDOPEN


                        MOV LCD_LINE,#00H
                        LCALL SETLINE          ;设置起始
行                        ;CS1

                        MOV LCD_PAGE,#00H
                        LCALL SETPAGE                ;设置页地
址                   ;CS1

                        MOV LCD_Y,#00H
                        LCALL SETY                 ;设置列地
址                     ;CS1

                        LJMP CLRST3
                   CLR0:INC LCD_PAGE
                 CLRST3:LCALL SETPAGE
                        MOV R7,#40H
                   CLR1:MOV A,#0FFH                    ;显示校
验                     ;CS1
                        LCALL LCDWRDATA
                        DJNZ R7,CLR1
                        MOV A,LCD_PAGE
                        CJNE A,#07H,CLR0

                        MOV LCD_LINE,#00H
                        LCALL SETLINE
                        MOV LCD_PAGE,#00H
                        LCALL SETPAGE
                        MOV LCD_Y,#00H
                        LCALL SETY

                        LJMP CLRST4
                   CLR2:INC LCD_PAGE
                 CLRST4:LCALL SETPAGE
                        MOV R7,#40H
                   CLR3:MOV A,#00H                 ;清显
示                     ;CS1
                        LCALL LCDWRDATA
                        DJNZ R7,CLR3
                        MOV A,LCD_PAGE
                        CJNE A,#07H,CLR2

;初始化完毕
*************************************************************************
                       CLR HZDH 
                  WRLCD:JNB HZDH,XZF
                    XDH:MOV DPTR,#DHDOT           ;写动画或图片
                        LJMP DH0
                    XZF:MOV DPTR,#HZDOT           ;写字符(汉字或字母或符号)

                        MOV XWPD,#00H
                    HZ0:CLR XCS
                        MOV LCD_LINE,#00H                ;置起始行
                        LCALL SETLINE

                        MOV LCD_PAGE,#00H
                        LCALL SETPAGE           ;置页

                        MOV LCD_Y,#00H                  ;置列
                        LCALL SETY


                        MOV HHPD,#00H
                    HZ7:MOV YCPD,#00H
                    HZ8:CLR BZPD
                    HZ3:MOV R0,#08H              ;写左上8个Y列
                    HZ1:MOV A,#00H
                        MOVC A,@A+DPTR
                        LCALL LCDWRDATA
                        INC DPTR
                        INC LCD_Y
                        DJNZ R0,HZ1
                        JB BZPD,HZ2
                        CLR C                         ;Y列减8, 即返回扫描
                        MOV A,LCD_Y
                        SUBB A,#08H
                        MOV LCD_Y,A
                        LCALL SETY
                        INC LCD_PAGE                 ;页地址加1,即换第2页扫描
                        LCALL SETPAGE

                        SETB BZPD
                        LJMP HZ3
                    HZ2:DEC LCD_PAGE                 ;返回到第1页中,准备下一个半
字扫描
                        LCALL SETPAGE
                        INC YCPD
                        MOV A,YCPD
                        CJNE A,#08H,HZ8

                        JB XCS,HZ9
                        SETB XCS                     ;换屏
                        LCALL SETPAGE

                        MOV LCD_Y,#00H                        ;置列
                        LCALL SETY
                        LJMP HZ7

                    HZ9:CLR XCS                        ;写完一行后从CS2返回到CS1
                        INC LCD_PAGE
                        INC LCD_PAGE
                        LCALL SETPAGE                   ;下一行开始
                        MOV LCD_Y,#00H
                        LCALL SETY
                        INC HHPD
                        MOV A,HHPD
                        CJNE A,#04H,HZ7

                        INC XWPD                      ;换第二幅画面
                        MOV A,XWPD
                        CJNE A,#02H,HZ0

                        LJMP$
                        
                    DH0:MOV XWPD,#00H
                    DH1:CLR XCS
                        MOV LCD_LINE,#00H                ;置起始行
                        LCALL SETLINE

                        MOV LCD_PAGE,#00H
                        LCALL SETPAGE           ;置页

                        MOV LCD_Y,#00H                  ;置列
                        LCALL SETY


                        MOV HHPD,#00H
                    DH2:MOV R0,#40H              ;写上64个Y列
                    DH3:MOV A,#00H
                        MOVC A,@A+DPTR
                        LCALL LCDWRDATA
                        INC DPTR
                        DJNZ R0,DH3
                        JB XCS,DH4
                        SETB XCS
                        LCALL SETPAGE
                        MOV LCD_Y,#00H
                        LCALL SETY
                        LJMP DH2

                    DH4:CLR XCS                        ;写完一行后从CS2返回到CS1
                        INC LCD_PAGE
                        LCALL SETPAGE                   ;下一行开始
                        MOV LCD_Y,#00H
                        LCALL SETY
                        INC HHPD
                        MOV A,HHPD
                        CJNE A,#08H,DH2

                        INC XWPD                      ;换第二幅画面
                        MOV A,XWPD
                        CJNE A,#02H,DH1

                        LJMP$

              LCDWRINST:NOP
                        JB XCS,INS0
                        CLR LCD_CS1
                        SETB LCD_CS2
                        LJMP INS1
                   INS0:SETB LCD_CS1
                        CLR LCD_CS2
                   INS1:SETB LCD_E
                        CLR LCD_DI
                        CLR LCD_RW
                        MOV P1,A
                        LCALL DLY10
                        CLR LCD_E
                        LCALL DLY10
                        NOP
                        RET

              LCDWRDATA:NOP
                        JB XCS,DAT0
                        CLR LCD_CS1
                        SETB LCD_CS2
                        LJMP DAT1
                   DAT0:SETB LCD_CS1
                        CLR LCD_CS2
                   DAT1:SETB LCD_E
                        SETB LCD_DI
                        CLR LCD_RW
                        MOV P1,A
                        LCALL DLY10
                        CLR LCD_E
                        LCALL DLY10
                        NOP
                        RET

                LCDOPEN:MOV A,LCD_OPEN      ;开显示器
                        ANL A,#3FH
                        ORL A,#3EH
                        LCALL LCDWRINST
                        NOP
                        RET
                SETLINE:MOV A,LCD_LINE
                        ORL A,#0C0H          ;设置起始行
                        LCALL LCDWRINST
                        NOP
                        RET
                SETPAGE:MOV A,LCD_PAGE
                        ANL A,#0BFH
                        ORL A,#0B8H                ;设置页地址
                        LCALL LCDWRINST
                        NOP
                        RET
                   SETY:MOV A,LCD_Y
                        ANL A,#7FH
                        ORL A,#40H
                        NOP                  ;设置列地址
                        LCALL LCDWRINST
                        NOP
                        RET

                  DLY10:NOP
                        MOV R5,#01H
                    DL1:MOV R4,#01H
                    DL2:MOV R6,#0FH
                    DL3:DJNZ R6,DL3
                        DJNZ R4,DL2
                        DJNZ R5,DL1
                        NOP
                        RET


HZDOT:
;新   CD0C2
DB 000H,044H,04CH,07CH,0D7H,0E6H,07CH,05CH
DB 000H,022H,01AH,04EH,0FFH,07FH,00EH,09AH
DB 044H,0FEH,0FCH,046H,0C2H,0C3H,062H,040H
DB 060H,03FH,01FH,000H,0FFH,0FFH,000H,000H

;年   CC4EA
DB 000H,020H,010H,018H,0ECH,0CFH,04AH,048H
DB 000H,004H,004H,004H,007H,007H,004H,004H
DB 0F8H,0F8H,048H,048H,068H,04CH,008H,000H
DB 0FFH,0FFH,004H,004H,004H,004H,006H,004H

;快   CBFEC
DB 000H,0C0H,060H,0FFH,0FEH,030H,060H,008H
DB 000H,000H,000H,0FFH,07FH,080H,041H,071H
DB 008H,0FFH,0FEH,008H,0F8H,0FCH,008H,000H
DB 03DH,00FH,007H,00DH,039H,071H,0E1H,041H

;乐   CC0D6
DB 000H,000H,080H,080H,0FEH,0FCH,084H,084H
DB 000H,040H,020H,030H,01CH,00EH,024H,040H
DB 0FEH,0F6H,082H,083H,0C2H,080H,000H,000H
DB 0FFH,07FH,000H,002H,00CH,018H,070H,020H

;欢   CBBB6
DB 000H,034H,0C4H,004H,0C4H,0FCH,03EH,024H
DB 000H,040H,038H,00FH,007H,03CH,098H,060H
DB 018H,00EH,0EFH,0CAH,048H,038H,01CH,008H
DB 030H,01CH,00FH,007H,01CH,070H,0E0H,040H

;迎   CD3AD
DB 000H,040H,046H,0DCH,0E8H,040H,0FEH,0FCH
DB 000H,040H,0E0H,03FH,01FH,032H,067H,0C3H
DB 006H,003H,0FDH,0FCH,004H,0FCH,0FEH,004H
DB 0C2H,0C1H,0FFH,0DFH,0C2H,0C7H,0C3H,040H

;使   CCAB9

⌨️ 快捷键说明

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