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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc15w單片機(jī)芯片做的電子密碼鎖程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:597329 發(fā)表于 2019-10-31 14:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include "include.h"
  3. #include <intrins.h>
  4. #include <lcd12864.h>
  5. #include "key.h"
  6. //#include "ds1302.h"
  7. #include "stdio.h"
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. void dingshi();
  11. void delay(uint t)
  12. {
  13.         uchar a;
  14.         while(--t)
  15.         for(a=0;a<120;a++);
  16. }
  17. void dingshi()
  18. {
  19.         uchar z;
  20.         TMOD=0x00;
  21.         TR1=1;
  22.         TH1=0x63;
  23.         TL1=0x18;
  24.         for(z=0;z<160; )
  25.         {
  26.                 if(TF1==1)
  27.                 {
  28.                         z++;
  29.                         TF1=0;
  30.             TH1=0x63;
  31.             TL1=0x18;
  32.     }
  33.   }
  34. }

  35. uint srmm[16];
  36. sbit jdq1=P3^4;
  37. code uchar uctech[] ={"歡迎使用小智障"};
  38. code uchar net[] = {"請輸入密碼:"};
  39. code uchar mmcw[] ={"密碼有錯(cuò)誤"};
  40. code uchar qcs[] = {"請重試"};
  41. code uchar mmzq[] = {"密碼對了"};
  42. code uchar hyhj[] = {"歡迎回家"};
  43. code uchar sysj[] = {"剩余時(shí)間"};
  44. code uint mm[8]={3,1,3,6,3,6,7,2};        

  45. //uchar disTime[7];                //保存時(shí)間數(shù)據(jù)的數(shù)組

  46. //uchar code timeRAdd[] = {READ_YEAR,READ_MON,READ_DAY,READ_WEEK,READ_HOUR,READ_MINUTE,READ_SECOND};
  47. //uchar code timeWAdd[] = {WRITE_YEAR,WRITE_MON,WRITE_DAY,WRITE_WEEK,WRITE_HOUR,WRITE_MINUTE,WRITE_SECOND};
  48. void main()
  49. {
  50.         uchar b,c,cw=0,cun,m,key_num=0,k=0,x,djs;
  51.         uchar i = 0;
  52.         uchar tempArr[2]="12";
  53.         jdq1=1;

  54. ////        Write1302(0x80,0x00);
  55. //        Write1302(0x90,0x5c); //禁止充電
  56. //        Write1302(0x8e,0x80); //寫保護(hù)控制字,禁止寫
  57. //        Delay400Ms(); //啟動等待,等LCD講入工作狀態(tài)-
  58.         LCDInit(); //LCM初始化
  59.         uuu:
  60.         LCDClear();
  61.         DisplayListChar(0,1,uctech);        //顯示字庫中的中文數(shù)字
  62.         DisplayListChar(0,2,net);                //顯示字庫中的中文數(shù)字
  63. //        //設(shè)置時(shí)間
  64. //                disTime[0]=19;
  65. //                disTime[1]=3;
  66. //                disTime[2]=19;
  67. //                disTime[3]=2;                //星期
  68. //                disTime[4]=8;
  69. //                disTime[5]=39;
  70. //               
  71. //                Write1302(WRITE_PROTECT,0X00);
  72. //                                                for(i = 0;i < 7;i ++) {
  73. //                                                        Write1302(timeWAdd[i],disTime[i] / 10 * 16 + disTime[i] % 10);
  74. //                                                }
  75. //                                                Write1302(WRITE_PROTECT,0X80);
  76.         while(1)
  77.         {
  78.         
  79. //                //讀取時(shí)間
  80. //                for(i = 0;i < 7;i ++) {
  81. //                        disTime[i] = Read1302(timeRAdd[i]);
  82. //                        DisplayOneChar(0,4,disTime[i]/10+0x30);
  83. //                }
  84. //                //顯示時(shí)間
  85. //                for(i = 0;i < 7;i ++) {
  86. //                        tempArr[0] = disTime[i] / 10 + 0x30;
  87. //                        DisplayOneChar(0,4,tempArr[0]);
  88. //                        tempArr[1] = disTime[i] % 10 + 0x30;
  89. //                        if(i > 2) {
  90. //                                if(i == 3) {
  91. //                                                DisplayListChar(0,4,tempArr);
  92. ////                                        Display(2,0,6,disWeek + 6 * (disTime[i] - 1));
  93. //                                }else {
  94. ////                                        Display(2,3 + 2 * (i - 4),2,tempArr);
  95. //                                }
  96. //                        }else {
  97. ////                                Display(1,2 + 2 * i,2,tempArr);
  98. //                        }
  99. //                }
  100.                 if((cun=Keyboard())!=16)
  101.                 {
  102.                         
  103. //                        cun=Keyboard();
  104. //                        if(Keyboard()==14){m=m-1;}
  105. //                        if(Keyboard()==15)
  106.                         if(cun==14){m=m-1;}//退格
  107.                         if(cun==15)        //確定
  108.                                 {
  109.                                         oo:
  110.                                         k=1;        //按下確認(rèn)
  111.                                         m=0;
  112.                                         LCDClear();        
  113.                                         break;        
  114.                                 }
  115.                         while(KEY!=0x0f);
  116.                                 delay(5);
  117.                         //DisplayOneChar(m,3,cun+0x30);//顯示密碼
  118.                         DisplayOneChar(m,3,0x2A);//顯示星號
  119.    switch(m)
  120.                          {
  121.                                          case 0: {srmm[0] = cun;  break;}
  122.                                          case 1: {srmm[1] = cun;  break;}
  123.                                          case 2: {srmm[2] = cun;  break;}
  124.                                          case 3: {srmm[3] = cun;  break;}
  125.                                          case 4: {srmm[4] = cun;  break;}
  126.                                          case 5: {srmm[5] = cun;  break;}
  127.                                          case 6: {srmm[6] = cun;  break;}
  128.                                          case 7: {srmm[7] = cun;  break;}
  129.                                 }  
  130.        if(cun<10)m++;
  131.                                 if(m==8)
  132.                                 {
  133. //                                        k=1;        //確認(rèn)返回
  134. //                                        m=0;
  135. //                                        LCDClear();
  136. //                                        break;
  137.                                 goto oo;
  138.                                 }
  139.          }
  140.                
  141. }
  142.                         while(k==1)
  143.                         {
  144.                                 
  145.                                 for(b=0;b<8;)
  146.                                         {
  147.                                                          TI=0;
  148.                                                 if(srmm[b]==mm[b])
  149.                                                  {
  150.                                                          b++;
  151.                                                          TI=0;
  152.                                                  }
  153.                                                 else{ c=8;break;}
  154.                                         }
  155.                                 if(c==8)
  156.                                         {
  157.                                                 
  158.                                                 LCDClear();
  159.                                                 DisplayListChar(1,2,mmcw);        //顯示字庫中的中文數(shù)字
  160.                                                 DisplayListChar(2,3,qcs);        //顯示字庫中的中文數(shù)字、
  161.                                                 delay(100);
  162.                                                 LCDClear();
  163.                                                 k=0;
  164.                                                 c=0;
  165.                                                 if(cw<2)
  166.                                                         {
  167.                                                         cw++;
  168.                                                         goto uuu;
  169.                                                         }
  170.                                                         else
  171.                                                         {
  172.                                                                 DisplayListChar(1,2,mmcw);        //顯示字庫中的中文數(shù)字
  173.                                                                 Delay400Ms();
  174.                                                                 Delay400Ms();
  175.                                                                 LCDClear();
  176.                                                                 djs=60;
  177.                                                                 for(x=60;x>=0;x--)
  178.                                                                         {
  179.                                                                                 DisplayListChar(2,0,sysj);
  180.                                                                                 DisplayOneChar(4,2,djs%10+0x30);        //顯示字庫中的中文數(shù)字
  181.                                                                                 DisplayOneChar(3,2,djs/10+0x30);
  182.                                                                                 dingshi();
  183.                                                                                 
  184.                                                                                 djs--;
  185.                                                                                 if(x==0) goto uuu;
  186.                                                                         }
  187.                                                         }
  188.                                         }
  189.                                 else
  190.                                         {
  191.                                                         LCDClear();
  192.                                                         DisplayListChar(2,2,mmzq);        //顯示字庫中的中文數(shù)字
  193.                                                         DisplayListChar(2,3,hyhj);        //顯示字庫中的中文數(shù)字
  194.                                                         //delay(1000);
  195.                                                         //LCDClear();
  196.                                                         jdq1=0;       //開門
  197.                                                         delay(3000);
  198.                                                         jdq1=1;
  199.                                                         LCDClear();
  200.                                                         k=0;
  201.                                                 srmm[0] ='6';
  202.                                                 cw=0;
  203.                                                 goto uuu;
  204.                                         }        
  205.                  }
  206. }
復(fù)制代碼

  1. /*------- --4X4鍵盤 ---------
  2.   L1,L2,L3,L4,R1,R2,R3,R4分別接P2.0-7
  3. 鍵盤編碼如下所示:
  4. 0 , 1, 2, 3
  5. 4 , 5, 6, 7
  6. 8 , 9,10,11
  7. 12,13,14,15            
  8. unsigned char Keyboard(void);為鍵盤掃描函數(shù),
  9. 在主函數(shù)文件聲明后即可調(diào)用,返回鍵盤值0-15,
  10. 無按鍵按下時(shí),返回16。
  11. ------------------------------*/
  12. #include <reg52.h>   
  13. #include "key.h"
  14. #include "include.h"
  15. //------函數(shù)聲明---------------------------
  16. //void Keyboard(void);

  17. //-----引腳定義--------------------------------
  18. //#define KEY P0
  19. //-------------------------------------------
  20. void delay_key(unsigned int t)
  21. {
  22. while(t--);
  23. }
  24. //-------------------------------------------
  25. uchar Keyboard(void)
  26. {unsigned char x,y,z=0;
  27.         unsigned int jz=16;
  28. KEY=0xf0;                //低四位置低,即行接低
  29. if(KEY!=0xf0)        //是否有按鍵按下
  30. {
  31.         delay_key(10);        //去抖
  32.         if(KEY!=0xf0)//確實(shí)有按鍵按下
  33.         {
  34.           x=KEY;                //讀取按鍵所在的行
  35.           KEY=0x0f;        //高四位置低,即列接低
  36.           y=KEY;                //讀取按鍵所在的列
  37.           z=x|y;        //按鍵的坐標(biāo)為行+列
  38. //          while(KEY!=0x0f); //等待按鍵抬起
  39.         }
  40. }
  41. switch(z)
  42. {                                //while(KEY!=0x0f);
  43.           case 0xee:{jz=1;break;} //按鍵值顯示為0
  44.           case 0xde:{jz=2;break;}  //按鍵值顯示為1  
  45.           case 0xbe:{jz=3;break;}
  46.           case 0x7e:{jz=14;break;}

  47.           case 0xed:{jz=4;break;}
  48.           case 0xdd:{jz=5;break;}   
  49.           case 0xbd:{jz=6;break;}   
  50.           case 0x7d:{jz=7;break;}  

  51.           case 0xeb:{jz=7;break;}   
  52.           case 0xdb:{jz=8;break;}   
  53.           case 0xbb:{jz=9;break;}  
  54.           case 0x7b:{jz=10;break;}   

  55.           case 0xe7:{jz=0;break;}  
  56.           case 0xd7:{jz=14;break;}   
  57.           case 0xb7:{jz=15;break;}   
  58.           case 0x77:{jz=15;break;}   
  59.           default: jz=16; break; // 沒有按鍵按下,返回16
  60.    }
  61. //                while(KEY==0x0f);
  62.                 return jz;
  63. }
復(fù)制代碼

所有資料51hei提供下載:
電子密碼鎖.zip (69.88 KB, 下載次數(shù): 29)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:793692 發(fā)表于 2020-7-7 10:18 | 只看該作者
為什么光扣黑幣,不下載呢?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日骚网| 男人天堂网站 | www.4hu影院| 天天综合国产 | 综合色站导航 | 亚洲精品视频播放 | 欧美专区在线 | 欧美中文字幕在线观看 | h片在线看 | 国产免费一区二区三区免费视频 | 一区二区在线不卡 | 亚洲视频在线看 | 免费视频久久 | 国产欧美在线 | 日韩在线视频免费观看 | 欧美日韩18 | 亚洲欧美激情精品一区二区 | 视频一区在线观看 | 91在线电影 | 国产精品区二区三区日本 | 欧美日韩不卡合集视频 | 天天干天天想 | 成人免费在线观看 | 日本高清在线一区 | 91在线免费视频 | 伊人久操 | 亚洲一区二区三区免费在线观看 | 午夜亚洲 | 中文字幕在线网 | 黄色网络在线观看 | 91在线视频在线观看 | 天天干天天干 | 亚洲第一成人av | 成人精品一区亚洲午夜久久久 | 日韩精品一区二区三区中文字幕 | 国产高清精品一区 | 影音av | 国产精品久久久久久久久久妞妞 | 国产成人精品久久久 | 人碰人操| 亚洲精品99|