AVR單片機密碼鎖程序(原創(chuàng))
/******************************************************/
/*******************密碼判斷子程序*********************/
/******************************************************/
void mi()
{
switch(num)
{
case 1://只有按鍵標志位為1時,說明按下的是第1次
if(qing==yin)//此時第1位密碼比較變量與初始密碼變量比較,是否相等
{
temp++;//如果相等則將比較標志位加1,以作記號
qing=0xff;//作完記號后,將比較變量賦值,以便它再次記數(shù)標志位變量
}
break;//返回
case 2://只有按鍵標志位為2時,說明按下的是第2次
if(qing1==yin1)
{
temp++;
qing1=0xff;
}
break;
case 3://只有按鍵標志位為3時,說明按下的是第3次
if(qing2==yin2)
{
temp++;
qing2=0xff;
}
break;
case 4://只有按鍵標志位為4時,說明按下的是第4次
if(qing3==yin3)
{
temp++;
qing3=0xff;
}
break;
}
if(temp==4)//如果比較標志位變量為4,則說明以上4個密碼是對的,此時蜂鳴器響起
bbt();//調用蜂鳴器響起子程序
}
/***********************************************/
/*******************主程序*********************/
/***********************************************/
void main()
{
uchar ik=16;//定義局部變量
temp=0;//蜂鳴器計數(shù)變量變0
num=0;//計數(shù)器清0
yin=0;//密碼1
yin1=1;//密碼2
yin2=2;//密碼3
yin3=3;//密碼4
qing=qing1=qing2=qing3=0;//密碼比較變量清0
DDRB=0xff;//設置PB口為輸出
DDRC=0xff;//設置PC口為輸出
while(1)
{
ik=key_scan();//將按鍵返回值給變量IK
/*****************第15個鍵按下時處理的程序*****************/
if(ik==15)//如果按下了第15個鍵,就將按下的次數(shù)清0,即進入初始化
{
num=0;//清0計數(shù)器
temp=0;//清0計數(shù)器
qing=qing1=qing2=qing3=0;//密碼比較變量清0
}
/*****************數(shù)碼管顯示部分*****************/
if(ik<16)//如果返回值小于16就在數(shù)碼
xian(ik); //調用顯示子程序
else//如果返回值不小于16,就顯示黑屏
xian(16);
/*****************密碼判斷部分*****************/
mima();
}
}本文引用地址:http://m.ptau.cn/article/201611/323383.htm
評論