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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

現在的問題是切換界面時密碼輸入位置會自動向下一位跳轉,怎么優化單片機程序解決呢

[復制鏈接]
回帖獎勵 1 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 1 次(中獎概率 50%)
跳轉到指定樓層
樓主
ID:1057946 發表于 2023-3-2 20:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
可以用switch語句解決這一問題嗎詳細的說就是 怎么解決用數碼管做密碼鎖并且在切換界面時輸入位置不會改變

單片機源程序如下:
#include <REGX52.H>
#include "NixieTube.h"//數碼管
#include "Delay.h"//延時函數
#include "MatrixKey.h"//矩陣鍵盤

sbit Beep=P2^5;

unsigned int y=1,b,n,h,i,j,k,l,m,w2,w,f,a;//h i j k l m為密碼n y b f a為參數
unsigned int Timer0Count=0;
unsigned char KeyNum,x=100,Password1=172,Password2=213;

void Timer0_Init(void)  //10毫秒@11.0592MHz
{
TMOD &= 0xF0;  //設置定時器模式
TMOD |= 0x01;  //設置定時器模式
TL0 = 0x00;  //設置定時初值
TH0 = 0xDC;  //設置定時初值
TF0 = 0;  //清除TF0標志
TR0 = 1;  //定時器0開始計時
ET0=1;        //中斷初始化
EA=1;     //中斷初始化
PT0=0;    //中斷初始化
}

void main()
{
        Timer0_Init();
        while(1)
        {
                  KeyNum=MatrixKey();
            if(KeyNum==10)//按鍵1按下切換界面
              {
                                  y++;
                                  if(y>=3) y=1;//防止界面溢出
                                }
                                if(y==1)//界面1
                                                {
                                                        NixieTube(6,x/100);
                                                        NixieTube(7,x/10);
                                                        NixieTube(8,x%10);
                                                }
                                 if(y==2)//界面2
                                                {
                                                        NixieTube(1,h);
                                                        NixieTube(2,i);
                                                        NixieTube(3,j);
                                                        NixieTube(4,k);
                                                        NixieTube(5,l);
                                                        NixieTube(6,m);
                                                        if(KeyNum)//密碼輸入位置轉換
                                                         {               
                                                                if(w==1) h=KeyNum;
                                                                if(w==2) i=KeyNum;
                                                                if(w==3) j=KeyNum;
                                                                if(w==4) k=KeyNum;
                                                                if(w==5) l=KeyNum;
                                                                if(w==6) m=KeyNum;
                                                                  w++;
                                                          if(w>=7&&(h*100+i*10+j!=Password1&&k*100+l*10+m!=Password2))
                    {h=0;i=0;j=0;k=0;l=0;m=0;w=0;b++;}//密碼錯誤計數和清零
                                                                if(w==7) w=0;//防止密碼位置溢出
                                                         }
                                                }
                                   if(h*100+i*10+j==Password1&&k*100+l*10+m==Password2)//密碼正確進入流水燈
                                                {
                                                                P2=0xFE;
                                                                Delay(500);
                                                                P2=0xFD;
                                                                Delay(500);
                                                                P2=0xFB;
                                                                Delay(500);
                                                                P2=0xF7;
                                                                Delay(500);
                                                                P2=0xEF;
                                                                Delay(500);
                                                                P2=0xDF;
                                                                Delay(500);
                                                                P2=0xBF;
                                                                Delay(500);
                                                                P2=0x7F;
                                                                Delay(500);
                                                          h=0;i=0;j=0;k=0;l=0;m=0;
                                                }
                                                if(b==5)//達到錯誤次數閃爍
                                                        {
                                                                for(f=0;f<=3;f++)
                                                                {
                                                                        P2=0x00;
                                                                        Delay(500);
                                                                        P2=0xFF;
                                                                        Delay(500);
                                                                }
                                                                b=0;
                                                        }
  }
}

void Timer0_Routine() interrupt 1  //中斷
{
TL0 = 0x00;            //設置定時初值,讓定時器重新開始計時   
TH0 = 0xDC;            //設置定時初值
Timer0Count++;          //每10ms打斷一次,計數器加1
if(Timer0Count>=10)      
{
         Timer0Count=0;
         x--;
         if(x==0)
         {
                  for(a=0;a<=3;a++)
                   {
                          for(n=0;n<110;n++)
                     {
                              Beep=!Beep;
                              Delay(2);
                     }
                         }
                 x=100;
         }
}
}



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

使用道具 舉報

沙發
ID:161164 發表于 2023-3-3 09:25 | 只看該作者
  1.                         if(KeyNum && KeyNum != 10)//密碼輸入位置轉換
  2.                         {
  3.                                 if(w==1) h=KeyNum;
  4.                                 if(w==2) i=KeyNum;
  5.                                 if(w==3) j=KeyNum;
  6.                                 if(w==4) k=KeyNum;
  7.                                 if(w==5) l=KeyNum;
  8.                                 if(w==6) m=KeyNum;
  9.                                 w++;
  10.                                 if(w>=7&&(h*100+i*10+j!=Password1&&k*100+l*10+m!=Password2))
  11.                                 {
  12.                                         h=0;    //密碼錯誤計數和清零
  13.                                         i=0;
  14.                                         j=0;
  15.                                         k=0;
  16.                                         l=0;
  17.                                         m=0;
  18.                                         w=0;
  19.                                         b++;
  20.                                 }
  21.                                 if(w==7) w=0;//防止密碼位置溢出
  22.                         }
復制代碼

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:1057946 發表于 2023-3-3 13:30 | 只看該作者

感謝  把這一點忽略了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲二区 | 日韩在线精品强乱中文字幕 | 国产亚洲精品成人av久久ww | 成人在线精品 | 精品免费看| 亚洲一区二区日韩 | 免费的日批视频 | 91精品国产综合久久国产大片 | 狠狠爱免费视频 | 欧美一区二区三区在线播放 | 国内精品伊人久久久久网站 | 国产一区在线免费 | 成人av一区 | 四虎最新视频 | 午夜免费网站 | 成人免费观看视频 | 国产成人精品久久 | 精品成人在线观看 | 日本不卡一区 | 欧美国产中文 | 欧美性另类 | 人人草天天草 | 玖玖视频国产 | 午夜综合 | 丁香色婷婷| 久久曰视频 | 91日韩| 激情久久网 | 国产综合在线视频 | 日本三级线观看 视频 | 精品1区| 天天操夜夜操免费视频 | 日韩精品视频网 | 日韩一区二区三区在线看 | 久久成人精品视频 | 91pao对白在线播放 | 国产视频1区2区 | 最新超碰 | 91精品国产综合久久久久久漫画 | 亚洲精品在线免费 | 在线成人免费观看 |