找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2184|回复: 1
打印 上一主题 下一主题
收起左侧

自制的一个简单菜单系统 加了温度 万年历 12864的 打有注释 适合初学者使用

[复制链接]
跳转到指定楼层
楼主
自制的一个简单菜单系统 加了温度 万年历 12864的  打有注释  适合初学者使用  串口通信


完整的12864菜单单片机源码下载:
12864菜单.zip (65.1 KB, 下载次数: 41)

程序的主要部分预览:
  1. /*------------------------------------
  2. 名称:菜单处理模块
  3. 编写:YuMin_Dong
  4. 时间:2013.01.24
  5. ------------------------------------*/
  6. #ifndef _PROCESS_H_
  7. #define _PROCESS_H_

  8. //按键
  9. sbit KEY_PgDn=P3^0;
  10. sbit KEY_PgUp=P3^1;
  11. sbit KEY_Enter=P3^2;
  12. sbit KEY_Esc=P3^3;


  13. bit Menu1,Menu2,Menu3,Menu4,Menu5,Menu6,Enter_Menu,Menu0;

  14. void MainMenu_Pro()
  15. {
  16.   if(curr!=currold) //光标位置变化,则更新显示                  按键按下去  字符串就变更位置了  CURR也就变了
  17.       {
  18.        DisplayUpdata();
  19.        currold=curr;   //把CURR的值赋给CURROLD  判断下加一个一
  20.       }

  21.    if(!KEY_PgUp)  
  22.     {
  23.      DelayMs(10);
  24.      if(!KEY_PgUp)     
  25.        {
  26.         while(!KEY_PgUp);
  27.           {
  28.     if(curr<sizeof(MainMenu)/sizeof(MainMenu[0])-1)                //sizeof 求字节数
  29.      //判断数组中数值个数
  30.      { curr++; }
  31.           }
  32.        }
  33.     }
  34.   else
  35.   if(!KEY_PgDn)
  36.     {
  37.      DelayMs(10);
  38.      if(!KEY_PgDn)     
  39.         {
  40.         while(!KEY_PgDn);
  41.           {
  42.        if(curr>0)
  43.      { curr--; }
  44.           }
  45.         }
  46.     }
  47.                         else if(!KEY_Enter)
  48.                                 {
  49.                                 DelayMs(10);
  50.                                         if(!KEY_Enter)
  51.                                         {
  52.                                         while(!KEY_Enter);
  53.                                                 switch(curr)
  54.                                                 {
  55. //                                                case 0: Menu0=1;Enter_Menu=1;break;
  56.                                                 case 1: Menu1=1;Enter_Menu=1;ClrScreen();break;
  57.                                                 case 2: Menu2=1;Enter_Menu=1;ClrScreen();break;
  58.                                                 case 3: Menu3=1;Enter_Menu=1;ClrScreen();break;
  59. //                                                case 4: Menu4=1;Enter_Menu=1;break;
  60. //                                                case 5: Menu5=1;Enter_Menu=1;break;
  61. //                                                case 6: FanHui1=1;Menu_Flag=0;guide=0;
  62. //                                                                Write_Cmd(0x01);break;                //轮询到有enter键,当guide指向返回时候直接去掉FanHui1控制的父菜单循环
  63.                                                 default:return;
  64.                                                 }
  65.                                         }
  66.                                 }
  67.                        

  68. }
  69. /*************************************************************
  70.                     按键返回函数         
  71. *************************************************************/
  72. void ESC()
  73. {
  74.                         if(!KEY_Esc)
  75.                         {
  76.                         DelayMs(10);
  77.                         while(!KEY_Esc);
  78.                         Menu1=0;
  79.                         Menu2=0;
  80.                         Menu3=0;
  81.                         Enter_Menu=0;
  82.                         DisplayUpdata();
  83.                         }
  84. }
  85. /*------------------------------------
  86.                 Menu1设置时间子菜单处理
  87. ------------------------------------*/
  88. void Menu1_Pro()
  89. {
  90. datapros(Ds18b20ReadTemp());
  91. if(!KEY_Esc)
  92.                 {
  93.                 ESC();
  94.                         }
  95. }

  96. /*------------------------------------
  97.                 Menu2设置时间子菜单处理
  98. ------------------------------------*/
  99. void Menu2_Pro()
  100. {
  101. uchar week;
  102.       week=(TIME[5]&0x0f);
  103. Ds1302ReadTime();
  104.                 LCD_PutString(0,1,"北京时间:");
  105.                 Write_Cmd(0x90+0);
  106.                 Write_Data((TIME[2]/16)+0x30);
  107.                 Write_Data((TIME[2]&0x0f)+0x30);
  108.                 LCD_PutString(1,2,"时");
  109.                 Write_Cmd(0x90+2);
  110.                 Write_Data('0'+(TIME[1]/16));
  111.                 Write_Data('0'+(TIME[1]&0x0f));
  112.                 LCD_PutString(3,2,"分");
  113.                 Write_Cmd(0x90+4);
  114.                 Write_Data('0'+(TIME[0]/16));
  115.                 Write_Data('0'+(TIME[0]&0x0f));
  116.                 LCD_PutString(5,2,"秒");
  117.                 Write_Cmd(0x88+0);
  118.                 Write_Data('2');
  119.                 Write_Data('0');
  120.                 Write_Data((TIME[6]/16)+0x30);
  121.                 Write_Data((TIME[6]&0x0f)+0x30);
  122.         LCD_PutString(2,3,"年");
  123.                 Write_Data((TIME[4]/16)+0x30);
  124.                 Write_Data((TIME[4]&0x0f)+0x30);
  125.                 LCD_PutString(4,3,"月");
  126.                 Write_Data((TIME[3]/16)+0x30);
  127.                 Write_Data((TIME[3]&0x0f)+0x30);
  128.                 LCD_PutString(6,3,"日");
  129. //                Write_Cmd(0x98+2);
  130. //                Write_Data((TIME[5]/16)+0x30);
  131. //                Write_Data((TIME[5]&0x0f)+0x30);
  132.                 LCD_PutString(0,4,"星期");
  133.                 switch(week)
  134.                 {
  135.                 case 1:LCD_PutString(2,4,"一");break;
  136.                 case 2:LCD_PutString(2,4,"二");break;
  137.                 case 3:LCD_PutString(2,4,"叁");break;
  138.                 case 4:LCD_PutString(2,4,"四");break;
  139.                 case 5:LCD_PutString(2,4,"五");break;
  140.                 case 6:LCD_PutString(2,4,"六");break;
  141.                 case 7:LCD_PutString(2,4,"天");break;
  142.                 }

  143. if(!KEY_Esc)
  144.         {
  145.                 ESC();
  146.                         }
  147. }

  148. /*------------------------------------
  149.                 Menu3设置时间子菜单处理
  150. ------------------------------------*/
  151. void Menu3_Pro()
  152. {
  153. Read_AD_Data(0x94);
  154. if(!KEY_Esc)
  155.                         {
  156.                         ESC();
  157.                         }
  158. }

  159. #endif
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-1-6 19:20 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表