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

📄 12864.lis

📁 这是个lcd液晶显示屏12864的典型驱动程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00B2                   .dbline 122
 00B2           ; }
 00B2           ; //开关显示
 00B2           ; void SetOnOff(unsigned char onoff)
 00B2           ; {
 00B2                   .dbline 123
 00B2           ; onoff=0x3e | onoff; //0011 111x
 00B2 4E63              ori R20,62
 00B4                   .dbline 124
 00B4           ; SendCommandToLCD(onoff);
 00B4 042F              mov R16,R20
 00B6 CDDF              xcall _SendCommandToLCD
 00B8                   .dbline -2
 00B8           L12:
 00B8 0E940000          xcall pop_gset1
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbsym r onoff 20 c
 00BE                   .dbend
 00BE                   .dbfunc e Clr_Scr _Clr_Scr fV
 00BE           ;              k -> R20
 00BE           ;              j -> R22
                        .even
 00BE           _Clr_Scr::
 00BE 0E940000          xcall push_gset2
 00C2                   .dbline -1
 00C2                   .dbline 129
 00C2           ; }
 00C2           ; 
 00C2           ; /*------------------清除内存---------------*/
 00C2           ; void Clr_Scr()
 00C2           ; {
 00C2                   .dbline 131
 00C2           ;       unsigned char j,k;
 00C2           ;       PORTB|=0x18;       //CSA=1,CSB=1
 00C2 88B3              in R24,0x18
 00C4 8861              ori R24,24
 00C6 88BB              out 0x18,R24
 00C8                   .dbline 132
 00C8           ;       SetLine(0);
 00C8 0027              clr R16
 00CA D2DF              xcall _SetLine
 00CC                   .dbline 133
 00CC           ;       SetColumn(0);
 00CC 0027              clr R16
 00CE DADF              xcall _SetColumn
 00D0                   .dbline 134
 00D0           ;       for(k=0;k<8;k++)
 00D0 4427              clr R20
 00D2 0AC0              xjmp L17
 00D4           L14:
 00D4                   .dbline 135
 00D4           ;       {
 00D4                   .dbline 136
 00D4           ;               SetLine(k);       //第K页
 00D4 042F              mov R16,R20
 00D6 CCDF              xcall _SetLine
 00D8                   .dbline 137
 00D8           ;               for(j=0;j<64;j++)
 00D8 6627              clr R22
 00DA 03C0              xjmp L21
 00DC           L18:
 00DC                   .dbline 138
 00DC 0027              clr R16
 00DE ABDF              xcall _WriteByte
 00E0           L19:
 00E0                   .dbline 137
 00E0 6395              inc R22
 00E2           L21:
 00E2                   .dbline 137
 00E2 6034              cpi R22,64
 00E4 D8F3              brlo L18
 00E6                   .dbline 139
 00E6           L15:
 00E6                   .dbline 134
 00E6 4395              inc R20
 00E8           L17:
 00E8                   .dbline 134
 00E8 4830              cpi R20,8
 00EA A0F3              brlo L14
 00EC                   .dbline -2
 00EC           L13:
 00EC 0E940000          xcall pop_gset2
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r k 20 c
 00F2                   .dbsym r j 22 c
 00F2                   .dbend
 00F2                   .dbfunc e init_lcd _init_lcd fV
                        .even
 00F2           _init_lcd::
 00F2                   .dbline -1
 00F2                   .dbline 144
 00F2           ;       WriteByte(0x00);
 00F2           ;       }
 00F2           ; }
 00F2           ; 
 00F2           ; /*------------------初始化LCD屏--------------------------*/
 00F2           ; void init_lcd()
 00F2           ; {
 00F2                   .dbline 145
 00F2           ;       CLRBIT(PORTB,RST);
 00F2 C598              cbi 0x18,5
 00F4                   .dbline 146
 00F4           ;       SETBIT(PORTB,RST);
 00F4 C59A              sbi 0x18,5
 00F6                   .dbline 147
 00F6           ;       PORTB|=0x18;          //CSA=1,CSB=1
 00F6 88B3              in R24,0x18
 00F8 8861              ori R24,24
 00FA 88BB              out 0x18,R24
 00FC                   .dbline 148
 00FC           ;       SetOnOff(0x3e);    //关显示
 00FC 0EE3              ldi R16,62
 00FE D6DF              xcall _SetOnOff
 0100                   .dbline 149
 0100           ;       SetLine(0x00);             // 设定页
 0100 0027              clr R16
 0102 B6DF              xcall _SetLine
 0104                   .dbline 150
 0104           ;       SetStartLine(0x00);
 0104 0027              clr R16
 0106 C8DF              xcall _SetStartLine
 0108                   .dbline 151
 0108           ;       SetColumn(0x00);
 0108 0027              clr R16
 010A BCDF              xcall _SetColumn
 010C                   .dbline 152
 010C           ;       SetOnOff(0x3f);       //开显示
 010C 0FE3              ldi R16,63
 010E CEDF              xcall _SetOnOff
 0110                   .dbline -2
 0110           L22:
 0110                   .dbline 0 ; func end
 0110 0895              ret
 0112                   .dbend
 0112                   .dbfunc e word_disp _word_disp fV
 0112           ;              k -> R20
 0112           ;              j -> R22
 0112           ;              i -> R10
 0112           ;            hzk -> R12,R13
 0112           ;            row -> R14
 0112           ;            pag -> y+10
                        .even
 0112           _word_disp::
 0112 0E940000          xcall push_arg4
 0116 0E940000          xcall push_gset5
 011A E22E              mov R14,R18
 011C CE84              ldd R12,y+14
 011E DF84              ldd R13,y+15
 0120                   .dbline -1
 0120                   .dbline 160
 0120           ; }
 0120           ; /*----------------------------------------------------------------------
 0120           ; 说明:12864液晶横放,汉字按正常方式显示,pag:0~7(从上到下);
 0120           ;         row:0~7(从左到右,水平行,一行可显示8个汉字)
 0120           ; 功能:指定位置显示汉字16*16
 0120           ; ------------------------------------------------------------------------*/
 0120           ; void word_disp(unsigned char pag,unsigned char row, unsigned flash char *hzk)
 0120           ; {
 0120                   .dbline 161
 0120           ;       unsigned char j=0,i=0,k=0;
 0120 6627              clr R22
 0122                   .dbline 161
 0122 AA24              clr R10
 0124                   .dbline 161
 0124 4427              clr R20
 0126                   .dbline 162
 0126           ;       for(j=0;j<2;j++)
 0126 24C0              xjmp L27
 0128           L24:
 0128                   .dbline 163
 0128           ;       {
 0128                   .dbline 164
 0128           ;               if (row <4)
 0128 8E2D              mov R24,R14
 012A 8430              cpi R24,4
 012C 20F4              brsh L28
 012E                   .dbline 165
 012E           ;               {
 012E                   .dbline 166
 012E           ;                       k=row;
 012E 482F              mov R20,R24
 0130                   .dbline 167
 0130           ;                       SETBIT(PORTB,CSA);      //CSA=1,CSB=0,select leftwindow
 0130 C39A              sbi 0x18,3
 0132                   .dbline 168
 0132           ;                       CLRBIT(PORTB,CSB);
 0132 C498              cbi 0x18,4
 0134                   .dbline 169
 0134           ;               }
 0134 04C0              xjmp L29
 0136           L28:
 0136                   .dbline 171
 0136           ;               else
 0136           ;               {
 0136                   .dbline 172
 0136           ;                       k = row-4;
 0136 4E2D              mov R20,R14
 0138 4450              subi R20,4
 013A                   .dbline 173
 013A           ;                       CLRBIT(PORTB,CSA);      //CSA=0,CSB=1,select rightwindow
 013A C398              cbi 0x18,3
 013C                   .dbline 174
 013C           ;                       SETBIT(PORTB,CSB);
 013C C49A              sbi 0x18,4
 013E                   .dbline 175
 013E           ;               }
 013E           L29:
 013E                   .dbline 176
 013E           ;               SetLine(pag+j);
 013E 0A85              ldd R16,y+10
 0140 060F              add R16,R22
 0142 96DF              xcall _SetLine
 0144                   .dbline 177
 0144           ;               SetColumn(k*16);
 0144 80E1              ldi R24,16
 0146 849F              mul R24,R20
 0148 002D              mov R16,R0
 014A 9CDF              xcall _SetColumn
 014C                   .dbline 178
 014C           ;               for(i=0;i<16;i++)
 014C AA24              clr R10
 014E 0CC0              xjmp L33
 0150           L30:
 0150                   .dbline 179
 0150                   .dbline 180
 0150 80E1              ldi R24,16
 0152 869F              mul R24,R22
 0154 F001              movw R30,R0
 0156 2A2C              mov R2,R10
 0158 3324              clr R3
 015A E20D              add R30,R2
 015C F31D              adc R31,R3
 015E EC0D              add R30,R12
 0160 FD1D              adc R31,R13
 0162 0491              lpm R16,Z
 0164 68DF              xcall _WriteByte
 0166                   .dbline 181
 0166           L31:
 0166                   .dbline 178
 0166 A394              inc R10
 0168           L33:
 0168                   .dbline 178
 0168 8A2D              mov R24,R10
 016A 8031              cpi R24,16
 016C 88F3              brlo L30
 016E                   .dbline 182
 016E           L25:
 016E                   .dbline 162
 016E 6395              inc R22
 0170           L27:
 0170                   .dbline 162
 0170 6230              cpi R22,2
 0172 D0F2              brlo L24
 0174                   .dbline -2
 0174           L23:
 0174 0E940000          xcall pop_gset5
 0178 2496              adiw R28,4
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbsym r k 20 c
 017C                   .dbsym r j 22 c
 017C                   .dbsym r i 10 c
 017C                   .dbsym r hzk 12 pkc
 017C                   .dbsym r row 14 c
 017C                   .dbsym l pag 10 c
 017C                   .dbend
 017C                   .dbfunc e byte_disp _byte_disp fV
 017C           ;              k -> R20
 017C           ;              j -> R22
 017C           ;              i -> R10
 017C           ;          bytek -> R12,R13
 017C           ;            row -> R14
 017C           ;            pag -> y+10
                        .even
 017C           _byte_disp::
 017C 0E940000          xcall push_arg4
 0180 0E940000          xcall push_gset5
 0184 E22E              mov R14,R18
 0186 CE84              ldd R12,y+14
 0188 DF84              ldd R13,y+15
 018A                   .dbline -1
 018A                   .dbline 191
 018A           ;       {
 018A           ;               WriteByte(hzk[16*j+i]);
 018A           ;               }
 018A           ;       }
 018A           ; }
 018A           ; 
 018A           ; /*----------------------------------------------------------------------
 018A           ; 说明:12864液晶横放,字符按正常方式显示,pag:0~7(从上到下);
 018A           ;         row:0~15(从左到右,水平行,一行可显示16个字符)
 018A           ; 功能:指定位置显示字符8*16
 018A           ; ------------------------------------------------------------------------*/
 018A           ; void byte_disp(unsigned char pag, unsigned char row, unsigned flash char *bytek)
 018A           ; {
 018A                   .dbline 192
 018A           ;       unsigned char j=0,i=0,k=0;
 018A 6627              clr R22
 018C                   .dbline 192
 018C AA24              clr R10
 018E                   .dbline 192
 018E 4427              clr R20
 0190                   .dbline 193
 0190           ;       for(j=0;j<2;j++)
 0190 24C0              xjmp L38
 0192           L35:
 0192                   .dbline 194
 0192           ;       {
 0192                   .dbline 195
 0192           ;               if (row < 8)
 0192 8E2D              mov R24,R14
 0194 8830              cpi R24,8
 0196 20F4              brsh L39
 0198                   .dbline 196
 0198           ;               {
 0198                   .dbline 197
 0198           ;                       k=row;
 0198 482F              mov R20,R24
 019A                   .dbline 198
 019A           ;                       SETBIT(PORTB,CSA);      //CSA=1,CSB=0,select leftwindow
 019A C39A              sbi 0x18,3
 019C                   .dbline 199
 019C           ;                       CLRBIT(PORTB,CSB);
 019C C498              cbi 0x18,4
 019E                   .dbline 200
 019E           ;               }
 019E 04C0              xjmp L40
 01A0           L39:
 01A0                   .dbline 202
 01A0           ;               else
 01A0           ;               {
 01A0                   .dbline 203

⌨️ 快捷键说明

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