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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3075|回復: 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背光
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:289495 發表于 2018-11-12 08:04 | 只看該作者
已解決
回復

使用道具 舉報

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

使用道具 舉報

地板
ID:289495 發表于 2018-3-29 11:14 | 只看該作者
lcd寄存器的配置不是廠商提供的,但是和網上查的配置基本一樣,不知道有沒有影響
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜国产一区 | 国产精品一区二区在线免费观看 | 日本一区二区三区在线观看 | 欧美一区不卡 | 天天综合网天天综合 | 精品国产一区二区三区av片 | 欧美性猛交一区二区三区精品 | 国产黄色一级电影 | 久久精品91久久久久久再现 | 亚洲一区在线日韩在线深爱 | 欧美成视频 | 亚洲精品在线视频 | 一级毛片在线看 | 成人国产精品免费观看视频 | 国产一区二区久久久 | 国产精品久久久久久久久久三级 | 亚洲成人一区二区三区 | 在线看av的网址 | 欧美激情精品久久久久久免费 | 国产精品视频一区二区三区 | 日本欧美在线视频 | 一区二区三区国产 | 国产91av视频在线观看 | 丁香六月激情 | 国产精品一区二区三区久久久 | 欧美一级欧美三级在线观看 | 综合久久久 | 日韩人体在线 | 午夜色播 | 天天综合久久网 | 曰韩一二三区 | 欧美一级在线免费观看 | 国产999精品久久久久久绿帽 | 久久国产精品72免费观看 | 亚洲精品久久久 | 日韩一区二区在线观看视频 | 亚洲一级在线 | 在线伊人网 | 国产成人综合在线 | 91成人在线视频 | 亚洲欧美日韩电影 |