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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12224|回復: 14
打印 上一主題 下一主題
收起左側

電子密碼鎖(原理圖+源代碼等設計資料)

  [復制鏈接]
跳轉到指定樓層
樓主
電子密碼鎖使用說明
一、   主要功能:
1.按鍵設置6位密碼,輸入密碼若密碼正確,則鎖打開。顯示open!
2.密碼可以自己修改(6位密碼),必須是鎖打開時才能改密。為防止誤操作,修改密碼得輸入兩次。
3.若密碼輸入錯誤次數超過3次,蜂鳴器報警并且鎖定鍵盤。
4.24C02有復位、掉電保存密碼功能。
5.液晶屏亮度會隨光線自動調整。
二、按鍵說明:
排列方式:1  2 3  A
  4 5  6  B
  7 8  9  C
  * 0  #  D
   ABC無定義、 *號鍵為取消當前操作、#號鍵為確認、D鍵為修改密碼
三、調整說明:
1、           灰度調整:當焊接好后液晶屏可能會“無字”。這是調節液晶3腳與地之間的電位器阻值應為1.3k左右,液晶3腳與電源之間的電位器阻值應為8.7k左右。(如果是電阻,那就是13腳是1.5k23腳是10k的電阻)
2、           自己焊接的電路,首次使用時輸入:131420,對密碼進行初始化,當顯示:initpassword,證明密碼初始化完成,此時的密碼為:000000。然后可以改密了。(如密碼忘記就再輸入131420初始化,然后密碼就是000000了)
3、           按下 * 鍵或復位鍵,可以關鎖并退出。
4、           當輸入密碼錯誤后,報警并鎖定鍵盤3秒鐘。
修改密碼:在開鎖狀態下,再次輸入正確的密碼并按下# 鍵,此時聽到兩聲提示,輸入新的六位密碼并按D 鍵,再重復輸入一次新密碼并按 D ,會聽到兩聲提示音,表示重設密碼成功,內部保存新密碼并存儲。如兩次輸入的新密碼不一樣,則重設密碼失敗。
                                
                                                                                           原理圖

部分代碼:
  1. //包含頭文件
  2. #include <REG51.h>
  3. #include<intrins.h>
  4. //宏定義
  5. #define LCM_Data  P0    //將P0口定義為LCM_Data
  6. #define uchar unsigned char
  7. #define uint  unsigned int
  8. //1602的控制腳
  9. sbit lcd1602_rs=P2^7;
  10. sbit lcd1602_rw=P2^6;
  11. sbit lcd1602_en=P2^5;
  12. sbit Scl=P3^4;   //24C02串行時鐘
  13. sbit Sda=P3^5;   //24C02串行數據
  14. sbit ALAM = P2^1;  //報警
  15. sbit KEY = P3^6;  //開鎖
  16. bit  pass=0;   //密碼正確標志
  17. bit  ReInputEn=0;  //重置輸入允許標志
  18. bit  s3_keydown=0;  //3秒按鍵標志位
  19. bit  key_disable=0;  //鎖定鍵盤標志
  20. unsigned char countt0,second; //t0中斷計數器,秒計數器
  21. void Delay5Ms(void);  //聲明延時函數
  22. unsigned char code a[]={0xFE,0xFD,0xFB,0xF7};     //控盤掃描控制表
  23. //液晶顯示數據數組
  24. unsigned char code start_line[] = {"password:       "};
  25. unsigned char code name[]    = {"===Coded Lock==="}; //顯示名稱
  26. unsigned char code Correct[]  = {"     correct    "};  //輸入正確
  27. unsigned char code Error[]    = {"      error     "};   //輸入錯誤
  28. unsigned char code codepass[] = {"      pass      "};
  29. unsigned char code LockOpen[] = {"      open      "};  //OPEN
  30. unsigned char code SetNew[]  = {"SetNewWordEnable"};
  31. unsigned char code Input[]    = {"input:          "};  //INPUT
  32. unsigned char code ResetOK[]  = {"ResetPasswordOK "};
  33. unsigned char code initword[] = {"Init password..."};
  34. unsigned char code Er_try[]  = {"error,try again!"};
  35. unsigned char code again[]  = {"input again     "};
  36. unsigned char InputData[6];         //輸入密碼暫存區
  37. unsigned char CurrentPassword[6]={1,3,1,4,2,0};    //管理員密碼(只可在程序中修改)
  38. unsigned char TempPassword[6];
  39. unsigned char N=0;    //密碼輸入位數記數
  40. unsigned char ErrorCont;   //錯誤次數計數
  41. unsigned char CorrectCont;   //正確輸入計數
  42. unsigned char ReInputCont;    //重新輸入計數
  43. unsigned char code initpassword[6]={0,0,0,0,0,0};   //輸入管理員密碼后將密碼初始為000000

  44. //=====================5ms延時==============================
  45. void Delay5Ms(void)
  46. {
  47. unsigned int TempCyc = 5552;
  48. while(TempCyc--);
  49. }
  50. //===================400ms延時==============================
  51. void Delay400Ms(void)
  52. {
  53. unsigned char TempCycA = 5;
  54. unsigned int TempCycB;
  55. while(TempCycA--)
  56. {
  57.   TempCycB=7269;
  58.   while(TempCycB--);
  59. }
  60. }
  61. //=============================================================================================
  62. //================================24C02========================================================
  63. //=============================================================================================
  64. void mDelay(uint t) //延時
  65. {
  66. uchar i;
  67.     while(t--)
  68.     {
  69.      for(i=0;i<125;i++)
  70.      {;}
  71.     }
  72. }
  73.    
  74. void Nop(void)    //空操作
  75. {
  76.   _nop_();    //僅作延時用一條語句大約1us
  77.   _nop_();
  78.   _nop_();
  79.   _nop_();
  80. }
  81. /*****24c02程序參照24c02時序圖*****/
  82. /*起始條件*/
  83. void Start(void)
  84. {
  85.   Sda=1;
  86.   Scl=1;
  87.   Nop();
  88.   Sda=0;
  89.   Nop();
  90. }

  91. /*停止條件*/
  92. void Stop(void)
  93. {
  94.   Sda=0;
  95.   Scl=1;
  96.   Nop();
  97.   Sda=1;
  98.   Nop();
  99. }
  100. /*應答位*/
  101. void Ack(void)
  102. {
  103. Sda=0;
  104. Nop();
  105. Scl=1;
  106. Nop();
  107. Scl=0;
  108. }
復制代碼


...............
  1. //-------------------------初始化-------------------------
  2. void lcd_init(void)
  3. {
  4. write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據
  5. write_1602com(0x0c);//開顯示不顯示光標
  6. write_1602com(0x06);//整屏不移動,光標自動右移
  7. write_1602com(0x01);//清顯示
  8. }
  9. //========================================================================================
  10. //=========================================================================================
  11. //==============將按鍵值編碼為數值=========================
  12. unsigned char coding(unsigned char m)  
  13. {
  14. unsigned char k;
  15. switch(m)
  16. {
  17.   case (0x11): k=1;break;
  18.   case (0x21): k=2;break;
  19.   case (0x41): k=3;break;
  20.   case (0x81): k='A';break;
  21.   case (0x12): k=4;break;
  22.   case (0x22): k=5;break;
  23.   case (0x42): k=6;break;
  24.   case (0x82): k='B';break;
  25.   case (0x14): k=7;break;
  26.   case (0x24): k=8;break;
  27.   case (0x44): k=9;break;
  28.   case (0x84): k='C';break;
  29.   case (0x18): k='*';break;
  30.   case (0x28): k=0;break;
  31.   case (0x48): k='#';break;
  32.   case (0x88): k='D';break;
  33. }
  34. return(k);
  35. }
  36. //=====================按鍵檢測并返回按鍵值===============================
  37. unsigned char keynum(void)
  38. {
  39.   unsigned char row,col,i;
  40.   P1=0xf0;
  41.   if((P1&0xf0)!=0xf0)
  42.   {
  43.      Delay5Ms();
  44.         Delay5Ms();
  45.      if((P1&0xf0)!=0xf0)
  46.   {
  47.       row=P1^0xf0;          //確定行線
  48.    i=0;
  49.    P1=a<i>;           //精確定位
  50.    while(i<4)
  51.    {
  52.      if((P1&0xf0)!=0xf0)
  53.       {
  54.         col=~(P1&0xff);   //確定列線
  55.         break;            //已定位后提前退出   
  56.       }
  57.     else
  58.       {
  59.         i++;
  60.         P1=a<i>;
  61.       }
  62.    }
  63.   }
  64.   else
  65.   {
  66.    return 0;
  67.   }
  68.   while((P1&0xf0)!=0xf0);
  69.   return (row|col);    //行線與列線組合后返回
  70.   }
  71.   else return 0;            //無鍵按下時返回0
  72. }
  73. //=======================一聲提示音,表示有效輸入========================
  74. void OneAlam(void)
  75. {
  76. ALAM=0;
  77. Delay5Ms();
  78.     ALAM=1;
  79. }
  80. //========================二聲提示音,表示操作成功========================
  81. void TwoAlam(void)
  82. {
  83. ALAM=0;
  84. Delay5Ms();
  85.     ALAM=1;
  86.     Delay5Ms();
  87. ALAM=0;
  88. Delay5Ms();
  89.     ALAM=1;
  90. }
  91. //========================三聲提示音,表示錯誤========================
  92. void ThreeAlam(void)
  93. {
  94. ALAM=0;
  95. Delay5Ms();
  96.     ALAM=1;
  97.     Delay5Ms();
  98. ALAM=0;
  99. Delay5Ms();
  100.     ALAM=1;
  101.     Delay5Ms();
  102. ALAM=0;
  103. Delay5Ms();
  104.     ALAM=1;
  105. }
  106. //=======================顯示提示輸入=========================
  107. void DisplayChar(void)
  108. {
  109. unsigned char i;
  110. if(pass==1)
  111. {
  112.   //DisplayListChar(0,1,LockOpen);
  113.   write_1602com(er);       //在二行開始顯示
  114.   for(i=0;i<16;i++)
  115.   {
  116.    write_1602dat(LockOpen<i>);    //顯示open 開鎖成功
  117.   }
  118. }
  119. else
  120. {
  121.   if(N==0)
  122.   {
  123.    //DisplayListChar(0,1,Error);
  124.    write_1602com(er);
  125.    for(i=0;i<16;i++)
  126.    {
  127.     write_1602dat(Error<i>); //顯示錯誤
  128.    }
  129.   }
  130.   else
  131.   {
  132.    //DisplayListChar(0,1,start_line);
  133.    write_1602com(er);
  134.    for(i=0;i<16;i++)
  135.    {
  136.     write_1602dat(start_line<i>);//顯示開始輸入
  137.    }
  138.   }
  139. }
  140. }
  141. //========================重置密碼==================================================
  142. //==================================================================================
  143. void ResetPassword(void)
  144. {
  145. unsigned char i;
  146. unsigned char j;
  147. if(pass==0)
  148. {
  149.   pass=0;      
  150.   DisplayChar();    //顯示錯誤
  151.   ThreeAlam();    //沒開鎖時按下重置密碼報警3聲
  152. }
  153. else       //開鎖狀態下才能進行密碼重置程序
  154. {
  155.      if(ReInputEn==1)   //開鎖狀態下,ReInputEn置1,重置密碼允許
  156.   {
  157.    if(N==6)    //輸入6位密碼
  158.    {
  159.     ReInputCont++;   //密碼次數計數
  160.     if(ReInputCont==2)  //輸入兩次密碼
  161.     {
  162.      for(i=0;i<6;)
  163.      {
  164.       if(TempPassword<i>==InputData<i>) //將兩次輸入的新密碼作對比
  165.        i++;
  166.       else        //如果兩次的密碼不同
  167.       {
  168.        //DisplayListChar(0,1,Error);
  169.        write_1602com(er);
  170.        for(j=0;j<16;j++)
  171.        {
  172.         write_1602dat(Error[j]); //顯示錯誤Error
  173.        }
  174.        ThreeAlam();   //錯誤提示
  175.        pass=0;     //關鎖
  176.        ReInputEn=0;   //關閉重置功能,
  177.        ReInputCont=0;
  178.        DisplayChar();
  179.        break;
  180.       }
  181.      }
  182.      if(i==6)
  183.      {
  184.       //DisplayListChar(0,1,ResetOK);
  185.       write_1602com(er);
  186.       for(j=0;j<16;j++)
  187.       {
  188.        write_1602dat(ResetOK[j]);   //密碼修改成功,顯示
  189.       }
  190.       TwoAlam();    //操作成功提示
  191.        WrToROM(TempPassword,0,6);  //將新密碼寫入24C02存儲
  192.       ReInputEn=0;
  193.      }
  194.      ReInputCont=0;
  195.      CorrectCont=0;
  196.     }
  197.     else       //輸入一次密碼時
  198.     {
  199.      OneAlam();
  200.      //DisplayListChar(0, 1, again);   //顯示再次輸入一次
  201.      write_1602com(er);
  202.      for(j=0;j<16;j++)
  203.      {
  204.       write_1602dat(again[j]);   //顯示再輸入一次
  205.      }     
  206.      for(i=0;i<6;i++)
  207.      {
  208.       TempPassword<i>=InputData<i>;  //將第一次輸入的數據暫存起來      
  209.      }
  210.     }
  211.    N=0;      //輸入數據位數計數器清零
  212.      }
  213.      }
  214. }
  215. }
  216. //=======================輸入密碼錯誤超過三過,報警并鎖死鍵盤======================
  217. void Alam_KeyUnable(void)
  218. {
  219. P1=0x00;
  220. {
  221.   ALAM=~ALAM;     //蜂鳴器一直閃爍鳴響
  222.   Delay5Ms();
  223. }
  224. }
  225. //=======================取消所有操作============================================
  226. void Cancel(void)
  227. {
  228. unsigned char i;
  229. unsigned char j;
  230. //DisplayListChar(0, 1, start_line);
  231. write_1602com(er);
  232. for(j=0;j<16;j++)
  233. {
  234.   write_1602dat(start_line[j]);   //顯示開機輸入密碼界面
  235. }
  236. TwoAlam();    //提示音
  237. for(i=0;i<6;i++)
  238. {
  239.   InputData<i>=0;  //將輸入密碼清零
  240. }
  241. KEY=1;     //關閉鎖
  242. ALAM=1;     //報警關
  243. pass=0;     //密碼正確標志清零
  244. ReInputEn=0;   //重置輸入充許標志清零
  245. ErrorCont=0;   //密碼錯誤輸入次數清零
  246. CorrectCont=0;   //密碼正確輸入次數清零
  247. ReInputCont=0;   //重置密碼輸入次數清零
  248. s3_keydown=0;
  249. key_disable=0;   //鎖定鍵盤標志清零
  250. N=0;     //輸入位數計數器清零
  251. }
  252. //==========================確認鍵,并通過相應標志位執行相應功能===============================
  253. void Ensure(void)
  254. {
  255. unsigned char i,j;
  256. RdFromROM(CurrentPassword,0,6);      //從24C02里讀出存儲密碼
  257.     if(N==6)
  258. {
  259.      if(ReInputEn==0)       //重置密碼功能未開啟
  260.   {
  261.    for(i=0;i<6;)
  262.       {     
  263.     if(CurrentPassword<i>==InputData<i>) //判斷輸入密碼和24c02中的密碼是否相同
  264.     {
  265.      i++;        //相同一位 i就+1
  266.     }
  267.     else          //如果有密碼不同
  268.     {         
  269.      ErrorCont++;      //錯誤次數++
  270.      if(ErrorCont==3)   //錯誤輸入計數達三次時,報警并鎖定鍵盤
  271.      {
  272.       write_1602com(er);
  273.       for(i=0;i<16;i++)
  274.       {
  275.        write_1602dat(Error<i>);
  276.       }
  277.       do
  278.       Alam_KeyUnable();
  279.       while(1);
  280.      }
  281.      else      //錯誤次數小于3次時,鎖死鍵盤3秒,然后重新可以輸入
  282.      {
  283.       TR0=1;    //開啟定時
  284.       key_disable=1;   //鎖定鍵盤
  285.       pass=0;     //pass位清零
  286.       break;     //跳出
  287.      }
  288.     }
  289.    }
  290.    if(i==6)      //密碼輸入對時
  291.    {
  292.     CorrectCont++;     //輸入正確變量++
  293.     if(CorrectCont==1)    //正確輸入計數,當只有一次正確輸入時,開鎖
  294.     {
  295.      //DisplayListChar(0,1,LockOpen);
  296.      write_1602com(er);
  297.      for(j=0;j<16;j++)
  298.      {
  299.       write_1602dat(LockOpen[j]);    //顯示open開鎖畫面
  300.      }
  301.      TwoAlam();   //操作成功提示音
  302.      KEY=0;           //開鎖
  303.      pass=1;           //置正確標志位
  304.      TR0=1;           //開啟定時
  305.      for(j=0;j<6;j++)        //將輸入清除
  306.      {
  307.       InputData<i>=0;        //開鎖后將輸入位清零
  308.      }
  309.     }
  310.     else            //當兩次正確輸入時,開啟重置密碼功能
  311.     {
  312.      //DisplayListChar(0,1,SetNew);
  313.      write_1602com(er);
  314.      for(j=0;j<16;j++)
  315.      {
  316.       write_1602dat(SetNew[j]);     //顯示重置密碼界面
  317.      }
  318.      TwoAlam();             //操作成功提示
  319.      ReInputEn=1;         //允許重置密碼輸入
  320.      CorrectCont=0;         //正確計數器清零
  321.     }
  322.      }

  323.    else   //=========================當第一次使用或忘記密碼時可以用131420對其密碼初始化============
  324.    {
  325.     if((InputData[0]==1)&&(InputData[1]==3)&&(InputData[2]==1)&&(InputData[3]==4)&&(InputData[4]==2)&&(InputData[5]==0))
  326.        {
  327.      WrToROM(initpassword,0,6);     //強制將初始密碼寫入24C02存儲
  328.      //DisplayListChar(0,1,initword);   //顯示初始化密碼
  329.      write_1602com(er);
  330.      for(j=0;j<16;j++)
  331.      {
  332.       write_1602dat(initword[j]);    //顯示初始化密碼
  333.      }
  334.      TwoAlam();         //成功提示音
  335.      Delay400Ms();        //延時400ms
  336.      TwoAlam();         //成功提示音
  337.      N=0;          //輸入位數計數器清零
  338.     }
  339.     else           //密碼輸入錯誤
  340.     {
  341.      //DisplayListChar(0,1,Error);
  342.      write_1602com(er);
  343.      for(j=0;j<16;j++)
  344.      {
  345.       write_1602dat(Error[j]);     //顯示錯誤信息
  346.      }
  347.       ThreeAlam();          //錯誤提示音
  348.      pass=0;
  349.     }
  350.    }
  351.   }
  352.   else           //當已經開啟重置密碼功能時,而按下開鎖鍵,
  353.   {
  354.    //DisplayListChar(0,1,Er_try);
  355.    write_1602com(er);
  356.    for(j=0;j<16;j++)
  357.    {
  358.     write_1602dat(Er_try[j]);     //錯誤,請重新輸入
  359.    }
  360.    ThreeAlam();         //錯誤提示音
  361.   }
  362. }
  363. else       //密碼沒有輸入到6位時,按下確認鍵時
  364. {
  365.   //DisplayListChar(0,1,Error);
  366.   write_1602com(er);
  367.   for(j=0;j<16;j++)
  368.   {
  369.    write_1602dat(Error[j]);   //顯示錯誤
  370.   }
  371.    ThreeAlam();          //錯誤提示音
  372.   pass=0;
  373. }

  374. N=0;             //將輸入數據計數器清零,為下一次輸入作準備
  375. }

  376. //==============================主函數===============================
  377. void main(void)
  378. {
  379.   unsigned char KEY,NUM;
  380. unsigned char i,j;
  381.   P1=0xFF;        //P1口復位
  382. TMOD=0x11;       //定義工作方式
  383.   TL0=0xB0;
  384.   TH0=0x3C;       //定時器賦初值
  385.   EA=1;        //打開中斷總開關
  386.   ET0=1;        //打開中斷允許開關
  387.   TR0=0;        //打開定時器開關
  388.   Delay400Ms();  //啟動等待,等LCM講入工作狀態
  389.   lcd_init();  //LCD初始化
  390. write_1602com(yi);//日歷顯示固定符號從第一行第0個位置之后開始顯示
  391. for(i=0;i<16;i++)
  392. {
  393.   write_1602dat(name<i>);//向液晶屏寫開機畫面
  394. }
  395. write_1602com(er);
  396. for(i=0;i<16;i++)
  397. {
  398.   write_1602dat(start_line<i>);//寫輸入密碼等待界面
  399. }
  400. write_1602com(er+9); //設置光標位置
  401. write_1602com(0x0f); //設置光標為閃爍
  402.   Delay5Ms(); //延時片刻(可不要)
  403.   N=0;              //初始化數據輸入位數
  404.   while(1)   //進入循環
  405.   {
  406.   if(key_disable==1)      //鎖定鍵盤標志為1時
  407.    Alam_KeyUnable();     //報警鍵盤鎖
  408.   else
  409.    ALAM=1;        //關報警
  410.   KEY=keynum();       //讀按鍵的位置碼
  411.   if(KEY!=0)        //當有按鍵按下時
  412.   {
  413.    if(key_disable==1)     //鎖定鍵盤標志為1時
  414.    {
  415.     second=0;      //秒清零
  416.    }
  417.    else        //沒有鎖定鍵盤時
  418.    {
  419.     NUM=coding(KEY);    //根據按鍵的位置將其編碼,編碼值賦值給NUM
  420.     {
  421.      switch(NUM)     //判斷按鍵值
  422.      {
  423.       case ('A'):  ;      break;
  424.       case ('B'):  ;         break;
  425.       case ('C'):
  426.          write_1602com(yi);//日歷顯示固定符號從第一行第0個位置之后開始顯示
  427.          for(i=0;i<16;i++)
  428.          {
  429.           write_1602dat(name<i>);//向液晶屏寫開機畫面
  430.          }
  431.          if(N>=1) N--; OneAlam();        //按鍵提示音      
  432.          //DisplayOneChar(6+N,1,'*');
  433.          for(j=N;j<16;j++)
  434.          {
  435.           write_1602com(er+6+j);
  436.           write_1602dat(' ');
  437.          }
  438.          for(j=0;j<N;j++)
  439.          {
  440.           write_1602com(er+6+j);    //顯示位數隨輸入增加而增加
  441.           write_1602dat('*');     //但不顯示實際數字,用*代替
  442.          }  
  443.          InputData[N]=N+4;
  444.          break;  //ABC是無定義按鍵
  445.       case ('D'): ResetPassword();  break;      //重新設置密碼
  446.       case ('*'): Cancel();    break;      //取消當前輸入
  447.       case ('#'): Ensure();     break;    //確認鍵,
  448.       default:           //如果不是功能鍵按下時,就是數字鍵按下
  449.       {
  450.        //DisplayListChar(0,1,Input);
  451.        if(N<6)                        //當輸入的密碼少于6位時,接受輸入并保存,大于6位時則無效。
  452.        {
  453.         write_1602com(er);
  454.         for(i=0;i<16;i++)
  455.         {
  456.          write_1602dat(Input<i>);    //顯示輸入畫面
  457.         }
  458.         OneAlam();        //按鍵提示音
  459.          for(j=0;j<=N;j++)
  460.         {
  461.          write_1602com(er+6+j);    //顯示位數隨輸入增加而增加
  462.          write_1602dat('*');     //但不顯示實際數字,用*代替
  463.         }
  464.         InputData[N]=NUM;      //將數字鍵的碼賦值給InputData[]數組暫存
  465.         N++;         //密碼位數加
  466.        }
  467.        else          //輸入數據位數大于6后,忽略輸入
  468.        {
  469.         N=6;         //密碼輸入大于6位時,不接受輸入
  470.          break;
  471.        }
  472.       }
  473.      }
  474.     }
  475.    }
  476.    }
  477. }
  478. }
  479. //*********************************中斷服務函數**************************************
  480. void  time0_int(void) interrupt 1      //定時器T0
  481. {
  482.   TL0=0xB0;
  483.   TH0=0x3C;    //定時器重新賦初值
  484.   //TR0=1;
  485.   countt0++;      //計時變量加,加1次時50ms
  486.    if(countt0==20)     //加到20次就是1s
  487.     {
  488.   countt0=0;     //變量清零
  489.   second++;     //秒加
  490.   if(pass==1)     //開鎖狀態時
  491.   {
  492.    if(second==1)   //秒加到1s時
  493.    {
  494.     TR0=0;    //關定時器
  495.     TL0=0xB0;
  496.      TH0=0x3C;   //再次賦初值
  497.     second=0;   //秒清零
  498.    }
  499.   }
  500.   else      //不在開鎖狀態時
  501.   {
  502.    if(second==3)   //秒加到3時
  503.    {
  504.     TR0=0;    //關閉定時器
  505.     second=0;   //秒清零
  506.     key_disable=0;  //鎖定鍵盤清零
  507.     s3_keydown=0;
  508.     TL0=0xB0;
  509.     TH0=0x3C;   //重新賦初值
  510.    }
  511.    else
  512.        TR0=1;    //打開定時器
  513.   }
  514.    
  515.     }
  516. }
復制代碼



全部資料51hei下載地址:
篇幅要求就寫這么多,資料上傳上去了,自行下載咯

密碼鎖.7z

7.26 MB, 下載次數: 321, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +5 收起 理由
關外秀才 + 5 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏15 分享淘帖 頂5 踩
回復

使用道具 舉報

沙發
ID:104477 發表于 2018-7-21 10:58 來自手機 | 只看該作者
你把別人的紅外給去掉了,紅外部分呢

評分

參與人數 1黑幣 +1 收起 理由
NPC-1024 + 1 淡定

查看全部評分

回復

使用道具 舉報

板凳
ID:87193 發表于 2018-7-24 14:42 | 只看該作者
沒有截圖上那么多資料
回復

使用道具 舉報

地板
ID:737227 發表于 2020-4-24 18:56 | 只看該作者
學習了,有穩定量產嗎
回復

使用道具 舉報

5#
ID:693628 發表于 2020-4-25 11:36 來自手機 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

6#
ID:771608 發表于 2020-6-7 00:59 | 只看該作者
挺好的幫助很大
回復

使用道具 舉報

7#
ID:771608 發表于 2020-6-7 00:59 | 只看該作者
這個pcb板子和介紹的一樣嗎
回復

使用道具 舉報

8#
ID:787891 發表于 2020-6-23 16:55 | 只看該作者
贊一個
回復

使用道具 舉報

9#
ID:315554 發表于 2020-6-24 12:31 | 只看該作者
看起來很好,收了,有時間實驗一下,謝謝!
回復

使用道具 舉報

10#
ID:838199 發表于 2020-11-7 20:15 | 只看該作者
仿真圖呢
回復

使用道具 舉報

11#
ID:839476 發表于 2020-11-23 11:43 | 只看該作者
沒有PCB文件嗎?
回復

使用道具 舉報

12#
ID:840429 發表于 2020-12-6 20:38 | 只看該作者
挺好的,就是有點不理解
回復

使用道具 舉報

13#
ID:603160 發表于 2020-12-7 11:25 | 只看該作者
資料根本沒有截圖的這么多!!
回復

使用道具 舉報

14#
ID:832989 發表于 2020-12-17 20:34 來自手機 | 只看該作者
子非魚001 發表于 2020-12-7 11:25
資料根本沒有截圖的這么多!

有pcb嘛
回復

使用道具 舉報

15#
ID:862559 發表于 2020-12-18 08:01 | 只看該作者
有pcb仿真圖嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美国黄色毛片 | 国产激情视频在线 | 人人cao | 国产成人在线免费 | 蜜桃日韩 | 亚洲精品久久久9婷婷中文字幕 | 久久久久久久久91 | 日韩国产中文字幕 | 91电影在线播放 | 99这里只有精品视频 | 91福利网| 色视频在线免费观看 | 亚洲视频在线观看免费 | 久久精品一区 | 国产精品久久久久久久7电影 | 91视频观看| 91久久综合亚洲鲁鲁五月天 | 成人午夜在线 | 自拍偷拍第一页 | 国产高清在线 | 精品久久久久久久久久 | 日韩视频在线免费观看 | 伊人无码高清 | 国产精品精品 | 国产精品久久久久久久久久久久冷 | 超碰97人人人人人蜜桃 | 国产成人综合一区二区三区 | 日本一区二区不卡视频 | 福利视频大全 | 久久激情视频 | 亚洲精品乱码久久久久久久久久 | 激情伊人网 | 视频1区 | 国产成人精品免费视频大全最热 | 日本不卡一区二区 | 久久精彩视频 | 亚洲国产成人av好男人在线观看 | 在线一区视频 | 香蕉国产在线视频 | 日一区二区三区 | 国产高清免费在线 |