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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+LCD12864液晶簡易菜單程序-c語言

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111599 發(fā)表于 2016-5-13 13:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)+LCD12864液晶簡易菜單程序-c語言12864cd
單片機(jī) LCD12864液晶簡易菜單程序-c語言12864cd.rar (1.78 KB, 下載次數(shù): 47)


  1. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  2. /*
  3. Index_Num 數(shù)組元素最大序號(hào)
  4. Index     數(shù)組元素當(dāng)前序號(hào)
  5. Index_P   選中項(xiàng)序號(hào)
  6. Index_P_Pre 上一選中項(xiàng)序號(hào),用于快速清理上次所畫下的圖案
  7. */
  8. #include <reg52.h>
  9. #include <intrins.h>
  10. #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  11. #define LCD_data  P0       //數(shù)據(jù)口
  12. #define Index_Num 8
  13. typedef unsigned char uchar;
  14. typedef unsigned int uint;

  15. sbit Key1 = P1^0;
  16. sbit Key2 = P1^1;
  17. sbit LCD_RS  =  P2^6;      //寄存器選擇輸入    cs
  18. sbit LCD_RW  =  P2^5;      //液晶讀/寫控制     sid
  19. sbit LCD_EN  =  P2^7;      //液晶使能控制      clk
  20. sbit LCD_PSB =  P3^2;      //串/并方式控制
  21. sbit LCD_RST =  P3^7;      //液晶復(fù)位端口

  22. bdata uchar DataBuf;
  23. uint Index,Index_P_Pre;
  24. uint Index_P=0;
  25. uchar code Weibo[][16]={"hello","呀咦  晗昱","weibo.com","/maixianyu","blog.163.com","maixianyu@126",
  26.         "123","456","789"};
  27. //////////////////////////////////////////////   200us
  28. void delay(int ms)
  29. {
  30. uchar t;  
  31.   while(ms--)  
  32.   {
  33.     for(t=0; t<20; t++) ;  
  34.   }   
  35. }
  36. //////////////////////////////////////////////////////////////////
  37. void Lcd_Write_8bit(uchar msg){
  38. uint i;
  39. uchar DataBuffer;
  40. DataBuffer=msg;
  41. for(i=0;i<8;i++){
  42.   LCD_RW=(bit)(DataBuffer&0x80);
  43.   LCD_EN=1;
  44.   _nop_();
  45.   _nop_();
  46.   LCD_EN=0;
  47.   _nop_();
  48.   _nop_();
  49.   DataBuffer<<=1;
  50. }
  51. }
  52. /////////////////////////////////////////
  53. uchar Lcd_Rec(uint RS){                    
  54. uint i;
  55. uchar Data_H,Data_L;
  56. LCD_RS=1;
  57. if(RS)
  58.   Lcd_Write_8bit(0xfe);
  59. else
  60.   Lcd_Write_8bit(0xfc);  
  61. delayNOP();
  62. for(i=0;i<8;i++){
  63.   LCD_EN=1;
  64.   Data_H=(Data_H<<1)|LCD_RW;
  65.   LCD_EN=0;
  66. }
  67. delayNOP();
  68. for(i=0;i<8;i++){
  69.   LCD_EN=1;
  70.   Data_L=(Data_L<<1)|LCD_RW;  
  71.   LCD_EN=0;
  72. }
  73. LCD_RS=0;
  74. DataBuf=(Data_H<<4)|Data_L;
  75. return DataBuf;
  76. }
  77. /////////////////////////////////////////
  78. bit Lcd_Busy(){
  79. return Lcd_Rec(0)&0x80;
  80. }
  81. /////////////////////////////////////////
  82. void Lcd_Write(uchar msg,uint dc){              //if dc equals 0,msg is a kind of cmd.
  83. while(Lcd_Busy());
  84. if(dc==0)
  85.   DataBuf=0xf8;
  86. else
  87.   DataBuf=0xfa;
  88. delayNOP();
  89. LCD_RS=1;
  90. Lcd_Write_8bit(DataBuf);
  91. delayNOP();
  92. DataBuf=msg&0xf0;
  93. Lcd_Write_8bit(DataBuf);
  94. delayNOP();
  95. DataBuf=(msg<<4)&0xf0;
  96. Lcd_Write_8bit(DataBuf);
  97. LCD_RS=0;
  98. }

  99. ////////////////////////////////////////////////////
  100. void Disp_black()                          //清理上一次畫下的痕跡
  101. {
  102.   uchar i,j;
  103.   Lcd_Write(0x34,0);        //寫數(shù)據(jù)時(shí),關(guān)閉圖形顯示
  104. if(Index_P_Pre<2){
  105.    for(i=0+16*Index_P_Pre; i<16+16*Index_P_Pre; i++)
  106.    {
  107.      Lcd_Write(0x80+i,0);
  108.      Lcd_Write(0x80,0);
  109.      for(j=0;j<16;j++)        
  110.    Lcd_Write(0x00,1);   
  111.    }
  112. }else{
  113.    for(i=0+16*(Index_P_Pre-2);i<16+16*(Index_P_Pre-2);i++)
  114.    {
  115.      Lcd_Write(0x80+i,0);
  116.      Lcd_Write(0x88,0);
  117.      for(j=0;j<16;j++)        
  118.     Lcd_Write(0x00,1);   
  119.    }
  120. }
  121.   Lcd_Write(0x36,0);       //寫完數(shù)據(jù),開圖形顯示
  122. }
  123. void convertChar(uchar CX)                                        // 反白函數(shù)
  124. {
  125. uchar halfLineCnt, basicBlock,lcdPosX,lcdPosY;
  126. // if(f==1)
  127. Disp_black(); //清繪圖區(qū)
  128. lcdPosY = 0x80;
  129. if (CX == 0)
  130. {
  131.     CX = 0x80;
  132.     halfLineCnt = 16;
  133. }
  134. else if (CX == 1)
  135. {
  136.     CX = 0x80;
  137.     halfLineCnt = 32;
  138. }
  139. else if (CX == 2)
  140. {
  141.     CX = 0x88;
  142.     halfLineCnt = 16;
  143. }
  144. else if (CX == 3)
  145. {
  146.     CX = 0x88;
  147.     halfLineCnt = 32;
  148. }
  149. lcdPosX = CX;

  150.      for (; halfLineCnt != 0; halfLineCnt--)
  151. {
  152.     basicBlock = 16;
  153.     Lcd_Write(0x34,0);
  154.     Lcd_Write(lcdPosY,0);
  155.     Lcd_Write(lcdPosX,0);
  156.     Lcd_Write(0x30,0);

  157.     for (;basicBlock != 0; basicBlock--)
  158.     {
  159.      if (halfLineCnt > 16)
  160.      {
  161.       Lcd_Write(0x00,1);
  162.      }
  163.      else
  164.      {
  165.    Lcd_Write(0xff,1);
  166.      }
  167.     }
  168.     lcdPosY++;
  169. }

  170. Lcd_Write(0x36,0);
  171. Lcd_Write(0x30,0);
  172. }


  173. ///////////////////////////////////////////////////
  174. void Lcd_Pos(uchar x,uchar y){
  175. uchar pos;
  176. if(x==1)
  177.   {x=0x80;}
  178. else if(x==2)
  179.   {x=0x90;}
  180. else if(x==3)
  181.   {x=0x88;}
  182. else if(x==4)
  183.   {x=0x98;}
  184. pos=x+y;
  185. Lcd_Write(pos,0);
  186. }
  187. ///////////////////////////////////////////
  188. void Lcd_Menu(uint Head){
  189. uint j,i;
  190. uint Index_End=Head+3;
  191. // if(Index_End<=Index_Num){
  192.   for(j=0;Head<=Index_End;Head++,j++){
  193.    Lcd_Pos(j+1,0);
  194.    i=0;
  195.    while(i<15){
  196.     if(Weibo[Head][i]!=0)
  197.      Lcd_Write(Weibo[Head][i++],1);
  198.     else{
  199.      Lcd_Write(0x20,1);
  200.      i++;
  201.     }
  202.    }
  203.    delayNOP();
  204.   }
  205. // }
  206. }
  207. ///////////////////////////////////////////
  208. void Lcd_Init(void){
  209. LCD_PSB=0;
  210. LCD_RST=0;
  211. LCD_RS=0;
  212. LCD_RW=1;
  213. LCD_EN=0;
  214. delay(2);
  215. LCD_RST=1;
  216. delay(2);
  217. Lcd_Write(0x30,0);   //ordinary  cmd
  218. delay(2);
  219. Lcd_Write(0x0c,0);   //how to show
  220. delay(2);
  221. Lcd_Write(0x01,0);   //clear
  222. delay(2);
  223. }
  224. /////////////////////////////////////////
  225. void main(void){
  226. Lcd_Init();
  227. Key1=1;
  228. Lcd_Menu(Index);
  229. convertChar(Index_P);
  230. while(1){
  231.   if(Key1==0&&Index>=0){
  232.    delay(5);
  233.    if(Key1==0&&Index>=0){
  234.     if(Index_P==0&&Index>0)
  235.      Lcd_Menu(--Index);
  236.     if(Index_P>0){
  237.      Index_P_Pre=Index_P;
  238.      convertChar(--Index_P);
  239.     }
  240.    }
  241.   }
  242.   if(Key2==0&&Index_P<=3){
  243.    delay(5);
  244.    if(Key2==0&&Index_P<=3){
  245.     if(Index_P==3&&Index<(Index_Num-3))
  246.      Lcd_Menu(++Index);
  247.     if(Index_P<3){
  248.      Index_P_Pre=Index_P;
  249.      convertChar(++Index_P);
  250.     }
  251.    }
  252.   }
  253. }
  254. }
復(fù)制代碼


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:466118 發(fā)表于 2019-1-23 10:07 | 只看該作者
小媳婦謝謝分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:284786 發(fā)表于 2019-6-3 18:34 | 只看該作者
有個(gè)小bug  怎么解決??
回復(fù)

使用道具 舉報(bào)

地板
ID:557774 發(fā)表于 2019-6-11 00:13 | 只看該作者
樓主,這個(gè)有個(gè)小問題呀呀呀!我還不會(huì)怎么表達(dá)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 鲁一鲁资源影视 | 免费国产成人av | 久久一区| 欧美黑人一级爽快片淫片高清 | 久久久女女女女999久久 | 成人在线欧美 | 一级片av| 国内精品久久久久久久 | 久久国产精品无码网站 | 成人精品| 欧美激情一区 | 国产精品永久免费视频 | 日韩一级精品视频在线观看 | 欧洲国产精品视频 | 亚洲视频一区在线观看 | 在线色网站 | 黄色香蕉视频在线观看 | 黄在线免费观看 | 在线观看亚洲精品 | 99精品免费 | 97国产一区二区精品久久呦 | 狠狠av | 精品欧美黑人一区二区三区 | 拍真实国产伦偷精品 | 久久精品一区 | 黄色国产在线视频 | 日韩欧美精品在线 | 国产999精品久久久影片官网 | 国产成人免费视频网站视频社区 | 91高清视频 | 特一级毛片 | 日韩视频一区二区三区 | 国产最好的av国产大片 | 色中文在线 | 国产成人精品久久二区二区 | 国产麻豆一区二区三区 | 成人三级视频 | 国产精品成人一区二区 | 91九色网站 | 日韩一区二区三区在线看 | 欧美日韩亚洲视频 |