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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11536|回復: 21
打印 上一主題 下一主題
收起左側(cè)

單片機+LCD19264液晶屏三級菜單程序 大數(shù)字電子鐘

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114701 發(fā)表于 2020-6-30 23:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我寫的LCD液晶屏菜單程序,實現(xiàn)時鐘的年月日時分秒的調(diào)節(jié),實現(xiàn)鬧鐘的設(shè)置,實現(xiàn)溫度的上下限設(shè)置并按照設(shè)置值驅(qū)動繼電器,溫度和鬧鐘的設(shè)置參數(shù)都寫入EEPROM中,掉電開機設(shè)置參數(shù)不丟失,大個數(shù)字顯示時分秒。菜單為三級,三級留空白,可自行添加內(nèi)容,自己寫的,水平有限,發(fā)給壇里師兄吐槽,共同進步,下一步寫一個結(jié)構(gòu)體加指針的菜單程序。望壇里師傅有的奉獻出來一下,謝謝。

制作出來的實物圖如下:


單片機源程序如下:
  1. #include "LCD19264.h"
  2. #include "1302.H"
  3. #include "18B20.h"
  4. #include "tm1650.h"
  5. #include "24C16.h"
  6. #include "UART.h"
  7. #include "Fonts.h"
  8. #include "delay.h"
  9. #include "FengMingQiJiDianQi.h"
  10. bit MenuFlag1,MenuFlag2,MenuFlag3;   // 各級菜單標志位,如果為1代表已進入該機菜單,為0代表退出該級菜單
  11. char NaoZhongShi=8,NaoZhongFen=0,NaoZhongMiao=0;  //這里用char而不是unsigned char 的原因是操作此變量時減到0就停止,如果定義unsigned char,變量減到小于0就自動變?yōu)?5535
  12. uchar kjcs;      //開機次數(shù)
  13. uchar key,num;       //鍵值
  14. uint wenduszd,wenduszg;//溫度設(shè)置上下限值,wenduszd溫度設(shè)置低,wenduszg溫度設(shè)置高,wdszgzjz溫度設(shè)置高未保存的值,wdszdzjz溫度設(shè)置高未保存的值
  15. #define SHORT_JIAO 80
  16. #define LONG_JIAO 150
  17. /************************************待機頁面函數(shù)**********************************/
  18. void DeskWall() //待機桌面
  19. {                  
  20.     Read_temp();   //讀取溫度值
  21.     Read_time();         //讀取時間值
  22. //  Disp_chinese_16x16(176,0,0,leijijd[8]);//在右上角顯示電池電量圖案
  23. //        Disp_chinese_16x16(0,0,0,leijijd[9]);//在右上角顯示W(wǎng)IFI信號圖案
  24.           if(shi==NaoZhongShi&&fen==NaoZhongFen&&miao==NaoZhongMiao)
  25.                 {
  26.                         ClearDisplay(); //清理一次屏幕
  27.                 }
  28.                 if(shi==NaoZhongShi&&fen==NaoZhongFen&&miao<NaoZhongMiao+30)
  29.                 {
  30.                         Beep(50,5,5); //鬧鐘響起
  31.                         Beep(50,8,4);
  32.                         Disp_chinese_N_16x16(48,2,2,1,NZSZ);  //顯示“鬧鐘”設(shè)置2個字       
  33.                         Disp_chinese_N_16x16(80,2,2,1,SJSZ);  //顯示“時間”設(shè)置2個字
  34.                         Disp_chinese_16x16(112,2,1,leijijd[4]);//顯示“到”字
  35.                 }       
  36.                 else
  37.                 {
  38. /******************顯示年 月 日 時 分 秒 星期  ************************/      
  39.     Disp_Char_16x32(32,4,0,DSZ[shi/10%10]);  
  40.     Disp_Char_16x32(48,4,0,DSZ[shi%10]);
  41.     Disp_Char_16x32(64,4,0,DSZ[10]);   //冒號
  42.     Disp_Char_16x32(80,4,0,DSZ[fen/10%10]);
  43.     Disp_Char_16x32(96,4,0,DSZ[fen%10]);
  44.     Disp_Char_16x32(112,4,0,DSZ[10]);   //冒號
  45.     Disp_Char_16x32(128,4,0,DSZ[miao/10%10]);
  46.     Disp_Char_16x32(144,4,0,DSZ[miao%10]);
  47.     Disp_Char(0,6,0,SZ[nian/10%10]);
  48.     Disp_Char(8,6,0,SZ[nian%10]);
  49.     Disp_chinese_16x16(16,6,0,NYRSFMZ[0]); //年字
  50.     Disp_Char(32,6,0,SZ[yue/10%10]);  
  51.     Disp_Char(40,6,0,SZ[yue%10]);
  52.     Disp_chinese_16x16(48,6,0,NYRSFMZ[1]); //月字
  53.     Disp_Char(64,6,0,SZ[ri/10%10]);
  54.     Disp_Char(72,6,0,SZ[ri%10]);       
  55.     Disp_chinese_16x16(80,6,0,NYRSFMZ[2]); //日字
  56.     switch(xingqi) //將星期1-7轉(zhuǎn)換成中文顯示
  57.     {
  58.         case 1: {
  59.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  60.                     Disp_chinese_16x16(112,6,0,DaXieShuZi[1]);
  61.                  };break;
  62.         case 2: {
  63.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  64.                     Disp_chinese_16x16(112,6,0,DaXieShuZi[2]);
  65.                 };break;
  66.         case 3: {
  67.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  68.                     Disp_chinese_16x16(112,6,0,DaXieShuZi[3]);
  69.                 };break;
  70.         case 4: {
  71.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  72.                     Disp_chinese_16x16(112,6,0,DaXieShuZi[4]);
  73.                 };break;
  74.         case 5: {
  75.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  76.                     Disp_chinese_16x16(112,6,0,DaXieShuZi[5]);
  77.                 };break;
  78.         case 6: {
  79.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  80.                     Disp_chinese_16x16(112,6,0,DaXieShuZi[6]);
  81.                 };break;
  82.         case 7: {
  83.                     Disp_chinese_16x16(96,6,0,NYRSFMZ[6]);
  84.                     Disp_chinese_16x16(112,6,0,NYRSFMZ[2]);
  85.                 };break;
  86.     }
  87.                 /*************************************顯示溫度值*********************************************/       
  88. //////////////////////////////////如果溫度為零下時////////////////////////////////////////
  89. if(tflag==1)  
  90. {
  91.    
  92.     if(tvalue==0)
  93.     {
  94.         Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  95.         Disp_Char(144,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  96.         Disp_Char(152,6,0,F8X16[0]);//用空白字模擦除不需要顯示的內(nèi)容
  97.         Disp_Char(160,6,0,F8X16[0]);  //用空白字模擦除不需要顯示的內(nèi)容
  98.         Disp_Char(168,6,0,SZ[0]);
  99.         Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  100.         Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"         
  101.     }
  102.     else
  103.     {
  104.         if(tvalue<10)
  105.         {
  106.             Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  107.             Disp_Char(144,6,0,F8X16[13]); //用空白字模擦除不需要顯示的內(nèi)容
  108.             Disp_Char(152,6,0,SZ[0]);
  109.             Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  110.             Disp_Char(168,6,0,SZ[tvalue%10]);
  111.             Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  112.             Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"         
  113.         }
  114.         else
  115.         {
  116.             if(tvalue<100)
  117.             {
  118.                 Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  119.                 Disp_Char(144,6,0,F8X16[13]); //用空白字模擦除不需要顯示的內(nèi)容
  120.                 Disp_Char(152,6,0,SZ[tvalue/10%10]);
  121.                 Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  122.                 Disp_Char(168,6,0,SZ[tvalue%10]);
  123.                 Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  124.                 Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"
  125.             }
  126.             else
  127.             {
  128.                 if(tvalue<1000)
  129.                 {
  130.                     Disp_Char(136,6,0,F8X16[13]); //用空白字模擦除不需要顯示的內(nèi)容
  131.                     Disp_Char(144,6,0,SZ[tvalue/100%10]); //顯示溫度十位
  132.                     Disp_Char(152,6,0,SZ[tvalue/10%10]);
  133.                     Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  134.                     Disp_Char(168,6,0,SZ[tvalue%10]);
  135.                     Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  136.                     Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"                  
  137.                 }
  138.              /*   else  //一般不會達到零下100度的低溫,不做無意義的事情,在這里屏蔽掉此段,
  139.                 {
  140.                     Disp_Char(136,6,0,SZ[tvalue/1000%10]);//溫度的負數(shù)和超過100度溫度時的顯示待處理
  141.                     Disp_Char(144,6,0,SZ[tvalue/100%10]); //顯示溫度十位
  142.                     Disp_Char(152,6,0,SZ[tvalue/10%10]);
  143.                     Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  144.                     Disp_Char(168,6,0,SZ[tvalue%10]);
  145.                     Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  146.                     Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"
  147.                 }  */
  148.             }
  149.         }
  150.     }  
  151. }
  152. else
  153. ////////////////////如果溫度為正時/////////////////////////////////////////////
  154. {
  155.     if(tvalue==0)
  156.     {
  157.         Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  158.         Disp_Char(144,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  159.         Disp_Char(152,6,0,F8X16[0]);//用空白字模擦除不需要顯示的內(nèi)容
  160.         Disp_Char(160,6,0,F8X16[0]);  //用空白字模擦除不需要顯示的內(nèi)容
  161.         Disp_Char(168,6,0,SZ[0]);
  162.         Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  163.         Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"   
  164.     }
  165.     else
  166.     {
  167.     if(tvalue<10)
  168.     {
  169.         Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  170.         Disp_Char(144,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  171.         Disp_Char(152,6,0,SZ[0]);
  172.         Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  173.         Disp_Char(168,6,0,SZ[tvalue%10]);
  174.         Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  175.         Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"
  176.     }
  177.     else
  178.     {
  179.     if(tvalue<100)
  180.     {
  181.         Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  182.         Disp_Char(144,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  183.         Disp_Char(152,6,0,SZ[tvalue/10%10]);
  184.         Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  185.         Disp_Char(168,6,0,SZ[tvalue%10]);
  186.         Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  187.         Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"
  188.     }
  189.     else
  190.     {
  191.         if(tvalue<1000)
  192.         {
  193.             Disp_Char(136,6,0,F8X16[0]); //用空白字模擦除不需要顯示的內(nèi)容
  194.             Disp_Char(144,6,0,SZ[tvalue/100%10]); //顯示溫度十位
  195.             Disp_Char(152,6,0,SZ[tvalue/10%10]);
  196.             Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  197.             Disp_Char(168,6,0,SZ[tvalue%10]);
  198.             Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  199.             Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"        
  200.         }
  201.         else
  202.         {
  203.             Disp_Char(136,6,0,SZ[tvalue/1000%10]);//溫度的負數(shù)和超過100度溫度時的顯示待處理
  204.             Disp_Char(144,6,0,SZ[tvalue/100%10]); //顯示溫度十位
  205.             Disp_Char(152,6,0,SZ[tvalue/10%10]);
  206.             Disp_Char(160,6,0,F8X16[14]);  //小數(shù)點
  207.             Disp_Char(168,6,0,SZ[tvalue%10]);
  208.             Disp_Char(176,6,0,F8X16[97]); //溫度符號攝氏度的點
  209.             Disp_Char(184,6,0,F8X16[35]); //溫度符號攝氏度的"C"
  210.         }
  211.       }
  212.     }
  213.    }
  214. }
  215.                 }
  216. }       
  217. /**********************************************************************************/

  218. /*******************************主函數(shù)************************************/
  219. void main()
  220. {
  221.         char i=0; //將i的數(shù)據(jù)類型定義為char型,而不是unsigned char 型,在通過按鍵調(diào)節(jié)減這個變量時不會出現(xiàn)小于0時自動到255,而是停留在0不變
  222.         uchar col,lie,cachu,kong;
  223.         char flash=0; //反白顯示溫度調(diào)節(jié)的上下限值,在902行溫度設(shè)置部分使用此變量
  224.         uchar j=0,k=0;//將j默認定位在6是讓調(diào)節(jié)選定用箭頭放在分鐘值上。k是鬧鐘時間值調(diào)節(jié)的位置
  225.         bit Set_OK_Flag = 0;  //設(shè)定OK標志位
  226.         P4M1=0x0C;  //將P4端口設(shè)為普通IO口
  227.         P4M0=0x7E;
  228.   P4SW=0x70;
  229.         LcdInit();    //LCD初始化
  230.         InitUART();   //串口初始化
  231.         Init_time(30,59,10,02,14,01,20); //系統(tǒng)時間初始化
  232.         x24C02_init(); //24c02初始化函數(shù)
  233.         kjcs = x24C02_read(2);//把24c02的地址2讀出來的數(shù)據(jù)賦給kjcs
  234.         delay_xms(50);         
  235.         wenduszg = x24C02_read(3);   //把24c16的地址3讀出來的數(shù)據(jù)賦給wenduszg
  236.         delay_xms(50);
  237.         wenduszd = x24C02_read(4);   //把24c16的地址4讀出來的數(shù)據(jù)賦給wenduszd
  238.         delay_xms(50);
  239.         NaoZhongShi = x24C02_read(5);   //把24c16的地址4讀出來的數(shù)據(jù)賦給NaoZhongShi
  240.         delay_xms(10);
  241.         NaoZhongFen = x24C02_read(6);   //把24c16的地址4讀出來的數(shù)據(jù)賦給NaoZhongFen
  242.         delay_xms(10);
  243.         NaoZhongMiao = x24C02_read(7);   //把24c16的地址4讀出來的數(shù)據(jù)賦給NaoZhongMiao
  244.         delay_xms(10);
  245.         if(kjcs>9999) //限制開機次數(shù)計到9999后就歸零
  246.                 kjcs = 0;
  247.                 kjcs++;   //每次開機就加1
  248.         delay_xms(20); //延時20毫秒
  249.         x24C02_write(2,kjcs);  //在24c02中的地址2寫入數(shù)據(jù)開機次數(shù)
  250.         ClearDisplay(); //清理一次屏幕
  251.   DeskWall();//待機頁面 */       
  252.         while(1)
  253.         {       
  254.           key=Scan_Key();  //獲取鍵值
  255. //                num = Key_Get_Num();
  256. //                Disp_Char(0,0,0,SZ[num%10]);//在右上角顯示按鍵值,用于調(diào)試
  257. //                Disp_Char(168,0,0,SZ[key/100%10]);//在右上角顯示按鍵值,用于調(diào)試
  258. //                Disp_Char(176,0,0,SZ[key/10%10]); //K
  259. //                Disp_Char(184,0,0,SZ[key%10]);//在右上角顯示按鍵值,用于調(diào)試
  260. /**************************制冷模式的溫控*************************************************/
  261.                 if(((tvalue/10)>wenduszg)) //如果溫度高于上限值,并且在溫度設(shè)置界面時,繼電器吸合制冷,顯示“開啟”
  262.                 {
  263.                         JDQ = 0;
  264.                 }
  265.                 else
  266.                 if(((tvalue/10)<wenduszd))   //如果溫度低于下限值,并且在溫度設(shè)置界面時,繼電器釋放制冷,顯示“關(guān)閉”
  267.                 {
  268.                         JDQ = 1;
  269.                 }               
  270. /***************************************************************************************/
  271.                
  272. /**************************制熱模式的溫控************************************************/
  273. //                if((tvalue/10)<wenduszd) //如果溫度低于下限值,繼電器吸合制熱升溫
  274. //                {
  275. //                        JDQ = 0;
  276. //                }
  277. //                else
  278. //                if((tvalue/10)>wenduszg)
  279. //                {
  280. //                        JDQ = 1;
  281. //                }               
  282. /***************************************************************************************/               
  283.                 if(MenuFlag1==0) //如果1級菜單退出,
  284.                    DeskWall();        //則顯示桌面
  285.                 //////////////////////////////////////////////菜單框架
  286.                 if(key==ENT)//如果待機時不斷地按ENT鍵,一級一級深入各級菜單
  287.                 {
  288.                                
  289.                          if(key==ENT&&MenuFlag1==0&&MenuFlag2==0&&MenuFlag3==0)
  290.                          {
  291.                                         ClearDisplay(); //清理一次屏幕
  292.                                         Beep(SHORT_JIAO,8,4);
  293.                                         MenuFlag1=1;
  294.                                   Set_OK_Flag = 0;
  295.                                 Disp_chinese_16x16(48,i,0,leijijd[5]);//顯示“箭頭”在幾行之間移動動
  296.                                 Disp_chinese_N_16x16(64,0,4,0,SJSZ);  //在第一行顯示"時間設(shè)置"4個字       
  297.                           Disp_chinese_N_16x16(64,2,4,0,NZSZ);  //在第二行顯示"鬧鐘設(shè)置"4個字
  298.                           Disp_chinese_N_16x16(64,4,4,0,WDSZ);  //在第三行顯示"溫度設(shè)置"4個字
  299.                                 Disp_Char(64,6,0,ZM[6]);
  300.                                 Disp_Char(72,6,0,ZM[15]);
  301.                                 Disp_Char(80,6,0,ZM[18]);
  302.                                 Disp_chinese_N_16x16(88,6,2,0,XX);           //在第四行顯示"GPS信息"5個字       
  303.                          }
  304.                          else
  305.                          {
  306.                                         if(key==ENT&&MenuFlag1==1&&MenuFlag2==0&&MenuFlag3==0)
  307.                                         {
  308.                                                  ClearDisplay(); //清理一次屏幕
  309.                                                  Beep(SHORT_JIAO,8,4);
  310.                                                  MenuFlag2=1;
  311.                                                  Set_OK_Flag = 0;
  312.                                                   j = 1;
  313.                                                    k = 1;
  314.                                                   switch(k)  //通過調(diào)整k的值,對應(yīng)賦lie的值,lie就是向上箭頭位置,就是調(diào)節(jié)值的位置
  315.                                                         {
  316.                                                                 case 1: { lie = 64;  };break;
  317.                                                                 case 2: { lie = 88; };break;
  318.                                                                 case 3: { lie = 112; };break;
  319.                                                                
  320.                                                         }
  321.                                                   switch(j)  //通過調(diào)整j的值,對應(yīng)賦col的值,col就是向上箭頭位置,就是調(diào)節(jié)值的位置
  322.                                                         {
  323.                                                                 case 1: { col = 0;  };break;
  324.                                                                 case 2: { col = 32; };break;
  325.                                                                 case 3: { col = 64; };break;
  326.                                                                 case 4: { col = 112; };break;
  327.                                                                 case 5: { col = 128; };break;
  328.                                                                 case 6: { col = 152; };break;
  329.                                                                 case 7: { col = 176; };break;
  330.                                                         }
  331.                                                  switch(i)  //2級菜單要顯示的內(nèi)容決定于i的值,i值剛好在1級菜單時通過DOWM和UP鍵設(shè)定好了
  332.                                                         {
  333.                                                                 case 0: { //i等于0時顯示時間設(shè)置的具體界面
  334.                                                                                     Disp_chinese_N_16x16(64,0,4,0,SJSZ);  //在第一行顯示"時間設(shè)置"4個字       
  335.                                                                                                                         Disp_chinese_16x16(col,4,0,leijijd[6]);//顯示“向上箭頭”在調(diào)節(jié)值之間切換移動
  336.                                                                                                                         Disp_Char(0,2,0,SZ[nian/10%10]);
  337.                                                                                                                         Disp_Char(8,2,0,SZ[nian%10]);
  338.                                                                                                                         Disp_chinese_16x16(16,2,0,NYRSFMZ[0]); //年
  339.                                                                                                                         Disp_Char(32,2,0,SZ[yue/10%10]);  
  340.                                                                                                                         Disp_Char(40,2,0,SZ[yue%10]);
  341.                                                                                                                         Disp_chinese_16x16(48,2,0,NYRSFMZ[1]);  //月
  342.                                                                                                                         Disp_Char(64,2,0,SZ[ri/10%10]);
  343.                                                                                                                         Disp_Char(72,2,0,SZ[ri%10]);
  344.                                                                                                                         Disp_chinese_16x16(80,2,0,NYRSFMZ[2]);  //日
  345.                                                                                                                         Disp_chinese_16x16(96,2,0,NYRSFMZ[6]);  //周
  346.                                                                                                                         Disp_chinese_16x16(112,2,0,DaXieShuZi[xingqi]);
  347.                                                                                                                         Disp_Char(128,2,0,SZ[shi/10%10]);
  348.                                                                                                                         Disp_Char(136,2,0,SZ[shi%10]);
  349.                                                                                                                         Disp_Char(144,2,0,FH[0]);   //冒號
  350.                                                                                                                         Disp_Char(152,2,0,SZ[fen/10%10]);
  351.                                                                                                                         Disp_Char(160,2,0,SZ[fen%10]);
  352.                                                                                                                         Disp_Char(168,2,0,FH[0]);   //冒號
  353.                                                                                                                         Disp_Char(176,2,0,SZ[miao/10%10]);
  354.                                                                                                                         Disp_Char(184,2,0,SZ[miao%10]);
  355.                                                                                                                 };  break;
  356.                                                                 case 2: {   //i等于2時顯示鬧鐘設(shè)置的具體界面
  357.                                                                                     Disp_chinese_N_16x16(64,0,4,0,NZSZ);  //在第1行顯示"鬧鐘設(shè)置"4個字
  358.                                                                                     Disp_chinese_16x16(lie,4,0,leijijd[6]);//顯示“向上箭頭”在調(diào)節(jié)值之間切換移動
  359.                                                                                                                         Disp_Char(64,2,0,SZ[NaoZhongShi/10%10]);
  360.                                                                                                                         Disp_Char(72,2,0,SZ[NaoZhongShi%10]);
  361.                                                                                                                         Disp_Char(80,2,0,FH[0]);   //冒號
  362.                                                                                                                         Disp_Char(88,2,0,SZ[NaoZhongFen/10%10]);
  363.                                                                                                                         Disp_Char(96,2,0,SZ[NaoZhongFen%10]);
  364.                                                                                                                         Disp_Char(104,2,0,FH[0]);   //冒號
  365.                                                                                                                         Disp_Char(112,2,0,SZ[NaoZhongMiao/10%10]);
  366.                                                                                                                         Disp_Char(120,2,0,SZ[NaoZhongMiao%10]);
  367.                                                                                                                 };  break;
  368.                                                                 case 4: {   //i等于4時顯示溫度設(shè)置的具體界面
  369.                                                                                                                         Disp_chinese_N_16x16(64,0,4,0,WDSZ);//正中1行顯示"溫度設(shè)置"四個字
  370.                                                                        
  371.                                                                                                                         Disp_chinese_16x16(0,2,0,gao);//"高"
  372.                                                                                                                         Disp_chinese_16x16(16,2,0,yu);//"于"
  373.                                                                                     Disp_Char(32,2,0,FH[0]);//":"
  374.                                                                                                                         if(wenduszg<100)  //低于100時百位顯示空白
  375.                                                                                                                         {
  376.                                                                                                                                         Disp_Char(40,2,0,F8X16[0]);//"wenduszg"百位位置顯示空白
  377.                                                                                                                                         Disp_Char(48,2,0,SZ[wenduszg/10%10]);//"wenduszg"溫度設(shè)置高
  378.                                                                                                                                         Disp_Char(56,2,0,SZ[wenduszg%10]);
  379.                                                                                                                         }
  380.                                                                                                                         else
  381.                                                                                                                         {
  382.                                                                                                                                         Disp_Char(40,2,0,SZ[wenduszg/100%10]);//"wenduszg"溫度設(shè)置高
  383.                                                                                                                                         Disp_Char(48,2,0,SZ[wenduszg/10%10]);//"wenduszg"溫度設(shè)置高
  384.                                                                                                                                         Disp_Char(56,2,0,SZ[wenduszg%10]);
  385.                                                                                                                         }
  386. //                                                                                    Disp_Char(40,2,0,SZ[wenduszg/100%10]);//"wenduszg"溫度設(shè)置高
  387. //                                                                                                                        Disp_Char(48,2,0,SZ[wenduszg/10%10]);
  388. //                                                                                                                        Disp_Char(56,2,0,SZ[wenduszg%10]);
  389.                                                                                     Disp_Char(64,2,0,F8X16[97]); //溫度符號攝氏度的點
  390.                                                                                                                         Disp_Char(72,2,0,F8X16[35]); //溫度符號攝氏度的"C"                                                                                    
  391.                                                                                                                         Disp_chinese_16x16(80,2,0,kai);//"開"
  392.                                                                                                                         Disp_chinese_16x16(96,2,0,qi);//"啟"
  393.                                                                        
  394.                                                                                                                         Disp_chinese_16x16(0,6,0,di);//"低"
  395.                                                                                                                         Disp_chinese_16x16(16,6,0,yu);//"于"
  396.                                                                                                                         Disp_Char(32,6,0,FH[0]);//":"
  397.                                                                                                                         if(wenduszd<100)
  398.                                                                                                                         {
  399.                                                                                                                                         Disp_Char(40,6,0,F8X16[0]);//"wenduszd"百位位置顯示空白
  400.                                                                                                                                         Disp_Char(48,6,0,SZ[wenduszd/10%10]);//"wenduszd"溫度設(shè)置低
  401.                                                                                                                                         Disp_Char(56,6,0,SZ[wenduszd%10]);
  402.                                                                                                                         }
  403.                                                                                                                         else
  404.                                                                                                                         {
  405.                                                                                                                                         Disp_Char(40,6,0,SZ[wenduszd/100%10]);//"wenduszd"溫度設(shè)置低
  406.                                                                                                                                         Disp_Char(48,6,0,SZ[wenduszd/10%10]);//"wenduszd"溫度設(shè)置低
  407.                                                                                                                                         Disp_Char(56,6,0,SZ[wenduszd%10]);
  408.                                                                                                                         }
  409. //                                                                                    Disp_Char(40,6,0,SZ[wenduszd/100%10]);//"wenduszd"溫度設(shè)置低
  410. //                                                                                    Disp_Char(48,6,0,SZ[wenduszd/10%10]);//"wenduszd"溫度設(shè)置低
  411. //                                                                                                                        Disp_Char(56,6,0,SZ[wenduszd%10]);                               
  412.                                                                                                                         Disp_Char(64,6,0,F8X16[97]); //溫度符號攝氏度的點
  413.                                                                                                                         Disp_Char(72,6,0,F8X16[35]); //溫度符號攝氏度的"C"                                                                                                                
  414.                                                                                                                         Disp_chinese_16x16(80,6,0,guan);//"關(guān)"
  415.                                                                                                                         Disp_chinese_16x16(96,6,0,bi);//"閉"
  416.                                                                                                                         if(JDQ==0)
  417.                                                                                                                         {
  418.                                                                                                                                 Disp_chinese_16x16(160,4,1,kai);//"開"
  419.                                                                                                                                 Disp_chinese_16x16(176,4,1,qi);//"啟"
  420.                                                                                                                         }
  421.                                                                                                                         else       
  422.                                                                                                                         {
  423.                                                                                                                                 Disp_chinese_16x16(160,4,1,guan);//"關(guān)"
  424.                                                                                                                                 Disp_chinese_16x16(176,4,1,bi);//"閉"
  425.                                                                                                                         }
  426.                                                                                                 };  break;
  427.                                                                 case 6: {   //i等于6時顯示GPS信息的具體界面
  428.                                                                                                                         Disp_Char(64,0,0,ZM[6]);
  429.                                                                                                                         Disp_Char(72,0,0,ZM[15]);
  430.                                                                                                                         Disp_Char(80,0,0,ZM[18]);
  431.                                                                                                                         Disp_chinese_N_16x16(88,0,2,0,XX);
  432.                                                                                                                 };  break;
  433.                                                                 default:{;};break;
  434.                                                         }
  435.                                         }
  436.                                         else
  437.                                         {
  438.                                                  if(key==ENT&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==0) //如果進入了2級菜單還在按ENT鍵,就進入第三級菜單
  439.                                                  {
  440.                                                                 ClearDisplay(); //清理一次屏幕
  441.                                                                 Beep(SHORT_JIAO,8,4);
  442.                                                                 MenuFlag3=1;
  443.                                                           Set_OK_Flag = 0;
  444.                                                  }
  445.                                                  else
  446.                                                  {
  447.                                                                 if(key==ENT&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==1)
  448.                                                                 {
  449.                                                                         Beep(LONG_JIAO,2,1);//如果打開到第三級到底了,還按ENT鍵的話就長叫提示到底不能再按
  450.                                                                 }
  451.                                                  }
  452.                                         }                         
  453.                          }       
  454.                 }
  455.                
  456.                  if(key==DOWN&&MenuFlag1==1&&MenuFlag2==0&&MenuFlag3==0) //如果進入1級菜單時按DOWN鍵
  457.                                 {
  458.                                                 i+=2;
  459.                                                 if(i>6)
  460.                                                         i=0;
  461.                                                 if((i-2)<0)
  462.                                                         Disp_chinese_16x16(48,6,0,leijijd[7]);//當i-2小于0時,不能負數(shù),此處完美解決
  463.                                         //        ClearDisplay(); //清理一次屏幕
  464.                                                 Beep(SHORT_JIAO,5,5);
  465.                                                 Disp_chinese_16x16(48,i-2,0,leijijd[7]);//把上次的箭頭擦除
  466.                                                 Disp_chinese_16x16(48,i,0,leijijd[5]);//顯示“箭頭”在幾行之間移動動
  467.                                                 Disp_chinese_N_16x16(64,0,4,0,SJSZ);  //在第一行顯示時間設(shè)置4個字       
  468.                                                 Disp_chinese_N_16x16(64,2,4,0,NZSZ);  //在第二行顯示"鬧鐘設(shè)置"4個字
  469.                                                 Disp_chinese_N_16x16(64,4,4,0,WDSZ);  //在第三行顯示"溫度設(shè)置"4個字
  470.                                                 Disp_Char(64,6,0,ZM[6]);
  471.                                                 Disp_Char(72,6,0,ZM[15]);
  472.                                                 Disp_Char(80,6,0,ZM[18]);
  473.                                                 Disp_chinese_N_16x16(88,6,2,0,XX);           //在第四行顯示"GPS信息"5個字       
  474.                                 }       
  475.                                
  476.                                 if(key==UP&&MenuFlag1==1&&MenuFlag2==0&&MenuFlag3==0)//如果進入1級菜單時按UP鍵
  477.                                 {
  478.                                         i-=2;
  479.                                         if((i-2)<0)
  480.                                                 Disp_chinese_16x16(48,0,0,leijijd[7]);//當i-2小于0時,不能負數(shù),此處完美解決
  481.                                         if(i<0)
  482.                                                 i=6;                               
  483.                                 //        ClearDisplay(); //清理一次屏幕
  484.                                         Beep(SHORT_JIAO,5,5);
  485.                                         Disp_chinese_16x16(48,i+2,0,leijijd[7]);//把上次的箭頭擦除
  486.                                         Disp_chinese_16x16(48,i,0,leijijd[5]);//顯示“箭頭”在幾行之間移動動
  487.                                         Disp_chinese_N_16x16(64,0,4,0,SJSZ);  //在第一行顯示時間設(shè)置4個字       
  488.                                         Disp_chinese_N_16x16(64,2,4,0,NZSZ);  //在第二行顯示"鬧鐘設(shè)置"4個字
  489.                                         Disp_chinese_N_16x16(64,4,4,0,WDSZ);  //在第三行顯示"溫度設(shè)置"4個字
  490.                                         Disp_Char(64,6,0,ZM[6]);
  491.                                         Disp_Char(72,6,0,ZM[15]);
  492.                                         Disp_Char(80,6,0,ZM[18]);
  493.                                         Disp_chinese_N_16x16(88,6,2,0,XX);           //在第四行顯示"GPS信息"5個字       
  494.                                 }       
  495.     if(key==ESC)  //如果待機時不斷地按ESC鍵,一級一級退出各級菜單,直到桌面
  496.                 {
  497.                          
  498.                         if(key==ESC&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==1) //如果第3級菜單打開時按ESC鍵,則退出3級菜單
  499.                         {
  500.                                  ClearDisplay(); //清理一次屏幕
  501.                                  Beep(SHORT_JIAO,8,4);
  502.                                  MenuFlag3=0;
  503.                                  Set_OK_Flag = 0;
  504.                                  switch(k)  //通過調(diào)整k的值,對應(yīng)賦lie的值,lie就是向上箭頭位置,就是調(diào)節(jié)值的位置
  505.                                         {
  506.                                                 case 1: { lie = 64;  };break;
  507.                                                 case 2: { lie = 88; };break;
  508.                                                 case 3: { lie = 112; };break;
  509.                                                
  510.                                         }
  511.                                  switch(j)  //通過調(diào)整j的值,對應(yīng)賦col的值,col就是向上箭頭位置,就是調(diào)節(jié)值的位置
  512.                                         {
  513.                                                 case 1: { col = 0;  };break;
  514.                                                 case 2: { col = 32; };break;
  515.                                                 case 3: { col = 64; };break;
  516.                                                 case 4: { col = 112; };break;
  517.                                                 case 5: { col = 128; };break;
  518.                                                 case 6: { col = 152; };break;
  519.                                                 case 7: { col = 176; };break;
  520.                                         }
  521.                                  switch(i)   //2級菜單要顯示的內(nèi)容決定于i的值,i值剛好在1級菜單時通過DOWM和UP鍵設(shè)定好了
  522.                                                         {
  523.                                                                 case 0: {   //i等于0時顯示時間設(shè)置的具體界面
  524.                                                                                   Disp_chinese_N_16x16(64,0,4,0,SJSZ);  //在第一行顯示"時間設(shè)置"4個字       
  525.                                                                                                                 Disp_chinese_16x16(col,4,0,leijijd[6]);//顯示“向上箭頭”在調(diào)節(jié)值之間切換移動
  526.                                                                                                                 Disp_Char(0,2,0,SZ[nian/10%10]);
  527.                                                                                                                 Disp_Char(8,2,0,SZ[nian%10]);
  528.                                                                                                                 Disp_chinese_16x16(16,2,0,NYRSFMZ[0]); //年
  529.                                                                                                                 Disp_Char(32,2,0,SZ[yue/10%10]);  
  530.                                                                                                                 Disp_Char(40,2,0,SZ[yue%10]);
  531.                                                                                                                 Disp_chinese_16x16(48,2,0,NYRSFMZ[1]);  //月
  532.                                                                                                                 Disp_Char(64,2,0,SZ[ri/10%10]);
  533.                                                                                                                 Disp_Char(72,2,0,SZ[ri%10]);
  534.                                                                                                                 Disp_chinese_16x16(80,2,0,NYRSFMZ[2]);  //日
  535.                                                                                                                 Disp_chinese_16x16(96,2,0,NYRSFMZ[6]);  //周
  536.                                                                                                                 Disp_chinese_16x16(112,2,0,DaXieShuZi[xingqi]);
  537.                                                                                                                 Disp_Char(128,2,0,SZ[shi/10%10]);
  538.                                                                                                                 Disp_Char(136,2,0,SZ[shi%10]);
  539.                                                                                                                 Disp_Char(144,2,0,FH[0]);   //冒號
  540.                                                                                                                 Disp_Char(152,2,0,SZ[fen/10%10]);
  541.                                                                                                                 Disp_Char(160,2,0,SZ[fen%10]);
  542.                                                                                                                 Disp_Char(168,2,0,FH[0]);   //冒號
  543.                                                                                                                 Disp_Char(176,2,0,SZ[miao/10%10]);
  544.                                                                                                                 Disp_Char(184,2,0,SZ[miao%10]);
  545.                                                                                                         };  break;
  546.                                                                 case 2: {   //i等于2時顯示鬧鐘設(shè)置的具體界面
  547.                                                                                   Disp_chinese_N_16x16(64,0,4,0,NZSZ);  //在第1行顯示"鬧鐘設(shè)置"4個字
  548.                                                                                   Disp_chinese_16x16(lie,4,0,leijijd[6]);//顯示“向上箭頭”在調(diào)節(jié)值之間切換移動
  549.                                                                                                                 Disp_Char(64,2,0,SZ[NaoZhongShi/10%10]);
  550.                                                                                                                 Disp_Char(72,2,0,SZ[NaoZhongShi%10]);
  551.                                                                                                                 Disp_Char(80,2,0,FH[0]);   //冒號
  552.                                                                                                                 Disp_Char(88,2,0,SZ[NaoZhongFen/10%10]);
  553.                                                                                                                 Disp_Char(96,2,0,SZ[NaoZhongFen%10]);
  554.                                                                                                                 Disp_Char(104,2,0,FH[0]);   //冒號
  555.                                                                                                                 Disp_Char(112,2,0,SZ[NaoZhongMiao/10%10]);
  556.                                                                                                                 Disp_Char(120,2,0,SZ[NaoZhongMiao%10]);
  557.                                                                                                 };  break;
  558.                                                                 case 4: {   //i等于4時顯示溫度設(shè)置的具體界面
  559.                                                                                                                 Disp_chinese_N_16x16(64,0,4,0,WDSZ);//正中1行顯示"溫度設(shè)置"四個字
  560.                                                                        
  561.                                                                                                                         Disp_chinese_16x16(0,2,0,gao);//"高"
  562.                                                                                                                         Disp_chinese_16x16(16,2,0,yu);//"于"
  563.                                                                                     Disp_Char(32,2,0,FH[0]);//":"
  564.                                                                                                                         if(wenduszg<100)  //低于100時百位顯示空白
  565.                                                                                                                         {
  566.                                                                                                                                         Disp_Char(40,2,0,F8X16[0]);//"wenduszg"百位位置顯示空白
  567.                                                                                                                                         Disp_Char(48,2,0,SZ[wenduszg/10%10]);//"wenduszg"溫度設(shè)置高
  568.                                                                                                                                         Disp_Char(56,2,0,SZ[wenduszg%10]);
  569.                                                                                                                         }
  570.                                                                                                                         else
  571.                                                                                                                         {
  572.                                                                                                                                         Disp_Char(40,2,0,SZ[wenduszg/100%10]);//"wenduszg"溫度設(shè)置高
  573.                                                                                                                                         Disp_Char(48,2,0,SZ[wenduszg/10%10]);//"wenduszg"溫度設(shè)置高
  574.                                                                                                                                         Disp_Char(56,2,0,SZ[wenduszg%10]);
  575.                                                                                                                         }
  576. //                                                                                    Disp_Char(40,2,0,SZ[wenduszg/100%10]);//"wenduszg"溫度設(shè)置高
  577. //                                                                                                                        Disp_Char(48,2,0,SZ[wenduszg/10%10]);
  578. //                                                                                                                        Disp_Char(56,2,0,SZ[wenduszg%10]);
  579.                                                                                     Disp_Char(64,2,0,F8X16[97]); //溫度符號攝氏度的點
  580.                                                                                                                         Disp_Char(72,2,0,F8X16[35]); //溫度符號攝氏度的"C"                                                                                    
  581.                                                                                                                         Disp_chinese_16x16(80,2,0,kai);//"開"
  582.                                                                                                                         Disp_chinese_16x16(96,2,0,qi);//"啟"
  583.                                                                        
  584.                                                                                                                         Disp_chinese_16x16(0,6,0,di);//"低"
  585.                                                                                                                         Disp_chinese_16x16(16,6,0,yu);//"于"
  586.                                                                                                                         Disp_Char(32,6,0,FH[0]);//":"
  587.                                                                                                                         if(wenduszd<100)
  588.                                                                                                                         {
  589.                                                                                                                                         Disp_Char(40,6,0,F8X16[0]);//"wenduszd"百位位置顯示空白
  590.                                                                                                                                         Disp_Char(48,6,0,SZ[wenduszd/10%10]);//"wenduszd"溫度設(shè)置低
  591.                                                                                                                                         Disp_Char(56,6,0,SZ[wenduszd%10]);
  592.                                                                                                                         }
  593.                                                                                                                         else
  594.                                                                                                                         {
  595.                                                                                                                                         Disp_Char(40,6,0,SZ[wenduszd/100%10]);//"wenduszd"溫度設(shè)置低
  596.                                                                                                                                         Disp_Char(48,6,0,SZ[wenduszd/10%10]);//"wenduszd"溫度設(shè)置低
  597.                                                                                                                                         Disp_Char(56,6,0,SZ[wenduszd%10]);
  598.                                                                                                                         }
  599. //                                                                                    Disp_Char(40,6,0,SZ[wenduszd/100%10]);//"wenduszd"溫度設(shè)置低
  600. //                                                                                    Disp_Char(48,6,0,SZ[wenduszd/10%10]);
  601. //                                                                                                                        Disp_Char(56,6,0,SZ[wenduszd%10]);                               
  602.                                                                                                                         Disp_Char(64,6,0,F8X16[97]); //溫度符號攝氏度的點
  603.                                                                                                                         Disp_Char(72,6,0,F8X16[35]); //溫度符號攝氏度的"C"                                                                                                                
  604.                                                                                                                         Disp_chinese_16x16(80,6,0,guan);//"關(guān)"
  605.                                                                                                                         Disp_chinese_16x16(96,6,0,bi);//"閉"
  606.                                                                                                                         if(JDQ==0)
  607.                                                                                                                         {
  608.                                                                                                                                 Disp_chinese_16x16(160,4,1,kai);//"開"
  609.                                                                                                                                 Disp_chinese_16x16(176,4,1,qi);//"啟"
  610.                                                                                                                         }
  611.                                                                                                                         else       
  612.                                                                                                                         {
  613.                                                                                                                                 Disp_chinese_16x16(160,4,1,guan);//"關(guān)"
  614.                                                                                                                                 Disp_chinese_16x16(176,4,1,bi);//"閉"
  615.                                                                                                                         }
  616.                                                                         };  break;
  617.                                                                 case 6: {   //i等于6時顯示GPS信息的具體界面
  618.                                                                                                                 Disp_Char(64,0,0,ZM[6]);
  619.                                                                                                                 Disp_Char(72,0,0,ZM[15]);
  620.                                                                                                                 Disp_Char(80,0,0,ZM[18]);
  621.                                                                                                                 Disp_chinese_N_16x16(88,0,2,0,XX);
  622.                                                                                                 };  break;
  623.                                                                 default:{;};break;
  624.                                                         }
  625.                         }
  626.                         else
  627.                         {
  628.                                 if(key==ESC&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==0)  //如果退出到2級菜單還按ESC鍵,則進入1級菜單
  629.                                 {
  630.                                          ClearDisplay(); //清理一次屏幕
  631.                                          Beep(SHORT_JIAO,8,4);
  632.                                          MenuFlag2=0;
  633.                                          Set_OK_Flag = 0;
  634.                                          Disp_chinese_16x16(48,i,0,leijijd[5]);//顯示“箭頭”在幾行之間移動動
  635.                                          Disp_chinese_N_16x16(64,0,4,0,SJSZ);  //在第一行顯示時間設(shè)置4個字       
  636.                                          Disp_chinese_N_16x16(64,2,4,0,NZSZ);  //在第二行顯示"鬧鐘設(shè)置"4個字
  637.                                          Disp_chinese_N_16x16(64,4,4,0,WDSZ);  //在第三行顯示"溫度設(shè)置"4個字
  638.                                          Disp_Char(64,6,0,ZM[6]);
  639.                                          Disp_Char(72,6,0,ZM[15]);
  640.                                          Disp_Char(80,6,0,ZM[18]);
  641.                                          Disp_chinese_N_16x16(88,6,2,0,XX);           //在第四行顯示"GPS信息"5個字       
  642.                                 }
  643.                                 else
  644.                                 {
  645.                                         if(key==ESC&&MenuFlag1==1&&MenuFlag2==0&&MenuFlag3==0) //如果退出到1級菜單還按ESC鍵,則進入桌面待機頁面
  646.                                         {
  647.                                                  ClearDisplay(); //清理一次屏幕
  648.                                                  Beep(SHORT_JIAO,8,4);
  649.                                                  MenuFlag1=0;
  650.                                                  Set_OK_Flag = 0;
  651.                                                  DeskWall();//最后回到待機頁面 */
  652.                                         }
  653.                                         else
  654.                                         {
  655.                                                 if(key==ESC&&MenuFlag1==0&&MenuFlag2==0&&MenuFlag3==0) //如果退出到桌面還按ESC鍵,告警音提示
  656.                                                 {
  657.                                                         Beep(LONG_JIAO,2,1);//如果關(guān)閉桌面到底了,還按ESC鍵的話就長叫提示到底不能再按
  658.                                                 }
  659.                                         }
  660.                                 }
  661.                         }
  662.                 }
  663.                
  664.                
  665.                 if(key==RIGHT&&i==0&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==0) //如果第3級菜單打開時并且是在時間設(shè)置界面時按RIGHT鍵,
  666.                 {
  667.                         // ClearDisplay(); //清理一次屏幕
  668.                          Set_OK_Flag = 0;    //
  669.                          Beep(SHORT_JIAO,8,4);
  670.                          j+=1;
  671.                          if(j>7)
  672.                          {
  673.                                  j=1;
  674.                          }
  675.        
  676.                                    switch(j)  //通過調(diào)整j的值,對應(yīng)賦col的值,col就是向上箭頭位置,就是調(diào)節(jié)值的位置
  677.                                         {
  678.                                                 case 1: { col = 0;  };break;
  679.                                                 case 2: { col = 32; };break;
  680.                                                 case 3: { col = 64; };break;
  681.                                                 case 4: { col = 112; };break;
  682.                                                 case 5: { col = 128; };break;
  683.                                                 case 6: { col = 152; };break;
  684.                                                 case 7: { col = 176; };break;
  685.                                         }
  686.                                                 switch(j-1)  //不同的J-1讓不同的擦除空格換位置
  687.                                         {
  688.                                                 case 1: { cachu = 0;  };break;
  689.                                                 case 2: { cachu = 32; };break;
  690.                                                 case 3: { cachu = 64; };break;
  691.                                                 case 4: { cachu = 112; };break;
  692.                                                 case 5: { cachu = 128; };break;
  693.                                                 case 6: { cachu = 152; };break;
  694.                                                 case 7: { cachu = 176; };break;
  695.                                                 default:{ Disp_chinese_16x16(176,4,0,leijijd[7]);};break; //此處就是j-1=0時就讓空白格停在秒值下
  696.                                         }
  697.                           //i等于0時顯示時間設(shè)置的具體界面
  698.                                 Disp_chinese_16x16(cachu,4,0,leijijd[7]);//把上次顯示的向上箭頭通過空白替換,起到擦除的效果,目的是避免每按鍵一次要清全屏的閃爍缺點
  699.                                  Disp_chinese_16x16(col,4,0,leijijd[6]);//顯示“向上箭頭”在調(diào)節(jié)值之間切換移動
  700.                                 Disp_Char(0,2,0,SZ[nian/10%10]);
  701.                                 Disp_Char(8,2,0,SZ[nian%10]);
  702.                                 Disp_chinese_16x16(16,2,0,NYRSFMZ[0]); //年
  703.                                 Disp_Char(32,2,0,SZ[yue/10%10]);  
  704.                                 Disp_Char(40,2,0,SZ[yue%10]);
  705.                                 Disp_chinese_16x16(48,2,0,NYRSFMZ[1]);  //月
  706.                                 Disp_Char(64,2,0,SZ[ri/10%10]);
  707.                                 Disp_Char(72,2,0,SZ[ri%10]);
  708.                                 Disp_chinese_16x16(80,2,0,NYRSFMZ[2]);  //日
  709.                                 Disp_chinese_16x16(96,2,0,NYRSFMZ[6]);  //周
  710.                                 Disp_chinese_16x16(112,2,0,DaXieShuZi[xingqi]);
  711.                                 Disp_Char(128,2,0,SZ[shi/10%10]);
  712.                                 Disp_Char(136,2,0,SZ[shi%10]);
  713.                                 Disp_Char(144,2,0,FH[0]);   //冒號
  714.                                 Disp_Char(152,2,0,SZ[fen/10%10]);
  715.                                 Disp_Char(160,2,0,SZ[fen%10]);
  716.                                 Disp_Char(168,2,0,FH[0]);   //冒號
  717.                                 Disp_Char(176,2,0,SZ[miao/10%10]);
  718.                                 Disp_Char(184,2,0,SZ[miao%10]);
  719.                 }
  720.                
  721.                 if(key==LEFT&&i==0&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==0) //如果第3級菜單打開時并且是在時間設(shè)置界面時按LEFT鍵,
  722.                 {
  723.                 //         ClearDisplay(); //清理一次屏幕
  724.                          Set_OK_Flag = 0;  
  725.                          Beep(SHORT_JIAO,8,4);
  726.                          j-=1;
  727.                           if(j<1)
  728.                                  j=7;
  729.                                         switch(j)  //通過調(diào)整j的值,對應(yīng)賦col的值,col就是向上箭頭位置,就是調(diào)節(jié)值的位置
  730.                                         {
  731.                                                 case 1: { col = 0;  };break;
  732.                                                 case 2: { col = 32; };break;
  733.                                                 case 3: { col = 64; };break;
  734.                                                 case 4: { col = 112; };break;
  735.                                                 case 5: { col = 128; };break;
  736.                                                 case 6: { col = 152; };break;
  737.                                                 case 7: { col = 176; };break;
  738.                                         }
  739.                                                         switch(j+1)  //不同的J+1讓不同的擦除空格換位置,模擬擦除效果
  740.                                         {
  741.                                                 case 1: { cachu = 0;  };break;
  742.                                                 case 2: { cachu = 32; };break;
  743.                                                 case 3: { cachu = 64; };break;
  744.                                                 case 4: { cachu = 112; };break;
  745.                                                 case 5: { cachu = 128; };break;
  746.                                                 case 6: { cachu = 152; };break;
  747.                                                 case 7: { cachu = 176; };break;
  748.                                                 default:{ Disp_chinese_16x16(0,4,0,leijijd[7]);};break; //此處就是j+1=8時就讓空白格停在年值下
  749.                                         }
  750.                           //i等于0時顯示時間設(shè)置的具體界面
  751.                                 Disp_chinese_16x16(cachu,4,0,leijijd[7]);//把上次顯示的向上箭頭通過空白替換起到擦除的效果
  752.                                  Disp_chinese_16x16(col,4,0,leijijd[6]);//顯示“向上箭頭”在調(diào)節(jié)值之間切換移動
  753.                                 Disp_Char(0,2,0,SZ[nian/10%10]);
  754.                                 Disp_Char(8,2,0,SZ[nian%10]);
  755.                                 Disp_chinese_16x16(16,2,0,NYRSFMZ[0]); //年
  756.                                 Disp_Char(32,2,0,SZ[yue/10%10]);  
  757.                                 Disp_Char(40,2,0,SZ[yue%10]);
  758.                                 Disp_chinese_16x16(48,2,0,NYRSFMZ[1]);  //月
  759.                                 Disp_Char(64,2,0,SZ[ri/10%10]);
  760.                                 Disp_Char(72,2,0,SZ[ri%10]);
  761.                                 Disp_chinese_16x16(80,2,0,NYRSFMZ[2]);  //日
  762.                                 Disp_chinese_16x16(96,2,0,NYRSFMZ[6]);  //周
  763.                                 Disp_chinese_16x16(112,2,0,DaXieShuZi[xingqi]);
  764.                                 Disp_Char(128,2,0,SZ[shi/10%10]);
  765.                                 Disp_Char(136,2,0,SZ[shi%10]);
  766.                                 Disp_Char(144,2,0,FH[0]);   //冒號
  767.                                 Disp_Char(152,2,0,SZ[fen/10%10]);
  768.                                 Disp_Char(160,2,0,SZ[fen%10]);
  769.                                 Disp_Char(168,2,0,FH[0]);   //冒號
  770.                                 Disp_Char(176,2,0,SZ[miao/10%10]);
  771.                                 Disp_Char(184,2,0,SZ[miao%10]);

  772.                 }
  773.        

  774. /*******************************時間設(shè)置之調(diào)整年值*****************************************/
  775.                  if(key==UP&&i==0&&j==1&&MenuFlag1==1&&MenuFlag2==1&&MenuFlag3==0)//調(diào)整年+
  776.                 { //i=0,限定是在時間設(shè)置模式,j=1限定在時間設(shè)置模式的年值設(shè)置,MenuFlag1、2、3 分別=1、1、0鎖定在二級菜單
  777.                         nian+=1;
  778.                         if(nian>99)
  779.                                 nian=20;
  780.                         Beep(SHORT_JIAO,8,4);
  781.                         Disp_Char(0,2,0,SZ[nian/10%10]);
  782.                         Disp_Char(8,2,0,SZ[nian%10]);
  783.                         Set_OK_Flag = 0;
  784. ……………………

  785. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
LCD菜單程序大數(shù)字電子鐘(三級菜單,參數(shù)設(shè)置保存、溫度控制器,).zip (312.96 KB, 下載次數(shù): 348)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:44037 發(fā)表于 2020-7-1 15:44 | 只看該作者
謝謝分享  學習一下!
回復

使用道具 舉報

板凳
ID:517951 發(fā)表于 2020-11-15 17:27 | 只看該作者
不錯,值得學習。51hei有你更精彩。
回復

使用道具 舉報

地板
ID:77840 發(fā)表于 2021-4-7 17:18 | 只看該作者
謝謝樓主分享,初學者請教一下i+=2這樣的語句是什么意思,和i++這種自加一有什么區(qū)別?
回復

使用道具 舉報

5#
ID:230752 發(fā)表于 2021-4-11 23:08 | 只看該作者
非常好的代碼,思路清晰,注釋明確。
回復

使用道具 舉報

6#
ID:600695 發(fā)表于 2021-4-14 21:35 | 只看該作者
為什么我的萬年歷就顯示不正常呢
回復

使用道具 舉報

7#
ID:266164 發(fā)表于 2021-4-16 16:40 | 只看該作者
好東西。我也正想做一個呢
回復

使用道具 舉報

8#
ID:907139 發(fā)表于 2021-4-16 22:53 | 只看該作者
謝謝樓主分享,初學者請教一下i+=2這樣的語句是什么意思,和i++這種自加一有什么區(qū)別?
回復

使用道具 舉報

9#
ID:328014 發(fā)表于 2021-4-17 03:25 | 只看該作者
18634937090 發(fā)表于 2021-4-16 22:53
謝謝樓主分享,初學者請教一下i+=2這樣的語句是什么意思,和i++這種自加一有什么區(qū)別?

i=i+2的簡寫
回復

使用道具 舉報

10#
ID:778645 發(fā)表于 2021-4-17 21:24 | 只看該作者
面具下的狼性 發(fā)表于 2021-4-7 17:18
謝謝樓主分享,初學者請教一下i+=2這樣的語句是什么意思,和i++這種自加一有什么區(qū)別?

這就是i=i+2;
回復

使用道具 舉報

11#
ID:69536 發(fā)表于 2021-4-29 09:47 | 只看該作者
強烈  建議時鐘芯片改為DS3231,大家可以仿制一個來學習一下。
回復

使用道具 舉報

12#
ID:334781 發(fā)表于 2021-5-4 11:32 | 只看該作者
有電路圖嗎,想下載看下,這個不錯,學習單片機的好幫手!
回復

使用道具 舉報

13#
ID:39866 發(fā)表于 2021-5-16 21:18 | 只看該作者
厲害了大佬,大師級別的
回復

使用道具 舉報

14#
ID:242298 發(fā)表于 2021-7-6 11:08 | 只看該作者
這電路圖都沒有,誰知道怎么制作的啊。。。。再說這個程序也太大了點吧! 90多K。。。。
回復

使用道具 舉報

15#
ID:884042 發(fā)表于 2021-7-19 09:26 | 只看該作者
能提供一下使用方法嗎?
回復

使用道具 舉報

16#
ID:200118 發(fā)表于 2021-12-21 20:44 | 只看該作者
正好我有一塊這種屏試試看
回復

使用道具 舉報

17#
ID:977861 發(fā)表于 2021-12-21 21:48 | 只看該作者
這個不錯,學習單片機的好幫手
回復

使用道具 舉報

18#
ID:173831 發(fā)表于 2021-12-22 11:10 | 只看該作者
最近研究液晶屏學習一下
回復

使用道具 舉報

19#
ID:993294 發(fā)表于 2021-12-23 11:27 | 只看該作者
單片機+LCD19264液晶屏三級菜單程序 大數(shù)字電子鐘   
屏幕+主板+操作板哪買的!
回復

使用道具 舉報

20#
ID:156220 發(fā)表于 2021-12-24 21:51 | 只看該作者
謝謝資料分享,樓主辛苦了
回復

使用道具 舉報

21#
ID:1064915 發(fā)表于 2023-10-12 21:23 | 只看該作者
GPS怎么用?
回復

使用道具 舉報

22#
ID:305511 發(fā)表于 2023-11-30 23:02 | 只看該作者
多謝分享,注解很清晰
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲一区二区 | 欧美区在线 | 久久精品一区二区 | 国产精品99久久久久久www | 成年人在线电影 | 国产精品免费看 | 天堂影院av | 午夜视频在线观看网址 | 欧美色影院| 久久国产精品视频免费看 | 午夜视频免费在线观看 | 国产一区二区黑人欧美xxxx | 91精品久久久久久久久久 | 日韩国产黄色片 | 91一区二区三区在线观看 | 欧美一区二区三区在线观看 | 亚洲综合久久久 | 国产视频第一页 | 国产精品久久久久久久久久免费看 | 99色在线 | 亚洲欧美在线视频 | 99pao成人国产永久免费视频 | 日韩久草| 一区二区国产在线观看 | 日韩av在线免费 | 国产精品九九九 | 久久久久久久久久久久久久国产 | 国产精品一区二区在线 | 久久极品| 成人国产精品久久 | 国产欧美一区二区精品久导航 | 亚洲视频区 | 成人性视频免费网站 | 网色| 欧美日韩精品一区二区三区四区 | 久久久久久久综合 | 欧美精品一区二区在线观看 | 国产二区在线播放 | 成人精品国产免费网站 | 午夜激情免费 | 亚洲一区成人 |