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

標題: 液晶顯示數字密碼鎖程序設計 [打印本頁]

作者: 1102396223    時間: 2017-6-16 16:56
標題: 液晶顯示數字密碼鎖程序設計
字密碼鎖是二十一世紀制鎖業的一次革命。鎖的特點是不用鑰匙、無鎖孔、機械傳動、不易損壞、不磨損、不易被破譯、可多次更換密碼、換號不換鎖、一把鎖多個密碼,具有防撥、防砸、防撬、防堵等功能。安裝門鎖時不破壞原門的結構,避免用鑰匙開啟旋芯式鎖具的一切煩惱(如丟、落、拆、堵門被反鎖等)。 “數字密碼鎖”是利用數字密碼來開啟的鎖具,其重復概率僅為十萬分之一,有著很高的安全性;而旋芯式鎖具使用不夠安全。通過對社會各階層千余人的調查,百分之百的人對目前身上掛著的串串鑰匙無可奈何。但現在又沒有一種鎖具可擺脫鑰匙的束縛。都愿意一身輕松沒有任何顧慮的出入家門,都愿意用上一種既安全方便又不用鑰匙的鎖具。因此,“數字密碼鎖”產品的市場發展前景極為廣闊。在調查的千余人中有60%的人有丟失鑰匙的經歷,25%的人有把鑰匙反鎖在室內的,75%的人居室在三層以上的,36%的人把鑰匙忘在工廠的,有8%的人是利用鄰居的陽臺、窗戶跳躍進入自己家來打開被反鎖的房門,90%的人或聽或看新聞得知有因無法打開房門,而冒險躍窗發生事故非死既傷,給家庭造成麻煩。精神和肉體的損傷是無法挽回的,為了解決上述各種數據給人們帶來的各種煩惱,所以“數字密碼鎖”,使人們在無憂無慮的環境中生活


單片機源程序如下:
  1. #include<reg52.h>            
  2. #include<math.h>               
  3. #include<intrins.h>              
  4. #define        uchar unsigned char      
  5. #define        uint unsigned int
  6. #define         data_IO P2

  7. sbit     rs=P3^0;        //指令和數據寄存器 “1是數據,” “0是指令”
  8. sbit     rw=P3^1;//讀寫控制,“1讀” “0寫”
  9. sbit          e=P3^2; //片選信號
  10. sbit      p=P2^7;
  11. sbit   deng=P3^3;///響音樂的端口
  12. sbit   md=P3^4;///修改密碼時的燈


  13. uchar  pwflag;//密碼是否正確的標志位
  14. uchar  count;//
  15. uchar  gg=0 ;//只有輸入正確的密碼才能修改密碼
  16. uchar  cs=3 ;//輸入密碼的錯誤次數


  17. uchar m[]={1,2,3,4,5,6}; ///初始密碼
  18. static uchar mbuf[6];///輸入的密碼


  19. char d[32]={' ','I','M','P','O','R','T',' ','C','I','P','H','E','R',':',' ',
  20.              ' ',' ','_',' ',' ','_','_','_','_','_','_',' ',' ',' ',' ',' '};//輸入密碼

  21. code  char ks[32]={'C','O','N','G','R','A','T','U','L','A','T','E',' ','Y','O','U',
  22.                           ' ','O','P','E','N','I','N','G',' ',' ','L','O','C','K','!',' '};////開鎖

  23. code char cw[32]={' ','C','I','P','H','E','R',' ',' ','E','R','R','O','R',' ',' ',
  24.                               '~','~','~','~','~','~','~','~','~','~','~','~','~','~','~','~' };////錯誤         

  25. code char xc[32]={' ',' ','A','M','E','N','D',' ','S','U','C','C','E','E','D',' ',
  26.                   ' ',' ',' ',' ',' ','!','!','!','!','!','!',' ',' ',' ',' ',' '};//修改成功  

  27. code char xg[32]={' ','A','M','E','N','D',' ',' ','C','I','P','H','E','R',':',' ',
  28.                   ' ',' ',' ',' ',' ','_','_','_','_','_','_',' ',' ',' ',' ',' '};///修改密碼*/


  29. void yanshi(uint n)///////////////延時函數///////////////////////////////////
  30. {
  31. uint i;
  32.   for(i=0;i<n;i++){};
  33. }

  34. void delay(uint n)///////////////延時函數///////////////////////////////////
  35. {
  36. uint i,j;
  37.   for(i=0;i<1000;i++)
  38.    {for(j=0;j<n;j++){}}
  39.    
  40. }

  41. void busy() ////////////////////判斷是否忙////////////////////////////////////////
  42. {data_IO=0xff;
  43. rs=0; //寫指令        ////////////////////
  44. rw=1; //表示讀狀態    // 三個的狀態表示 //
  45. e=1;  //下降延//      // 判忙狀態       //
  46. while(!p);         ////////////////////
  47. // e=0;
  48. }
  49. void xiezl(uchar shuju) /////////////////////*寫指令*/////////////////////////////
  50. {
  51. busy();/*yanshi(6500);*/
  52. data_IO=shuju;
  53. rs=0; //寫指令        ////////////////////
  54. rw=0; //表示寫狀態    // 三個的狀態表示 //
  55. e=1;  //下降延//      // 寫指令         //
  56. e=0;  /////////       ////////////////////

  57. }

  58. void w_dat(uint n)//////////////////寫數據//////////////////////////
  59. {
  60. busy(); /*yanshi(6500) ;*/
  61.   data_IO=n;
  62.    rs=1; //寫數據       ////////////////////
  63.    rw=0; //表示寫狀態    // 三個的狀態表示 //
  64.    e=1;  //下降延//      //寫數據         //
  65.    e=0;  /////////       ////////////////////
  66.   // return;
  67. }

  68. void xianshi(uchar js[]) //////////////////顯示函數///////////////////////////////
  69. {
  70.   uchar h,v;
  71.   xiezl(0x01); //清屏顯示
  72.   yanshi(2000) ;
  73.   xiezl(0x80); // DDRAM地址的設置
  74. for(h=0;h<16;h++)
  75.    {w_dat(js[h]);  ///n表示有寫幾位數據
  76.    yanshi(100) ;
  77.    }
  78.    xiezl(0xc0);//換行
  79. for(v=(16);v<32;v++)
  80.    {w_dat(js[v]);  ///n表示有寫幾位數據
  81.    yanshi(100) ;
  82.    }
  83. }

  84. void chushihua(void)///////////////////*液晶模塊初始化*/
  85. { uchar i;
  86.    rs=0; //寫指令
  87.    rw=0; //表示寫狀態
  88.    e=0;  //使能
  89.    for(i=0;i<3;i++)
  90.    {
  91.     xiezl(0x38);  //功能設置,8位,一行顯示,5*7點陣
  92.     yanshi(1000);
  93.    }
  94.     xiezl(0x38); //兩行顯示
  95.     xiezl(0x0f); //顯示開關控制位
  96.     xiezl(0x18); //移位控制,光標和顯示一起左移  
  97.     xiezl(0x06); //設置輸入模式
  98.     xiezl(0x01); //清屏顯示
  99.     xiezl(0x80); // DDRAM地址的設置
  100.     }

  101. bit pwcmp(void)
  102. {
  103.         bit flag;
  104.         uchar i;
  105.         for (i=0;i<6;i++)
  106.         {
  107.                 if (m[i]==mbuf[i])   flag = 1;   //*密碼正確*/
  108.                 else  {        flag = 0;  i=6; } //*密碼錯誤*/
  109.         }
  110.         return(flag);
  111. }

  112. void gb(void)/////////轉移光標
  113. {  uchar c;
  114.    xiezl(0xc0);//換行
  115.    yanshi(3000) ;
  116.    for(c=0;c<5;c++)
  117.    {w_dat(' ');///n表示有寫幾位數據
  118.     yanshi(2000) ;
  119.    }
  120. }
  121. uchar getkey(void)///得到鍵值
  122. { uchar h,l,k;
  123.   while(P1!=0x0f)
  124.   {
  125.    h=P1&0x0f;
  126.    P1=0xf0;
  127.    l=P1&0xf0;
  128.    k=h|l;
  129.    return(k);
  130.   }
  131. }


  132. void diaoyong(uchar i)///////////調用各鍵的函數//////輸入密碼
  133. {  uchar lq;
  134.          switch(i)
  135.             {
  136.           case 0x7e: if (count<6) { mbuf[count]=1; count++;  w_dat('*');}  break;  // 01111110       1
  137.           case 0xbe:  if (count<6) { mbuf[count]=2; count++;  w_dat('*');}  break;  // 10111110                 2
  138.           case 0xde: if (count<6) { mbuf[count]=3; count++;  w_dat('*');}  break;  // 11011110                 3
  139.           case 0xee:  if (count<6) { mbuf[count]=4; count++;  w_dat('*');}  break;  // 11101110                 4

  140.           case 0x7d:  if (count<6) { mbuf[count]=5; count++;  w_dat('*');}  break;  // 01111101                 5
  141.           case 0xbd:  if (count<6) { mbuf[count]=6; count++;  w_dat('*');} break; // 10111101                 6
  142.           case 0xdd: if (count<6) { mbuf[count]=7; count++;  w_dat('*');}  break;  // 11011101                 7
  143.           case 0xed: if (count<6) { mbuf[count]=8; count++;  w_dat('*');} break;  // 11101101                 8

  144.           case 0x7b:  if (count<6) { mbuf[count]=9; count++;  w_dat('*');}  break;  // 01111011                 9
  145.           case 0xbb:  if (count<6) { mbuf[count]=0; count++;  w_dat('*');} break;  // 10111011                 0
  146.           case 0xdb: if (count==6) { pwflag = pwcmp();}   else  pwflag = 0;// 只有輸入6個密碼后按確認鍵才作密碼比較
  147.                                    if(pwflag) {deng=0; xianshi(ks);gg=1; }   else { cs--;deng=1; xianshi(cw); delay(200); xianshi(d);gb();count = 0; }
  148.                                     break;  // 11011011                 a           
  149.           case 0xeb:  count = 0;deng=1; xianshi(d);  gb();gg=0;         /*取消鍵*/
  150.                                break;  // 11101011                 b         

  151.           case 0x77: if(gg==1){ count=0;xianshi(xg); gb();} //修該密碼
  152.                                break;  // 01110111                 c
  153.          
  154.                   case 0xb7: if((count==6)&&(gg==1)) { count=0;
  155.                   for (lq=0;lq<6;lq++){ m[lq]=mbuf[lq]; yanshi(10000);} md=1; xianshi(xc); delay(200); xianshi(d);yanshi(2000);gb();yanshi(200);gg=0;}//保存密碼
  156.                                break;  // 10110111                 d
  157.           /*case 0xd7: sr[jm]='e'; break;  // 11010111                 e
  158.             case 0xe7: sr[jm]='f'; break;  // 11100111                 f        */

  159.           default: break;
  160. ……………………

  161. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
程序.zip (33.66 KB, 下載次數: 25)




作者: xiaomage    時間: 2017-6-16 21:14
謝謝分享,




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩国产欧美在线观看 | 欧美一区二区三区精品 | 在线观看免费高清av | 狠狠干天天干 | 在线观看国产 | 69电影网| 国产高清视频 | 一区二区精品在线 | 亚洲v日韩v综合v精品v | 欧美四虎 | 午夜在线免费观看视频 | 亚洲精品乱码久久久久久蜜桃 | 国产成人区 | 波多野结衣中文字幕一区二区三区 | 97精品一区二区 | 国产精品欧美一区二区 | 日韩在线免费 | 成人羞羞国产免费视频 | 一级特黄网站 | 久久久久久久久久久久久九 | 免费看黄色视屏 | 麻豆一区二区三区精品视频 | 狠狠av| 成人3d动漫一区二区三区91 | 亚洲成人www | 国产一区二区三区在线免费观看 | 国产一区二区三区四区 | 日本人爽p大片免费看 | 精品欧美一区二区三区久久久小说 | 欧美日韩视频 | 国产高清久久久 | 天天激情综合 | 成人综合一区 | 欧美精品一区免费 | 亚洲一区二区三区在线播放 | 国产精品成人在线播放 | 亚洲第一成人影院 | 91香蕉| 一级毛片视频 | 日批免费在线观看 | 青青久视频 |