lcddrive.txt

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

TXT
1,540
字号
000038  2078              MOVS     r0,#0x78
00003a  f7fffffe          BL       LCD_DisplayStringLine
;;;855        LCD_DisplayStringLine(Line6, "                    ");
00003e  a120              ADR      r1,|L8.192|
000040  2090              MOVS     r0,#0x90
000042  f7fffffe          BL       LCD_DisplayStringLine
;;;856    	LCD_DisplayStringLine(Line7, "Chongqing U_EASYTECH");
000046  a13c              ADR      r1,|L8.312|
000048  20a8              MOVS     r0,#0xa8
00004a  f7fffffe          BL       LCD_DisplayStringLine
;;;857        LCD_DisplayStringLine(Line8, "electronic company .");
00004e  a140              ADR      r1,|L8.336|
000050  20c0              MOVS     r0,#0xc0
000052  f7fffffe          BL       LCD_DisplayStringLine
;;;858        LCD_DisplayStringLine(Line9, " www.u-easytech.com ");
000056  a144              ADR      r1,|L8.360|
000058  20d8              MOVS     r0,#0xd8
00005a  f7fffffe          BL       LCD_DisplayStringLine
00005e  f44f4078          MOV      r0,#0xf800
000062  8020              STRH     r0,[r4,#0]
;;;859        
;;;860        
;;;861       
;;;862    	LCD_SetTextColor(Red);
;;;863    	LCD_DrawCircle(119, 159, 100);
000064  2264              MOVS     r2,#0x64
000066  219f              MOVS     r1,#0x9f
000068  2077              MOVS     r0,#0x77
00006a  f7fffffe          BL       LCD_DrawCircle
00006e  f64f70e0          MOV      r0,#0xffe0
000072  8020              STRH     r0,[r4,#0]
;;;864    	LCD_SetTextColor(Yellow);
;;;865        LCD_DrawLine(19, 159, 100, 1);
000074  2301              MOVS     r3,#1
000076  2264              MOVS     r2,#0x64
000078  219f              MOVS     r1,#0x9f
00007a  2013              MOVS     r0,#0x13
00007c  f7fffffe          BL       LCD_DrawLine
;;;866    	LCD_DrawLine(119, 59, 100, 0);
000080  2300              MOVS     r3,#0
000082  2264              MOVS     r2,#0x64
000084  213b              MOVS     r1,#0x3b
000086  2077              MOVS     r0,#0x77
000088  f7fffffe          BL       LCD_DrawLine
00008c  f44f60fc          MOV      r0,#0x7e0
000090  8020              STRH     r0,[r4,#0]
;;;867    	LCD_SetTextColor(Green);
;;;868    	LCD_DrawRect(69, 59, 100, 200);
000092  23c8              MOVS     r3,#0xc8
000094  2264              MOVS     r2,#0x64
000096  213b              MOVS     r1,#0x3b
000098  e8bd4010          POP      {r4,lr}
00009c  2045              MOVS     r0,#0x45
00009e  f7ffbffe          B.W      LCD_DrawRect
;;;869    }
;;;870    
                          ENDP

0000a2  0000              DCW      0x0000
                  |L8.164|
                          DCD      ||.data||
                  |L8.168|
0000a8  2020202048656c6c6f20576f726420212020202000        DCB      "    Hello Word !    ",0
0000bd  00                DCB      0
0000be  00                DCB      0
0000bf  00                DCB      0
                  |L8.192|
0000c0  202020202020202020202020202020202020202000        DCB      "                    ",0
0000d5  00                DCB      0
0000d6  00                DCB      0
0000d7  00                DCB      0
                  |L8.216|
0000d8  546869732773206120544654322e3860204c434400        DCB      "This's a TFT2.8` LCD",0
0000ed  00                DCB      0
0000ee  00                DCB      0
0000ef  00                DCB      0
                  |L8.240|
0000f0  64656d6f2070726f6772616d207769746820202000        DCB      "demo program with   ",0
000105  00                DCB      0
000106  00                DCB      0
000107  00                DCB      0
                  |L8.264|
000108  4d494e492d53544d333220626f7264207573652000        DCB      "MINI-STM32 bord use ",0
00011d  00                DCB      0
00011e  00                DCB      0
00011f  00                DCB      0
                  |L8.288|
000120  53544d33324631303343385436204d4355202e2000        DCB      "STM32F103C8T6 MCU . ",0
000135  00                DCB      0
000136  00                DCB      0
000137  00                DCB      0
                  |L8.312|
000138  43686f6e6771696e6720555f454153595445434800        DCB      "Chongqing U_EASYTECH",0
00014d  00                DCB      0
00014e  00                DCB      0
00014f  00                DCB      0
                  |L8.336|
000150  656c656374726f6e696320636f6d70616e79202e00        DCB      "electronic company .",0
000165  00                DCB      0
000166  00                DCB      0
000167  00                DCB      0
                  |L8.360|
000168  207777772e752d65617379746563682e636f6d2000        DCB      " www.u-easytech.com ",0
00017d  00                DCB      0
00017e  00                DCB      0
00017f  00                DCB      0

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

                  LCD_DrawChar PROC
;;;255    *******************************************************************************/
;;;256    void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c)
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;257    {
;;;258      u32 index = 0, i = 0;
;;;259      u8 Xaddress = 0;
;;;260      u16 Yaddress=0;
;;;261       
;;;262       Xaddress = Xpos;
000004  4605              MOV      r5,r0
;;;263       Yaddress=319-Ypos;			   
000006  f2a1113f          SUB      r1,r1,#0x13f
00000a  4248              RSBS     r0,r1,#0
00000c  fa1ffb80          UXTH     r11,r0
000010  4690              MOV      r8,r2                 ;257
000012  2400              MOVS     r4,#0                 ;258
;;;264      LCD_SetCursor(Xaddress, Yaddress);  
000014  4659              MOV      r1,r11
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       LCD_SetCursor
;;;265     // LCD_SetDisplayWindow( Xpos+24, 319 - Ypos, 24,16 );
;;;266      for(index = 0; index < 24; index++)
;;;267      {
;;;268        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;269        for(i = 0; i < 16; i++)
;;;270        {
;;;271          if((c[index] & (1 << i)) == 0x00)
;;;272          {
;;;273            LCD_WriteRAM(BackColor);
00001c  4f11              LDR      r7,|L9.100|
00001e  f04f0a22          MOV      r10,#0x22
000022  f04f0901          MOV      r9,#1                 ;271
000026  f04f46d8          MOV      r6,#0x6c000000        ;271
00002a  bf00              NOP                            ;271
                  |L9.44|
00002c  f8a6a000          STRH     r10,[r6,#0]           ;271
000030  2000              MOVS     r0,#0                 ;269
000032  464a              MOV      r2,r9                 ;271
                  |L9.52|
000034  f8381014          LDRH     r1,[r8,r4,LSL #1]     ;271
000038  fa02f300          LSL      r3,r2,r0              ;271
00003c  4219              TST      r1,r3                 ;271
00003e  d101              BNE      |L9.68|
000040  8879              LDRH     r1,[r7,#2]  ; BackColor
000042  e000              B        |L9.70|
                  |L9.68|
;;;274          }
;;;275          else
;;;276          {
;;;277            LCD_WriteRAM(TextColor);
000044  8839              LDRH     r1,[r7,#0]  ; TextColor
                  |L9.70|
000046  8071              STRH     r1,[r6,#2]
000048  1c40              ADDS     r0,r0,#1              ;269
00004a  2810              CMP      r0,#0x10              ;269
00004c  d3f2              BCC      |L9.52|
;;;278          }
;;;279        }
;;;280       Xaddress++;
00004e  1c6d              ADDS     r5,r5,#1
000050  b2ed              UXTB     r5,r5
;;;281        LCD_SetCursor(Xaddress, Yaddress);
000052  4659              MOV      r1,r11
000054  4628              MOV      r0,r5
000056  f7fffffe          BL       LCD_SetCursor
00005a  1c64              ADDS     r4,r4,#1              ;266
00005c  2c18              CMP      r4,#0x18              ;266
00005e  d3e5              BCC      |L9.44|
;;;282      }
;;;283    }
000060  e8bd8ff0          POP      {r4-r11,pc}
;;;284    
                          ENDP

                  |L9.100|
                          DCD      ||.data||

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

                  LCD_DrawCircle PROC
;;;469    *******************************************************************************/
;;;470    void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius)
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;471    {
000004  4682              MOV      r10,r0
;;;472      s32  D;/* Decision Variable */ 
;;;473      u32  CurX;/* Current X Value */
;;;474      u32  CurY;/* Current Y Value */ 
;;;475      
;;;476      D = 3 - (Radius << 1);
000006  2003              MOVS     r0,#3
000008  b088              SUB      sp,sp,#0x20           ;471
00000a  468b              MOV      r11,r1                ;471
00000c  eba00742          SUB      r7,r0,r2,LSL #1
;;;477      CurX = 0;
000010  2400              MOVS     r4,#0
;;;478      CurY = Radius;
000012  4615              MOV      r5,r2
;;;479      
;;;480      while (CurX <= CurY)
000014  e07a              B        |L10.268|
;;;481      {
;;;482        LCD_SetCursor(Xpos + CurX, Ypos + CurY);
000016  bf00              NOP      
                  |L10.24|
000018  eb0b0005          ADD      r0,r11,r5
00001c  b281              UXTH     r1,r0
00001e  9007              STR      r0,[sp,#0x1c]
000020  eb0a0004          ADD      r0,r10,r4
000024  9006              STR      r0,[sp,#0x18]
000026  b280              UXTH     r0,r0
000028  f7fffffe          BL       LCD_SetCursor
00002c  f04f0822          MOV      r8,#0x22
000030  f04f46d8          MOV      r6,#0x6c000000
000034  f8a68000          STRH     r8,[r6,#0]
;;;483        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;484        LCD_WriteRAM(TextColor);
000038  f8df90dc          LDR      r9,|L10.280|
00003c  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
000040  8070              STRH     r0,[r6,#2]
;;;485    
;;;486        LCD_SetCursor(Xpos + CurX, Ypos - CurY);
000042  ebab0005          SUB      r0,r11,r5
000046  b281              UXTH     r1,r0
000048  9005              STR      r0,[sp,#0x14]
00004a  9806              LDR      r0,[sp,#0x18]
00004c  b280              UXTH     r0,r0
00004e  f7fffffe          BL       LCD_SetCursor
000052  f8a68000          STRH     r8,[r6,#0]
;;;487        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;488        LCD_WriteRAM(TextColor);
000056  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
00005a  8070              STRH     r0,[r6,#2]
;;;489    
;;;490        LCD_SetCursor(Xpos - CurX, Ypos + CurY);
00005c  9807              LDR      r0,[sp,#0x1c]
00005e  b281              UXTH     r1,r0
000060  ebaa0004          SUB      r0,r10,r4
000064  9004              STR      r0,[sp,#0x10]
000066  b280              UXTH     r0,r0
000068  f7fffffe          BL       LCD_SetCursor
00006c  f8a68000          STRH     r8,[r6,#0]
;;;491        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;492        LCD_WriteRAM(TextColor);
000070  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
000074  8070              STRH     r0,[r6,#2]
;;;493    
;;;494        LCD_SetCursor(Xpos - CurX, Ypos - CurY);
000076  9805              LDR      r0,[sp,#0x14]
000078  b281              UXTH     r1,r0
00007a  9804              LDR      r0,[sp,#0x10]
00007c  b280              UXTH     r0,r0
00007e  f7fffffe          BL       LCD_SetCursor
000082  f8a68000          STRH     r8,[r6,#0]
;;;495        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;496        LCD_WriteRAM(TextColor);
000086  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
00008a  8070              STRH     r0,[r6,#2]
;;;497    
;;;498        LCD_SetCursor(Xpos + CurY, Ypos + CurX);
00008c  eb0b0004          ADD      r0,r11,r4
000090  b281              UXTH     r1,r0
000092  9003              STR      r0,[sp,#0xc]
000094  eb0a0005          ADD      r0,r10,r5
000098  9002              STR      r0,[sp,#8]
00009a  b280              UXTH     r0,r0
00009c  f7fffffe          BL       LCD_SetCursor
0000a0  f8a68000          STRH     r8,[r6,#0]
;;;499        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;500        LCD_WriteRAM(TextColor);
0000a4  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
0000a8  8070              STRH     r0,[r6,#2]
;;;501    
;;;502        LCD_SetCursor(Xpos + CurY, Ypos - CurX);
0000aa  ebab0004          SUB      r0,r11,r4
0000ae  b281              UXTH     r1,r0
0000b0  9001              STR      r0,[sp,#4]
0000b2  9802              LDR      r0,[sp,#8]
0000b4  b280              UXTH     r0,r0
0000b6  f7fffffe          BL       LCD_SetCursor
0000ba  f8a68000          STRH     r8,[r6,#0]
;;;503        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;504        LCD_WriteRAM(TextColor);
0000be  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
0000c2  8070              STRH     r0,[r6,#2]
;;;505    
;;;506        LCD_SetCursor(Xpos - CurY, Ypos + CurX);
0000c4  9803              LDR      r0,[sp,#0xc]
0000c6  b281              UXTH     r1,r0
0000c8  ebaa0005          SUB      r0,r10,r5
0000cc  9000              STR      r0,[sp,#0]
0000ce  b280              UXTH     r0,r0
0000d0  f7fffffe          BL       LCD_SetCursor
0000d4  f8a68000          STRH     r8,[r6,#0]
;;;507        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;508        LCD_WriteRAM(TextColor);
0000d8  f8b90000          LDRH     r0,[r9,#0]  ; TextColor
0000dc  8070              STRH     r0,[r6,#2]

⌨️ 快捷键说明

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