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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

電子密碼鎖設計設計與制作的單片機程序下載進protues仿真不了

[復制鏈接]
跳轉到指定樓層
樓主
ID:1102762 發表于 2023-12-5 19:19 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>typedef unsigned char u8;typedef unsigned int u16;//sbit 特殊功能位聲明:聲明某特殊功能寄存器中的一位#define key P1                   //按鍵io口sbit fen=P3^0;                   //蜂鳴器io口sbit rs=P3^1;        //LCD控制口sbit rw=P3^2;sbit e=P3^3;sbit led=P3^4;       //LED燈io口//bit 位變量聲明:定義一個位變量的值u8 keyz=17,j=0,biao1=0,a=10,b=10,c=10,d=10;bit biao=0;u16 zh;u8 shu[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,          0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};u8 zi[]={"lnput password:"};u8 num[]={"0123456789ABCDEF"};void delay(u16 i){         while(i--);                        }/*蜂鳴器*/void Fen(u8 a,b)   //蜂鳴器發聲函數{        u8 i,j;                for(i=0;i<a;i++)        {                for(j=0;j<100;j++)                 {fen=~fen;delay(b);}                                          }                  }/*LCD*/void writecom(u8 com){                //LCD寫指令         rs=0;         rw=0;         e=0;         P0=com;         delay(5);         e=1;         e=0;                     }void writedat(u8 dat){                //LCD寫數據         rs=1;         rw=0;         e=0;         P0=dat;         delay(5);         e=1;         e=0;                     }void initlcd(){                           //LCD初始化函數           writecom(0x38);   //顯示模式設置           writecom(0x0c);           writecom(0x06);                          }void xian(){         //LCD顯示數字函數                      writedat(num[keyz]);                                      if(a==10){a=keyz; }                   //對abcd,四位數的單獨賦值                                          else if(b==10){b=keyz;}                                          else if(c==10){c=keyz;}                                          else{d=keyz;}                                          if(j!=3){j++;}biao=0;}/*鍵盤*/void Key(){u8 a=0;                         //矩形式鍵盤函數         if(key!=0x0f){delay(1000);         if(key!=0x0f){                 key=0x0f;                switch(key){                           case 0x07: keyz=0;biao=1;break;                           case 0x0b: keyz=1;biao=1;break;                           case 0x0d: keyz=2;biao=1;break;                           case 0x0e: keyz=3;biao=1;break;                }                key=0xf0;                switch(key){                           case 0x70: keyz=keyz;biao=1;break;                           case 0xb0: keyz=keyz+4;biao=1;break;                           case 0xd0: keyz=keyz+8;biao=1;break;                           case 0xe0: keyz=keyz+12;biao=1;break;                }         }         while((a<50)&&(key!=0xf0)){a++;delay(10000);}         }            }                                                void shi(){u8 i;          // 按鍵值判斷函數         if(biao&&keyz!=15){  //判斷標志位biao是否為1,為1則有按鍵操作并且按鍵的值不等于15                                                                   writecom(0x80+0x40+j);                          //數字顯示位置進行累加操作                         if(j<0){j=0;}                                          //數字顯示位置邊界                  switch(keyz){                                                  //switch判斷按鍵并執行對應操作                          case 0:xian(); break;                                case 1:xian(); break;                                case 2:xian(); break;                                case 3:xian(); break;                                case 4:xian(); break;                                case 5:xian(); break;                                case 6:xian(); break;                                case 7:xian(); break;                                case 8:xian(); break;                                case 9:xian(); break;                                case 10:writedat(num[keyz]);                                                                                        j++;biao=0;break;                                case 11:writedat(num[keyz]);                                                                                        j++;biao=0;break;                                case 12:                                                biao1=0;                                                  //重置標志位biao1,上鎖                                        biao=0;break;                                case 13:writecom(0x01);        delay(1000);          //全屏清除                                                for(i=0;i<sizeof(zi);i++){                            writecom(0x80+i);                            writedat(zi[i]);                }                                        j=0;biao=0;break;                                case 14:                                                                   //對當前數字位刪除的操作                                                writedat(' ');                                                j--;                                                writecom(0x80+0x40+j);writedat(' ');                                                biao=0;break;                                case 15:                          //確定按鍵                                        j++;biao=0;break;                                       }                                  }                        if(keyz==15){                                                                  //判斷按鍵值如果等于15,便視為按下確定鍵                        writecom(0x01);delay(1000);                          zh=a*1000+b*100+c*10+d;                                         //將ABCD,四位數合并并進行判斷是否為正確密碼                          if(zh==1234){  //設密碼為1234                        j=0;                     biao1=1;                                                                         //將biao1標志位置1便為密碼正確                    keyz=17;                                                                           //使按鍵值跳出最大值15便不會循壞顯示                                                }                else{                           j=0;                   biao1=0;                                                                                 //反之密碼錯誤                           keyz=17;                                Fen(20,200);                                    //蜂鳴器報警                        }                        zh=0;a=10,b=10,c=10,d=10;                                         //重置ABCD變量                    for(i=0;i<sizeof(zi);i++){              writecom(0x80+i);              writedat(zi[i]);                           }                                                                        }                                      }                  void main(){u8 i; led=1;     initlcd();                        //LCD初始化函數         for(i=0;i<sizeof(zi);i++){         writecom(0x80+i);         writedat(zi[i]);                           }         while(1){                   Key();               //定義鍵盤函數                  shi();               //按鍵判斷函數,燈亮或報警                  P2=shu[keyz];        //數碼管顯示當前輸入值                  if(biao1==1){ led=0;                                            //判斷標志位biao1 為1則密碼正確顯示ok                  writecom(0x80+0x40+10);              writedat('O');                  writecom(0x80+0x41+10);              writedat('K'); }                  else if(biao1==0){led=1;                                   //biao1為0則顯示密碼錯誤顯示no                  writecom(0x80+0x40+10);              writedat('N');                  writecom(0x80+0x41+10);              writedat('O');}                      }           }

1701775111380.jpg (1.2 MB, 下載次數: 85)

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

使用道具 舉報

沙發
ID:277550 發表于 2023-12-6 10:02 | 只看該作者
代碼那么亂,樓主自己檢查先。。。。。



矩陣鍵盤處理不正確,按這篇,自己修改一下 矩陣鍵盤



~~~~
回復

使用道具 舉報

板凳
ID:1102256 發表于 2023-12-6 12:43 | 只看該作者
51單片機最小系統一般應該包括:單片機、電源、晶振電路、復位電路。而此電路圖中沒有晶振電路和復位電路,無法構成仍最小系統,晶振是用于產生時鐘信號的,如果不接晶振,那么必須有其它的時鐘信號源,否則,單片機將不會工作。晶振電路就像“心臟”,沒有晶振,復位,如何讓它工作
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日噜噜噜夜夜爽爽狠狠视频97 | 一本一道久久a久久精品综合蜜臀 | 日韩欧美成人精品 | 99久久精品免费看国产高清 | 国产成人免费在线 | 亚洲成人免费 | 日韩午夜电影 | 日本免费一区二区三区四区 | 亚洲三级在线观看 | 国产精品久久av | 成人一区二区三区视频 | 久久人| 日韩精品一区二区三区四区 | 国产精品日韩 | 国内精品久久久久久影视8 最新黄色在线观看 | 日韩视频精品 | 可以免费观看的av片 | 欧美二区乱c黑人 | 午夜免费在线电影 | 国产9999精品 | 国产精品一区久久久 | 精品欧美一区二区三区久久久 | 国产成人在线视频 | 国产精品视频在线免费观看 | 亚洲毛片 | 久久高清精品 | 成人h动漫亚洲一区二区 | 性一交一乱一透一a级 | av在线视 | 欧美黑人一区二区三区 | 国产精品久久久久久久岛一牛影视 | 99精品国产一区二区三区 | 一区二区三区视频免费观看 | 一区二区三区欧美 | 久久国产精品一区二区三区 | 青青久在线视频 | 日韩中文字幕久久 | 久久综合一区二区三区 | 久久爱黑人激情av摘花 | 国产日韩精品视频 | 久久中文字幕一区 |