lcddrive.txt

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

TXT
1,540
字号
;;;356      {
;;;357       LCD_WriteReg(0x06,0x00);
;;;358       LCD_WriteReg(0x07,0x00);
;;;359       LCD_WriteReg(0x08,(Height&0xff00)>>8);
;;;360      LCD_WriteReg(0x09,Height&0x00ff);
;;;361       }
;;;362       	 /* Horizontal GRAM End Address */
;;;363      
;;;364      /* Vertical GRAM Start Address */
;;;365      if(Yaddress + Width < 320 )
000064  eb010008          ADD      r0,r1,r8
000068  2402              MOVS     r4,#2
00006a  2203              MOVS     r2,#3
00006c  f5b07fa0          CMP      r0,#0x140
000070  d206              BCS      |L20.128|
;;;366     //	if(Yaddress >= Width  )
;;;367      {
;;;368       LCD_WriteReg(0x02, (Yaddress&0xff00)>>8);
000072  0a0d              LSRS     r5,r1,#8
000074  801c              STRH     r4,[r3,#0]
000076  805d              STRH     r5,[r3,#2]
;;;369      // LCD_WriteReg(0x02, ((Yaddress-Width+1)&0xff00)>>8);
;;;370      //  LCD_WriteReg(0x03, ((Yaddress-Width+1)&0x00ff));
;;;371       LCD_WriteReg(0x03, Yaddress&0x00ff);
000078  b2c9              UXTB     r1,r1
00007a  801a              STRH     r2,[r3,#0]
00007c  8059              STRH     r1,[r3,#2]
00007e  e005              B        |L20.140|
                  |L20.128|
000080  801c              STRH     r4,[r3,#0]
000082  f8a3e002          STRH     lr,[r3,#2]
000086  801a              STRH     r2,[r3,#0]
000088  f8a3e002          STRH     lr,[r3,#2]
                  |L20.140|
;;;372      }  
;;;373      else
;;;374      {
;;;375       LCD_WriteReg(0x02, 0x00);
;;;376       LCD_WriteReg(0x03, 0x00);
;;;377      }
;;;378      /* Vertical GRAM End Address */
;;;379       LCD_WriteReg(0x04, ((Yaddress+Width-1) &0xff00)>>8);
00008c  1e40              SUBS     r0,r0,#1
00008e  2204              MOVS     r2,#4
000090  f3c02107          UBFX     r1,r0,#8,#8
000094  801a              STRH     r2,[r3,#0]
000096  8059              STRH     r1,[r3,#2]
000098  2105              MOVS     r1,#5
;;;380       LCD_WriteReg(0x05, (Yaddress +Width -1)&0x00ff);
00009a  b2c0              UXTB     r0,r0
00009c  8019              STRH     r1,[r3,#0]
00009e  8058              STRH     r0,[r3,#2]
;;;381    }
0000a0  e8bd81f0          POP      {r4-r8,pc}
;;;382    
                          ENDP


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

                  LCD_SetTextColor PROC
;;;157    *******************************************************************************/
;;;158    void LCD_SetTextColor(vu16 Color)
000000  4901              LDR      r1,|L21.8|
;;;159    {
;;;160      TextColor = Color;
000002  8008              STRH     r0,[r1,#0]
;;;161    }
000004  4770              BX       lr
;;;162    
                          ENDP

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

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

                  LCD_WindowModeDisable PROC
;;;389    *******************************************************************************/
;;;390    void LCD_WindowModeDisable(void)
000000  2102              MOVS     r1,#2
000002  f04f40d8          MOV      r0,#0x6c000000
000006  8001              STRH     r1,[r0,#0]
000008  2100              MOVS     r1,#0
00000a  8041              STRH     r1,[r0,#2]
00000c  2203              MOVS     r2,#3
00000e  8002              STRH     r2,[r0,#0]
000010  8041              STRH     r1,[r0,#2]
000012  2204              MOVS     r2,#4
000014  8002              STRH     r2,[r0,#0]
000016  2201              MOVS     r2,#1
000018  8042              STRH     r2,[r0,#2]
00001a  2205              MOVS     r2,#5
00001c  8002              STRH     r2,[r0,#0]
00001e  223f              MOVS     r2,#0x3f
000020  8042              STRH     r2,[r0,#2]
000022  2206              MOVS     r2,#6
000024  8002              STRH     r2,[r0,#0]
000026  8041              STRH     r1,[r0,#2]
000028  2207              MOVS     r2,#7
00002a  8002              STRH     r2,[r0,#0]
00002c  8041              STRH     r1,[r0,#2]
00002e  2208              MOVS     r2,#8
000030  8002              STRH     r2,[r0,#0]
000032  8041              STRH     r1,[r0,#2]
000034  2109              MOVS     r1,#9
000036  8001              STRH     r1,[r0,#0]
000038  21ef              MOVS     r1,#0xef
00003a  8041              STRH     r1,[r0,#2]
00003c  2116              MOVS     r1,#0x16
00003e  8001              STRH     r1,[r0,#0]
000040  2168              MOVS     r1,#0x68
000042  8041              STRH     r1,[r0,#2]
;;;391    { 
;;;392       	 LCD_WriteReg(0x02,0x00);
;;;393    	 LCD_WriteReg(0x03,0x00);
;;;394    	 LCD_WriteReg(0x04,0x01);
;;;395    	 LCD_WriteReg(0x05,0x3f);
;;;396    	 LCD_WriteReg(0x06,0x00);
;;;397    	 LCD_WriteReg(0x07,0x00);
;;;398    	 LCD_WriteReg(0x08,0x00); 
;;;399    	 LCD_WriteReg(0x09,0xef);
;;;400    	 LCD_WriteReg(0x16,0x68);
;;;401        
;;;402    }
000044  4770              BX       lr
;;;403    /*******************************************************************************
                          ENDP


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

                  LCD_WriteBMP PROC
;;;563    *******************************************************************************/
;;;564    void LCD_WriteBMP(u32 BmpAddress)
000000  b410              PUSH     {r4}
;;;565    {
;;;566      u32 index = 0, size = 0;
;;;567    
;;;568      /* Read bitmap size */
;;;569      size = *(vu16 *) (BmpAddress + 2);
000002  8842              LDRH     r2,[r0,#2]
;;;570      size |= (*(vu16 *) (BmpAddress + 4)) << 16;
000004  8884              LDRH     r4,[r0,#4]
;;;571    
;;;572      /* Get bitmap data address offset */
;;;573      index = *(vu16 *) (BmpAddress + 10);
000006  8941              LDRH     r1,[r0,#0xa]
;;;574      index |= (*(vu16 *) (BmpAddress + 12)) << 16;
000008  8983              LDRH     r3,[r0,#0xc]
00000a  ea424204          ORR      r2,r2,r4,LSL #16      ;570
00000e  ea414103          ORR      r1,r1,r3,LSL #16
;;;575    
;;;576      size = (size - index)/2;
000012  1a52              SUBS     r2,r2,r1
000014  0853              LSRS     r3,r2,#1
;;;577    
;;;578      BmpAddress +=  index;
000016  4408              ADD      r0,r0,r1
000018  2116              MOVS     r1,#0x16
00001a  f04f44d8          MOV      r4,#0x6c000000
00001e  8021              STRH     r1,[r4,#0]
000020  2128              MOVS     r1,#0x28
000022  8061              STRH     r1,[r4,#2]
000024  2122              MOVS     r1,#0x22
000026  8021              STRH     r1,[r4,#0]
;;;579    
;;;580      /* Set GRAM write direction and BGR = 1 */
;;;581      /* I/D=00 (Horizontal : decrement, Vertical : decrement) */
;;;582      /* AM=1 (address is updated in vertical writing direction) */
;;;583      LCD_WriteReg(0x16, 0x28);
;;;584     
;;;585      LCD_WriteRAM_Prepare();
;;;586     
;;;587      for(index = 0; index < size; index++)
000028  2100              MOVS     r1,#0
00002a  e003              B        |L23.52|
                  |L23.44|
;;;588      {
;;;589        LCD_WriteRAM(*(vu16 *)BmpAddress);
00002c  f8302b02          LDRH     r2,[r0],#2
000030  8062              STRH     r2,[r4,#2]
000032  1c49              ADDS     r1,r1,#1              ;587
                  |L23.52|
000034  4299              CMP      r1,r3                 ;587
000036  d3f9              BCC      |L23.44|
;;;590        BmpAddress += 2;
;;;591      }
;;;592     
;;;593      /* Set GRAM write direction and BGR = 1 */
;;;594      /* I/D = 01 (Horizontal : increment, Vertical : decrement) */
;;;595      /* AM = 1 (address is updated in vertical writing direction) */
;;;596      LCD_WindowModeDisable();
000038  bc10              POP      {r4}
00003a  f7ffbffe          B.W      LCD_WindowModeDisable
;;;597    }
;;;598    
                          ENDP


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

                  LCD_WriteRAM PROC
;;;648    *******************************************************************************/
;;;649    void LCD_WriteRAM(u16 RGB_Code)					 
000000  f04f41d8          MOV      r1,#0x6c000000
;;;650    {
;;;651      /* Write 16-bit GRAM Reg */
;;;652      LCD->LCD_RAM = RGB_Code;
000004  8048              STRH     r0,[r1,#2]
;;;653    }
000006  4770              BX       lr
;;;654    
                          ENDP


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

                  LCD_WriteRAM_Prepare PROC
;;;636    *******************************************************************************/
;;;637    void LCD_WriteRAM_Prepare(void)
000000  2022              MOVS     r0,#0x22
;;;638    {
;;;639      LCD->LCD_REG = R34;
000002  f04f41d8          MOV      r1,#0x6c000000
000006  8008              STRH     r0,[r1,#0]
;;;640    }
000008  4770              BX       lr
;;;641    
                          ENDP


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

                  LCD_WriteReg PROC
;;;606    *******************************************************************************/
;;;607    void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
000000  f04f42d8          MOV      r2,#0x6c000000
;;;608    {
;;;609      /* Write 16-bit Index, then Write Reg */
;;;610      LCD->LCD_REG = LCD_Reg;
000004  8010              STRH     r0,[r2,#0]
;;;611      /* Write 16-bit Reg */
;;;612      LCD->LCD_RAM = LCD_RegValue;
000006  8051              STRH     r1,[r2,#2]
;;;613    }
000008  4770              BX       lr
;;;614    
                          ENDP


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

                  STM3210E_LCD_Init PROC
;;;48     *******************************************************************************/
;;;49     void STM3210E_LCD_Init(void)
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;50     { 
;;;51     /* Configure the LCD Control pins --------------------------------------------*/
;;;52       LCD_CtrlLinesConfig();
000004  f7fffffe          BL       LCD_CtrlLinesConfig
;;;53     
;;;54     /* Configure the FSMC Parallel interface -------------------------------------*/
;;;55       LCD_FSMCConfig();
000008  f7fffffe          BL       LCD_FSMCConfig
;;;56     
;;;57       Delay(5); /* delay 50 ms */
00000c  2005              MOVS     r0,#5
00000e  f7fffffe          BL       Delay
000012  2046              MOVS     r0,#0x46
000014  f04f44d8          MOV      r4,#0x6c000000
000018  8020              STRH     r0,[r4,#0]
00001a  2094              MOVS     r0,#0x94
00001c  8060              STRH     r0,[r4,#2]
00001e  2047              MOVS     r0,#0x47
000020  8020              STRH     r0,[r4,#0]
000022  2041              MOVS     r0,#0x41
000024  8060              STRH     r0,[r4,#2]
000026  2048              MOVS     r0,#0x48
000028  8020              STRH     r0,[r4,#0]
00002a  2500              MOVS     r5,#0
00002c  8065              STRH     r5,[r4,#2]
00002e  2049              MOVS     r0,#0x49
000030  8020              STRH     r0,[r4,#0]
000032  2033              MOVS     r0,#0x33
000034  8060              STRH     r0,[r4,#2]
000036  204a              MOVS     r0,#0x4a
000038  8020              STRH     r0,[r4,#0]
00003a  2023              MOVS     r0,#0x23
00003c  8060              STRH     r0,[r4,#2]
00003e  204b              MOVS     r0,#0x4b
000040  8020              STRH     r0,[r4,#0]
000042  2045              MOVS     r0,#0x45
000044  8060              STRH     r0,[r4,#2]
000046  204c              MOVS     r0,#0x4c
000048  8020              STRH     r0,[r4,#0]
00004a  f04f0b44          MOV      r11,#0x44
00004e  f8a4b002          STRH     r11,[r4,#2]
000052  204d              MOVS     r0,#0x4d
000054  8020              STRH     r0,[r4,#0]
000056  2077              MOVS     r0,#0x77
000058  8060              STRH     r0,[r4,#2]
00005a  204e              MOVS     r0,#0x4e
00005c  8020              STRH     r0,[r4,#0]
00005e  2012              MOVS     r0,#0x12
000060  8060              STRH     r0,[r4,#2]
00

⌨️ 快捷键说明

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