資源簡介
O(∩_∩)O~,不錯的資源哦!關于電子密碼鎖的設計的資料,含有完整的仿真原理圖和C語言程序代碼,可以看看哦!

代碼片段和文件信息
/*
六位密碼原始密碼為680424該程序有點問題也有不完善的地方就是修改密碼后如果輸入的密碼與修改的密碼
相同則鎖會開如果有一次輸入有錯則密碼會變回原來的密碼即362330.可能因為定義的數組
pws[6]為全局變量但是也不肯定.希望下載的人提出寶貴的意見大家共同交流謝謝.
*/
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
uint?num=10; //開始讓數碼管什么都顯示
bit?set=0; //定義設置密碼的位
char?count=-1; //開始讓COUNT=-1方便后面顯示數碼管
sbit?Beep=P1^2;?//蜂鳴器
uchar?temp;
uchar?pws[6]={680424}; //原始密碼
uchar?pwx[6]; //按下的數字存儲區
bit?rightflag; //密碼正確標志位
uchar?workbuf[6];
uchar?code?tabledu[]={
0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x000x40
}; //段選碼共陰極
uchar?code?tablewe[]={
0xfe0xfd0xfb0xf70xef0xdf
}; //位選碼
uint?keyscan();
void?delay(uchar?z) //延時ms級
{
uchar?y;
for(;z>0;z--)
for(y=120;y>0;y--);
}
void?setpw() //設置密碼函數
{
keyscan();
}
uint?keyscan() //鍵盤掃描函數
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(5); //鍵盤去抖最好20ms以上這里用了5ms
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
count++;//按鍵計數加1
temp=P3;
switch(temp)
{
case?0xee:?
{
num=7;
if(count<6) //六位密碼所以COUNT<6
{
if(set==0) //設置密碼鍵沒有按下時
pwx[count]=num;?//存儲按下的數字
else
pws[count]=num;?//設置密碼鍵按下時設置新密碼
workbuf[count]=tabledu[11];?//相應位的數碼管顯示“--“不顯示相應的數字密碼是保密的
}
}
break;
case?0xde:?
{
num=8;
if(count<6) //以下掃描鍵盤的原理差不多同上
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}
break;
case?0xbe:?
{
num=9;
{
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}?
}
break;
case?0x7e: //設置密碼鍵按下
{
set=1; //設置密碼標志位置1
P1_3=0; //設置密碼指示燈亮
workbuf[0]=0x00;//數碼管第一位不顯示
workbuf[1]=0x00;//......
workbuf[2]=0x00;//......
workbuf[3]=0x00;
workbuf[4]=0x00;
workbuf[5]=0x00;//......
count=-1; //按鍵計數復位為-1
if(count<6) //密碼沒有設置完繼續設置密碼
{
setpw(); //設置密碼
}
}
break;
}
while(temp!=0xf0)??//按鍵抬起檢測
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
count++;
temp=P3;
switch(temp)
{
case?0xed:?
{
num=4;
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}
break;
case?0xdd:?
{
num=5;
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}
break;
case?0xbd:
{
num=6;
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2431??2010-06-29?17:44??密碼鎖\新建文件夾\suo.asm
?????文件??????13046??2010-06-29?17:44??密碼鎖\新建文件夾\suo.LST
?????文件????????971??2010-06-29?17:45??密碼鎖\新建文件夾\suo.Opt
?????文件????????221??2010-06-30?02:46??密碼鎖\新建文件夾\suo.plg
?????文件???????2103??2010-06-29?17:45??密碼鎖\新建文件夾\suo.Uv2
?????文件??????12932??2010-06-29?20:32??密碼鎖\智能密碼鎖\hanmeng
?????文件???????3877??2010-06-29?20:32??密碼鎖\智能密碼鎖\hanmeng.hex
?????文件?????????31??2010-06-29?20:32??密碼鎖\智能密碼鎖\hanmeng.lnp
?????文件??????19565??2010-06-29?20:32??密碼鎖\智能密碼鎖\hanmeng.M51
?????文件????????962??2010-06-30?19:37??密碼鎖\智能密碼鎖\hanmeng.Opt
?????文件????????157??2010-06-30?19:37??密碼鎖\智能密碼鎖\hanmeng.plg
?????文件???????1993??2010-06-30?19:37??密碼鎖\智能密碼鎖\hanmeng.Uv2
?????文件???????7596??2010-06-29?20:31??密碼鎖\智能密碼鎖\mimasuo.c
?????文件??????25244??2010-06-29?20:32??密碼鎖\智能密碼鎖\mimasuo.LST
?????文件??????15801??2010-06-29?20:32??密碼鎖\智能密碼鎖\mimasuo.OBJ
?????文件?????132923??2010-06-29?20:35??密碼鎖\智能密碼鎖\原理圖\11.DSN
?????文件????????768??2010-06-30?19:33??密碼鎖\智能密碼鎖\原理圖\11.PWI
?????文件?????132927??2010-06-29?20:28??密碼鎖\智能密碼鎖\原理圖\Last?Loaded?11.DBK
?????目錄??????????0??2010-06-30?03:32??密碼鎖\智能密碼鎖\原理圖
?????目錄??????????0??2010-07-02?13:31??密碼鎖\新建文件夾
?????目錄??????????0??2010-07-02?13:31??密碼鎖\智能密碼鎖
?????目錄??????????0??2010-07-04?11:54??密碼鎖
-----------?---------??----------?-----??----
???????????????373548????????????????????22
- 上一篇:BP神經網絡的c++實現
- 下一篇:QTQTabWidget文字垂直顯示Demo源碼
評論
共有 條評論