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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

液晶顯示數字密碼鎖程序設計

[復制鏈接]
跳轉到指定樓層
樓主
字密碼鎖是二十一世紀制鎖業的一次革命。鎖的特點是不用鑰匙、無鎖孔、機械傳動、不易損壞、不磨損、不易被破譯、可多次更換密碼、換號不換鎖、一把鎖多個密碼,具有防撥、防砸、防撬、防堵等功能。安裝門鎖時不破壞原門的結構,避免用鑰匙開啟旋芯式鎖具的一切煩惱(如丟、落、拆、堵門被反鎖等)。 “數字密碼鎖”是利用數字密碼來開啟的鎖具,其重復概率僅為十萬分之一,有著很高的安全性;而旋芯式鎖具使用不夠安全。通過對社會各階層千余人的調查,百分之百的人對目前身上掛著的串串鑰匙無可奈何。但現在又沒有一種鎖具可擺脫鑰匙的束縛。都愿意一身輕松沒有任何顧慮的出入家門,都愿意用上一種既安全方便又不用鑰匙的鎖具。因此,“數字密碼鎖”產品的市場發展前景極為廣闊。在調查的千余人中有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)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:36173 發表于 2017-6-16 21:14 | 只看該作者
謝謝分享,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费成人午夜 | 婷婷久久网 | 成人免费视频网站在线看 | 在线成人免费观看 | 亚洲最大的黄色网址 | 91麻豆精品国产91久久久更新资源速度超快 | 美国a级毛片免费视频 | 亚洲精品一区二区三区 | 在线观看视频h | 欧美日韩精品免费观看 | 亚洲精品一二三 | 精品国产乱码久久久久久a丨 | 日韩美女爱爱 | 欧美区日韩区 | 日韩在线电影 | 国产成人网 | 99久久婷婷国产综合精品电影 | 国产一级视频 | 久久久久久久久国产精品 | www国产成人免费观看视频,深夜成人网 | 精品色| 亚洲精品视频一区二区三区 | 日韩中文一区 | 免费视频久久久久 | 女女百合av大片一区二区三区九县 | 欧美区日韩区 | 亚洲精品电影网在线观看 | 久久精品国产一区二区三区不卡 | 日韩欧美一区二区在线播放 | 狠狠插狠狠操 | 精品一二区| 中文字幕一区在线观看视频 | 在线免费观看一区二区 | 国产 欧美 日韩 一区 | 亚洲视频免费 | 中文字幕国产日韩 | 精品久久久久香蕉网 | 在线播放中文字幕 | 久久精品91 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 成人精品一区二区 |