欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機電子密碼鎖電路程序帶仿真,調試通過lcd1602+24C02
[打印本頁]
作者:
nihaoqisiba
時間:
2016-4-23 18:06
標題:
單片機電子密碼鎖電路程序帶仿真,調試通過lcd1602+24C02
調試通過,,,電子密碼鎖,,,資料,,,,分享
lcd1602液晶屏顯示 并且用24c02保存數據
0.png
(37.1 KB, 下載次數: 162)
下載附件
2016-4-24 19:32 上傳
仿真圖 電路圖(proteus仿真文件可以從51黑本貼附件下載)
0.png
(64.86 KB, 下載次數: 169)
下載附件
2016-4-24 19:33 上傳
全部資料(壓縮包)下載:
密碼鎖單片機源程序仿真.zip
(128 KB, 下載次數: 383)
2016-4-24 19:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
S0-S9為密碼數字鍵;
S10為刪除鍵,刪除上一次輸入的數字;
S11為清除鍵,清除所有輸入的數字;
S12為確認鍵,輸入密碼后按確認鍵確認密碼是否輸入正確;
S13為密碼修改鍵。
S1-S10鍵按下5秒后,沒有其他鍵按下,則發出報警聲,聲音持續10s;
輸入密碼后按確認鍵,若密碼正確,則綠燈亮,否則則紅燈亮。
下面是部分程序預覽(完整版本請下載本帖附件):
//S1-S9為數字密碼輸入鍵0-9
//S10-S13為功能鍵
//S10為單個數字刪除鍵,S11為所以數字清除鍵,S12為密碼確認鍵,S13為修改密碼鍵
#include<reg52.h> //包含頭文件
#include"IIC.h" //包含IIC總線頭文件
#include"1602.h" //包含1602頭文件
#include"keyboard.h" //包含鍵盤掃描頭文件
sbit led_red=P2^5; //位定義綠燈,密碼輸入正確時顯示
sbit led_gre=P2^6; //位定義紅燈,密碼輸入錯誤時顯示
sbit spk=P2^7;
uchar ASC[]={'0','1','2','3','4','5','6','7','8','9'}; //將數字轉換成字符型數據供1602顯示
uchar one=0,two=1,three=2,four=3; //初始密碼0123
uint t0,t1; //定時器0、1分別溢出的次數
void Init_time0(void) //定時器0初始化函數
{
TMOD=0x11;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=(65535-2000)/256;
TL1=(65535-2000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=0;
TR1=0;
}
void main(void) //主函數
{
uchar flag=0,cflag=0;
//flag、cflag分別為修改密碼標志和修改密碼時初始密碼輸入正確標志(輸入新密碼標志)
uchar i=0,k=0;
//i為輸入密碼時輸入數字密碼的個數
//k為修改密碼時輸入數字密碼的個數
uchar j=0,t=0,shu=1;
//j用于for循環中判斷輸入密碼和存儲密碼對比
//t=0為進入修改密碼狀態,只要是為了修改密碼時的初始顯示
//shu用于輸入新密碼時,四位密碼的地址
uchar num,newpassword[4];
//num為按鍵值,newpassword數組存放每次輸入的數字密碼S0-S13和0-13對應
Init_IIC(); //初始化IIC
Init_1602(); //初始化1602
Init_time0(); //初始化定時器0
led_red=0; //熄滅綠燈和紅燈
led_gre=0;
spk=0;
write_add(1,one); //寫入初始密碼0123到E2PROM
delay_ms(5);
write_add(2,two);
delay_ms(5);
write_add(3,three);
delay_ms(5);
write_add(4,four);
delay_ms(5);
displaylistchar(0,0,"Input Password:"); //1602初始化后顯示Input Password:
while(1)
{
/*檢測是否有按鍵按下,若沒有則不停掃描*/
num=KeyPro(); //掃描按鍵
if(num!=0xff) //如果有鍵按下
{
/*******************************************************************************************/
/*輸入密碼*/
if((num!=13)&&(flag==0)) //S13為修改密碼鍵,flag為修改密碼標志,flag=1時修改密碼,判斷是否修改密碼
{
displaylistchar(0,0,"Input Password:");
if(num>=0&&num<=9) //如果是0-9按下,則輸入0-9并在液晶上顯示0-9
{
TR0=~TR0; //若按鍵后五秒內沒有打開鎖,則報警
t0=0;
displayonechar(i,1,ASC[num]); //顯示輸入的數字密碼
newpassword[i++]=num;
}
if(num==10) //如果10按下,在有數字輸入的情況下刪除上次輸入的數字
{
TR0=~TR0; //若按鍵后五秒內沒有打開鎖,則報警
t0=0;
if(i>0)
{
i=i-1;
displayonechar(i,1,' ');
}
}
if(num==11) //如果是11按下,清除所有輸入的數據,重新輸入
{
TR0=0;
i=0;
displaylistchar(0,1," ");//清除該行
}
if(num==12) //確認鍵,如果密碼正確,則綠燈亮紅燈熄,否則則紅燈亮綠燈熄
{
TR0=0;
if(i==4) //四位密碼,所以只在輸入四個密碼的情況下檢測密碼是否正確
{
for(j=0;j<4;j++)
{
if(newpassword[j]!=read_add(j+1)) //輸入的密碼和存儲的密碼對比,若有一個錯誤,則跳出密碼對比
break;
}
if(j==i) //若j=i成立,則密碼正確
{
led_gre=1; //亮綠燈
led_red=0;
displaylistchar(0,1,"Right Open!"); //顯示輸入正確
delay_ms(1000);
i=0; //按鍵輸入數置0
displaylistchar(0,1," ");//清除該行
}
else //若不成立則密碼不正確
{
led_gre=0; //亮紅燈
led_red=1;
displaylistchar(0,1,"Wrong Retry!"); //顯示輸入錯誤
delay_ms(1000);
i=0; //按鍵輸入數置0
displaylistchar(0,1," ");//清除該行
}
}
else //若按鍵輸入數i不等于4,則密碼肯定錯誤
{
led_gre=0; //亮紅燈
led_red=1;
displaylistchar(0,1,"Wrong Retry!"); //顯示輸入錯誤
delay_ms(1000);
i=0; //按鍵輸入數置0
displaylistchar(0,1," ");//清除該行
}
}
if(i==6) //虛設六位密碼,數字按鍵輸入六次后還沒有按確定的話,則提示密碼錯誤
{
TR0=0;
led_gre=0; //亮紅燈
led_red=1;
displaylistchar(0,1,"Wrong Retry!"); //顯示輸入錯誤
delay_ms(1000);
i=0; //按鍵輸入數置0
displaylistchar(0,1," ");//清除該行
}
}
/*******************************************************************************************/
/*******************************************************************************************/
/*修改密碼*/
else //有S13鍵按下或修改密碼標志flag置1
{
if(cflag==0) //修改密碼時初始密碼輸入正確標志cflag置0時為輸入初始密碼檢測狀態,類似前面的密碼輸入
{
i=0; //按鍵輸入數置0
flag=1; //S13鍵按下,修改密碼標志置1
if(t==0) //t=0為進入修改密碼狀態,只要是為了修改密碼時的初始顯示
{
displaylistchar(0,0,"Change Password:");
delay_ms(500);
displaylistchar(0,1,"Old Password:");
delay_ms(500);
displaylistchar(0,1," ");//清除該行
}
t++; //正在修改密碼狀態,則不用再次進入修改密碼狀態
if(num>=0&&num<=9) //如果是0-9按下,則輸入0-9并在液晶上顯示0-9
{
TR0=~TR0; //若按鍵后五秒內沒有打開鎖,則報警
t0=0;
displayonechar(k,1,ASC[num]);
newpassword[k++]=num;
}
if(num==10) //單個密碼刪除鍵,和輸入密碼時一樣
{
TR0=~TR0; //若按鍵后五秒內沒有打開鎖,則報警
t0=0;
if(k>0)
{
k=k-1;
displayonechar(i,1,' ');
}
}
if(num==11) //所以密碼清除鍵,和輸入密碼時一樣
{
TR0=0;
k=0;
flag=0;
displaylistchar(0,1," ");//清除該行
}
if(num==12) //確認鍵,和輸入密碼時一樣
{
TR0=0;
if(k==4)
{
for(j=0;j<4;j++)
{
if(newpassword[j]!=read_add(j+1))
break;
}
if(j==k) //若初始密碼輸入正確后提示輸入新密碼,并將輸入新密碼標志cflag置1
{
led_gre=1;
led_red=0;
displaylistchar(0,1,"Right Open!");
delay_ms(500);
displaylistchar(0,1," ");//清除該行
displaylistchar(0,1,"New Password:");
delay_ms(500);
displaylistchar(0,1," ");//清除該行
k=0;
cflag=1;
}
else //若輸入錯誤,則跳出密碼修改,flag=0
{
led_gre=0;
led_red=1;
displaylistchar(0,1,"Wrong Retry!");
delay_ms(1000);
k=0;
flag=0;
displaylistchar(0,1," ");//清除該行
displaylistchar(0,0," ");//清除該行
displaylistchar(0,0,"Input Password:");
}
}
else //修改密碼時輸入原密碼數不等于4,顯然密碼錯誤,跳出密碼修改
{
led_gre=0;
led_red=1;
displaylistchar(0,1,"Wrong Retry!");
delay_ms(1000);
k=0;
flag=0;
displaylistchar(0,1," ");//清除該行
displaylistchar(0,0," ");//清除該行
displaylistchar(0,0,"Input Password:");
}
}
if(k==6) //數字按鍵輸入六次后還沒有按確定的話,則提示密碼錯誤 ,跳出密碼修改
{
TR0=0;
led_gre=0;
led_red=1;
displaylistchar(0,1,"Wrong Retry!");
delay_ms(1000);
k=0;
flag=0;
displaylistchar(0,1," ");//清除該行
displaylistchar(0,0," ");//清除該行
displaylistchar(0,0,"Input Password:");
}
}
else //輸入新密碼標志置1,輸入新密碼并顯示新輸入的密碼
{
if(num>=0&&num<=9)
{
write_add(shu,num);
displayonechar(shu-1,1,ASC[num]);
shu++;
if(shu==5)
{
t=0;
shu=1;
cflag=0;
flag=0;
displaylistchar(0,1,"Change Success!");
delay_ms(500);
displaylistchar(0,0," ");//清除該行
displaylistchar(0,1," ");//清除該行
displaylistchar(0,0,"Input Password:");
}
}
}
}
}
}
}
void time0(void) interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
t0++;
if(t0==100)
{
t0=0;
TR0=0;
TR1=1;
}
}
void time1(void) interrupt 3
{
TH1=(65535-2000)/256;
TL1=(65535-2000)%256;
t1++;
spk=~spk;
if(t1==5000)
{
t1=0;
TR1=0;
}
}
復制代碼
作者:
牙簽
時間:
2016-12-20 11:25
還差1分 才能下
作者:
faridzled
時間:
2017-2-28 09:17
thanks for sharing
作者:
faridzled
時間:
2017-2-28 09:21
thanks for sharing
作者:
songjingjun1314
時間:
2017-3-27 17:12
thanks for sharing
作者:
zgh035
時間:
2017-5-21 10:23
下載不了
作者:
漫步_xw
時間:
2017-11-20 15:17
謝謝分享!不過積分不夠~~~
作者:
1245794447
時間:
2018-5-28 06:11
下載不了,求補附件
作者:
加油兄弟
時間:
2018-6-7 10:57
不錯我可以學習到真正意義上的知識了
作者:
jxhjjm
時間:
2018-6-7 18:01
thanks for sharing
作者:
親愛的h
時間:
2018-7-18 16:01
學習下24c02存儲程序
作者:
FGH116
時間:
2018-10-9 15:36
多謝。。。。。。。
作者:
嗒嗒嗒2
時間:
2018-10-12 18:08
很好謝謝
作者:
茶樹康寧
時間:
2018-12-30 22:54
樓主厲害
作者:
方山里
時間:
2019-1-10 12:23
還差點分,加油
作者:
zyx910
時間:
2019-2-27 11:59
這是六位密碼嗎,有仿真的圖和程序的嗎
作者:
2633675861
時間:
2020-12-22 19:32
學習24c02存儲程序
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1