找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 6879|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

詳細(xì)LCD12864串行或者并行數(shù)據(jù)傳輸51單片機(jī)程序(自編)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:195660 發(fā)表于 2017-7-28 10:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
詳細(xì)LCD12864串行或者并行數(shù)據(jù)傳輸51單片機(jī)程序(自編)


單片機(jī)串行源程序如下:
  1. #include <reg52.h>  
  2.   
  3.   
  4. //LCD12864端口定義  
  5. //sbit LCD12864_CS    = P3^5;//片選信號  
  6. sbit LCD12864_SID   = P2^6;//數(shù)據(jù)信號  
  7. sbit LCD12864_SCLK  = P2^7;//時鐘信號  
  8. //sbit LCD12864_RST   = P3^7;//復(fù)位信號  
  9.   
  10. /********************************************************************
  11. * 名稱 : LCD12864_Delay()
  12. * 功能 : 延時
  13. * 輸入 : z
  14. * 輸出 : 無
  15. ***********************************************************************/  
  16. void LCD12864_Delay(unsigned int z)  
  17. {  
  18. //  uchar i;  
  19. //  while(z --) for(i = 0;i < 120;i ++);  
  20.     unsigned char a,b;  
  21.     for(a=0; a<z; a++)  
  22.         for(b=0; b<120; b++);  
  23. }  
  24. /********************************************************************
  25. * 名稱 : LCD12864_sendbyte
  26. * 功能 : 按照液晶的串口通信協(xié)議,發(fā)送數(shù)據(jù)
  27. * 輸入 : zdata
  28. * 輸出 : 無
  29. ***********************************************************************/  
  30. void LCD12864_SendByte(unsigned char zdata)  
  31. {  
  32.     unsigned char i;  
  33.     for(i = 0;i < 8;i ++)  
  34.     {  
  35.         if((zdata<<i) & 0x80)  
  36.         {  
  37.             LCD12864_SID = 1;  
  38.         }  
  39.         else  
  40.         {  
  41.             LCD12864_SID = 0;  
  42.         }  
  43.         LCD12864_SCLK = 0;  
  44.         LCD12864_SCLK = 1;   
  45.     }     
  46. }  
  47. /********************************************************************
  48. * 名稱 : LCD12864_write_com()
  49. * 功能 : 寫串口指令,分三字節(jié)寫完
  50. * 輸入 : com
  51. * 輸出 : 無
  52. ***********************************************************************/  
  53. void  LCD12864_WriteCom(unsigned char com)  
  54. {  
  55.       //LCD12864_CS = 1;//打開片選,高電平有效  
  56.       LCD12864_SendByte(0xf8); //第一字節(jié)  
  57.       LCD12864_SendByte(com & 0xf0);     //第二字節(jié)  
  58.       LCD12864_SendByte((com << 4) & 0xf0);//第三字節(jié)  
  59. }  
  60.   
  61. /********************************************************************
  62. * 名稱 : LCD12864_write_date()
  63. * 功能 : 寫串口指令
  64. * 輸入 : date
  65. * 輸出 : 無
  66. ***********************************************************************/  
  67. void LCD12864_WriteDate(unsigned char date)  
  68. {  
  69.     //LCD12864_CS = 1; //打開片選  
  70.     LCD12864_SendByte(0xfa);//第一字節(jié)  
  71.     LCD12864_SendByte(date & 0xf0);  //第二字節(jié)  
  72.     LCD12864_SendByte((date << 4) & 0xf0);//第三字節(jié)  
  73. }  
  74. /********************************************************************
  75. * 名稱 : LCD12864_init()
  76. * 功能 : 12864初始化函數(shù)
  77. * 輸入 : com
  78. * 輸出 : 無
  79. ***********************************************************************/  
  80. void LCD12864_Init()  
  81. {  
  82.      //LCD12864_RST = 0;  
  83.      LCD12864_Delay(100);  
  84.      //LCD12864_RST = 1;  
  85.      LCD12864_Delay(100);  
  86.      //LCD12864_WriteCom(0x34);//擴(kuò)充指令集動作 ,繪圖不顯示  
  87.      LCD12864_WriteCom(0x30);//基本指令集動作, 繪圖不顯示  
  88.      LCD12864_WriteCom(0x0c);//開顯示,不顯示游標(biāo)和游標(biāo)位置  
  89.      LCD12864_WriteCom(0x01);//清屏  
  90.      LCD12864_Delay(100);  
  91.            
  92. }  
  93. /********************************************************************
  94. * 名稱 :LCD_clean_scans()
  95. * 功能 : 清屏
  96. * 輸入 : 無
  97. * 輸出 : 無
  98. ***********************************************************************/  
  99. void LCD12864_CleanScans()  
  100. {  
  101.      LCD12864_WriteCom(0x01);//清屏  
  102. }  
  103. /********************************************************************
  104. * 名稱 :  LCD12864_pos()
  105. * 功能 : 設(shè)定顯示位置
  106. * 輸入 :  x,y
  107. * 輸出 : 無
  108. ***********************************************************************/  
  109. void LCD12864_SetPos(unsigned char x,unsigned char y)  
  110. {  
  111.     unsigned char pos;  
  112.     if(x == 0)  
  113.             x = 0x80;  
  114.     else if(x == 1)  
  115.             x = 0x90;  
  116.     else if(x == 2)  
  117.             x = 0x88;  
  118.     else if(x == 3)  
  119.             x = 0x98;  
  120.     pos = x + y;  
  121.     LCD12864_WriteCom(pos);//顯示地址         
  122. }  
  123. /********************************************************************
  124. * 名稱 : LCD12864_dishz()
  125. * 功能 : 顯示字符串
  126. * 輸入 : *s
  127. * 輸出 : 無
  128. ***********************************************************************/  
  129. void LCD12864_DisplayString(unsigned char *s)  
  130. {   
  131.     unsigned char  i = 0;  
  132.     while(s[i]!='\0')  
  133.     {   
  134.         LCD12864_WriteDate(s[i]);  
  135.         i++;  
  136.         LCD12864_Delay(5);  
  137.     }  
  138. }
  139. void main()
  140. {
  141. while(1);
  142. }
復(fù)制代碼

所有資料51hei提供下載:
LCD12864.zip (54.64 KB, 下載次數(shù): 106)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:260698 發(fā)表于 2018-4-26 19:31 | 只看該作者
又不能用傳上來干嘛
回復(fù)

使用道具 舉報

板凳
ID:530859 發(fā)表于 2019-5-11 01:46 | 只看該作者
我的顯示不了,不知道為什么
回復(fù)

使用道具 舉報

地板
ID:491687 發(fā)表于 2020-4-26 16:35 | 只看該作者
樓主代碼并非直接可用,需要根據(jù)自己需要修改,小白慎下
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表