久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
電子密碼鎖設計設計與制作的單片機程序下載進protues仿真不了
[打印本頁]
作者:
0302
時間:
2023-12-5 19:19
標題:
電子密碼鎖設計設計與制作的單片機程序下載進protues仿真不了
#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)
下載附件
2023-12-5 19:19 上傳
作者:
devcang
時間:
2023-12-6 10:02
代碼那么亂,樓主自己檢查先。。。。。
矩陣鍵盤處理不正確,按這篇,自己修改一下
矩陣鍵盤
~~~~
作者:
20231203
時間:
2023-12-6 12:43
51單片機最小系統一般應該包括:單片機、電源、晶振電路、復位電路。而此電路圖中沒有晶振電路和復位電路,無法構成仍最小系統,晶振是用于產生時鐘信號的,如果不接晶振,那么必須有其它的時鐘信號源,否則,單片機將不會工作。晶振電路就像“心臟”,沒有晶振,復位,如何讓它工作
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产乱码精品一区二三赶尸艳谈
|
国产情侣啪啪
|
日本又色又爽又黄又高潮
|
av网站免费
|
久久网国产
|
国产欧美日韩精品一区
|
成人在线视频一区二区三区
|
黄色av网站免费看
|
成人亚洲性情网站www在线观看
|
精品福利在线视频
|
国产精品国产精品
|
欧美性生交大片免费
|
国产精品久久久久久久免费观看
|
欧美在线网站
|
日韩色在线
|
国产色爽
|
国产在线资源
|
美女天堂
|
久久艹av
|
久久精品免费观看
|
天天综合久久
|
国产不卡一区在线观看
|
精品1区
|
欧美一级在线
|
综合第一页
|
日韩欧美二区
|
99精品欧美一区二区蜜桃免费
|
一区二区视屏
|
91高清视频
|
国产一级特黄真人毛片
|
天天综合天天
|
亚洲毛片在线观看
|
亚洲国产精品视频
|
九九久久99
|
成人日韩av
|
欧美国产视频
|
中文字幕 在线观看
|
国产福利二区
|
欧美性高潮
|
81精品国产乱码久久久久久
|
亚洲毛片在线观看
|