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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于stm32的帶字庫LCD12864驅動源程序

  [復制鏈接]
跳轉到指定樓層
樓主
基于stm32的LCD12864源程序如下:
  1. #include "stm32f10x.h"
  2. #include"12864.h"
  3. #include"delay.h"        
  4. /************************************************************************************************
  5. //FILE:液晶12864驅動程序
  6. //VERS:1.0
  7. //AUTHOR:福建師范大學林木泉
  8. ************************************************************************************************/
  9. /************************************************************************************************
  10. @f_name: void LCD12864_InitPort(void)
  11. @brief:         初始化硬件端口配置
  12. @param:         None
  13. @return: None
  14. ************************************************************************************************/
  15. void LCD12864_InitPort(void)
  16. {
  17.         GPIO_InitTypeDef  GPIO_InitStructure;        //定義結構體               
  18.         
  19.         RCC_APB2PeriphClockCmd(GPIOCLK|RCC_APB2Periph_AFIO, ENABLE);  //使能功能復用IO時鐘,不開啟復用時鐘不能顯示
  20.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);    //把調試設置普通IO口

  21.         GPIO_InitStructure.GPIO_Pin  = LCD_GPIO_DAT;                //數據口配置成開漏輸出模式,此模式下讀輸入寄存器的值得到IO口狀態
  22.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;   //開漏輸出
  23.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  24.         GPIO_Init(LCD12864_GPIO , &GPIO_InitStructure);    //IO口初始化函數(使能上述配置)

  25.         GPIO_InitStructure.GPIO_Pin  = LCD_GPIO_CMD;
  26.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽輸出   
  27.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  28.         GPIO_Init(LCD12864_GPIO , &GPIO_InitStructure);

  29.         GPIO_Init(LCD12864_GPIO , &GPIO_InitStructure);          //初始化IO口配置
  30.         GPIO_Write(LCD12864_GPIO ,0xffff);         
  31. }
  32. /************************************************************************************************
  33. @f_name: void NOP(void)
  34. @brief:         延時函數
  35. @param:         None
  36. @return: None
  37. ************************************************************************************************/
  38. void NOP(void)
  39. { u8 i;        for(i=0; i<100; i++); }
  40. /************************************************************************************************
  41. @f_name: u8 LCD12864_busy(void)
  42. @brief:         檢測忙狀態
  43. @param:         None
  44. @return: None
  45. ************************************************************************************************/
  46. u8 LCD12864_busy(void)
  47. {
  48.         u8 x;
  49.         LCD_RS(0);
  50.         LCD_RW(1);  
  51.         LCD_EN(1);
  52.         NOP();
  53.         NOP();
  54.         x=Text_Busy;
  55.         LCD_EN(0);
  56.         return x;
  57. }
  58. /************************************************************************************************
  59. @f_name: void LCD12684_Wcmd(u8 dat)
  60. @brief:         寫指令
  61. @param:         u8 dat  輸入指令
  62. @return: None
  63. ************************************************************************************************/
  64. void LCD12684_Wcmd(u8 dat)
  65. {
  66.         while(LCD12864_busy()); //忙檢測
  67.         LCD_RS(0);      
  68.         LCD_RW(0);
  69.         LCD_EN(0);
  70.         NOP();
  71.         NOP();
  72.         LCD_WriteData(dat);         
  73.         NOP();
  74.         NOP();
  75.         LCD_EN(1);
  76.         NOP();
  77.         NOP();
  78.         LCD_EN(0);
  79. }
  80. /************************************************************************************************
  81. @f_name: void LCD12684_Wcmd(u8 dat)
  82. @brief:         寫數據
  83. @param:         u8 dat 輸入數據
  84. @return: None
  85. ************************************************************************************************/
  86. void LCD12684_Wdat(u8 dat)
  87. {
  88.         while(LCD12864_busy()); //忙檢測
  89.         LCD_RS(1);      
  90.         LCD_RW(0);
  91.         LCD_EN(0);
  92.         NOP();
  93.         NOP();
  94.         LCD_WriteData(dat);         
  95.         NOP();
  96.         NOP();
  97.         LCD_EN(1);
  98.         NOP();
  99.         NOP();
  100.         LCD_EN(0);
  101. }
  102. /************************************************************************************************
  103. @f_name: void LCD12864_Init(void)
  104. @brief:         液晶初始化
  105. @param:         None
  106. @return: None
  107. ************************************************************************************************/
  108. void LCD12864_Init(void)
  109. {        
  110.         LCD_PSB(1);   //并口方式   
  111.         LCD_RST(0);   //液晶復位        低電平有效
  112.     delay_ms(3);                  
  113.     LCD_RST(1);          //置高電平等待復位
  114.     delay_ms(3);

  115.         LCD12684_Wcmd(0x34);    //擴充指令操作
  116.     delay_ms(5);
  117.     LCD12684_Wcmd(0x30);    //基本指令操作
  118.     delay_ms(5);
  119.     LCD12684_Wcmd(0x0c);   //顯示開,關光標
  120.     delay_ms(5);
  121.     LCD12684_Wcmd(0x01);   //清除LCD的顯示內容
  122.     delay_ms(5);
  123. }
  124. /************************************************************************************************
  125. @f_name: void LCD12864_Clr(void)
  126. @brief:         清屏
  127. @param:         None
  128. @return: None
  129. ************************************************************************************************/
  130. void LCD12864_Clr(void)
  131. {
  132.         LCD12684_Wcmd(0x34);   //擴充指令操作        “繪圖”
  133.     delay_ms(5);
  134.     LCD12684_Wcmd(0x30);    //基本指令操作
  135.     delay_ms(5);
  136.         LCD12684_Wcmd(0x01);   //清屏
  137.     delay_ms(5);
  138. }
  139. /************************************************************************************************
  140. @f_name: void LCD12864_Pos(u8 x,u8 y)
  141. @brief:         設置顯示位置
  142. @param:         u8 x:X軸    u8 y:Y軸  
  143. @return: None
  144. ************************************************************************************************/
  145. void LCD12864_Pos(u8 x,u8 y)
  146. {
  147.         u8  pos;
  148.         if (x==1)                   {x=0x80;}         
  149.         else if (x==2)         {x=0x90;}        
  150.         else if (x==3)         {x=0x88;}         
  151.         else if (x==4)   {x=0x98;}         
  152.         else x=0x80;
  153.         pos = x+y ;         
  154.         LCD12684_Wcmd(pos);  //顯示地址  
  155. }
  156. /************************************************************************************************
  157. @f_name: void LCD12864_PhotoDis(u8 *bmp)
  158. @brief:         顯示圖形
  159. @param:         u8 *bmp 圖形數組
  160. @return: None
  161. ************************************************************************************************/
  162. void LCD12864_PhotoDis(u8 *bmp)
  163. {
  164.         u8 i,j;
  165.         LCD12684_Wcmd(0x34); //關閉圖形顯示
  166.         
  167.         for(i=0;i<32;i++)
  168.         {
  169.                 LCD12684_Wcmd(0x80+i);  //先寫入水平坐標值
  170.                 LCD12684_Wcmd(0x80);      //寫入垂直坐標值
  171.                 for(j=0;j<16;j++)                     //再寫入兩個8位元的數據   
  172.                 LCD12684_Wdat(*bmp++);     
  173.                 delay_ms(1);
  174.         }
  175.         
  176.         for(i=0;i<32;i++)
  177.         {
  178.                 LCD12684_Wcmd(0x80+i);
  179.                 LCD12684_Wcmd(0x88);
  180.                 for(j=0;j<16;j++)         
  181.                 LCD12684_Wdat(*bmp++);   
  182.                 delay_ms(1);
  183.         }
  184.         LCD12684_Wcmd(0x36);       //寫完數據,開圖形顯示         
  185. }
  186. /************************************************************************************************
  187. @f_name: void LCD_ShowString(u8 x,u8 y,const u8 *p)
  188. @brief:         顯示字符串
  189. @param:         u8 *bmp 圖形數組
  190. @return: None
  191. ************************************************************************************************/
  192. void LCD_ShowString(u8 x,u8 y,const u8 *p)
  193. {
  194.         u8 temp;
  195.         if(x>4) {x=1;}
  196.         if(y>4) {y=0;}
  197.         LCD12864_Pos(x,y);
  198.         temp=*p;
  199.         while(temp!='\0')
  200.         {
  201.                 LCD12684_Wdat(temp);
  202.                 temp=*(++p);
  203.         }
  204. }
復制代碼

所有資料51hei提供下載:
DIS12864.zip (305.42 KB, 下載次數: 367)


評分

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

查看全部評分

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

使用道具 舉報

來自 2#
ID:44037 發表于 2018-11-14 17:10 | 只看該作者
謝謝分享   
    我用Proteus仿真  原程序采用STM32F103RB   現改成STM32F103R6
    刪除lcd.c  lcd.h (彩屏程序 ,原程序編譯不通過 )兩個文件   
    原程序 startup_stm32f10x_hd   更改為startup_stm32f10x_ld
    //LCD_ShowString(3,0,"www點openedv點com");  仿真 除文字外  仿真失敗
   
回復

使用道具 舉報

板凳
ID:423020 發表于 2018-11-9 17:18 | 只看該作者
附件貌似沒有編譯通過調試,樓主編譯通過了么
回復

使用道具 舉報

地板
ID:421625 發表于 2018-11-14 12:20 | 只看該作者
當然通過了,沒有錯誤。
回復

使用道具 舉報

5#
ID:527156 發表于 2019-5-4 19:16 | 只看該作者
感謝分享
回復

使用道具 舉報

6#
ID:91346 發表于 2019-12-20 16:36 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

7#
ID:569391 發表于 2020-4-11 15:48 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

8#
ID:286761 發表于 2020-4-13 09:17 | 只看該作者
謝謝樓主共享。
回復

使用道具 舉報

9#
ID:672631 發表于 2020-6-20 13:48 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

10#
ID:405802 發表于 2022-3-7 21:23 | 只看該作者
樓主的12864怎么找的啊,我的proteus8.6沒有這個模塊
回復

使用道具 舉報

11#
ID:405802 發表于 2022-3-7 23:19 | 只看該作者
proteus8.9,原理圖能選LCD12864A,但是仿真出錯,Internal Exception: access violation in module 'LCD12864A.DLL' [000013C0].
樓主能指導下嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: h视频免费观看 | 日韩精品av一区二区三区 | 在线视频中文字幕 | 亚洲综合国产 | 国产精品久久 | 免费中文字幕日韩欧美 | 久久99成人 | 日本三级网址 | 久久一区二区三区四区五区 | 成年人精品视频 | 黄色三级毛片 | 99热精品国产 | 另类 综合 日韩 欧美 亚洲 | 亚洲区一区二 | 国产在线h | 欧美操操操 | 久久久久无码国产精品一区 | 91久久国产综合久久91精品网站 | 成人在线小视频 | 欧美 日韩 国产 成人 在线 | 97精品国产97久久久久久免费 | zzzwww在线看片免费 | www国产成人免费观看视频,深夜成人网 | 亚洲自拍偷拍欧美 | 毛片免费在线 | 中文字幕日本一区二区 | 久久国产亚洲精品 | 午夜电影网 | 日日碰狠狠躁久久躁婷婷 | 久久麻豆精品 | www.国产一区| 久久久91| 极品粉嫩国产48尤物在线播放 | 日韩欧美不卡 | 五月天国产在线 | 国产露脸对白88av | 国产精品色婷婷久久58 | 亚洲日日夜夜 | 一区免费看 | 日本黄色大片免费看 | 亚洲视频免费一区 |