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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 915|回復: 1
打印 上一主題 下一主題
收起左側

單片機+Proteus仿真,有什么指令能讓lcd返回Proteus剛開始運行的界面

[復制鏈接]
跳轉到指定樓層
樓主


單片機源程序如下:
  1. /*主函數*/
  2. uchar global_state = 0;
  3. uchar count_num = 0;  //輸入的數字個數
  4. void main()
  5. {  
  6.     uchar i;
  7.     uchar passwd;  
  8.            uchar key_value = 0;
  9.         uchar temp_key_value = 0xff;
  10.         Lock = 1;  //剛上電 鎖是需要保持閉合
  11.         Timer0_init();        //定時器初始化
  12.          lcd_init();        //LCD1602初始化  
  13.         while(1)        //進入不斷循環
  14.         {
  15.                    temp_key_value = Calkey_scan();          //讀取矩陣按鍵的鍵值
  16.                 if(temp_key_value != 0xff)
  17.                 {
  18.                         key_value = temp_key_value;
  19.                 }
  20.                 switch(global_state)
  21.                 {
  22.                         case 0:         //初始化狀態
  23.                                 display1();         //顯示歡迎語句        -- "welcome"
  24.                                 display5();  //顯示Current T=
  25.                                 Read_Temperature(); //讀取溫度值
  26.                                 display7();  //顯示溫度
  27.                                 if(SetKey==0)        //設置鍵                          
  28.                   {         
  29.                                             clear();                                                                                                                                                                                                
  30.                       while(1)
  31.                                           {                                                
  32.                         display5();         //顯示Current T=
  33.                         display6();         //顯示上下限
  34.                         Read_Temperature(); //讀取溫度值
  35.                         display7();         //顯示溫度
  36.                         display8();         //顯示上下限溫度                          
  37.                         SetFun();           //指針>                                                                                      
  38.                       }                     
  39.                                   }                                                                                                                                                                                                                                                                                                                                                                     
  40.                                 if(key_value == 13)  //存包按鍵被按下
  41.                                 {
  42.                                     key_value = 0xff;  //將按鍵值清除
  43.                                         Lock = 0;    //開鎖
  44.                                         clear();                 //清屏,準備下一屏的顯示
  45.                                         display3();    //顯示關門提示語        -- "close door!"
  46.                                     delay(1900);    //等待關門 大約3秒
  47.                                         Lock = 1;   //關門
  48.                                         clear();                 //清屏,準備下一屏的顯示
  49.                                         global_state = 1;   //切換運行狀態
  50.                                         passwd = TL0;  //采用定時器寄存器的值作為密碼
  51.                                         genPasswd[0] = passwd/100;                  //存儲密碼
  52.                                         genPasswd[1] = passwd%100/10;
  53.                                         genPasswd[2] = passwd%10;
  54.                                         genPasswd[3] = (genPasswd[1]+genPasswd[2])%10;
  55.                                 }
  56.                                 if(key_value == 14)  //取包按鍵被按下
  57.                                 {
  58.                                     key_value = 0xff;  //將按鍵值清除
  59.                                         clear();    //清屏,準備下一屏的顯示
  60.                                         global_state = 2;  //切換運行狀態
  61.                                         count_num = 0;   //清除數字按鍵變量
  62.                                         for(i = 0;i < 4;i++)  //清空輸入的密碼數組
  63.                                         inpPasswd[i] = ' '-0x30;
  64.                                 }
  65.                             break;

  66.                         case 1:                //密碼生成狀態
  67.                                    display2();         //顯示密碼生成界面
  68.                                 delay(1900);    //等待大約3秒
  69.                                 global_state = 0;  //返回到初始界面
  70.                                 clear();        //清屏,準備下一屏的顯示                                
  71.                             break;

  72.                         case 2:          //輸入密碼狀態
  73.                            display4();           //顯示輸入密碼界面
  74.                            if((key_value >= 0) && (key_value <= 9))          //如果按下的為0-9的數字按鍵
  75.                            {                              
  76.                                 if(count_num <= 3)         //如果按鍵次數小于4次
  77.                                         {
  78.                                         inpPasswd[count_num] = key_value; //將按鍵值存入數組,并顯示
  79.                                                    count_num++;
  80.                                     }
  81.                                          key_value = 0xff;  //將按鍵值清除
  82.                            }
  83.                            
  84.                            if(fanhui == 0)
  85.                            {
  86.                                     key_value = 0xff;  //將按鍵值清除
  87.                                  
  88.                            }
  89.                                                      
  90.                            if(key_value == 15) //清除按鍵被按下
  91.                            {
  92.                                 key_value = 0xff;  //將按鍵值清除
  93.                                            for(i = 0;i < 4;i++)
  94.                                         inpPasswd[i] = ' '-0x30;  //清除剛剛輸入的密碼
  95.                                         count_num=0;
  96.                            }
  97.                            if(key_value == 16) //確認按鍵被按下
  98.                            {
  99.                                 key_value = 0xff;  //將按鍵值清除
  100.                                            for(i = 0;i < 4;i++)
  101.                                         {
  102.                                                 if(inpPasswd[i] != genPasswd[i])
  103.                                                    break;
  104.                                         }
  105.                                         if(i == 4)          //密碼輸入正確
  106.                                         {
  107.                                                 LEDRED = 1;         //紅燈熄滅
  108.                                                 LEDGREEN = 0;  //綠燈亮
  109.                                                 Lock = 1;  //開鎖
  110.                                                 delay(1900);    //等待大約3秒
  111.                                                 Lock = 0;  //關鎖
  112.                                                 LEDGREEN = 1;  //綠燈熄滅
  113.                                         }
  114.                                         else   //密碼輸入錯誤
  115.                                         {
  116.                                                 LEDRED = 0;         //紅燈亮
  117.                                                 LEDGREEN = 1;  //綠燈熄滅
  118.                                                 Lock = 0;  //關鎖
  119.                                                 delay(1900);    //等待大約3秒
  120.                                                 LEDRED = 1;  //紅燈熄滅
  121.                                         }
  122.                                         clear();           //清屏,準備下一屏的顯示
  123.                                         global_state = 0;  //返回到初始界面
  124.                            }
  125.                            break;                                                                           
  126.                 }               
  127.         }
  128. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:121859 發表于 2022-3-24 08:51 | 只看該作者
很多方法都可以回到初始狀態,比如復位,比如跳轉到程序入口等。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品大片在线观看 | 成人免费大片黄在线播放 | 性欧美hd| 日韩在线免费视频 | 天天爽夜夜操 | 久久1区 | 久草影视在线 | 成人不卡视频 | 精品国产精品三级精品av网址 | 久久lu | 在线欧美日韩 | 九色视频网站 | 久久伊| 成人h视频在线 | 日韩视频精品在线 | 日韩电影中文字幕 | 欧美一区二区免费在线 | 亚洲欧美日本在线 | av一级久久 | 黄网站涩免费蜜桃网站 | 一区二区三区免费观看 | 狠狠久久 | 国产视频欧美 | 四色永久 | 一区二区在线不卡 | 特级做a爰片毛片免费看108 | 日韩精品 电影一区 亚洲 | 99精品欧美一区二区三区 | 欧美日韩看片 | 亚洲欧美日韩精品久久亚洲区 | 国产精品日日做人人爱 | 精品免费国产视频 | 亚洲中字在线 | 人人看人人干 | 一区二区三区免费观看 | 人人干在线视频 | 美女一级毛片 | a在线视频 | 九九热这里| 99精品一区 | 全免费a级毛片免费看视频免费下 |