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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4379|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

關(guān)于普中LCD12864液晶顯示屏用stm32F4驅(qū)動,為什么沒有顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:251118 發(fā)表于 2019-1-12 00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

源文件
/**************************************************/
#include "lcd12864.h"
#include "font.h"
#include "photo.h"


void GPIO_init_LCD(void)
{

        RCC->AHB1ENR |= 1<<4;//GPIOE時鐘使能
        RCC->AHB1ENR |= 1<<5;//GPIOE時鐘使能
        RCC->AHB1ENR |= 1<<6;//GPIOG時鐘使能
        //cs/rest
        GPIOG->MODER&=~(3<<(0*2));
        GPIOG->MODER&=~(3<<(1*2));
    GPIOG->MODER|=(1<<0);
        GPIOG->MODER|=(1<<1);   //輸出模式
        //開漏輸出
        GPIOG->OTYPER |=1<<0;
        GPIOG->OTYPER |=1<<1;
        //50MHZ
        GPIOG->OSPEEDR&=~(3<<(0*2));
        GPIOG->OSPEEDR&=~(3<<(1*2));
    GPIOG->OSPEEDR|=(2<<(0*2));
        GPIOG->OSPEEDR|=(2<<(1*2));
       
        //data
//        GPIOE->MODER&=~(3<<(0*2));
//        GPIOE->MODER&=~(3<<(1*2));
//        GPIOE->MODER&=~(3<<(2*2));
//        GPIOE->MODER&=~(3<<(3*2));
//        GPIOE->MODER&=~(3<<(4*2));
//        GPIOE->MODER&=~(3<<(5*2));
//        GPIOE->MODER&=~(3<<(6*2));
//        GPIOE->MODER&=~(3<<(7*2));
//       
//        GPIOE->MODER|=(1<<(0*2));
//        GPIOE->MODER|=(1<<(1*2));
//        GPIOE->MODER|=(1<<(2*2));
//        GPIOE->MODER|=(1<<(3*2));
//        GPIOE->MODER|=(1<<(4*2));
//        GPIOE->MODER|=(1<<(5*2));
//        GPIOE->MODER|=(1<<(6*2));
//        GPIOE->MODER|=(1<<(7*2));
//       
//        GPIOE->OTYPER|=(1<<(0));
//        GPIOE->OTYPER|=(1<<(1));
//        GPIOE->OTYPER|=(1<<(2));
//        GPIOE->OTYPER|=(1<<(3));
//        GPIOE->OTYPER|=(1<<(4));
//        GPIOE->OTYPER|=(1<<(5));
//        GPIOE->OTYPER|=(1<<(6));
//        GPIOE->OTYPER|=(1<<(7));
//       
//       
//        GPIOE->OSPEEDR&=~(3<<(0*2));
//        GPIOE->OSPEEDR&=~(3<<(1*2));
//        GPIOE->OSPEEDR&=~(3<<(2*2));
//        GPIOE->OSPEEDR&=~(3<<(3*2));
//        GPIOE->OSPEEDR&=~(3<<(4*2));
//        GPIOE->OSPEEDR&=~(3<<(5*2));
//        GPIOE->OSPEEDR&=~(3<<(6*2));
//        GPIOE->OSPEEDR&=~(3<<(7*2));
//       
//        GPIOE->OSPEEDR|=(2<<(0*2));
//        GPIOE->OSPEEDR|=(2<<(1*2));
//        GPIOE->OSPEEDR|=(2<<(2*2));
//        GPIOE->OSPEEDR|=(2<<(3*2));
//        GPIOE->OSPEEDR|=(2<<(4*2));
//        GPIOE->OSPEEDR|=(2<<(5*2));
//        GPIOE->OSPEEDR|=(2<<(6*2));
//        GPIOE->OSPEEDR|=(2<<(7*2));
       
        GPIOE->MODER&=~(3<<(8*2));
        GPIOE->MODER&=~(3<<(9*2));
        GPIOE->MODER&=~(3<<(10*2));
        GPIOE->MODER&=~(3<<(11*2));
        GPIOE->MODER&=~(3<<(12*2));
        GPIOE->MODER&=~(3<<(13*2));
        GPIOE->MODER&=~(3<<(14*2));
        GPIOE->MODER&=~(3<<(15*2));
       
        GPIOE->MODER|=(1<<(8*2));
        GPIOE->MODER|=(1<<(9*2));
        GPIOE->MODER|=(1<<(10*2));
        GPIOE->MODER|=(1<<(11*2));
        GPIOE->MODER|=(1<<(12*2));
        GPIOE->MODER|=(1<<(13*2));
        GPIOE->MODER|=(1<<(14*2));
        GPIOE->MODER|=(1<<(15*2));
        /*
        GPIOE->OTYPER|=(1<<(8));
        GPIOE->OTYPER|=(1<<(9));
        GPIOE->OTYPER|=(1<<(10));
        GPIOE->OTYPER|=(1<<(11));
        GPIOE->OTYPER|=(1<<(12));
        GPIOE->OTYPER|=(1<<(13));
        GPIOE->OTYPER|=(1<<(14));
        GPIOE->OTYPER|=(1<<(15));
       
        */
        GPIOE->OSPEEDR&=~(3<<(8*2));
        GPIOE->OSPEEDR&=~(3<<(9*2));
        GPIOE->OSPEEDR&=~(3<<(10*2));
        GPIOE->OSPEEDR&=~(3<<(11*2));
        GPIOE->OSPEEDR&=~(3<<(12*2));
        GPIOE->OSPEEDR&=~(3<<(13*2));
        GPIOE->OSPEEDR&=~(3<<(14*2));
        GPIOE->OSPEEDR&=~(3<<(15*2));
       
        GPIOE->OSPEEDR|=(2<<(8*2));
        GPIOE->OSPEEDR|=(2<<(9*2));
        GPIOE->OSPEEDR|=(2<<(10*2));
        GPIOE->OSPEEDR|=(2<<(11*2));
        GPIOE->OSPEEDR|=(2<<(12*2));
        GPIOE->OSPEEDR|=(2<<(13*2));
        GPIOE->OSPEEDR|=(2<<(14*2));
        GPIOE->OSPEEDR|=(2<<(15*2));
       
       
        GPIOE->PUPDR&=~(3<<(8*2));
        GPIOE->PUPDR&=~(3<<(9*2));
        GPIOE->PUPDR&=~(3<<(10*2));
        GPIOE->PUPDR&=~(3<<(11*2));
        GPIOE->PUPDR&=~(3<<(12*2));
        GPIOE->PUPDR&=~(3<<(13*2));
        GPIOE->PUPDR&=~(3<<(14*2));
        GPIOE->PUPDR&=~(3<<(15*2));
       
        GPIOE->PUPDR|=(1<<(8*2));
        GPIOE->PUPDR|=(1<<(9*2));
        GPIOE->PUPDR|=(1<<(10*2));
        GPIOE->PUPDR|=(1<<(11*2));
        GPIOE->PUPDR|=(1<<(12*2));
        GPIOE->PUPDR|=(1<<(13*2));
        GPIOE->PUPDR|=(1<<(14*2));
        GPIOE->PUPDR|=(1<<(15*2));
       
       
       
        //rs/wr/rd
        GPIOF->MODER&=~(3<<(12*2));
        GPIOF->MODER&=~(3<<(13*2));
        GPIOF->MODER&=~(3<<(14*2));
        GPIOF->MODER&=~(3<<(15*2));
       
        GPIOF->MODER|=(1<<(12*2));
        GPIOF->MODER|=(1<<(13*2));
        GPIOF->MODER|=(1<<(14*2));
        GPIOF->MODER|=(1<<(15*2));
       
        GPIOF->OTYPER|=(1<<(12));
        GPIOF->OTYPER|=(1<<(13));
        GPIOF->OTYPER|=(1<<(14));
        GPIOF->OTYPER|=(1<<(15));
       
        GPIOF->OSPEEDR&=~(3<<(12*2));
        GPIOF->OSPEEDR&=~(3<<(13*2));
        GPIOF->OSPEEDR&=~(3<<(14*2));
        GPIOF->OSPEEDR&=~(3<<(15*2));
       
        GPIOF->OSPEEDR|=(2<<(12*2));
        GPIOF->OSPEEDR|=(2<<(13*2));
        GPIOF->OSPEEDR|=(2<<(14*2));
        GPIOF->OSPEEDR|=(2<<(15*2));
       
       

       
       
       
       
       
}






void LCD12864_Write(u8 data_send,u8 cd)
{
        u16 dat1;
      LCD_CS = 0;   //打開片選 低電平有效

      LCD_RD = 1;   //讀失能

     LCD_RS = cd;   //選擇命令/或者數(shù)據(jù)     0/命令 1/數(shù)據(jù)

      LCD_WR = 0;   //選擇寫模式
         delay_us(2);

       
        /*
        dat1=data_send<<8;
        GPIOE->BSRRH=dat1;
        data_send=~data_send;
        dat1=data_send<<8;
        GPIOE->BSRRH=dat1;
        */
       
        GPIOE->ODR &=data_send|0x00;;
       
        delay_us(2);

       
     LCD_WR = 1;  //寫入命令

}
///////////////////////////////
//函數(shù)功能:lcd12864的初始化
//函數(shù)類型:無
//函數(shù)返回值:無
//函數(shù)參數(shù):無
///////////////////////////////
void LCD12864_Init(void)
{
       
         
    u8 i;
       
        GPIO_init_LCD();
         delay_us(100);
    LCD_RSET = 0;       //復(fù)位
    delay_us(500);
    LCD_CS = 0;            //選中
        delay_us(100);
    LCD_RSET = 1;          //禁止復(fù)位


    /*----------------------------------------*/
     //軟復(fù)位
    LCD12864_Write(0xE2,0);        
    delay_us(400);

    //左右方向       0XA1 反方向  0XA0 正常方向
    LCD12864_Write(0xA0,0);


    //上下方向       0XC8反方向   0XC0正常方向
    LCD12864_Write(0XC8,0);

    //設(shè)置字體顏色及背景顏色         0xA6黑字白底 0XAE相反
    LCD12864_Write(0XA6,0);

    //像素顯示 0xA4 正常  0xA5 全開
    LCD12864_Write(0xA4,0);

    //偏壓設(shè)置
     LCD12864_Write(0xA2,0);


     //雙字節(jié)命令
     LCD12864_Write(0xF8,0);
     LCD12864_Write(0x01,0);

     //設(shè)置背景光對比度
     LCD12864_Write(0x81,0);
     LCD12864_Write(0x21,0);

    //調(diào)節(jié)電阻率
     LCD12864_Write(0x25,0);

     //電源設(shè)置
     LCD12864_Write(0x2f,0);
delay_us(400);

     //設(shè)置顯示開始的位置
      LCD12864_Write(0x40,0);

      //開啟顯示命令
      LCD12864_Write(0xAF,0);
delay_us(400);

     LCD12864_Clean_all(0xFF);


}


void LCD12864_Clean_all(u8 data_sent)
{
u8  i,j;
for(i=0;i<8;i++)
{
LCD12864_Write(0xB0+i,0);              //設(shè)置Y坐標(biāo)

LCD12864_Write(0x10,0);             //設(shè)置X坐標(biāo) (高位)   寫數(shù)據(jù)自動加1
LCD12864_Write(0x00,0);             //低位

for(j=0;j<128;j++)
LCD12864_Write(data_sent,1);

}
}

  //列16行   //行4
void LCD_Showchar(u8 x,u8 y,u8 num)
{
       u8 i,j;
       u8 x0_l;
       u8 x0_h;

      y=0xb0+y*2;



       x*=8;
      x0_h=0x10|((x&0xf0)>>4);
      x0_l=0x00|(x&0x0f);
      ////////////////////////
      //下面是一般設(shè)定法設(shè)定光標(biāo)位置
        /*
       switch(x)
       {
            case 0:
            x0_h=0x10;
            x0_l=0x00;
            break;
            case 1:
            x0_h=0x10;
            x0_l=0x08;
            break;
            case 2:
            x0_h=0x11;
            x0_l=0x00;
            break;
            case 3:
            x0_h=0x11;
            x0_l=0x08;
            break;
            case 4:
            x0_h=0x12;
            x0_l=0x00;
            break;
            case 5:
            x0_h=0x12;
            x0_l=0x08;
            break;
            case 6:
            x0_h=0x13;
            x0_l=0x00;
            break;
            case 7:
            x0_h=0x13;
            x0_l=0x08;
            break;
            case 8:
            x0_h=0x14;
            x0_l=0x00;
            break;
            case 9:
            x0_h=0x14;
            x0_l=0x08;
            break;
            case 10:
            x0_h=0x15;
            x0_l=0x00;
            break;
            case 11:
            x0_h=0x15;
            x0_l=0x08;
            break;
            case 12:
            x0_h=0x16;
            x0_l=0x00;
            break;
            case 13:
            x0_h=0x16;
            x0_l=0x08;
            break;
            case 14:
            x0_h=0x17;
            x0_l=0x00;
            break;
            case 15:
            x0_h=0x17;
            x0_l=0x08;
            break;
            case 16:
            x0_h=0x18;
            x0_l=0x00;
            break;

        }  */
      num =num-' ';
      //--設(shè)置Y坐標(biāo)--//          
    for (i=0;i<2;i++)   
        {  
                //--設(shè)置X坐標(biāo)--//


        LCD12864_Write(x0_h,0);
                LCD12864_Write(x0_l,0);



            LCD12864_Write(y+i,0);

                for(j=0; j<8; j++)
                {
                LCD12864_Write(ascii[num][i*8+j],1);        
                }
        }

   }





   void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
//顯示字符串
//x,y:起點坐標(biāo)
//width,height:區(qū)域大小  
//size:字體大小
//*p:字符串起始地址                  
void LCD_ShowString_12864(u16 x,u16 y,u8 *p)
{         
        //u8 x0=x;
    while((*p<='~')&&(*p>=' '))//判斷是不是非法字符!
    {    /*   
        if(x>=width){x=x0;y+=size;}
        if(y>=height)break;//退出  */
        LCD_Showchar(x,y,*p);
        //x+=16/2;
        x++;
        p++;
         //Delay10ms(10);
    }  
}



頭文件



#ifndef _LCD12864_H
#define _LCD12864_H

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#define   stm_mcu




#ifndef u8
#define u8 unsigned char
#endif

#ifndef u16
#define u16 unsigned int
#endif

//#ifdef my_mcu

//#include <reg51.h>
//#include "intrins.h"
//#define LCD_DATA   P1       //數(shù)據(jù)接口
////控制端口
//sbit LCD_RS  =     P2^3;          //命令數(shù)據(jù)控制端口
//sbit LCD_RD  =     P2^4;           //讀寫控制端口
//sbit LCD_WR  =     P2^5;          //讀寫模式選擇端口 0寫 1讀   0->1寫入數(shù)據(jù)配合寫模式
//sbit LCD_RSET=     P2^6;           //復(fù)位端口
//sbit LCD_CS  =     P2^7;          //片選端口
//#endif



//#ifdef Pz_mcu
//#include "reg51.h"
//#include "intrins.h"
//#define LCD_DATA P0
//sbit LCD_CS   = P3^2;
//sbit LCD_RSET = P3^3;
//sbit LCD_RS   = P2^6;
//sbit LCD_WR   = P2^7;
//sbit LCD_RD   = P2^5;
//#endif


#ifdef stm_mcu

//#define LCD_DATA PEout(0)|PEout(1)|PEout(2)|PEout(3)|PEout(4)|PEout(5)|PEout(6)|PEout(7)
#define LCD_CS   PGout(1)
#define LCD_RSET PGout(0)
#define LCD_RS   PFout(12)
#define LCD_WR   PFout(15)
#define LCD_RD   PFout(13)
void GPIO_init_LCD(void);

#endif



void LCD12864_Write(u8 data_send,u8 cd);         //寫函數(shù)  cd 0命令  1數(shù)據(jù)
void LCD12864_Init(void);                 //初始化
void LCD12864_Clean_all(u8 data_send);       //清屏函數(shù)   0x00 白 0xff 黑
void LCD_Showchar(u8 x,u8 y,u8 num);
void LCD_ShowString_12864(u16 x,u16 y,u8 *p);
void Delay10ms(unsigned int c);   //誤差 0us




#endif


微信圖片_20190111235906.jpg (57.67 KB, 下載次數(shù): 36)

微信圖片_20190111235906.jpg

評分

參與人數(shù) 1黑幣 +8 收起 理由
菜雞一只314159 + 8 贊一個!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:96682 發(fā)表于 2019-1-12 10:37 | 只看該作者
難道這貨就如手機店柜臺上擺放的那種玩具屏幕?
回復(fù)

使用道具 舉報

板凳
ID:454000 發(fā)表于 2019-1-14 14:29 | 只看該作者
第1,這個是mini無字庫型12864,所以要加字庫文件。要加這一個 st7565.h
第2,這款的PIN要反過來插才是對的,看下面的圖

2323.jpg (263.51 KB, 下載次數(shù): 32)

2323.jpg

評分

參與人數(shù) 5黑幣 +107 收起 理由
鉆牛尖滴劉尖尖 + 15
sheng7533967 + 15
Sawardeakar + 35
yoxi + 12 很給力!
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:251118 發(fā)表于 2019-1-14 21:55 | 只看該作者
shuisheng 發(fā)表于 2019-1-14 14:29
第1,這個是mini無字庫型12864,所以要加字庫文件。要加這一個 st7565.h
第2,這款的PIN要反過來插才是對 ...

已經(jīng)加了字庫了,在51單片機是可以的,但是移植到32就這樣了

評分

參與人數(shù) 1黑幣 +8 收起 理由
菜雞一只314159 + 8

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产黄 | 黄久久久 | 一区二区三区在线播放 | 亚洲天堂中文字幕 | 国产精品一区二区视频 | 一本色道精品久久一区二区三区 | 在线免费观看色 | 中文字幕视频三区 | 日本特黄特色aaa大片免费 | 国产视频h | 国产婷婷在线视频 | 日韩a在线 | 91精品国产91久久综合桃花 | 一区视频在线免费观看 | 欧美成人免费电影 | 久久久久免费观看 | 国产一区亚洲二区三区 | 日韩精品一区二区三区视频播放 | 久久av一区二区三区 | 日韩视频一区二区 | www4虎| 免费观看羞羞视频网站 | 四虎网站在线观看 | 一区二区三区亚洲 | 欧美日韩亚洲三区 | 久久精品国产免费高清 | 国产91九色| 久久精品一级 | 日本免费一区二区三区四区 | 久久小视频 | av一区二区三区 | 18性欧美 | 国产丝袜一区二区三区免费视频 | 熟女毛片| 在线欧美 | 久久久久国产精品 | 精品久久久一区二区 | 精品视频一区二区三区 | 亚洲视频 欧美视频 | 1204国产成人精品视频 | 日本三级在线 |