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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1697|回復: 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
回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级黄 | 国产免费视频 | 中国一级黄色录像 | 亚洲免费福利视频 | 亚洲午夜久久 | 免费看成人片 | 这里只有精品视频在线观看 | 亚洲视频免费 | 午夜av片 | 成人免费看片在线观看 | 小镇姑娘国语版在线观看免费 | 久久久xxx | 欧美一级片免费 | 男女激情视频网站 | 亚洲福利视频一区 | 中文字幕不卡 | av观看网站 | 欧美a一级 | 日韩不卡免费视频 | 色综合久久综合 | 精品国产一区二区三区久久久蜜月 | 黄色小说在线免费观看 | 欧美成人极品 | 欧美色图一区二区三区 | 国产欧美一区二区精品忘忧草 | 91精品成人 | 国产欧美在线 | www国产精品 | av中文在线| 69精品视频| av在线免费网站 | 欧美日皮视频 | 日韩精品片 | 国产成人精品亚洲男人的天堂 | 成人在线免费观看视频 | 久久精视频 | 免费黄色小说网站 | 中文字幕一二三四区 | 8x8ⅹ国产精品一区二区 | 亚洲一级在线 | 五月天婷婷基地 |