lcddrive.lis

来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 1,014 行 · 第 1/3 页

LIS
1,014
字号
 0104           ; 	else
 0104           ; 		clr_bit(LCD_SIO_PORT, LCD_SIO);
 0104 AA98              cbi 0x15,2
 0106           L38:
 0106           ; 	set_bit(LCD_SCL_PORT, LCD_SCL);
 0106 AB9A              sbi 0x15,3
 0108           ;       
 0108           ; //Bit 7(LSB)
 0108           ;       clr_bit(LCD_SCL_PORT, LCD_SCL);
 0108 AB98              cbi 0x15,3
 010A           ;       if(data & 0x01)
 010A 00FF              sbrs R16,0
 010C 02C0              rjmp L39
 010E           ;               set_bit(LCD_SIO_PORT, LCD_SIO);
 010E AA9A              sbi 0x15,2
 0110 01C0              xjmp L40
 0112           L39:
 0112           ; 	else
 0112           ; 		clr_bit(LCD_SIO_PORT, LCD_SIO);
 0112 AA98              cbi 0x15,2
 0114           L40:
 0114           ; 	set_bit(LCD_SCL_PORT, LCD_SCL);
 0114 AB9A              sbi 0x15,3
 0116           L24:
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118           ;              i -> R20
                        .even
 0118           _LCD_Init::
 0118 0E940000          xcall push_gset1
 011C           ; //done
 011C           ; }
 011C           ; 
 011C           ; void LCD_Init(void)
 011C           ; {
 011C           ;     INT8U i;
 011C           ; 
 011C           ;       set_bit(LCD_RST_PORT, LCD_RST);     //set RST = H
 011C A89A              sbi 0x15,0
 011E           ;       set_bit(LCD_RST_DDR,  LCD_RST);     //set RST.DDR = 1
 011E A09A              sbi 0x14,0
 0120           ;       
 0120           ;       set_bit(LCD_CS_PORT, LCD_CS);       //set CS = H
 0120 A99A              sbi 0x15,1
 0122           ;       set_bit(LCD_CS_DDR,  LCD_CS);       //set CS.DDR = 1
 0122 A19A              sbi 0x14,1
 0124           ;       
 0124           ;       clr_bit(LCD_SIO_PORT,LCD_SIO);      //set SDI = L
 0124 AA98              cbi 0x15,2
 0126           ;       clr_bit(LCD_SIO_DDR, LCD_SIO);      //set SDI.DDR = 0
 0126 A298              cbi 0x14,2
 0128           ;       
 0128           ;       set_bit(LCD_SCL_PORT,LCD_SCL);      //set SCK = H
 0128 AB9A              sbi 0x15,3
 012A           ;       set_bit(LCD_SCL_DDR, LCD_SCL);      //set SCK.DDR = 1
 012A A39A              sbi 0x14,3
 012C           ;       
 012C           ;       clr_bit(LCD_GND_PORT,LCD_GND);      //set GND = L
 012C AC98              cbi 0x15,4
 012E           ;       set_bit(LCD_GND_DDR, LCD_GND);      //set GND.DDR = 1
 012E A49A              sbi 0x14,4
 0130           ;       
 0130           ;       set_bit(LCD_VCC_PORT,LCD_VCC);      //set VCC = H
 0130 AD9A              sbi 0x15,5
 0132           ;       set_bit(LCD_VCC_DDR, LCD_VCC);      //set VCC.DDR = 1
 0132 A59A              sbi 0x14,5
 0134           ; 
 0134           ;       LCD_Reset();
 0134 70DF              xcall _LCD_Reset
 0136           ; 
 0136           ;       LCD_SendCommand(0x01);          //software reset
 0136 01E0              ldi R16,1
 0138 73DF              xcall _LCD_SendCommand
 013A           ;       LCD_DataOver();
 013A A99A              sbi 0x15,1
 013C           ;       LCD_Delay();
 013C 61DF              xcall _LCD_Delay
 013E           ; 
 013E           ;       LCD_SendCommand(0xc6);          //initial escape
 013E 06EC              ldi R16,198
 0140 6FDF              xcall _LCD_SendCommand
 0142           ;       LCD_DataOver();
 0142 A99A              sbi 0x15,1
 0144           ;       LCD_Delay();
 0144 5DDF              xcall _LCD_Delay
 0146           ; 
 0146           ;       LCD_SendCommand(0xb9);          //refresh set
 0146 09EB              ldi R16,185
 0148 6BDF              xcall _LCD_SendCommand
 014A           ;       LCD_SendData(0x00);
 014A 0027              clr R16
 014C A7DF              xcall _LCD_SendData
 014E           ;       LCD_DataOver();
 014E A99A              sbi 0x15,1
 0150           ;       LCD_Delay();
 0150 57DF              xcall _LCD_Delay
 0152           ; 
 0152           ;       LCD_SendCommand(0xb6);          //display control
 0152 06EB              ldi R16,182
 0154 65DF              xcall _LCD_SendCommand
 0156           ;       LCD_SendData(0x80);
 0156 00E8              ldi R16,128
 0158 A1DF              xcall _LCD_SendData
 015A           ;       LCD_SendData(0x80);
 015A 00E8              ldi R16,128
 015C 9FDF              xcall _LCD_SendData
 015E           ;       LCD_SendData(0x81);
 015E 01E8              ldi R16,129
 0160 9DDF              xcall _LCD_SendData
 0162           ;     LCD_SendData(0x7f);
 0162 0FE7              ldi R16,127
 0164 9BDF              xcall _LCD_SendData
 0166           ;     LCD_SendData(0x14);
 0166 04E1              ldi R16,20
 0168 99DF              xcall _LCD_SendData
 016A           ;       LCD_SendData(84);
 016A 04E5              ldi R16,84
 016C 97DF              xcall _LCD_SendData
 016E           ;       LCD_SendData(69);
 016E 05E4              ldi R16,69
 0170 95DF              xcall _LCD_SendData
 0172           ;       LCD_SendData(82);
 0172 02E5              ldi R16,82
 0174 93DF              xcall _LCD_SendData
 0176           ;       LCD_SendData(67);
 0176 03E4              ldi R16,67
 0178 91DF              xcall _LCD_SendData
 017A           ;       LCD_DataOver();
 017A A99A              sbi 0x15,1
 017C           ;       LCD_Delay();
 017C 41DF              xcall _LCD_Delay
 017E           ; 
 017E           ;       LCD_SendCommand(0xb3);          //gray scale position set
 017E 03EB              ldi R16,179
 0180 4FDF              xcall _LCD_SendCommand
 0182           ;       LCD_SendData(1);
 0182 01E0              ldi R16,1
 0184 8BDF              xcall _LCD_SendData
 0186           ;       LCD_SendData(2);
 0186 02E0              ldi R16,2
 0188 89DF              xcall _LCD_SendData
 018A           ;       LCD_SendData(4);
 018A 04E0              ldi R16,4
 018C 87DF              xcall _LCD_SendData
 018E           ;       LCD_SendData(8);
 018E 08E0              ldi R16,8
 0190 85DF              xcall _LCD_SendData
 0192           ;       LCD_SendData(16);
 0192 00E1              ldi R16,16
 0194 83DF              xcall _LCD_SendData
 0196           ;       LCD_SendData(30);
 0196 0EE1              ldi R16,30
 0198 81DF              xcall _LCD_SendData
 019A           ;       LCD_SendData(40);
 019A 08E2              ldi R16,40
 019C 7FDF              xcall _LCD_SendData
 019E           ;       LCD_SendData(50);
 019E 02E3              ldi R16,50
 01A0 7DDF              xcall _LCD_SendData
 01A2           ;       LCD_SendData(60);
 01A2 0CE3              ldi R16,60
 01A4 7BDF              xcall _LCD_SendData
 01A6           ;       LCD_SendData(70);
 01A6 06E4              ldi R16,70
 01A8 79DF              xcall _LCD_SendData
 01AA           ;       LCD_SendData(80);
 01AA 00E5              ldi R16,80
 01AC 77DF              xcall _LCD_SendData
 01AE           ;       LCD_SendData(90);
 01AE 0AE5              ldi R16,90
 01B0 75DF              xcall _LCD_SendData
 01B2           ;       LCD_SendData(100);
 01B2 04E6              ldi R16,100
 01B4 73DF              xcall _LCD_SendData
 01B6           ;       LCD_SendData(110);
 01B6 0EE6              ldi R16,110
 01B8 71DF              xcall _LCD_SendData
 01BA           ;       LCD_SendData(127);
 01BA 0FE7              ldi R16,127
 01BC 6FDF              xcall _LCD_SendData
 01BE           ;       LCD_DataOver();
 01BE A99A              sbi 0x15,1
 01C0           ;       LCD_Delay();
 01C0 1FDF              xcall _LCD_Delay
 01C2           ; 
 01C2           ;       LCD_SendCommand(0xb5);          //gamma curve set
 01C2 05EB              ldi R16,181
 01C4 2DDF              xcall _LCD_SendCommand
 01C6           ;       LCD_SendData(0x01);
 01C6 01E0              ldi R16,1
 01C8 69DF              xcall _LCD_SendData
 01CA           ;       LCD_DataOver();
 01CA A99A              sbi 0x15,1
 01CC           ;       LCD_Delay();
 01CC 19DF              xcall _LCD_Delay
 01CE           ;       
 01CE           ;       LCD_SendCommand(0x36);          //memery access control
 01CE 06E3              ldi R16,54
 01D0 27DF              xcall _LCD_SendCommand
 01D2           ;       LCD_SendData(0x00);
 01D2 0027              clr R16
 01D4 63DF              xcall _LCD_SendData
 01D6           ;       LCD_DataOver();
 01D6 A99A              sbi 0x15,1
 01D8           ;       LCD_Delay();
 01D8 13DF              xcall _LCD_Delay
 01DA           ; 
 01DA           ;       LCD_SendCommand(0xbd);          //common driver output select//很重要的
 01DA 0DEB              ldi R16,189
 01DC 21DF              xcall _LCD_SendCommand
 01DE           ;       LCD_SendData(0x04);
 01DE 04E0              ldi R16,4
 01E0 5DDF              xcall _LCD_SendData
 01E2           ;       LCD_DataOver();
 01E2 A99A              sbi 0x15,1
 01E4           ;       LCD_Delay();
 01E4 0DDF              xcall _LCD_Delay
 01E6           ; 
 01E6           ;       LCD_SendCommand(0xbe);          //power control
 01E6 0EEB              ldi R16,190
 01E8 1BDF              xcall _LCD_SendCommand
 01EA           ;       LCD_SendData(0x04);
 01EA 04E0              ldi R16,4
 01EC 57DF              xcall _LCD_SendData
 01EE           ;       LCD_DataOver();
 01EE A99A              sbi 0x15,1
 01F0           ;       LCD_Delay();
 01F0 07DF              xcall _LCD_Delay
 01F2           ; 
 01F2           ;       LCD_SendCommand(0x11);          //sleep out
 01F2 01E1              ldi R16,17
 01F4 15DF              xcall _LCD_SendCommand
 01F6           ;       LCD_DataOver();
 01F6 A99A              sbi 0x15,1
 01F8           ;       LCD_Delay();
 01F8 03DF              xcall _LCD_Delay
 01FA           ;       
 01FA           ;       LCD_SendCommand(0xba);          //voltage control
 01FA 0AEB              ldi R16,186
 01FC 11DF              xcall _LCD_SendCommand
 01FE           ;       LCD_SendData(127);
 01FE 0FE7              ldi R16,127
 0200 4DDF              xcall _LCD_SendData
 0202           ;       LCD_SendData(3);
 0202 03E0              ldi R16,3
 0204 4BDF              xcall _LCD_SendData
 0206           ;       LCD_DataOver();
 0206 A99A              sbi 0x15,1
 0208           ;       LCD_Delay();
 0208 FBDE              xcall _LCD_Delay
 020A           ; 
 020A           ;       LCD_SendCommand(0xb7);          //temperature gradient set
 020A 07EB              ldi R16,183
 020C 09DF              xcall _LCD_SendCommand
 020E           ;       for(i = 0; i < 14; i ++)
 020E 4427              clr R20
 0210 03C0              xjmp L45
 0212           L42:
 0212 0027              clr R16
 0214 43DF              xcall _LCD_SendData
 0216           L43:
 0216 4395              inc R20
 0218           L45:
 0218 4E30              cpi R20,14
 021A D8F3              brlo L42
 021C           ;               LCD_SendData(0x00);
 021C           ;       LCD_DataOver();
 021C A99A              sbi 0x15,1
 021E           ;       LCD_Delay();
 021E F0DE              xcall _LCD_Delay
 0220           ; 
 0220           ;       LCD_SendCommand(0x29);          //display ON
 0220 09E2              ldi R16,41
 0222 FEDE              xcall _LCD_SendCommand
 0224           ;       LCD_DataOver();
 0224 A99A              sbi 0x15,1
 0226           ;       LCD_Delay();
 0226 ECDE              xcall _LCD_Delay
 0228           ; 
 0228           ;       LCD_SendCommand(0x03);          //booster voltage ON
 0228 03E0              ldi R16,3
 022A FADE              xcall _LCD_SendCommand
 022C           ;       LCD_DataOver();
 022C A99A              sbi 0x15,1
 022E           ;       LCD_Delay();
 022E E8DE              xcall _LCD_Delay
 0230           ; 
 0230           ;       LCD_SendCommand(0x20);          //display inversion OFF
 0230 00E2              ldi R16,32
 0232 F6DE              xcall _LCD_SendCommand
 0234           ;       LCD_DataOver();
 0234 A99A              sbi 0x15,1
 0236           ;       LCD_Delay();
 0236 E4DE              xcall _LCD_Delay
 0238           ;       
 0238           ;       LCD_SendCommand(0x3a);          //interface pixel format
 0238 0AE3              ldi R16,58
 023A F2DE              xcall _LCD_SendCommand
 023C           ;       LCD_SendData(0x02);
 023C 02E0              ldi R16,2
 023E 2EDF              xcall _LCD_SendData
 0240           ;       LCD_DataOver();
 0240 A99A              sbi 0x15,1
 0242           ;       LCD_Delay();
 0242 DEDE              xcall _LCD_Delay
 0244           ;       
 0244           ;       LCD_SendCommand(0x2d);          //colour set
 0244 0DE2              ldi R16,45
 0246 ECDE              xcall _LCD_SendCommand
 0248           ; //red
 0248           ;       LCD_SendData(0x00);
 0248 0027              clr R16
 024A 28DF              xcall _LCD_SendData
 024C           ;       LCD_SendData(0x02);
 024C 02E0              ldi R16,2
 024E 26DF              xcall _LCD_SendData
 0250           ;       LCD_SendData(0x03);
 0250 03E0              ldi R16,3
 0252 24DF              xcall _LCD_SendData
 0254           ;       LCD_SendData(0x04);
 0254 04E0              ldi R16,4
 0256 22DF              xcall _LCD_SendData
 0258           ;       LCD_SendData(0x05);
 0258 05E0              ldi R16,5
 025A 20DF              xcall _LCD_SendData
 025C           ;       LCD_SendData(0x06);
 025C 06E0              ldi R16,6
 025E 1EDF              xcall _LCD_SendData
 0260           ;       LCD_SendData(0x08);
 0260 08E0              ldi R16,8
 0262 1CDF              xcall _LCD_SendData
 0264           ; //green
 0264           ;       LCD_SendData(0x0f);
 0264 0FE0              ldi R16,15
 0266 1ADF              xcall _LCD_SendData
 0268           ;       LCD_SendData(0x00);
 0268 0027              clr R16
 026A 18DF              xcall _LCD_SendData

⌨️ 快捷键说明

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