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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+LCD12864多級菜單源程序與Proteus仿真圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:34298 發(fā)表于 2021-11-15 23:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
LCD12864多級菜單仿真, 帶實(shí)例源程序和hex文件, 轉(zhuǎn)載分享給需要的人學(xué)習(xí)。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <asc.h>
  3. #include <12864.h>
  4. #include <imag.h>

  5. #define uchar unsigned char
  6. #define uint  unsigned int

  7. //菜單的實(shí)現(xiàn)
  8. /*-------------------------------------------------------------*/
  9. #define MENU_SIZE 18             //菜單長度

  10. unsigned char KeyFuncIndex=0;    //存放當(dāng)前的菜單索引

  11. void (*KeyFuncPtr)();            //定義按鍵功能指針
  12. //定義類型
  13. typedef struct
  14. {
  15.    unsigned char KeyStateIndex;   //當(dāng)前的狀態(tài)索引號
  16.    unsigned char KeyDownState;    //按下向下鍵時(shí)的狀態(tài)索引號
  17.    unsigned char KeyUpState;      //按下向上鍵時(shí)的狀態(tài)索引號
  18.    unsigned char KeyEnterState;   //按下回車鍵時(shí)的狀態(tài)索引號
  19.    void (*CurrentOperate)();      //當(dāng)前狀態(tài)應(yīng)該執(zhí)行的功能操作
  20. }  StateTab;
  21. //
  22. //
  23. unsigned char code s0[]="MenuTest        ";
  24. unsigned char code s1[]="Contact         ";
  25. unsigned char code s2[]="LineTest        ";
  26. unsigned char code s3[]="RectTest        ";
  27. unsigned char code s4[]="ImagTest        ";
  28. unsigned char code s5[]="Cancel          ";
  29. unsigned char code s6[]="Univercity      ";
  30. unsigned char code s7[]="E-Mail          ";
  31. unsigned char code s8[]="QQ Number       ";
  32. unsigned char code s9[]="Cancel          ";
  33. unsigned char code s10[]="                ";
  34. /*-------------------------------------------------------------*/
  35. void Stat0(void)
  36. {
  37.     en_disp(0,0,16,Asc,s0,0);
  38.         en_disp(2,0,16,Asc,s1,1);
  39.         en_disp(4,0,16,Asc,s10,1);
  40.         en_disp(6,0,16,Asc,s10,1);
  41. }
  42. /*-------------------------------------------------------------*/
  43. void Stat1(void)
  44. {        
  45.     en_disp(0,0,16,Asc,s0,1);
  46.         en_disp(2,0,16,Asc,s1,0);
  47.         en_disp(4,0,16,Asc,s10,1);
  48.         en_disp(6,0,16,Asc,s10,1);
  49. }
  50. /*-------------------------------------------------------------*/
  51. void Stat2(void)
  52. {
  53.     en_disp(0,0,16,Asc,s2,0);
  54.         en_disp(2,0,16,Asc,s3,1);
  55.         en_disp(4,0,16,Asc,s4,1);
  56.         en_disp(6,0,16,Asc,s5,1);
  57. }
  58. /*-------------------------------------------------------------*/
  59. void Stat3(void)
  60. {
  61.     en_disp(0,0,16,Asc,s2,1);
  62.         en_disp(2,0,16,Asc,s3,0);
  63.         en_disp(4,0,16,Asc,s4,1);
  64.         en_disp(6,0,16,Asc,s5,1);
  65. }
  66. /*-------------------------------------------------------------*/
  67. void Stat4(void)
  68. {
  69.     en_disp(0,0,16,Asc,s2,1);
  70.         en_disp(2,0,16,Asc,s3,1);
  71.         en_disp(4,0,16,Asc,s4,0);
  72.         en_disp(6,0,16,Asc,s5,1);
  73. }
  74. /*-------------------------------------------------------------*/
  75. void Stat5(void)
  76. {
  77.     en_disp(0,0,16,Asc,s2,1);
  78.         en_disp(2,0,16,Asc,s3,1);
  79.         en_disp(4,0,16,Asc,s4,1);
  80.         en_disp(6,0,16,Asc,s5,0);
  81. }
  82. /*-------------------------------------------------------------*/
  83. void Stat6(void)
  84. {
  85.         en_disp(0,0,16,Asc,s6,0);
  86.         en_disp(2,0,16,Asc,s7,1);
  87.         en_disp(4,0,16,Asc,s8,1);
  88.         en_disp(6,0,16,Asc,s9,1);
  89. }
  90. /*-------------------------------------------------------------*/
  91. void Stat7(void)
  92. {
  93.     en_disp(0,0,16,Asc,s6,1);
  94.         en_disp(2,0,16,Asc,s7,0);
  95.         en_disp(4,0,16,Asc,s8,1);
  96.         en_disp(6,0,16,Asc,s9,1);
  97. }
  98. /*-------------------------------------------------------------*/
  99. void Stat8(void)
  100. {
  101.     en_disp(0,0,16,Asc,s6,1);
  102.         en_disp(2,0,16,Asc,s7,1);
  103.         en_disp(4,0,16,Asc,s8,0);
  104.         en_disp(6,0,10,Asc,s9,1);
  105. }
  106. /*-------------------------------------------------------------*/
  107. void Stat9(void)
  108. {
  109.     en_disp(0,0,16,Asc,s6,1);
  110.         en_disp(2,0,16,Asc,s7,1);
  111.         en_disp(4,0,16,Asc,s8,1);
  112.         en_disp(6,0,16,Asc,s9,0);
  113. }         
  114. /*-------------------------------------------------------------*/
  115. void Stat10(void)
  116. {
  117.     ClearLCD();
  118.     Line(10,10,100,48,1);
  119. }
  120. /*-------------------------------------------------------------*/
  121. void Stat11(void)
  122. {
  123.     ClearLCD();
  124.     Rect(0,0,127,63,1);
  125.         Rect(10,10,67,43,1);
  126. }
  127. /*-------------------------------------------------------------*/
  128. void Stat12(void)
  129. {
  130. //    ClearLCD();
  131.     img_disp(1,10,70,56,img2);
  132. }
  133. /*-------------------------------------------------------------*/
  134. void Stat13(void)
  135. {
  136.     img12864_disp(img);
  137. }
  138. /*-------------------------------------------------------------*/
  139. void Stat14(void)
  140. {
  141.         en_disp(0,0,16,Asc,s10,1);
  142.     en_disp(2,0,16,Asc,"E-Mail:         ",1);
  143.         en_disp(4,0,16,Asc," 111111111 ",1);
  144.         en_disp(6,0,16,Asc,"     @   ",1);
  145. }
  146. /*-------------------------------------------------------------*/
  147. void Stat15(void)
  148. {
  149.     en_disp(0,0,16,Asc,s10,1);
  150.     en_disp(2,0,16,Asc,"QQ Number:      ",1);
  151.         en_disp(4,0,16,Asc,"   1111111     ",1);
  152.         en_disp(6,0,16,Asc,s10,1);

  153. }
  154. /*-------------------------------------------------------------*/
  155. //數(shù)據(jù)結(jié)構(gòu)數(shù)組
  156. StateTab code KeyTab[MENU_SIZE]=
  157. {
  158.            {0,1,1,2,   (*Stat0)},    //頂層
  159.         {1,0,0,6,   (*Stat1)},           //頂層

  160.         {2,3,5,10,  (*Stat2)},     //二層
  161.         {3,4,2,11,  (*Stat3)},           //二層
  162.         {4,5,3,12,  (*Stat4)},           //二層
  163.         {5,2,4,0,   (*Stat5)},           //二層

  164.         {6,7,9,13,  (*Stat6)},     //二層
  165.         {7,8,6,14,  (*Stat7)},     //
  166.         {8,9,7,15,  (*Stat8)},   
  167.         {9,6,8,1 ,  (*Stat9)},     //二層

  168.         {10,2,2,2,(*Stat10)},    //三                   LineTest
  169.         {11,3,3,3,(*Stat11)},           //                   RectTest
  170.         {12,4,4,4,(*Stat12)},           //          ImgTest

  171.         {13,6,6,6,(*Stat13)},            //三                Univercity
  172.         {14,7,7,7,(*Stat14)},                //          E-Mail
  173.          {15,8,8,8,(*Stat15)}                //          QQ Numeber
  174. };
  175. /*-------------------------------------------------------------*/
  176. void MenuOperate(unsigned char key)
  177. {
  178.     switch(key)
  179.         {
  180.             case  0x30:                       //向上的鍵
  181.                 {
  182.                     KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState;
  183.                         break;
  184.                 }
  185.                 case  0x28:                          //回車鍵
  186.                 {
  187.                         KeyFuncIndex=KeyTab[KeyFuncIndex].KeyEnterState;
  188.                         break;
  189.                 }
  190.                 case  0x18:                          //向下的鍵
  191.                 {
  192.                         KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDownState;
  193.                         break;
  194.                 }
  195.                 //此處添加按鍵錯(cuò)誤代碼
  196.         }
  197.         //下面是執(zhí)行按鍵的操作
  198.         KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate;

  199.         (*KeyFuncPtr)();     //執(zhí)行當(dāng)前的按鍵操作
  200. }         //*/
  201. /*-------------------------------------------------------------*/
  202. unsigned char keyscan()
  203. {
  204.     unsigned char key;
  205.         P2=0xFF;
  206.         key=P2&0x38;
  207.         delayms(8);
  208.         //在這里加去抖動(dòng)
  209.         return key;
  210. }                 
  211. /*--------------------------------------------------------------*/
  212. void int_0(void) interrupt 0   using 0
  213. {
  214.             unsigned char key;
  215.          key=keyscan();
  216.          MenuOperate(key);
  217. }
  218. /*-------------------------------------------------------------*/
  219. void main (void)
  220. {
  221.     LCD12864_init();
  222.         ClearLCD();
  223.         //開中斷
  224.         EX0=1;
  225.         //設(shè)置電平觸發(fā)方式
  226.         IT0=1;
  227.         //開所有中斷
  228.         EA=1;
  229.         //
  230.         MenuOperate(0);
  231.     while(1)
  232.         {
  233.         }
  234. }
復(fù)制代碼

注意dsn文件是仿真工程,是用Proteus7.5版本畫的,所以只能用7.5才能正常運(yùn)行,其他版本都不行
LCD12864多級菜單仿真.7z (49.3 KB, 下載次數(shù): 232)

評分

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

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:582255 發(fā)表于 2021-11-16 10:24 | 只看該作者
一堆的錯(cuò)誤啊。。。。沒有子文件的.c文件?
回復(fù)

使用道具 舉報(bào)

板凳
ID:819198 發(fā)表于 2021-11-18 11:24 | 只看該作者
下載了,Proteus 8.6 運(yùn)行屏幕無顯示
回復(fù)

使用道具 舉報(bào)

地板
ID:819198 發(fā)表于 2021-11-19 12:07 | 只看該作者
問題找到了,注釋這個(gè)就行
/*  do
   {
      flag=LCD12864_DATA_PORT;
          LCD12864_DATA_PORT=0xFF;
   }while(!((flag&0x80)==0x80));
   */
回復(fù)

使用道具 舉報(bào)

5#
ID:440028 發(fā)表于 2022-1-5 15:44 | 只看該作者
你應(yīng)該整理好,或者不要黑B,大家才好干。
回復(fù)

使用道具 舉報(bào)

6#
ID:606226 發(fā)表于 2022-10-29 22:42 | 只看該作者
用高版本Proteus出現(xiàn)黑屏,這個(gè)是修改后的完整版,供大家學(xué)習(xí)

LCD12864多級菜單仿真.rar

102.89 KB, 下載次數(shù): 57, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

7#
ID:92810 發(fā)表于 2022-12-1 12:18 | 只看該作者
c00156155 發(fā)表于 2022-10-29 22:42
用高版本Proteus出現(xiàn)黑屏,這個(gè)是修改后的完整版,供大家學(xué)習(xí)

謝謝分享啦
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 香蕉婷婷 | 狠狠爱一区二区三区 | 国产电影一区二区在线观看 | 日韩在线 | www成年人视频 | 亚洲一区二区三区免费在线观看 | 天天弄| 精品视频在线播放 | 国产黄色av网站 | 中文字幕1区2区3区 日韩在线视频免费观看 | 干干干操操操 | 99一级毛片 | 懂色av一区二区三区在线播放 | 日韩中文av在线 | 国产九九九 | 一级大片网站 | 一区二区三区视频在线观看 | 四虎国产| 日韩欧美在线一区 | 操人视频在线观看 | 久久综合爱 | 日本在线播放 | 日韩成人在线电影 | 日韩一级欧美一级 | 国产精品一区二区欧美 | 亚洲成人高清 | 亚洲www啪成人一区二区 | av免费在线观看网站 | 成人免费观看网站 | 亚洲91精品 | 日日操日日干 | 精品无码久久久久国产 | 日韩视频 中文字幕 | 久久四虎 | 日本精品一区 | 国产乱码精品一区二区三区忘忧草 | 国产1区2区在线观看 | 国产精品久久久久一区二区三区 | 国产日韩免费视频 | 精品成人佐山爱一区二区 | 国产精品成av人在线视午夜片 |