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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3100|回復(fù): 0
收起左側(cè)

單片機(jī)+LCD12864編程實(shí)例 畫點(diǎn) 畫圖 顯示漢字

[復(fù)制鏈接]
ID:706469 發(fā)表于 2020-5-2 12:43 | 顯示全部樓層 |閱讀模式
一個(gè)有趣的液晶顯示屏
51hei.png
單片機(jī)源程序如下:
  1. #include"lcd12864.h"

  2. /*******************************************************************************
  3. * 函 數(shù) 名         : LCD12864_Delay1ms
  4. * 函數(shù)功能                   : 延時(shí)1MS
  5. * 輸    入         : c
  6. * 輸    出         : 無(wú)
  7. *******************************************************************************/

  8. void LCD12864_Delay1ms(uint c)
  9. {
  10.     uchar a,b;
  11.         for(; c>0; c--)
  12.         {
  13.             for(b=199; b>0; b--)
  14.                 {
  15.                 for(a=1; a>0; a--);
  16.                 }
  17.         }
  18. }

  19. /*******************************************************************************
  20. * 函 數(shù) 名         : LCD12864_Busy
  21. * 函數(shù)功能                   : 檢測(cè)LCD是否忙
  22. * 輸    入         : 無(wú)
  23. * 輸    出         : 1或0(1表示不忙,0表示忙)
  24. *******************************************************************************/

  25. uchar LCD12864_Busy(void)
  26. {
  27.         uchar i = 0;

  28.         LCD12864_RS = 0;           //選擇命令
  29.         LCD12864_RW = 1;        //選擇讀取

  30.         LCD12864_EN = 1;
  31.         LCD12864_Delay1ms(1);

  32.         while((LCD12864_DATAPORT & 0x80) == 0x80)        //檢測(cè)讀取到的值
  33.         {
  34.                 i++;
  35.                 if(i > 100)
  36.                 {
  37.                         LCD12864_EN = 0;
  38.                         return 0;           //超過(guò)等待時(shí)間返回0表示失敗
  39.                 }
  40.         }

  41.         LCD12864_EN = 0;

  42.         return 1;
  43. }

  44. /*******************************************************************************
  45. * 函 數(shù) 名         : LCD12864_WriteCmd
  46. * 函數(shù)功能                   : 寫命令
  47. * 輸    入         : cmd
  48. * 輸    出         : 無(wú)
  49. *******************************************************************************/

  50. void LCD12864_WriteCmd(uchar cmd)
  51. {
  52.         uchar i;
  53.         i = 0;
  54.         while( LCD12864_Busy() == 0)
  55.         {
  56.                 LCD12864_Delay1ms(1);
  57.                 i++;
  58.                 if( i>100)
  59.                 {
  60.                         return;           //超過(guò)等待退出
  61.                 }        
  62.         }
  63.         
  64.         LCD12864_RS = 0;     //選擇命令
  65.         LCD12864_RW = 0;     //選擇寫入
  66.         LCD12864_EN = 0;     //初始化使能端

  67.         LCD12864_DATAPORT = cmd;   //放置數(shù)據(jù)

  68.         LCD12864_EN = 1;                   //寫時(shí)序
  69.         LCD12864_Delay1ms(5);
  70.         LCD12864_EN = 0;                                            
  71. }

  72. /*******************************************************************************
  73. * 函 數(shù) 名         : LCD12864_WriteData
  74. * 函數(shù)功能                   : 寫數(shù)據(jù)
  75. * 輸    入         : dat
  76. * 輸    出         : 無(wú)
  77. *******************************************************************************/

  78. void LCD12864_WriteData(uchar dat)
  79. {
  80.         uchar i;
  81.         i = 0;
  82.         while( LCD12864_Busy() == 0)
  83.         {
  84.                 LCD12864_Delay1ms(1);
  85.                 i++;
  86.                 if( i>100)
  87.                 {
  88.                         return;           //超過(guò)等待退出
  89.                 }        
  90.         }

  91.         LCD12864_RS = 1;     //選擇數(shù)據(jù)
  92.         LCD12864_RW = 0;     //選擇寫入
  93.         LCD12864_EN = 0;     //初始化使能端

  94.         LCD12864_DATAPORT = dat;   //放置數(shù)據(jù)

  95.         LCD12864_EN = 1;                   //寫時(shí)序
  96.         LCD12864_Delay1ms(5);
  97.         LCD12864_EN = 0;                                                                    
  98. }

  99. /*******************************************************************************
  100. * 函 數(shù) 名         : LCD12864_ReadData
  101. * 函數(shù)功能                   : 讀取數(shù)據(jù)
  102. * 輸    入         : 無(wú)
  103. * 輸    出         : 讀取到的8位數(shù)據(jù)
  104. *******************************************************************************/
  105. #ifdef LCD12864_PICTURE

  106. uchar LCD12864_ReadData(void)
  107. {
  108.         uchar i, readValue;

  109.         i = 0;
  110.         while( LCD12864_Busy() == 0)
  111.         {
  112.                 LCD12864_Delay1ms(1);
  113.                 i++;
  114.                 if( i>100)
  115.                 {
  116.                         return 0;           //超過(guò)等待退出
  117.                 }        
  118.         }

  119.         LCD12864_RS = 1;       //選擇命令
  120.         LCD12864_RW = 1;
  121.         LCD12864_EN = 0;
  122.         LCD12864_Delay1ms(1);  //等待

  123.         LCD12864_EN = 1;
  124.         LCD12864_Delay1ms(1);
  125.         readValue = LCD12864_DATAPORT;
  126.         LCD12864_EN = 0;

  127.         return readValue;
  128. }

  129. #endif

  130. /*******************************************************************************
  131. * 函 數(shù) 名         : LCD12864_Init
  132. * 函數(shù)功能                   : 初始化LCD12864
  133. * 輸    入         : 無(wú)
  134. * 輸    出         : 無(wú)
  135. *******************************************************************************/

  136. void LCD12864_Init()
  137. {
  138.         LCD12864_PSB = 1;          //選擇并行輸入
  139.         LCD12864_RST = 1;          //復(fù)位

  140.         LCD12864_WriteCmd(0x30);  //選擇基本指令操作
  141.         LCD12864_WriteCmd(0x0c);  //顯示開,關(guān)光標(biāo)
  142.         LCD12864_WriteCmd(0x01);  //清除LCD12864的顯示內(nèi)容
  143. }

  144. /*******************************************************************************
  145. * 函 數(shù) 名         : LCD12864_ClearScreen
  146. * 函數(shù)功能                   : 在畫圖模式下,LCD12864的01H命令不能清屏,所以要自己寫一個(gè)清
  147. *                  * 屏函數(shù)
  148. * 輸    入         : 無(wú)
  149. * 輸    出         : 無(wú)
  150. *******************************************************************************/
  151. #ifdef LCD12864_PICTURE

  152. void LCD12864_ClearScreen(void)
  153. {
  154.         uchar i,j;

  155.         LCD12864_WriteCmd(0x34);          //開啟拓展指令集

  156.         for(i=0;i<32;i++)                          //因?yàn)長(zhǎng)CD有縱坐標(biāo)32格所以寫三十二次
  157.         {
  158.                 LCD12864_WriteCmd(0x80+i);                  //先寫入縱坐標(biāo)Y的值
  159.                 LCD12864_WriteCmd(0x80);                  //再寫入橫坐標(biāo)X的值
  160.                 for(j=0;j<32;j++)                  //橫坐標(biāo)有16位,每位寫入兩個(gè)字節(jié)的的數(shù)據(jù),也
  161.                 {                                                  //就寫入32次以為當(dāng)寫入兩個(gè)字節(jié)之后橫坐標(biāo)會(huì)自
  162.                         LCD12864_WriteData(0xFF);          //動(dòng)加1,所以就不用再次寫入地址了。
  163.                 }
  164.         }

  165.         LCD12864_WriteCmd(0x36);         //0x36擴(kuò)展指令里面打開繪圖顯示
  166.         LCD12864_WriteCmd(0x30);         //恢復(fù)基本指令集
  167. }

  168. #endif
  169. /*******************************************************************************
  170. * 函 數(shù) 名         : LCD12864_SetWindow
  171. * 函數(shù)功能                   : 設(shè)置在基本指令模式下設(shè)置顯示坐標(biāo)。注意:x是設(shè)置行,y是設(shè)置列
  172. * 輸    入         : x, y
  173. * 輸    出         : 無(wú)
  174. *******************************************************************************/

  175. void LCD12864_SetWindow(uchar x, uchar y)
  176. ……………………

  177. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
12864編程實(shí)例 - .zip (1.34 MB, 下載次數(shù): 82)


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区在线观看 | 欧美乱做爰xxxⅹ久久久 | 免费视频中文字幕 | 欧美日韩国产在线观看 | 亚洲综合二区 | 久久黄色网 | 亚洲免费视频一区 | 久久综合成人精品亚洲另类欧美 | 国产精品a久久久久 | 日韩欧美国产精品 | 午夜av成人 | 亚洲va欧美va天堂v国产综合 | 久久综合成人精品亚洲另类欧美 | 综合久久99 | 亚洲久草| 亚洲自拍偷拍欧美 | 日韩欧美精品 | 一区二区电影 | 国产日韩欧美一区 | 日本一区二区高清视频 | 欧美在线一区二区三区 | 波多野结衣一区二区三区在线观看 | 色婷婷综合网 | 国产一区二区美女 | 亚洲精品日韩一区二区电影 | 高清一区二区三区 | av高清毛片| 久久精品天堂 | 99热精品在线观看 | 亚洲午夜av久久乱码 | 亚洲欧洲在线观看视频 | 久久毛片网站 | 欧美精品91爱爱 | 伊人超碰| 日韩一区在线播放 | 亚洲一区二区免费电影 | 精品国产一区二区国模嫣然 | 大伊人久久 | 亚洲三区视频 | 蜜臀久久99精品久久久久野外 | 国产999精品久久久久久 |