久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機密碼鎖源程序 超強防破解,輸入錯一位就進入死循環
[打印本頁]
作者:
hb-l
時間:
2018-7-13 15:06
標題:
51單片機密碼鎖源程序 超強防破解,輸入錯一位就進入死循環
超強防破解,輸入錯一位就進入死循環,本密碼我設置的了7位數,程序清晰易懂,
圖片1.png
(147.98 KB, 下載次數: 50)
下載附件
2018-7-13 15:06 上傳
單片機源程序如下:
//實例80:2272無線遙控鍵盤實現的電子密碼鎖 1434341
#include<reg51.h> //包含51單片機寄存器定義的頭文件
sbit P14=P2^2; //將P14位定義為P1.4引腳
sbit P15=P2^3; //將P15位定義為P1.5引腳
sbit P16=P2^4; //將P16位定義為P1.6引腳
sbit k1=P1^3; //電機兩級控制端口位P2.5引腳
sbit k2=P1^4; //電機兩級控制端口位P2.6引腳
sbit led=P2^6;//將led位定義為P2.6引腳
unsigned char keyval; //儲存按鍵值
/*************************************************************
***********************延時函數*******************************/
void delayms(xms) //誤差 -0.651041666667us
{
unsigned int a,b;
for(b=xms;b>0;b--)
for(a=115;a>0;a--);
}
/**************************************************************
函數功能:主函數
**************************************************************/
void main()
{
char aa=0,bb=1;
keyval=0xff; //按鍵值初始化
led=aa;delayms(200);led=bb; //led亮,復位成功
k1=0;k2=0; //電機初始化
P2=0xff; //P2端口初始化,按鍵賦初值高電平,led驅動9012賦值
while(keyval!=0) //第一位密碼輸入********1************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P14==0) //P1.1引腳的為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第三位密碼輸入成功
while(!P14); //等待P14端口釋放,即按鈕松開
keyval=0; //可判斷是S1鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
while(keyval!=1) //第二位密碼輸入 **************** 3*************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第二位密碼輸入成功
while(!P16); //等待P16端口釋放,即按鈕松開
keyval=1; //可判斷是S3鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
while(keyval!=2) //第三位密碼輸入 ****************2*************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P15==0) //如果檢測到接P1.6引腳的列線為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第三位密碼輸入成功
while(!P15); //等待P14端口釋放,即按鈕松開
keyval=2; //可判斷是S3鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
while(keyval!=3) //第四位密碼輸入 **************** 3*************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第四位密碼輸入成功
while(!P16); //等待P16端口釋放,即按鈕松開
keyval=3; //可判斷是S3鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
while(keyval!=4) //第五位密碼輸入 ****************2*************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P15==0) //如果檢測到接P1.6引腳的列線為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第五位密碼輸入成功
while(!P15); //等待P14端口釋放,即按鈕松開
keyval=4; //可判斷是S3鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
while(keyval!=5) //第六位密碼輸入 **************** 3*************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第六位密碼輸入成功
while(!P16); //等待P16端口釋放,即按鈕松開
keyval=5; //可判斷是S3鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
while(keyval!=0) //第七位密碼輸入********1************
{
if((P2&0xff)!=0xff) //有一位為低電平“0”,說明有鍵按下
delayms(10); //延時一段時間、軟件消抖
if((P2&0xff)!=0xff) //確實有鍵按下
{
if(P14==0) //P1.1引腳的為低電平“0”
{
led=aa;delayms(200);led=bb; //led亮,第七位密碼輸入成功
while(!P14); //等待P14端口釋放,即按鈕松開
keyval=0; //可判斷是S1鍵被按下
}
if(P14==0||P15==0||P16==0) //如果檢測到接P1.5或者P1.6引腳為低電平“0”
while(1) if(P14==0||P15==0||P16==0) {led=aa;delayms(200);led=bb;} //進入死循環
}
}
k1=1;k2=0;led=0; //密碼正確,電機正轉開鎖
delayms(1000); //延時轉動1s
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;led=1;delayms(50); k1=1;k2=0;led=0;delayms(90); //緊松,延長開門時間
k1=0;k2=1;delayms(500); //反轉關鎖
k1=0;k2=0;//電機電壓復位
}
復制代碼
//實例80:矩陣式鍵盤實現的電子密碼鎖
#include<reg51.h> //包含51單片機寄存器定義的頭文件
sbit P14=P1^4; //將P14位定義為P1.4引腳
sbit P15=P1^5; //將P15位定義為P1.5引腳
sbit P16=P1^6; //將P16位定義為P1.6引腳
sbit P17=P1^7; //將P17位定義為P1.7引腳
sbit sound=P3^7; //將sound位定義為P3.7
unsigned char keyval; //儲存按鍵值
/**************************************************************
函數功能:延時輸出音頻
**************************************************************/
void delay(void)
{
unsigned char i;
for(i=0;i<200;i++)
;
}
/**************************************************************
函數功能:軟件延時子程序
**************************************************************/
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++)
;
}
/**************************************************************
函數功能:主函數
**************************************************************/
void main(void)
{
unsigned char D[ ]={0,8,0,8,7,4,11}; //設定密碼
EA=1; //開總中斷
ET0=1; //定時器T0中斷允許
TMOD=0x01; //使用定時器T0的模式1
TH0=(65536-500)/256; //定時器T0的高8位賦初值
TL0=(65536-500)%256; //定時器T0的高8位賦初值
TR0=1; //啟動定時器T0
keyval=0xff; //按鍵值初始化
while(keyval!=D[0]) //第一位密碼輸入不正確,等待
;
while(keyval!=D[1]) //第二位密碼輸入不正確,等待
;
while(keyval!=D[2]) //第三位密碼輸入不正確,等待
;
while(keyval!=D[3]) //第四位密碼輸入不正確,等待
;
while(keyval!=D[4]) //第五位密碼輸入不正確,等待
;
while(keyval!=D[5]) //第六位密碼輸入不正確,等待
;
while(keyval!=D[6]) //沒有輸入“OK”,等待
;
P2=0x00; //P3.0引腳輸出低電平,點亮LED
}
/**************************************************************
函數功能:定時器0的中斷服務子程序,進行鍵盤掃描,判斷鍵位
**************************************************************/
void time0_interserve(void) interrupt 1 using 1 //定時器T0的中斷編號為1,使用第一組寄存器
{
unsigned char i;
TR0=0; //關閉定時器T0
P1=0xf0; //所有行線置為低電平“0”,所有列線置為高電平“1”
if((P1&0xf0)!=0xf0) //列線中有一位為低電平“0”,說明有鍵按下
delay20ms(); //延時一段時間、軟件消抖
if((P1&0xf0)!=0xf0) //確實有鍵按下
{
P1=0xfe; //第一行置為低電平“0”(P1.0輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=1; //可判斷是S1鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=2; //可判斷是S2鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=3; //可判斷是S3鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=4; //可判斷是S4鍵被按下
P1=0xfd; //第二行置為低電平“0”(P1.1輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=5; //可判斷是S5鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=6; //可判斷是S6鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=7; //可判斷是S7鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=8; //可判斷是S8鍵被按下
P1=0xfb; //第三行置為低電平“0”(P1.2輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=9; //可判斷是S9鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=0; //可判斷是S10鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=11; //可判斷是S11鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=12; //可判斷是S12鍵被按下
P1=0xf7; //第四行置為低電平“0”(P1.3輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=13; //可判斷是S13鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=14; //可判斷是S14鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=15; //可判斷是S15鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=16; //可判斷是S16鍵被按下
for(i=0;i<200;i++) //讓P3.7引腳電平不斷取反輸出音頻
{
sound=0;
delay();
sound=1;
delay();
}
}
TR0=1; //開啟定時器T0
TH0=(65536-500)/256; //定時器T0的高8位賦初值
TL0=(65536-500)%256; //定時器T0的高8位賦初值
}
復制代碼
所有資料51hei提供下載:
實驗9:宿舍遙控密碼.zip
(29.04 KB, 下載次數: 30)
2018-7-13 15:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
zuiqf1978
時間:
2018-7-15 21:21
一位輸錯太強悍,應該是二至三位,畢竟有時難免犯錯!
作者:
2467214876
時間:
2020-6-24 17:14
樓主,有仿真嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品欧美一区二区三区不卡
|
色网站在线
|
日本久久精品
|
成人精品一区亚洲午夜久久久
|
精品在线看
|
欧美精品一区二区三区在线播放
|
888久久久
|
精品乱码一区二区三四区
|
91精品国产91久久久久游泳池
|
chengrenzaixian
|
亚洲精久久
|
国产精品久久久久久中文字
|
国产精品不卡一区
|
久久久性色精品国产免费观看
|
亚洲欧美在线视频
|
av在线天堂网
|
日韩午夜精品
|
91最新在线视频
|
日本一区精品
|
成人一区二区视频
|
国产精品18hdxxxⅹ在线
|
中文天堂在线一区
|
99久久久99久久国产片鸭王
|
日本午夜精品
|
久久久久久免费免费
|
草樱av
|
国产区精品在线观看
|
午夜成人免费视频
|
www.干
|
视频三区
|
黄色亚洲
|
久久久久久99
|
久久国产秒
|
欧美色综合一区二区三区
|
久久精品中文字幕
|
亚洲精品一区二区三区中文字幕
|
欧美日韩国产三级
|
久草高清视频
|
欧美黄色片
|
亚洲视频在线播放
|
中文字幕一区二区三区四区
|