lcddrive.txt

来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 1,540 行 · 第 1/5 页

TXT
1,540
字号
00003a  9016              STR      r0,[sp,#0x58]
00003c  a808              ADD      r0,sp,#0x20
00003e  f7fffffe          BL       FSMC_NORSRAMInit
;;;838    
;;;839      /* BANK 4 (of NOR/SRAM Bank 1~4) is enabled */
;;;840      FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
000042  2101              MOVS     r1,#1
000044  2006              MOVS     r0,#6
000046  f7fffffe          BL       FSMC_NORSRAMCmd
;;;841    }
00004a  b017              ADD      sp,sp,#0x5c
00004c  bd00              POP      {pc}
;;;842    
                          ENDP


                          AREA ||i.LCD_PowerOn||, CODE, READONLY, ALIGN=1

                  LCD_PowerOn PROC
;;;676    *******************************************************************************/
;;;677    void LCD_PowerOn(void)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;678    {
000004  2019              MOVS     r0,#0x19
000006  f04f44d8          MOV      r4,#0x6c000000
00000a  8020              STRH     r0,[r4,#0]
00000c  2049              MOVS     r0,#0x49
00000e  8060              STRH     r0,[r4,#2]
000010  2093              MOVS     r0,#0x93
000012  8020              STRH     r0,[r4,#0]
000014  200a              MOVS     r0,#0xa
000016  8060              STRH     r0,[r4,#2]
;;;679    // Power Supply Setting
;;;680    	LCD_WriteReg(0x19,0x49);//********
;;;681    	LCD_WriteReg(0x93,0x0a);//*******
;;;682    
;;;683    	Delay(1);
000018  2001              MOVS     r0,#1
00001a  f7fffffe          BL       Delay
00001e  2020              MOVS     r0,#0x20
000020  8020              STRH     r0,[r4,#0]
000022  2040              MOVS     r0,#0x40
000024  8060              STRH     r0,[r4,#2]
000026  201d              MOVS     r0,#0x1d
000028  8020              STRH     r0,[r4,#0]
00002a  2007              MOVS     r0,#7
00002c  8060              STRH     r0,[r4,#2]
00002e  201e              MOVS     r0,#0x1e
000030  8020              STRH     r0,[r4,#0]
000032  2600              MOVS     r6,#0
000034  8066              STRH     r6,[r4,#2]
000036  201f              MOVS     r0,#0x1f
000038  8020              STRH     r0,[r4,#0]
00003a  2704              MOVS     r7,#4
00003c  8067              STRH     r7,[r4,#2]
00003e  2044              MOVS     r0,#0x44
000040  8020              STRH     r0,[r4,#0]
000042  204d              MOVS     r0,#0x4d
000044  8060              STRH     r0,[r4,#2]
000046  2045              MOVS     r0,#0x45
000048  8020              STRH     r0,[r4,#0]
00004a  2011              MOVS     r0,#0x11
00004c  8060              STRH     r0,[r4,#2]
;;;684    
;;;685    	LCD_WriteReg(0x20,0x40);
;;;686    	LCD_WriteReg(0x1d,0x07);
;;;687    	LCD_WriteReg(0x1e,0x00);
;;;688    	LCD_WriteReg(0x1f,0x04);
;;;689    
;;;690    	// VCOM Setting for CMO 3.2” Panel
;;;691     	LCD_WriteReg(0x44,0x4d);//4d***************4f
;;;692        LCD_WriteReg(0x45,0x11);
;;;693        Delay(1);
00004e  2001              MOVS     r0,#1
000050  f7fffffe          BL       Delay
000054  201c              MOVS     r0,#0x1c
000056  8020              STRH     r0,[r4,#0]
000058  8067              STRH     r7,[r4,#2]
;;;694        LCD_WriteReg(0x1c,0x04);
;;;695        Delay(2);
00005a  2002              MOVS     r0,#2
00005c  f7fffffe          BL       Delay
000060  2043              MOVS     r0,#0x43
000062  8020              STRH     r0,[r4,#0]
000064  2080              MOVS     r0,#0x80
000066  8060              STRH     r0,[r4,#2]
;;;696        LCD_WriteReg(0x43,0x80);
;;;697        Delay(5);
000068  2005              MOVS     r0,#5
00006a  f7fffffe          BL       Delay
00006e  251b              MOVS     r5,#0x1b
000070  8025              STRH     r5,[r4,#0]
000072  2008              MOVS     r0,#8
000074  8060              STRH     r0,[r4,#2]
;;;698        LCD_WriteReg(0x1b,0x08);
;;;699        Delay(4);
000076  2004              MOVS     r0,#4
000078  f7fffffe          BL       Delay
00007c  8025              STRH     r5,[r4,#0]
00007e  2010              MOVS     r0,#0x10
000080  8060              STRH     r0,[r4,#2]
;;;700        LCD_WriteReg(0x1b,0x10);
;;;701        Delay(4);
000082  2004              MOVS     r0,#4
000084  f7fffffe          BL       Delay
000088  2090              MOVS     r0,#0x90
00008a  8020              STRH     r0,[r4,#0]
00008c  207f              MOVS     r0,#0x7f
00008e  8060              STRH     r0,[r4,#2]
000090  2526              MOVS     r5,#0x26
000092  8025              STRH     r5,[r4,#0]
000094  8067              STRH     r7,[r4,#2]
;;;702    
;;;703        // Display ON Setting
;;;704    	LCD_WriteReg(0x90,0x7f);
;;;705        LCD_WriteReg(0x26,0x04);
;;;706        Delay(4);
000096  2004              MOVS     r0,#4
000098  f7fffffe          BL       Delay
00009c  8025              STRH     r5,[r4,#0]
00009e  2024              MOVS     r0,#0x24
0000a0  8060              STRH     r0,[r4,#2]
0000a2  8025              STRH     r5,[r4,#0]
0000a4  202c              MOVS     r0,#0x2c
0000a6  8060              STRH     r0,[r4,#2]
;;;707        LCD_WriteReg(0x26,0x24);
;;;708        LCD_WriteReg(0x26,0x2c);
;;;709        Delay(4);
0000a8  2004              MOVS     r0,#4
0000aa  f7fffffe          BL       Delay
0000ae  8025              STRH     r5,[r4,#0]
0000b0  203c              MOVS     r0,#0x3c
0000b2  8060              STRH     r0,[r4,#2]
0000b4  2057              MOVS     r0,#0x57
0000b6  8020              STRH     r0,[r4,#0]
0000b8  2102              MOVS     r1,#2
0000ba  8061              STRH     r1,[r4,#2]
0000bc  2155              MOVS     r1,#0x55
0000be  8021              STRH     r1,[r4,#0]
0000c0  8066              STRH     r6,[r4,#2]
0000c2  8020              STRH     r0,[r4,#0]
0000c4  8066              STRH     r6,[r4,#2]
;;;710        LCD_WriteReg(0x26,0x3c);
;;;711    
;;;712        // Set internal VDDD voltage
;;;713    	LCD_WriteReg(0x57,0x02);
;;;714        LCD_WriteReg(0x55,0x00);
;;;715        LCD_WriteReg(0x57,0x00);
;;;716    }
0000c6  e8bd81f0          POP      {r4-r8,pc}
;;;717    
                          ENDP


                          AREA ||i.LCD_ReadRAM||, CODE, READONLY, ALIGN=1

                  LCD_ReadRAM PROC
;;;661    *******************************************************************************/
;;;662    u16 LCD_ReadRAM(void)
000000  2122              MOVS     r1,#0x22
;;;663    {
;;;664      /* Write 16-bit Index (then Read Reg) */
;;;665      LCD->LCD_REG = R34; /* Select GRAM Reg */
000002  f04f40d8          MOV      r0,#0x6c000000
000006  8001              STRH     r1,[r0,#0]
;;;666      /* Read 16-bit Reg */
;;;667      return LCD->LCD_RAM;
000008  8840              LDRH     r0,[r0,#2]
;;;668    }
00000a  4770              BX       lr
;;;669    
                          ENDP


                          AREA ||i.LCD_ReadReg||, CODE, READONLY, ALIGN=1

                  LCD_ReadReg PROC
;;;621    *******************************************************************************/
;;;622    u16 LCD_ReadReg(u8 LCD_Reg)
000000  f04f41d8          MOV      r1,#0x6c000000
;;;623    {
;;;624      /* Write 16-bit Index (then Read Reg) */
;;;625      LCD->LCD_REG = LCD_Reg;
000004  8008              STRH     r0,[r1,#0]
;;;626      /* Read 16-bit Reg */
;;;627      return (LCD->LCD_RAM);
000006  8848              LDRH     r0,[r1,#2]
;;;628    }
000008  4770              BX       lr
;;;629    
                          ENDP


                          AREA ||i.LCD_SetBackColor||, CODE, READONLY, ALIGN=2

                  LCD_SetBackColor PROC
;;;170    *******************************************************************************/
;;;171    void LCD_SetBackColor(vu16 Color)
000000  4901              LDR      r1,|L18.8|
;;;172    {
;;;173      BackColor = Color;
000002  8048              STRH     r0,[r1,#2]
;;;174    }
000004  4770              BX       lr
;;;175    
                          ENDP

000006  0000              DCW      0x0000
                  |L18.8|
                          DCD      ||.data||

                          AREA ||i.LCD_SetCursor||, CODE, READONLY, ALIGN=1

                  LCD_SetCursor PROC
;;;232    
;;;233    void LCD_SetCursor(u16 Xpos, u16 Ypos)
000000  b510              PUSH     {r4,lr}
;;;234    {
;;;235       //Xpos=239-Xpos;
;;;236       LCD_WriteReg(0x06,(Ypos&0xff00)>>8);
000002  0a0b              LSRS     r3,r1,#8
000004  2406              MOVS     r4,#6
000006  f04f42d8          MOV      r2,#0x6c000000
00000a  8014              STRH     r4,[r2,#0]
00000c  8053              STRH     r3,[r2,#2]
00000e  2307              MOVS     r3,#7
;;;237       LCD_WriteReg(0x07,Ypos&0x00ff);
000010  b2c9              UXTB     r1,r1
000012  8013              STRH     r3,[r2,#0]
000014  8051              STRH     r1,[r2,#2]
;;;238      
;;;239       LCD_WriteReg(0x02,(Xpos&0xff00)>>8);
000016  0a01              LSRS     r1,r0,#8
000018  2302              MOVS     r3,#2
00001a  8013              STRH     r3,[r2,#0]
00001c  8051              STRH     r1,[r2,#2]
00001e  2103              MOVS     r1,#3
;;;240       LCD_WriteReg(0x03,(Xpos)&0x00ff);  
000020  b2c0              UXTB     r0,r0
000022  8011              STRH     r1,[r2,#0]
000024  8050              STRH     r0,[r2,#2]
;;;241     /* LCD_WriteReg(R32, Xpos);
;;;242      LCD_WriteReg(R33, Ypos); */ 
;;;243    }			 
000026  bd10              POP      {r4,pc}
;;;244    
                          ENDP


                          AREA ||i.LCD_SetDisplayWindow||, CODE, READONLY, ALIGN=1

                  LCD_SetDisplayWindow PROC
;;;340    *******************************************************************************/
;;;341    void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;342    {
;;;343       /* Horizontal GRAM Start Address */
;;;344      u16 Yaddress=0,Xaddress=0;
;;;345      Xaddress=239-Xpos;
000004  f1c000ef          RSB      r0,r0,#0xef
;;;346      Yaddress=319-Ypos;
000008  f2a1113f          SUB      r1,r1,#0x13f
00000c  b280              UXTH     r0,r0                 ;345
00000e  4249              RSBS     r1,r1,#0
000010  4698              MOV      r8,r3                 ;342
;;;347    
;;;348      if(Xaddress + Height < 240)
000012  1884              ADDS     r4,r0,r2
000014  2506              MOVS     r5,#6
000016  2607              MOVS     r6,#7
000018  2708              MOVS     r7,#8
00001a  b289              UXTH     r1,r1                 ;346
00001c  f04f0c09          MOV      r12,#9                ;346
000020  f04f0e00          MOV      lr,#0                 ;344
000024  f04f43d8          MOV      r3,#0x6c000000        ;344
000028  2cf0              CMP      r4,#0xf0
00002a  d20f              BCS      |L20.76|
;;;349      {
;;;350    	 LCD_WriteReg(0x06,((Xaddress)&0xff00)>>8);
00002c  0a02              LSRS     r2,r0,#8
00002e  801d              STRH     r5,[r3,#0]
000030  805a              STRH     r2,[r3,#2]
;;;351    	 LCD_WriteReg(0x07,(Xaddress)&0x00ff);
000032  b2c0              UXTB     r0,r0
000034  801e              STRH     r6,[r3,#0]
000036  8058              STRH     r0,[r3,#2]
;;;352    	  LCD_WriteReg(0x08,((Xaddress+Height-1)&0xff00)>>8);
000038  1e64              SUBS     r4,r4,#1
00003a  f3c42007          UBFX     r0,r4,#8,#8
00003e  801f              STRH     r7,[r3,#0]
000040  8058              STRH     r0,[r3,#2]
;;;353      LCD_WriteReg(0x09,(Xaddress+Height-1)&0x00ff);	
000042  b2e0              UXTB     r0,r4
000044  f8a3c000          STRH     r12,[r3,#0]
000048  8058              STRH     r0,[r3,#2]
00004a  e00b              B        |L20.100|
                  |L20.76|
00004c  801d              STRH     r5,[r3,#0]
00004e  f8a3e002          STRH     lr,[r3,#2]
000052  801e              STRH     r6,[r3,#0]
000054  f8a3e002          STRH     lr,[r3,#2]
000058  801f              STRH     r7,[r3,#0]
00005a  f8a3e002          STRH     lr,[r3,#2]
00005e  f8a3c000          STRH     r12,[r3,#0]
000062  805a              STRH     r2,[r3,#2]
                  |L20.100|
;;;354      }
;;;355      else

⌨️ 快捷键说明

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