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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

1602液晶多級(jí)菜單程序(源碼及proteus仿真)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
   proteus8.6和諧版軟件 (無需破解)鏈接:https://pan.baidu.com/s/1i4TyS7b 密碼:
游客,本帖隱藏的內(nèi)容需要積分高于 10 才可瀏覽,您當(dāng)前積分為 0


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include"lcd1602.h"
  3. #define Null 0
  4. sbit LED0 = P1^7;

  5. u8 t0count=0;
  6. struct MenuItem MainMenu[2];
  7. struct MenuItem TimeMenu[4];
  8. void NullSubs(void)
  9. {
  10. }
  11. void TimeSet(void)
  12. {
  13.   LED0=!LED0;
  14.         WriteCom(0X01);
  15.         if(LED0)DisplayString(4,1,"LED0 OFF");
  16.         else DisplayString(4,1,"LED0 ON");
  17.         t0count=0;
  18.         TH0=(65536-50000)/256;
  19.         TL0=(65536-50000)%256;
  20.         TR0=1;
  21.        
  22. }
  23. void DateSet(void)
  24. {

  25. }
  26. void AlertSet(void)
  27. {

  28. }
  29. struct MenuItem{
  30.         u8 MenuCount;
  31.         u8 *title;
  32.         void (*subs)();
  33.         struct MenuItem *ChildMenu;
  34.         struct MenuItem *ParentMenu;
  35. };
  36. struct MenuItem  MainMenu[2]=
  37. {
  38.   {2,"1:TimeSet    ",NullSubs,TimeMenu,Null},
  39.   {2,"2:Back       ",NullSubs,Null,Null}
  40. };
  41. struct MenuItem  TimeMenu[4]=
  42. {
  43.                 {4,"1:Time_Set ",TimeSet,Null,MainMenu},
  44.                 {4,"2:Date_Set ",DateSet,Null,MainMenu},
  45.                 {4,"3:Alert_Set",AlertSet,Null,MainMenu},
  46.                 {4,"4:Back     ",NullSubs,MainMenu,MainMenu},
  47.                  
  48. };

  49. struct MenuItem (*MenuPoint)=MainMenu;
  50. u8 DisplayStart=0;
  51. u8 UserChoose=0;
  52. u8 DisplayPoint=0;
  53. u8 MaxItems;
  54. u8 ShowCount=2;
  55. void Show_Menu(void)
  56. {
  57.         u8 n;
  58.         MaxItems=(*MenuPoint).MenuCount;
  59.         //MaxItems=MenuPoint[0].MenuCount;
  60.         DisplayPoint=DisplayStart;
  61.         for(n=0;DisplayPoint<MaxItems&&n<ShowCount;n++)
  62.         {
  63.                 if(UserChoose==DisplayPoint)DisplayString(1,n+1,"->");
  64.                 else DisplayString(1,n+1,"  ");
  65.                 DisplayString(3,n+1,MenuPoint[DisplayPoint++].title);
  66.         }
  67. }
  68. sbit fanhui=P3^4;
  69. sbit ok=P3^5;
  70. void KeyScan(void)
  71. {
  72.   static u8 state=1;
  73.         if(state&&((fanhui==0)||(ok==0)))
  74.         {
  75.      delayms(8);
  76.                  state=0;
  77.                  if(ok==0)
  78.                  {
  79.         if (MenuPoint[UserChoose].subs != NullSubs)
  80.         {
  81.           (*MenuPoint[UserChoose].subs)();
  82.         }
  83.         else if (MenuPoint[UserChoose].ChildMenu != Null)
  84.         {
  85.           MenuPoint = MenuPoint[UserChoose].ChildMenu;
  86.           UserChoose = 0;
  87.           DisplayStart = 0;
  88.         }
  89.      }else if(fanhui==0)
  90.                  {
  91.                                  if (MenuPoint[UserChoose].ParentMenu != Null)
  92.         {
  93.           MenuPoint = MenuPoint[UserChoose].ParentMenu;
  94.           UserChoose = 0;
  95.           DisplayStart = 0;
  96.         }
  97.                         }
  98.   }else if((fanhui==1)&&(ok==1)){state=1;}
  99. }

  100. void main(void)
  101. {
  102.    LcdInit();
  103.          IT0=1;
  104.          EX0=1;
  105.          IT1=1;
  106.          EX1=1;
  107.          TMOD=0X01;
  108.          ET0=1;
  109.          TH0=(65536-50000)/256;
  110.          TL0=(65536-50000)%256;
  111.          TR0=0;
  112.          EA=1;
  113.          while(1)
  114.          {
  115.                
  116.                  KeyScan();
  117.                  if(UserChoose/ShowCount==1)DisplayStart=2;
  118.                  else DisplayStart=0;
  119.                  WriteCom(0x0c);
  120.                  if((t0count>20)||(TR0==0))Show_Menu();
  121.                
  122.                  
  123.                  
  124.                  
  125.                  
  126.                  }
  127.                  
  128.                
  129.                  
  130. ……………………

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

所有資料51hei提供下載:
lcd1602菜單.rar (84.64 KB, 下載次數(shù): 110)


評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
tieq1952 + 5 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1989 發(fā)表于 2017-12-7 09:10 | 只看該作者
層次性很強(qiáng)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:116826 發(fā)表于 2017-12-7 10:05 | 只看該作者
感謝樓主費(fèi)心分享,下載學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

地板
ID:258375 發(fā)表于 2017-12-7 15:25 | 只看該作者
lyxxzrb 發(fā)表于 2017-12-7 10:05
感謝樓主費(fèi)心分享,下載學(xué)習(xí)學(xué)習(xí)。

裝個(gè)astyle自動(dòng)格式化代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:253767 發(fā)表于 2017-12-8 08:29 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久中文字 | 一区二区av | 国产精品国产成人国产三级 | 好姑娘影视在线观看高清 | 免费日韩av网站 | 色综合色综合色综合 | 精品在线一区 | 午夜精品久久久 | 99re视频在线免费观看 | 国产精品一区二区三区四区 | 五月天婷婷综合 | 国产精品久久福利 | 日韩免 | 一区二区三区四区在线视频 | 亚洲午夜小视频 | 欧美一区二区三区 | 精品国产欧美一区二区 | 欧美国产精品久久久 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 女同久久另类99精品国产 | 欧美视频免费在线 | 成人免费xxxxx在线视频 | 91毛片在线看 | 国产午夜精品视频 | 伊大人久久 | 国产97视频在线观看 | 少妇无套高潮一二三区 | 一区视频在线免费观看 | 新91视频网 | 亚洲视频一区在线 | 亚洲一区二区三区视频 | 国产精品久久久久久久久免费 | 日韩电影一区二区三区 | 国产精品久久在线观看 | 欧美日本在线观看 | 久久亚洲国产 | 欧美日韩成人一区二区 | 亚洲 欧美 日韩 在线 | 国产精品欧美一区二区三区不卡 | 久久在线视频 | 人成久久|