⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_driver.txt

📁 STM32+ov7670
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002ae  f7fffffe          BL       LCD_SetWindow
;;;284    }
0002b2  e8bd83f0          POP      {r4-r9,pc}
;;;285    //液晶端口初始化,外部无需调用			
                          ENDP

                  LCD_PortInit PROC
;;;286    void LCD_PortInit(void)
0002b6  485b              LDR      r0,|L1.1060|
;;;287    {
;;;288    	//控制端口方向初始化,移植时只需更改有关宏定义
;;;289    	/*LCD_CS_DDR |= BIT(LCD_CS_BIT);
;;;290    	LCD_RS_DDR |= BIT(LCD_RS_BIT);
;;;291    	LCD_WR_DDR |= BIT(LCD_WR_BIT);
;;;292    	LCD_RD_DDR |= BIT(LCD_RD_BIT);
;;;293    	LCD_REST_DDR |= BIT(LCD_REST_BIT);*/
;;;294    	//控制端口电平初始化						
;;;295    	/*LCD_CS_H;
;;;296    	LCD_RS_H;
;;;297    	LCD_WR_H;
;;;298    	LCD_RD_H;
;;;299    	LCD_REST_H;*/
;;;300    	//数据总线端口方向初始化,视接口需要更改或添加
;;;301    	
;;;302    	//DATA_L_DDR = 0xff;
;;;303    	//DATA_L_PORT = 0xff;
;;;304    	
;;;305    	RCC->APB2ENR|=1<<3;//先使能外设PORTB时钟
0002b8  6980              LDR      r0,[r0,#0x18]
0002ba  f0400008          ORR      r0,r0,#8
0002be  4959              LDR      r1,|L1.1060|
0002c0  6188              STR      r0,[r1,#0x18]
;;;306     	RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟
0002c2  4608              MOV      r0,r1
0002c4  6980              LDR      r0,[r0,#0x18]
0002c6  f0400010          ORR      r0,r0,#0x10
0002ca  6188              STR      r0,[r1,#0x18]
;;;307    
;;;308    											 
;;;309    	//PORTC0~13推挽输出 	
;;;310    	GPIOC->CRL=0x33333333;
0002cc  f04f3033          MOV      r0,#0x33333333
0002d0  494d              LDR      r1,|L1.1032|
0002d2  6008              STR      r0,[r1,#0]
;;;311    	GPIOC->CRH&=0xFF000000;
0002d4  4608              MOV      r0,r1
0002d6  6840              LDR      r0,[r0,#4]
0002d8  f000407f          AND      r0,r0,#0xff000000
0002dc  6048              STR      r0,[r1,#4]
;;;312    	GPIOC->CRH|=0x00333333;
0002de  4608              MOV      r0,r1
0002e0  6840              LDR      r0,[r0,#4]
0002e2  4951              LDR      r1,|L1.1064|
0002e4  4308              ORRS     r0,r0,r1
0002e6  4948              LDR      r1,|L1.1032|
0002e8  6048              STR      r0,[r1,#4]
;;;313    	GPIOC->ODR|=0x3FFF;	
0002ea  4608              MOV      r0,r1
0002ec  68c0              LDR      r0,[r0,#0xc]
0002ee  f64371ff          MOV      r1,#0x3fff
0002f2  4308              ORRS     r0,r0,r1
0002f4  4944              LDR      r1,|L1.1032|
0002f6  60c8              STR      r0,[r1,#0xc]
;;;314    	//PORTB 高8位推挽输出 	
;;;315    	GPIOB->CRH=0x33333333;
0002f8  f04f3033          MOV      r0,#0x33333333
0002fc  4945              LDR      r1,|L1.1044|
0002fe  6008              STR      r0,[r1,#0]
;;;316    	GPIOB->ODR|=0xFF00;
000300  4840              LDR      r0,|L1.1028|
000302  f8d00c0c          LDR      r0,[r0,#0xc0c]
000306  f440407f          ORR      r0,r0,#0xff00
00030a  493d              LDR      r1,|L1.1024|
00030c  6008              STR      r0,[r1,#0]
;;;317    	  					 
;;;318     
;;;319    
;;;320    }
00030e  4770              BX       lr
;;;321    //液晶驱动初始化						
                          ENDP

                  LCD_DriverInit PROC
;;;322    void LCD_DriverInit(void)
000310  b510              PUSH     {r4,lr}
;;;323    {
;;;324    	unsigned short int lcd_id = 0x0000;		//保存LCD_ID号							
000312  2400              MOVS     r4,#0
;;;325    	LCD_PortInit();						//调用端口初始化						
000314  f7fffffe          BL       LCD_PortInit
;;;326    	
;;;327        LCD_REST_L;							//复位控制								
000318  2000              MOVS     r0,#0
00031a  4944              LDR      r1,|L1.1068|
00031c  6008              STR      r0,[r1,#0]
;;;328    	Delay_nMS(1);	
00031e  f04f0001          MOV      r0,#1
000322  f7fffffe          BL       delay_ms
;;;329        LCD_REST_H;
000326  2001              MOVS     r0,#1
000328  4939              LDR      r1,|L1.1040|
00032a  f8c101b0          STR      r0,[r1,#0x1b0]
;;;330    	Delay_nMS(1);						//完成复位								
00032e  f7fffffe          BL       delay_ms
;;;331    	
;;;332    	LCD_WriteRegister(0x0000, 0x0001);	//开启时钟								
000332  2101              MOVS     r1,#1
000334  2000              MOVS     r0,#0
000336  f7fffffe          BL       LCD_WriteRegister
;;;333    	Delay_nMS(10);
00033a  200a              MOVS     r0,#0xa
00033c  f7fffffe          BL       delay_ms
;;;334    	lcd_id = LCD_ReadRegister(0x0000);	//读取LCD_ID							
000340  2000              MOVS     r0,#0
000342  f7fffffe          BL       LCD_ReadRegister
000346  4604              MOV      r4,r0
;;;335    	
;;;336    	while(0)
000348  bf00              NOP      
00034a  bf00              NOP      
;;;337    	{
;;;338    		UART_Transmit(lcd_id >> 8);
;;;339    		UART_Transmit(lcd_id);
;;;340    		Delay_nMS(500);
;;;341    	}
;;;342    	switch(lcd_id)
00034c  4620              MOV      r0,r4
00034e  f2493225          MOV      r2,#0x9325
000352  1aa1              SUBS     r1,r4,r2
000354  4294              CMP      r4,r2
000356  d052              BEQ      |L1.1022|
000358  dc0a              BGT      |L1.880|
00035a  f5a050a8          SUB      r0,r0,#0x1500
00035e  3814              SUBS     r0,r0,#0x14
000360  d00c              BEQ      |L1.892|
000362  f5a040fa          SUB      r0,r0,#0x7d00
000366  38ec              SUBS     r0,r0,#0xec
000368  d07e              BEQ      |L1.1128|
00036a  2820              CMP      r0,#0x20
00036c  d17d              BNE      |L1.1130|
00036e  e1e9              B        |L1.1860|
                  |L1.880|
000370  2903              CMP      r1,#3
000372  d07b              BEQ      |L1.1132|
000374  f5b14f80          CMP      r1,#0x4000
000378  d177              BNE      |L1.1130|
00037a  e0de              B        |L1.1338|
                  |L1.892|
;;;343    	{
;;;344    		//R61514
;;;345    		case 0x1514:					//R61514S驱动IC							
;;;346    		LCD_WriteRegister(0x0007, 0x0000);
00037c  2100              MOVS     r1,#0
00037e  2007              MOVS     r0,#7
000380  f7fffffe          BL       LCD_WriteRegister
;;;347    		Delay_nMS(2);
000384  2002              MOVS     r0,#2
000386  f7fffffe          BL       delay_ms
;;;348    		LCD_WriteRegister(0x0017, 0x0001);
00038a  2101              MOVS     r1,#1
00038c  2017              MOVS     r0,#0x17
00038e  f7fffffe          BL       LCD_WriteRegister
;;;349    		LCD_WriteRegister(0x0010, 0x4410);
000392  f2444110          MOV      r1,#0x4410
000396  2010              MOVS     r0,#0x10
000398  f7fffffe          BL       LCD_WriteRegister
;;;350    		LCD_WriteRegister(0x0011, 0x0000);
00039c  2100              MOVS     r1,#0
00039e  2011              MOVS     r0,#0x11
0003a0  f7fffffe          BL       LCD_WriteRegister
;;;351    		LCD_WriteRegister(0x0012, 0x0118);
0003a4  f44f718c          MOV      r1,#0x118
0003a8  2012              MOVS     r0,#0x12
0003aa  f7fffffe          BL       LCD_WriteRegister
;;;352    		LCD_WriteRegister(0x0013, 0x0d23);
0003ae  f6405123          MOV      r1,#0xd23
0003b2  2013              MOVS     r0,#0x13
0003b4  f7fffffe          BL       LCD_WriteRegister
;;;353    		Delay_nMS(2);
0003b8  2002              MOVS     r0,#2
0003ba  f7fffffe          BL       delay_ms
;;;354    		LCD_WriteRegister(0x0010, 0x4490);
0003be  f2444190          MOV      r1,#0x4490
0003c2  2010              MOVS     r0,#0x10
0003c4  f7fffffe          BL       LCD_WriteRegister
;;;355    		LCD_WriteRegister(0x0011, 0x0000);
0003c8  2100              MOVS     r1,#0
0003ca  2011              MOVS     r0,#0x11
0003cc  f7fffffe          BL       LCD_WriteRegister
;;;356    		LCD_WriteRegister(0x0012, 0x013d);
0003d0  f240113d          MOV      r1,#0x13d
0003d4  2012              MOVS     r0,#0x12
0003d6  f7fffffe          BL       LCD_WriteRegister
;;;357    		Delay_nMS(2);
0003da  2002              MOVS     r0,#2
0003dc  f7fffffe          BL       delay_ms
;;;358    		LCD_WriteRegister(0x0001, 0x0213);
0003e0  f2402113          MOV      r1,#0x213
0003e4  2001              MOVS     r0,#1
0003e6  f7fffffe          BL       LCD_WriteRegister
;;;359    		LCD_WriteRegister(0x0003, 0x1030);	//0x1030,设置接口方式,颜色位数和扫描方向
0003ea  f2410130          MOV      r1,#0x1030
0003ee  2003              MOVS     r0,#3
0003f0  f7fffffe          BL       LCD_WriteRegister
;;;360    		LCD_WriteRegister(0x0007, 0x0005);
0003f4  2105              MOVS     r1,#5
0003f6  2007              MOVS     r0,#7
0003f8  f7fffffe          BL       LCD_WriteRegister
;;;361    		LCD_WriteRegister(0x0008, 0x0603);
0003fc  e018              B        |L1.1072|
                  |L1.1022|
0003fe  e09a              B        |L1.1334|
                  |L1.1024|
                          DCD      0x40010c0c
                  |L1.1028|
                          DCD      0x40010000
                  |L1.1032|
                          DCD      0x40011000
                  |L1.1036|
                          DCD      0x422201a8
                  |L1.1040|
                          DCD      0x42220000
                  |L1.1044|
                          DCD      0x40010c04
                  |L1.1048|
                          DCD      0x422201ac
                  |L1.1052|
                          DCD      0x422201a0
                  |L1.1056|
                          DCD      0x422201a4
                  |L1.1060|
                          DCD      0x40021000
                  |L1.1064|
                          DCD      0x00333333
                  |L1.1068|
                          DCD      0x422201b0
                  |L1.1072|
000430  f2406103          MOV      r1,#0x603
000434  2008              MOVS     r0,#8
000436  f7fffffe          BL       LCD_WriteRegister
;;;362    		LCD_WriteRegister(0x0009, 0x002f);
00043a  212f              MOVS     r1,#0x2f
00043c  2009              MOVS     r0,#9
00043e  f7fffffe          BL       LCD_WriteRegister
;;;363    		LCD_WriteRegister(0x000b, 0x8000);
000442  f44f4100          MOV      r1,#0x8000
000446  200b              MOVS     r0,#0xb
000448  f7fffffe          BL       LCD_WriteRegister
;;;364    	
;;;365    		LCD_WriteRegister(0x0040, 0x0000);
00044c  2100              MOVS     r1,#0
00044e  2040              MOVS     r0,#0x40
000450  f7fffffe          BL       LCD_WriteRegister
;;;366    		LCD_WriteRegister(0x0041, 0x0000);
000454  2100              MOVS     r1,#0
000456  2041              MOVS     r0,#0x41
000458  f7fffffe          BL       LCD_WriteRegister
;;;367    		LCD_WriteRegister(0x0042, 0x9f00);
00045c  f44f411f          MOV      r1,#0x9f00
000460  2042              MOVS     r0,#0x42
000462  f7fffffe          BL       LCD_WriteRegister
;;;368    		LCD_WriteRegister(0x0043, 0x9f00);
000466  e002              B        |L1.1134|
                  |L1.1128|
000468  e16d              B        |L1.1862|
                  |L1.1130|
00046a  e218              B        |L1.2206|
                  |L1.1132|
00046c  e064              B        |L1.1336|
                  |L1.1134|
00046e  f44f411f          MOV      r1,#0x9f00
000472  2043              MOVS     r0,#0x43
000474  f7fffffe          BL       LCD_WriteRegister
;;;369    		LCD_WriteRegister(0x0044, 0x7f00);	//水平窗口起始大小(高8位HEA[结束地址],低8位HSA[起始地址])
000478  f44f41fe          MOV      r1,#0x7f00

⌨️ 快捷键说明

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