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