久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3066|回復: 3
收起左側

主控;stm32f103,lcd控制器ili9325,lcd初始化后點不亮lcd屏

[復制鏈接]
ID:289495 發表于 2018-3-29 11:11 | 顯示全部樓層 |閱讀模式
10黑幣
#include "ili9325.h"
#include "systick.h"

/*  lcd引腳初始化
數據線:
DB0--PD14   DB1--PD15   DB2--PD0   DB3--PD1
DB4--PE7   DB5--PE8   DB6--PE9   DB7--PE10
DB10--PE11 DB11--PE12 DB12--PE13 DB13--PE14
DB14--PE15 DB15--PD8   DB16--PD9   DB17--PD10
控制線:
RW--PD5
RD--PD4
CS--PD7
RS(D/C)--PD11
RES--PE1:
lcd_k--PB12*/

void LCD_Port_Init()
{
RCC->APB2ENR |= 1<<5;   //使能GPIOD
RCC->APB2ENR |= 1<<6;   //使能GPIOE
RCC->APB2ENR |= 1<<3;   //使能GPIOB

// 數據線:配置成通用推挽輸出,最大速度:50MHZ
GPIOD->CRL &= ~(0XFF);      
GPIOD->CRL |= (0X33);         //PD0,PD1

GPIOD->CRH &= (0XFFF);        
GPIOD->CRH |= (0X333);        //PD8/9/10

GPIOD->CRH &= ~(0XFFul<<24);
GPIOD->CRH |= (0X33ul<<24);   //PD14/15

GPIOE->CRL &= ~(0XFul<<28);   
GPIOE->CRL |=  (0X3ul<<28);   //PE7

GPIOE->CRH &= ~(0XFFFFFFFF);
GPIOE->CRH |=  (0X33333333);  PE8/9/10/11/12/13/14/15
// 控制線:配置成通用推挽輸出,最大速度:50MHz
GPIOD->CRL &= ~(0XFF<<16);   
GPIOD->CRL |= (0X33<<16);     //PD4,PD5--RW/RD
GPIOD->ODR |= (1<<4);
GPIOD->ODR |= (1<<5);

GPIOD->CRL &= (0XFUL<<28);   
GPIOD->CRL |= (0X3UL<<28);    //PD7--CS
GPIOD->ODR |= 1<<7;

GPIOD->CRH &= ~(0XF<<12);   
GPIOD->CRH |= (0X3<<12);      //PD11--RS
GPIOD->ODR |= 1<<11;

GPIOE->CRL &= ~(0XF<<4);      
GPIOE->CRL |= (0X3<<4);       //PE1--RES
GPIOE->ODR |= (1<<1);

GPIOB->CRH &= ~(0XF<<16);     
GPIOB->CRH |=  (0X3<<16);     //PB12 --LCD_K
GPIOB->ODR |=  (1<<12);       //關閉背光
}
//lcd寫寄存器命令
void LCD_WR_CMD(uint16_t common)
{

GPIOD->ODR &= ~(1 << 7);    //CS拉低
GPIOD->ODR &= ~(1 << 11);   //(RS)D/C拉低
GPIOD->ODR |= 1 << 4;       //RD拉高
GPIOD->ODR &= ~(1 << 5);  //拉低  RW--PD5

if(common&0x01)   GPIOD->BSRR |= (1<<14); else GPIOD->BRR |= (1<<14);  //DB0
if(common&0x02)   GPIOD->BSRR |= (1<<15); else GPIOD->BRR |= (1<<15);
if(common&0x04)   GPIOD->BSRR |= (1<<0);  else GPIOD->BRR |= (1<<0);
if(common&0x08)   GPIOD->BSRR |= (1<<1);  else GPIOD->BRR |= (1<<1);
if(common&0x10)   GPIOE->BSRR |= (1<<7);  else GPIOE->BRR |= (1<<7);
if(common&0x20)   GPIOE->BSRR |= (1<<8);  else GPIOE->BRR |= (1<<8);
if(common&0x40)   GPIOE->BSRR |= (1<<9);  else GPIOE->BRR |= (1<<9);
if(common&0x80)   GPIOE->BSRR |= (1<<10); else GPIOE->BRR |= (1<<10);
if(common&0x0100) GPIOE->BSRR |= (1<<11); else GPIOE->BRR |= (1<<11);
if(common&0x0200) GPIOE->BSRR |= (1<<12); else GPIOE->BRR |= (1<<12);
if(common&0x0400) GPIOE->BSRR |= (1<<13); else GPIOE->BRR |= (1<<13);
if(common&0x0800) GPIOE->BSRR |= (1<<14); else GPIOE->BRR |= (1<<14);
if(common&0x1000) GPIOE->BSRR |= (1<<15); else GPIOE->BRR |= (1<<15);
if(common&0x2000) GPIOD->BSRR |= (1<<8);  else GPIOD->BRR |= (1<<8);
if(common&0x4000) GPIOD->BSRR |= (1<<9);  else GPIOD->BRR |= (1<<9);
if(common&0x8000) GPIOD->BSRR |= (1<<10); else GPIOD->BRR |= (1<<10); //DB15
GPIOD->ODR |= 1 << 5;       //WR拉高
GPIOD->ODR |= 1 << 7;       //拉高CS
}

//lcd寫寄存器數據
void LCD_WR_Data(uint16_t data)
{
GPIOD->ODR &= ~(1 << 7);    //CS拉低
GPIOD->ODR |= (1 << 11);    //D/C拉高
GPIOD->ODR &= ~(1 << 5);    //WR拉低
GPIOD->ODR |= 1 << 4;       //RD拉高

if(data&0x01)   GPIOD->BSRR |= (1<<14); else GPIOD->BRR |= (1<<14);  //DB0
if(data&0x02)   GPIOD->BSRR |= (1<<15); else GPIOD->BRR |= (1<<15);
if(data&0x04)   GPIOD->BSRR |= (1<<0);  else GPIOD->BRR |= (1<<0);
if(data&0x08)   GPIOD->BSRR |= (1<<1);  else GPIOD->BRR |= (1<<1);
if(data&0x10)   GPIOE->BSRR |= (1<<7);  else GPIOE->BRR |= (1<<7);
if(data&0x20)   GPIOE->BSRR |= (1<<8);  else GPIOE->BRR |= (1<<8);
if(data&0x40)   GPIOE->BSRR |= (1<<9);  else GPIOE->BRR |= (1<<9);
if(data&0x80)   GPIOE->BSRR |= (1<<10); else GPIOE->BRR |= (1<<10);
if(data&0x0100) GPIOE->BSRR |= (1<<11); else GPIOE->BRR |= (1<<11);
if(data&0x0200) GPIOE->BSRR |= (1<<12); else GPIOE->BRR |= (1<<12);
if(data&0x0400) GPIOE->BSRR |= (1<<13); else GPIOE->BRR |= (1<<13);
if(data&0x0800) GPIOE->BSRR |= (1<<14); else GPIOE->BRR |= (1<<14);
if(data&0x1000) GPIOE->BSRR |= (1<<15); else GPIOE->BRR |= (1<<15);
if(data&0x2000) GPIOD->BSRR |= (1<<8);  else GPIOD->BRR |= (1<<8);
if(data&0x4000) GPIOD->BSRR |= (1<<9);  else GPIOD->BRR |= (1<<9);
if(data&0x8000) GPIOD->BSRR |= (1<<10); else GPIOD->BRR |= (1<<10);//DB15
GPIOD->ODR |= 1 << 5;       //WR拉高
GPIOD->ODR |= 1 << 7;       //拉高CS
}

//清屏
void LCD_Clear(uint16_t SX, uint16_t SY, uint16_t EX, uint16_t EY, uint16_t Color)
{
uint16_t i,j;
LCD_WR_CMD(0x0050);LCD_WR_Data(SX); //起始X坐標
LCD_WR_CMD(0x0051);LCD_WR_Data(EX); //終點x坐標
LCD_WR_CMD(0x0052);LCD_WR_Data(SY); //起始y坐標
LCD_WR_CMD(0x0053);LCD_WR_Data(EY); //終點y坐標

LCD_WR_CMD(0x0020);LCD_WR_Data(0X0000);
  LCD_WR_CMD(0x0021);LCD_WR_Data(0X0000);

  LCD_WR_CMD(0x0022);
  for(i=0; i<320; i++)
   {
   for(j=0; j<240; j++)
   {
      //LCD_WR_CMD(0x0022);
         LCD_WR_Data(Color);
   }   
   }
  
}


//lcd初始化
void LCD_Init()
{
LCD_Port_Init();
  Delay_ms(200);

  GPIOE->ODR &= ~(1<<1);      //RES拉低
  Delay_ms(100);                     
  GPIOE->ODR |= (1<<1);      //RES 拉高
  Delay_ms(100);                 
//
LCD_WR_CMD(0x00E5); LCD_WR_Data(0x78f0);
LCD_WR_CMD(0x00E3); LCD_WR_Data(0x3008);                  
LCD_WR_CMD(0x00E7); LCD_WR_Data(0x0010);                  
  LCD_WR_CMD(0x00EF); LCD_WR_Data(0x1231);                  
  //LCD_WR_CMD(0x0000); //&AElig;&ocirc;&para;&macr;&Otilde;&eth;&micro;&acute;
LCD_WR_CMD(0x0001); LCD_WR_Data(0x0100);
LCD_WR_CMD(0x0002); LCD_WR_Data(0x0700);         
LCD_WR_CMD(0x0003); LCD_WR_Data(0x1030);  
LCD_WR_CMD(0x0004); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x0008); LCD_WR_Data(0x0202);
LCD_WR_CMD(0x0009); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x000A); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x000C); LCD_WR_Data(0x0011);
LCD_WR_CMD(0x000D); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x000F); LCD_WR_Data(0x0000);
//--***********&Eacute;&Iuml;&micro;&ccedil;&Ecirc;±&ETH;ò ***********--//                                      
LCD_WR_CMD(0x0010); LCD_WR_Data(0x0000);   
LCD_WR_CMD(0x0011); LCD_WR_Data(0x0007);      
LCD_WR_CMD(0x0012); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x0013); LCD_WR_Data(0x0000);

Delay_ms(300);                                    
LCD_WR_CMD(0x0010); LCD_WR_Data(0x1690);
LCD_WR_CMD(0x0011); LCD_WR_Data(0x0227);
Delay_ms(200); // Delay 50ms                                                               
LCD_WR_CMD(0x0012); LCD_WR_Data(0x009D);
Delay_ms(200); // Delay 50ms  
                                
LCD_WR_CMD(0x0013); LCD_WR_Data(0x1900);
LCD_WR_CMD(0x0029); LCD_WR_Data(0x0025);
   
LCD_WR_CMD(0x002B); LCD_WR_Data(0x000D);
Delay_ms(200); // Delay 50ms                                                               
LCD_WR_CMD(0x0020); LCD_WR_Data(0x0000);              
LCD_WR_CMD(0x0021); LCD_WR_Data(0x0000);      
Delay_ms(100);
// ----------- &micro;÷&Otilde;&ucirc;&Ugrave;¤&Acirc;í&Ccedil;ú&Iuml;&szlig; ----------//                                       
  LCD_WR_CMD(0x0030); LCD_WR_Data(0x0007);  
LCD_WR_CMD(0x0031); LCD_WR_Data(0x0303);  //0303                                       
LCD_WR_CMD(0x0032); LCD_WR_Data(0x0003);  //0003                                       
LCD_WR_CMD(0x0035); LCD_WR_Data(0x0206);  //0206                                       
LCD_WR_CMD(0x0036); LCD_WR_Data(0x0008);  //0008                                       
LCD_WR_CMD(0x0037); LCD_WR_Data(0x0406);  //0406                                       
  LCD_WR_CMD(0x0038); LCD_WR_Data(0x0304);  //0304                                       
LCD_WR_CMD(0x0039); LCD_WR_Data(0x0007);  //0007                                       
LCD_WR_CMD(0x003C); LCD_WR_Data(0x0602);  //0602                                      
LCD_WR_CMD(0x003D); LCD_WR_Data(0x0008);  

//------------------ Set GRAM area ---------------//                                    
LCD_WR_CMD(0x0050); LCD_WR_Data(0x0000);  
  LCD_WR_CMD(0x0051); LCD_WR_Data(0x00ee);  
LCD_WR_CMD(0x0052); LCD_WR_Data(0x0000);  
LCD_WR_CMD(0x0053); LCD_WR_Data(0x013f);     
LCD_WR_CMD(0x0060); LCD_WR_Data(0xA700);  
  LCD_WR_CMD(0x0061); LCD_WR_Data(0x0001);  
LCD_WR_CMD(0x006A); LCD_WR_Data(0x0000);               
//-------------- &sup2;&iquest;·&Ouml;&Iuml;&Ocirc;&Ecirc;&frac34;&iquest;&Oslash;&Ouml;&AElig; ---------//                                    
LCD_WR_CMD(0x0080); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x0081); LCD_WR_Data(0x0000);            
LCD_WR_CMD(0x0082); LCD_WR_Data(0x0000);               
LCD_WR_CMD(0x0083); LCD_WR_Data(0x0000);
LCD_WR_CMD(0x0084); LCD_WR_Data(0x0000);                                         
LCD_WR_CMD(0x0085); LCD_WR_Data(0x0000);                                       
//-------------- &iquest;&Oslash;&Ouml;&AElig;&Atilde;&aelig;°&aring; -------------------//                                    
LCD_WR_CMD(0x0090); LCD_WR_Data(0x0010);                                      
LCD_WR_CMD(0x0092); LCD_WR_Data(0x0000);                                   
//LCD_WR_CMD(0x0093); LCD_WR_Data(0x0133);         
//LCD_WR_CMD(0x0095); LCD_WR_Data(0x0110);  
//LCD_WR_CMD(0x0097); LCD_WR_Data(0x0000);                                         
//LCD_WR_CMD(0x0098); LCD_WR_Data(0x0000);


LCD_WR_CMD(0x0007); LCD_WR_Data(0x0133);  //開lcd顯示
            

GPIOB->ODR |= (1 << 12);                  //開lcd背光
}


回復

使用道具 舉報

ID:289495 發表于 2018-11-12 08:04 | 顯示全部樓層
已解決
回復

使用道具 舉報

ID:289495 發表于 2018-3-29 11:14 | 顯示全部樓層
lcd寄存器的配置不是廠商提供的,但是和網上查的配置基本一樣,不知道有沒有影響
回復

使用道具 舉報

ID:289495 發表于 2018-3-29 11:12 | 顯示全部樓層
按理說lcd初始化后屏幕是會亮的,哪位大神看我程序那里除了問題。非常感謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人春色成人网 | 国产精品69毛片高清亚洲 | 天天噜天天干 | 在线免费国产视频 | www.99re | 日韩一级 | 欧美一区二区大片 | 国内精品久久精品 | 欧美欧美欧美 | 欧美日韩视频在线第一区 | 国产偷自视频区视频 | 天天天天操| 日韩1区 | 一区二区三区四区在线视频 | 欧美精品一二三 | 国产一区二区三区在线 | 国产香蕉视频 | 91 久久| a级片网站 | 欧美天堂在线观看 | 日本理论片好看理论片 | 99久久精品一区二区毛片吞精 | 夜夜爆操 | 欧美性另类 | 毛片免费视频 | 亚洲欧美中文日韩在线v日本 | 在线免费观看成人 | 国产欧美精品一区二区 | 一级做a爰片性色毛片16美国 | 久久精品一区 | 亚洲国产精品福利 | 精品视频导航 | 亚洲精品一区二区三区免 | 免费看大片bbbb欧美 | av资源网站| 日韩一区在线观看视频 | 亚洲一区二区三区视频 | 午夜影院普通用户体验区 | 日本天天色 | 国产精品免费一区二区三区四区 | 国产一区二区电影网 |