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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

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

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

下方代碼的實現(xiàn)也是基于上一篇的講解順序來的     

設(shè)備: STM32F407ZGT6


引腳接線:

    VSS——GND

     VDD——VCC(5V or 3.3V)

     CS ——接VCC,持續(xù)高電平,一直選通。

     SID ——接PE0

     SCLK  ——接PE1

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

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

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

              剩余引腳不接,留空

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


#define WRITE_CMD        0xF8//寫命令  

#define WRITE_DAT        0xFA//寫數(shù)據(jù)

/*!

*  @brief      LCD串行發(fā)送一個字節(jié)

*  @since      v1.0

*  @param  byte   寫入字節(jié)

*  @author     Z小旋

*/

void SendByte(u8 byte)

{

     u8 i;

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

    {

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

                {

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

                }

                else

                {

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

                }

                /*或               

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

                                

                上面那樣為了方便理解

                */

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

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

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

        }   

}

/*!

*  @brief      LCD寫指令

*  @since      v1.0

*  @param  Cmd   要寫入的指令

*  @author     Z小旋

*/

void Lcd_WriteCmd(u8 Cmd )

{

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

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

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

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

}

/*!

*  @brief      LCD寫數(shù)據(jù)

*  @since      v1.0

*  @param  Dat   要寫入的數(shù)據(jù)

*  @author     Z小旋

*/

void Lcd_WriteData(u8 Dat )

{

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

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

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

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

}

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

結(jié)合第一篇原理介紹即可理解。


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

LCD初始化:

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


宏定義和GPIO初始化:


#define WRITE_CMD        0xF8//寫命令  

#define WRITE_DAT        0xFA//寫數(shù)據(jù)

//接口(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初始化設(shè)置

  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;

}

根據(jù)不同的型號和管腳修改對應(yīng)初始化即可

LCD初始化:

/*!

*  @brief      LCD初始化

*  @since      v1.0

*  @param  None

*  @author     Z小旋

*/

void Lcd_Init(void)

{

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

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

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

    Lcd_WriteCmd(0x0c);        //開顯示

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

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

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

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

}


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

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




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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人精品 | 成年人免费网站 | 91精品久久久久久久久久入口 | 一区二区免费高清视频 | 欧美日韩视频 | 国产精品一区二区久久久久 | 怡红院怡春院一级毛片 | 中文字幕一区二区三区日韩精品 | 九久久 | 亚洲一区二区日韩 | 国产一区二区三区亚洲 | 欧美日韩免费在线 | 日韩欧美一区在线 | 欧美一区二区免费视频 | 高清国产一区二区 | 国产亚洲精品久久久久动 | 欧美中文字幕一区二区三区亚洲 | 欧美久久精品一级黑人c片 91免费在线视频 | 久久高清国产 | 亚洲欧美aⅴ | 亚洲色欲色欲www | 性一交一乱一伦视频免费观看 | 国产精品成人在线播放 | 中文字幕av网| 欧美视频二区 | 亚洲性人人天天夜夜摸 | 一区二区三区四区在线 | 亚洲欧美国产一区二区三区 | 久久亚洲视频 | 久久久青草婷婷精品综合日韩 | 亚洲精品久久久一区二区三区 | 国产一区二区三区四区三区四 | 天天综合网天天综合 | 一区二区三区 在线 | 婷婷激情综合 | 国产精品久久久久久久久久免费看 | 在线免费国产 | 国产福利在线看 | 日韩免费网| 久久亚洲一区 | 免费网站国产 |