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 + -
显示快捷键?