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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3409|回復: 2
收起左側

STM32驅動LCD12864程序

[復制鏈接]
ID:495367 發表于 2019-9-21 17:02 | 顯示全部樓層 |閱讀模式
LCD12864單片機源程序如下:
  1. #include "lcd12864.H"
  2. #include "delay.h"

  3. /*!
  4. *  @brief      GPIO_init
  5. *  @since      v1.0
  6. *  @param  None
  7. *  @author     Z小旋
  8. *  使用時自行修改這里的初始化即可
  9. */
  10. void lcd_GPIO_init()
  11. {
  12.       
  13.   GPIO_InitTypeDef  GPIO_InitStructure;

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

  15.   //GPIOE0,E1初始化設置
  16.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
  17.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式
  18.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
  19.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  20.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//無上拉
  21.   GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化
  22.   SID=1;
  23.   SCLK=1;
  24. }

  25. /* 字符顯示RAM地址    4行8列 */
  26. u8 LCD_addr[4][8]={
  27.         {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87},                  //第一行
  28.         {0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97},                //第二行
  29.         {0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F},                //第三行
  30.         {0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F}                //第四行
  31.         };






  32. /*!
  33. *  @brief      LCD串行發送一個字節
  34. *  @since      v1.0
  35. *  @param  byte   寫入字節
  36. *  @author     Z小旋
  37. */
  38. void SendByte(u8 byte)
  39. {
  40.      u8 i;
  41.           for(i = 0;i < 8;i++)
  42.     {
  43.                         if((byte << i) & 0x80)  //0x80(1000 0000)  只會保留最高位
  44.                         {
  45.                                 SID = 1;           // 引腳輸出高電平,代表發送1
  46.                         }
  47.                         else
  48.                         {
  49.                                 SID = 0;         // 引腳輸出低電平,代表發送0
  50.                         }
  51.                 /*或               
  52.                         SID =        (Dbyte << i) & 0x80;
  53.                                
  54.                         上面那樣為了方便理解
  55.                 */
  56.                         SCLK = 0;   //時鐘線置低  允許SID變化
  57.                         delay_us(5); //延時使數據寫入
  58.                         SCLK = 1;    //拉高時鐘,讓從機讀SID
  59.                 }   
  60. }


  61. /*!
  62. *  @brief      LCD寫指令
  63. *  @since      v1.0
  64. *  @param  Cmd   要寫入的指令
  65. *  @author     Z小旋
  66. */
  67. void Lcd_WriteCmd(u8 Cmd )
  68. {
  69.      delay_ms(1);     //由于我們沒有寫LCD正忙的檢測,所以直接延時1ms,使每次寫入數據或指令間隔大于1ms 便可不用寫忙狀態檢測
  70.      SendByte(WRITE_CMD);            //11111,RW(0),RS(0),0   
  71.      SendByte(0xf0&Cmd);      //高四位
  72.      SendByte(Cmd<<4);   //低四位(先執行<<)
  73. }

  74. /*!
  75. *  @brief      LCD寫數據
  76. *  @since      v1.0
  77. *  @param  Dat   要寫入的數據
  78. *  @author     Z小旋
  79. */
  80. void Lcd_WriteData(u8 Dat )
  81. {
  82.      delay_ms(1);     
  83.      SendByte(WRITE_DAT);            //11111,RW(0),RS(1),0
  84.      SendByte(0xf0&Dat);      //高四位
  85.      SendByte(Dat<<4);   //低四位(先執行<<)
  86. }
  87. /*!
  88. *  @brief      LCD初始化
  89. *  @since      v1.0
  90. *  @param  None
  91. *  @author     Z小旋
  92. */
  93. void Lcd_Init(void)
  94. {
  95. delay_ms(50);           //等待液晶自檢(延時>40ms)
  96.         Lcd_WriteCmd(0x30);        //功能設定:選擇基本指令集
  97. delay_ms(1);//延時>100us
  98.         Lcd_WriteCmd(0x30);        //功能設定:選擇8bit數據流
  99. delay_ms(1);        //延時>37us
  100.     Lcd_WriteCmd(0x0c);        //開顯示
  101. delay_ms(1);        //延時>100us
  102.     Lcd_WriteCmd(0x01);        //清除顯示,并且設定地址指針為00H
  103. delay_ms(30);        //延時>10ms
  104.                 Lcd_WriteCmd(0x06);        //進入設定點,初始化完成
  105. }


  106. /*!
  107. *  @brief      顯示字符或漢字
  108. *  @since      v1.0
  109. *  @param  x: row(0~3)
  110. *  @param  y: line(0~7)
  111. *  @param         str: 要顯示的字符或漢字
  112. *  @author     Z小旋
  113. */
  114. void LCD_Display_Words(uint8_t x,uint8_t y,uint8_t*str)
  115. {
  116.         Lcd_WriteCmd(LCD_addr[x][y]); //寫初始光標位置
  117.         while(*str>0)
  118.     {
  119.       Lcd_WriteData(*str);    //寫數據
  120.       str++;     
  121.     }
  122. }
  123. /*!
  124. *  @brief      顯示圖片
  125. *  @since      v1.0
  126. *  @param  *pic   圖片地址
  127. *  @author     
  128. */
  129. void LCD_Display_Picture(uint8_t *img)
  130.         {
  131.                 uint8_t x,y,i;
  132.                 Lcd_WriteCmd(0x34);                //切換到擴充指令
  133.                 Lcd_WriteCmd(0x34);                //關閉圖形顯示
  134.                 for(i = 0; i < 1; i++)   //上下屏寫入
  135.                 {
  136.                         for(y=0;y<32;y++)   //垂直Y寫32次
  137.                         {  
  138.                                 for(x=0;x<8;x++)   //橫向X寫8次
  139.                                 {
  140.                                         Lcd_WriteCmd(0x80 + y);                //行地址
  141.                                         Lcd_WriteCmd(0x80 + x+i);                //列地址
  142.                                         Lcd_WriteData(*img ++);                //寫高位字節數據 D15-D8   
  143.                                         Lcd_WriteData(*img ++);                //寫低位字節數據 D7-D0
  144.                                 }
  145.                         }
  146.                 }
  147.                 Lcd_WriteCmd(0x36);//打開圖形顯示               
  148.                 Lcd_WriteCmd(0x30);        //切換回基本指令
  149.         }       
  150. /*!
  151. *  @brief      清屏函數
  152. *  @since      v1.0
  153. *  @param  None
  154. *  @author     Z小旋
  155. */
  156. void LCD_Clear(void)
  157.         {
  158.                 Lcd_WriteCmd(0x01);                        //清屏指令
  159.                 delay_ms(2);                                //延時以待液晶穩定【至少1.6ms】
  160.         }
  161.        
復制代碼

所有資料51hei提供下載:
STM32 LCD12864 -Z小旋.7z (308.63 KB, 下載次數: 93)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:381035 發表于 2020-3-31 17:13 | 顯示全部樓層
你好,請問有接線圖嗎
回復

使用道具 舉報

ID:592475 發表于 2020-4-1 09:19 | 顯示全部樓層
Robust 發表于 2020-3-31 17:13
你好,請問有接線圖嗎

程序里面不都寫的很清楚了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品久久 | 波多野结衣av中文字幕 | www国产成人免费观看视频,深夜成人网 | 国产欧美一区二区在线观看 | 国产一在线观看 | 中文字幕亚洲一区二区三区 | 伊人二区 | 久久精品色视频 | 欧美视频在线播放 | 午夜精品一区二区三区在线视频 | 国产性网| 中国三级黄色录像 | 亚洲日韩中文字幕一区 | 精品国产乱码久久久久久图片 | www国产亚洲精品 | 国产高清精品在线 | 伊人久久精品 | 久久一热 | 日本天天操 | 日韩精品区 | 成在线人视频免费视频 | 日韩电影中文字幕在线观看 | 视频一区二区在线观看 | aaa天堂| 99精品免费久久久久久久久日本 | 综合精品 | 久久精品国产清自在天天线 | 日本91av视频 | 免费看91| 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 亚洲综合五月天婷婷 | 日韩av一区二区在线观看 | 欧美精品一区二区三区蜜桃视频 | 在线免费观看成人 | 久久精品a| 超碰97免费 | 日日草天天干 | 一区二区三区亚洲精品国 | 性国产xxxx乳高跟 | 亚洲精品久久久一区二区三区 | 国产粉嫩尤物极品99综合精品 |