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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3772|回復: 1
打印 上一主題 下一主題
收起左側

STM32驅動 LCD12864程序代碼(串行方式)

[復制鏈接]
跳轉到指定樓層
樓主
ID:479936 發表于 2019-7-30 21:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
引言:

這里我們只講解接線和代碼實現,具體的原理在上一篇博客中已經講解,如果想了解具體原理可以查看上一篇博客

《STM32 LCD12864 串行通信模式 (從原理讓你理解)》https://blog.csdn.net/as480133937/article/details/97650805

下方代碼的實現也是基于上一篇的講解順序來的     

設備: STM32F407ZGT6


引腳接線:

    VSS——GND

     VDD——VCC(5V or 3.3V)

     CS ——接VCC,持續高電平,一直選通。

     SID ——接PE0

     SCLK  ——接PE1

     PSB——接GND  串行模式  或者飛線與1腳相連

     BLA——VCC(5V or 3.3V)   或者飛線與2腳相連

     BLK——接GND                 或者飛線與1腳相連

              剩余引腳不接,留空

   這樣我們最少只會用到4根線  VCC電源 GND地線  SID串行輸入  SCLK  時鐘  便可以實現串行通信LCD寫入一個字節:


#define WRITE_CMD        0xF8//寫命令  

#define WRITE_DAT        0xFA//寫數據

/*!

*  @brief      LCD串行發送一個字節

*  @since      v1.0

*  @param  byte   寫入字節

*  @author     Z小旋

*/

void SendByte(u8 byte)

{

     u8 i;

          for(i = 0;i < 8;i++)

    {

        if((byte << i) & 0x80)  //0x80(1000 0000)  只會保留最高位

                {

                    SID = 1;           // 引腳輸出高電平,代表發送1

                }

                else

                {

                        SID = 0;         // 引腳輸出低電平,代表發送0

                }

                /*或               

                SID =        (Dbyte << i) & 0x80;

                                

                上面那樣為了方便理解

                */

                SCLK = 0;   //時鐘線置低  允許SID變化

                delay_us(5); //延時使數據寫入

                SCLK = 1;    //拉高時鐘,讓從機讀SID

        }   

}

/*!

*  @brief      LCD寫指令

*  @since      v1.0

*  @param  Cmd   要寫入的指令

*  @author     Z小旋

*/

void Lcd_WriteCmd(u8 Cmd )

{

     delay_ms(1);    //由于我們沒有寫LCD正忙的檢測,所以直接延時1ms,使每次寫入數據或指令間隔大于1ms 便可不用寫忙狀態檢測

     SendByte(WRITE_CMD);            //11111,RW(0),RS(0),0   

     SendByte(0xf0&Cmd);      //高四位

     SendByte(Cmd<<4);   //低四位(先執行<<)

}

/*!

*  @brief      LCD寫數據

*  @since      v1.0

*  @param  Dat   要寫入的數據

*  @author     Z小旋

*/

void Lcd_WriteData(u8 Dat )

{

     delay_ms(1);     //由于我們沒有寫LCD正忙的檢測,所以直接延時1ms,使每次寫入數據或指令間隔大于1ms 便可不用寫忙狀態檢測

     SendByte(WRITE_DAT);            //11111,RW(0),RS(1),0

     SendByte(0xf0&Dat);      //高四位

     SendByte(Dat<<4);   //低四位(先執行<<)

}

向LCD發送一個字節,也就是SID引腳相對于高低電平 高電平=1 低電平=0  同時時鐘線變化,使得數據可以讀取和發送

結合第一篇原理介紹即可理解。


關于&運算與<<  參看  《C語言運算符與操作符的用法全面匯總(非常有用)》

LCD初始化:

這里為了方便移植,將GPIO的初始化與LCD初始化分為兩個,使用時根據自己的引腳只修改GPIO初始化即可


宏定義和GPIO初始化:


#define WRITE_CMD        0xF8//寫命令  

#define WRITE_DAT        0xFA//寫數據

//接口(SID: PE1  SCLK: PE0)

#define SID PEout(1)

#define SCLK PEout(0)/*!

*  @brief      GPIO_init

*  @since      v1.0

*  @param  None

*  @author     Z小旋

*  使用時自行修改這里的初始化即可

*/

void lcd_GPIO_init()

{

       GPIO_InitTypeDef  GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOE時鐘

  //GPIOE0,E1初始化設置

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

  GPIO_InitStructure.GPIO_PuPd =  GPIO_PuPd_NOPULL;//無上拉

  GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化

  SID=1;

  SCLK=1;

}

根據不同的型號和管腳修改對應初始化即可

LCD初始化:

/*!

*  @brief      LCD初始化

*  @since      v1.0

*  @param  None

*  @author     Z小旋

*/

void Lcd_Init(void)

{

    delay_ms(50);           //等待液晶自檢(延時>40ms)

        Lcd_WriteCmd(0x30);        //功能設定:選擇基本指令集  ,選擇8bit數據流

    delay_ms(1);//延時>137us

    Lcd_WriteCmd(0x0c);        //開顯示

    delay_ms(1);        //延時>100us

    Lcd_WriteCmd(0x01);        //清除顯示,并且設定地址指針為00H

    delay_ms(30);        //延時>10ms

        Lcd_WriteCmd(0x06);        //每次地址自動+1,初始化完成

}


有點太多了,還要重新排版,有需要的話直接看下下面的把

《STM32驅動 LCD12864程序代碼(串行方式)》




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

使用道具 舉報

沙發
ID:442220 發表于 2019-7-31 14:49 | 只看該作者
讓我回去試試看。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美在线播放 | 久久99国产精品 | 日本精品一区二区三区视频 | 色婷婷国产精品综合在线观看 | 欧美一级黄色片免费观看 | 精品伊人| 一区二区三区免费在线观看 | 日本在线播放一区二区 | 久在线视频播放免费视频 | 亚洲一区二区在线电影 | 精品亚洲一区二区三区四区五区高 | 成人精品免费 | 亚洲国产成人精品女人 | 成人欧美一区二区三区在线播放 | 96国产精品久久久久aⅴ四区 | 亚洲aⅴ | 日韩和的一区二区 | 黄色免费网址大全 | 91久久国产综合久久 | av网站在线播放 | 日韩精品专区在线影院重磅 | 成人午夜在线 | 日韩av在线中文字幕 | 在线中文字幕av | 亚洲天堂男人的天堂 | av片免费| 国产一区免费 | 国产一区二区三区 | 日本三级电影在线观看视频 | 国产精品不卡 | 欧洲免费毛片 | 欧美成人手机在线 | 欧美日韩精品在线免费观看 | 综合中文字幕 | 5060网一级毛片 | 欧美日韩一区二区三区四区五区 | 色综合桃花网 | 久久99深爱久久99精品 | 91性高湖久久久久久久久_久久99 | 国产最新视频在线 | 成人依人 |