久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6225|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

[求助]關(guān)于C程序的密碼鎖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:14743 發(fā)表于 2009-6-27 10:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

/*************************************************************************************************
**** 調(diào) 試:周繼承
**** Email: zhoujichengxi@163.com
*************************************************************************************************
**** 1. MCU:at89s51
**** 2. 晶振:12MH
**** 3. 2009.06. 完成
*************************************************************************************************
************************************************************************************************/
#include<reg51.h>
#define uchar unsigned char;
#define uint unsigned int;
void delay(void);
void delay1(void);
void right(void);
write(void);
uchar A[]={0,1,2,3,4,5};
uchar B1[]={0,0,0,0,0,0};
uchar B2[]={0,0,0,0,0,0};
uint key_data[]={0xe7,0xeb,0xed,0xee,0xd7,0xdb,0xdd,0xde,0xb7,0xbb,0xbd,0xbe};
char zhuan[12]={0,1,2,3,4,5,6,7,8,9,0x0a,0x0b};//鍵盤(pán)編號(hào)轉(zhuǎn)化為對(duì)應(yīng)的數(shù)字
uchar temp,temp1,i,y,c,c1;
c=0;
uint s,j;
 main()
  {
  EX1=1;
  PX1=1;
  IT1=1;
  c1=0; 
begin: s=5000;
  EA=1;
  ET0=1;
  TMOD=0x01; //定時(shí)器0為工作方式1
  TH0=(65535-5000)/256;
  TL0=(65535-5000)%256; //初植
  TR0=1;//啟動(dòng)定時(shí)器
  P1=0xfe;
  while(1)
   {if(s==0)
       goto loop;
   y=write();
   if(y!=0x0c)
    break;
    }
  B1[0]=y;
  while(1)
   {if(s==0)
       goto loop;
    y=write();
     if(y!=0x0c)
       break;
   }
  B1[1]=y;
  while(1)
      {if(s==0)
       goto loop;
    y=write();
     if(y!=0x0c)
       break;
    }
  B1[2]=y;
  while(1)
   {if(s==0)
       goto loop;
    y=write();
      if(y!=0x0c)
       break;
    }
  B1[3]=y;
  while(1)
   {if(s==0)
       goto loop;
    y=write();
      if(y!=0x0c)
       break;
    }
  B1[4]=y;
  while(1)
   {if(s==0)
       goto loop;
    y=write();
      if(y!=0x0c)
      break;
    }
  B1[5]=y;
  TR0=0;
  P1=0xff;
  if(B1[0]==A[0])
  {if(B1[1]==A[1])
  {if(B1[2]==A[2])
  {if(B1[3]==A[3])
  {if(B1[4]==A[4])
  {if(B1[5]==A[5])
   P1=0x00;
  delay1();
  right();
loop: TR0=0;
  P1=0xff;
  PCON=0x01;
  goto begin;}}}}}
  {P1=0xf0;
  delay1();
  c1++;
  if(c1<3)
  goto begin;
  c1=0;//還原C1的值
  for(i=0;i<100;i++)
   {
   P1=0xf0;
   delay();
   P1=0xff;
   delay();
   }
  P1=0xff;
  PCON=0x01;// 進(jìn)入休眠
  goto begin;
  }
 }
/*********************************************************************
**** 子 程 序:讀取鍵值服務(wù)程序
**** 入口參數(shù):
**** 出口參數(shù):
**** 功能描述:
**** 其他說(shuō)明:
**** 創(chuàng) 建 人:周繼承
**** 日    期:2009.06.17
**** 版    本:
**** 公司名稱:
**********************************************************************/
 write()//鍵值輸入子函數(shù)
 {
 P0=0xf0;//送測(cè)試數(shù)據(jù)
 if(P0!=0xf0)//回讀看是否有變化,如有則有鍵下
  {void delay();//有按鍵按下時(shí)延時(shí)去抖
  if(P0!=0xf0)//再讀是否有鍵按下
   {P0=0xf0; // 再送測(cè)試數(shù)據(jù)
    temp=P0;//保存行或列值
    P0=0x0f;//數(shù)據(jù)反轉(zhuǎn)
    temp=P0|temp;
   P1=0xbe;
    for(i=0;i<16;i++)
     {if(temp==key_data)
      temp=zhuan;
     }
   P0=0xf0;//送測(cè)試數(shù)據(jù)
   delay();
   if(P0==0xf0)
    {
   P1=0xfe;
   return(temp);}//如果有鍵按下返回鍵值
   }
  }
return(0x0c);//如果沒(méi)有鍵按下返回?zé)o效值 
 }
/*********************************************************************
**** 子 程 序:延時(shí)去抖
**** 入口參數(shù):
**** 出口參數(shù):
**** 功能描述:
**** 其他說(shuō)明:
**** 創(chuàng) 建 人:周繼承
**** 日    期:2009.06.17
**** 版    本:v1.0
**** 公司名稱:
**********************************************************************/
void delay(void)//延時(shí)去抖
 {
  for(j=0;j<3000;j++);
 }
/*********************************************************************
**** 子 程 序:定時(shí)中斷0
**** 入口參數(shù):
**** 出口參數(shù):
**** 功能描述:
**** 其他說(shuō)明:
**** 創(chuàng) 建 人:周繼承
**** 日    期:2009.06.17
**** 版    本:v1.0
**** 公司名稱:
**********************************************************************/
void timer0() interrupt 1//延時(shí)用于控制密碼輸入時(shí)間
  {TMOD=0x01; //定時(shí)器0為工作方式1
 TH0=(65535-5000)/256;
 TL0=(65535-5000)%256;//初植
 TR0=1;//啟動(dòng)定時(shí)器
    s--;
    }
/*********************************************************************
**** 子 程 序:讀取密碼正確狀態(tài)服務(wù)程序
**** 入口參數(shù):
**** 出口參數(shù):
**** 功能描述:
**** 其他說(shuō)明:
**** 創(chuàng) 建 人:周繼承
**** 日    期:2009.06.17
**** 版    本:
**** 公司名稱:
**********************************************************************/
void right()//正確情況下子函數(shù)
 {
 c=0;
 c1=0;
 TR0=0;
  P1=0xff;
loop5:  s=5000;
 EA=1;
 ET0=1;
 TMOD=0x01; //定時(shí)器0為工作方式1
 TH0=(65535-5000)/256;
 TL0=(65535-5000)%256; //初植
 TR0=1;//啟動(dòng)定時(shí)器
 P1=0xfe;
 while(1)
  {
   y=write();
   if(y==0x0a)
   goto loop2;
   if(y==0x0b)
   goto loop3;
   if(s==0)
   break;
   }
  P1=0xff;
  goto loop4;
loop2: P1=0xfc; //kai mem
  delay1();
  P1=0xff;
  goto loop4;
loop3: P1=0x00;
  delay1();
  s=5000;
  EA=1;
  ET0=1;
  TMOD=0x01; //定時(shí)器0為工作方式1
  TH0=(65535-5000)/256;
  TL0=(65535-5000)%256; //初植
  TR0=1;//啟動(dòng)定時(shí)器
  P1=0xfe;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
     if(y!=0x0c)
     break;
   }
   B1[0]=y;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B1[1]=y;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B1[2]=y;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B1[3]=y;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B1[4]=y;
   while(1)
   {if(s==0)
   goto loop4;
   y=write();
    if(y!=0x0c)
    break;
   }
   B1[5]=y;
   P1=0x00;
   delay1();
   P1=0xff;
/********************************/
  s=5000;
  EA=1;
  ET0=1;
  TMOD=0x01; //定時(shí)器0為工作方式1
  TH0=(65535-5000)/256;
  TL0=(65535-5000)%256; //初植
  TR0=1;//啟動(dòng)定時(shí)器
  P1=0xfe;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
     if(y!=0x0c)
     break;
   }
   B2[0]=y;
   while(1)
   {if(s==0)
     goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B2[1]=y;
   while(1)
   {if(s==0)
    goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B2[2]=y;
   while(1)
   {if(s==0)
     goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B2[3]=y;
   while(1)
   {if(s==0)
     goto loop4;
   y=write();
    if(y!=0x0c)
     break;
   }
   B2[4]=y;
   while(1)
   {if(s==0)
     goto loop4;
   y=write();
    if(y!=0x0c)
    break;
   }
   B2[5]=y;
  /* for(i=0;i<6;i++)
    {
   while(1)
    {
    if(s==0)
     goto loop4;
    y=write();
    if(y!=0x0c)
     break;
    }
   B2=y; 
   }*/
   P1=0x00;
   delay1();
   P1=0xff;
   for(i=0;i<6;i++)
    {if(B1==B2)
   c++;
   }
   if(c<5)
   {P1=0xf0;
   delay1();
   c1++;
   if(c1<3)
   goto loop5;
   for(i=0;i<100;i++)
   {
   P1=0xf0;
   delay();
   P1=0xff;
   delay();
   }
   goto loop4;
   }
   for(i=0;i<6;i++)
    A=B1;
   P1=0x55;
   delay1();

loop4: TR0=0;
  P1=0xff;
 }
/*********************************************************************
**** 子 程 序:
**** 入口參數(shù):
**** 出口參數(shù):
**** 功能描述:
**** 其他說(shuō)明:
**** 創(chuàng) 建 人:周繼承
**** 日    期:2009.06.17
**** 版    本:
**** 公司名稱:
**********************************************************************/
void EXT1() interrupt 2
 {PCON=0x00;
 } 
/*問(wèn)題有兩個(gè)不能理解:
*1,為什么讀取鍵值的時(shí)候不能用循環(huán),循環(huán)
for(i=0;i<6;i++)
    {
   while(1)
    {
    if(s==0)
     goto loop4;
    y=write();
    if(y!=0x0c)
     break;
    }
   B2=y; 
   }
使用時(shí)跳出break后不再循環(huán)for(i=0;i<6;i++)
2,為什么把原始密碼更改為有6的后就不能識(shí)別密碼了,希望大家給點(diǎn)意見(jiàn),共同進(jìn)步!周繼承在此感謝!QQ:551684929*/

[此貼子已經(jīng)被作者于2009-6-27 11:03:16編輯過(guò)]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:14743 發(fā)表于 2009-6-27 10:17 | 只看該作者
程序大概流程:輸入密碼--正確(開(kāi)門(mén)按A,改密碼按B--輸入兩次對(duì)比,一致則更改成功,成功后休眠.否則回到按A開(kāi)門(mén)和按B改密碼狀態(tài),但是只有三次機(jī)會(huì).三次后報(bào)警,報(bào)警后休眠)--錯(cuò)誤的時(shí)候回到輸入密碼的狀態(tài),如果三次不對(duì)就報(bào)警,報(bào)警后休眠.
回復(fù)

使用道具 舉報(bào)

板凳
ID:122508 發(fā)表于 2016-5-22 10:40 | 只看該作者
大神啊,真牛
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区二区 | 欧美区日韩区 | 日韩成人一区二区 | 欧美日韩电影一区二区 | 在线免费亚洲视频 | 国产在视频一区二区三区吞精 | 日韩免费av一区二区 | 亚洲免费三区 | 性色av一区二区三区 | 亚洲成人精品国产 | 草草草草视频 | 操操操操操| 欧美性成人 | 欧美亚洲第一区 | 9999在线视频 | 免费a在线| 91短视频网址 | 久久久久成人精品亚洲国产 | av片网 | 91精品国产乱码久久久久久久久 | 国产精品夜夜夜一区二区三区尤 | 午夜网址| 亚洲成人精品国产 | 精品一区二区三区日本 | 韩国欧洲一级毛片 | 国产69精品久久久久777 | 91久久| 天天综合国产 | 国产高清一区二区三区 | 欧洲精品一区 | 日朝毛片 | 亚洲成人www | 99精品99 | 国产一区二区在线免费观看 | 国产一二三区精品视频 | 日本一区二区三区精品视频 | 欧美精品v国产精品v日韩精品 | 久久高清 | 久久精品国产免费 | 久久综合九色综合欧美狠狠 | 日本久久精品视频 |