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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4986|回復: 8
收起左側

LCD1602做密碼鎖—可修改密碼 帶仿真文件 電路圖

[復制鏈接]
ID:80594 發表于 2015-7-17 11:22 | 顯示全部樓層 |閱讀模式
源文件:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. sbit RS=P3^1;
  4. sbit RW=P3^2;
  5. sbit E=P3^3;
  6. void lcd_w_cmd(unsigned char com);
  7. void lcd_w_dat(unsigned char dat);
  8. unsigned char lcd_r_start();
  9. void lcd_int();
  10. void delay(unsigned int i);
  11. void delay1();
  12. char keyscan();
  13. void puts(unsigned char ch[]);
  14. void set_pw();                                                                                                          
  15. unsigned char codekey_code[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
  16. unsigned char pw[6]={0,0,0,0,0,0,};
  17. unsigned char pwnew[10]={0,0,0,0,0,0,0,0,0,0};
  18. sbit P30=P3^0;


  19. void puts(unsigned char ch[])
  20. {
  21. unsigned char i;
  22. i=0;
  23. while(ch[i]!='\0')
  24. {
  25.   lcd_w_dat(ch[i]);
  26.   i++;
  27.   }
  28.   }


  29. void set_pw()
  30. {
  31. unsigned char key,count;
  32. lcd_w_cmd(0x01);
  33. puts("password setup:");
  34. lcd_w_cmd(0xc0);
  35. while(1)
  36. {
  37.   key=keyscan();
  38.   if(key>=0&&key<=9)
  39.   {
  40.    lcd_w_dat(key+0x30);
  41.    pw[count]=key;
  42.    count++;
  43.    if(count==6)break;
  44.    P2=0xf0;
  45.    while(P2!=0xf0);}
  46.    }
  47.    }


  48. void main()
  49. {
  50. unsigned char i,count;
  51. bit pw_flag;
  52. P1=0xff;
  53. lcd_int();
  54. delay(255);
  55. lcd_w_cmd(0x80);
  56. puts("password:");
  57. count=0;
  58. while(1)
  59. {
  60.   i=keyscan();
  61.   if(i!=-1)
  62.   {
  63.    if(i>=0&&i<=9)
  64.    {
  65.     pwnew[count]=i;
  66.         lcd_w_dat(i+0x30);
  67.         count++;
  68.         P2=0xf0;
  69.         while(P2!=0xf0);}
  70.         else if(i==10)
  71.         {
  72.          pw_flag=1;
  73.          if(count!=6)
  74.          pw_flag=0;
  75.          else
  76.           {
  77.            for(i=0;i<6;i++)
  78.            {
  79.             if(pw[i]!=pwnew[i])
  80.                 {
  81.                  pw_flag=0;break;}
  82.                  }
  83.             }
  84. if(pw_flag==1)
  85. {
  86. lcd_w_cmd(0xc0);
  87. puts("pass");
  88. P30=0;
  89.   P2=0xf0;
  90.   while(P2!=0xf0);
  91. while(1)
  92. {
  93.   i=keyscan();
  94.   if(i!=-1)
  95.   break;
  96.   }
  97.   P2=0xf0;
  98.   while(P2!=0xf0);
  99.   if(i==11)set_pw();
  100.   }
  101.   else
  102.   {
  103.    lcd_w_cmd(0xc0);
  104.    P30=1;
  105.    puts("error");}
  106.    count=0;
  107.    delay(50000);
  108.    lcd_w_cmd(0x01);
  109.    puts("password:");
  110.    }}}}


  111. char keyscan()
  112. {
  113. char scan1,scan2,keycode,j,key;
  114. key=-1;
  115. P2=0xf0;
  116. scan1=P2;
  117. if(scan1!=0xf0)
  118. {
  119. delay(1200);
  120. scan1=P2;
  121. if(scan1!=0xf0)
  122. {
  123.   P2=0x0f;
  124.   scan2=P2;
  125.   keycode=scan1|scan2;
  126.   for(j=0;j<16;j++)
  127.   {
  128.    if(keycode==codekey_code[j])
  129.    {
  130.     key=j;break;}
  131.         }}}
  132.         return(key);
  133.         }


  134. void delay1()
  135. {
  136. _nop_();
  137. _nop_();
  138. _nop_();
  139. }
  140. void lcd_int()
  141. {
  142. lcd_w_cmd(0x3c);
  143. lcd_w_cmd(0x0e);
  144. lcd_w_cmd(0x01);
  145. lcd_w_cmd(0x06);
  146. lcd_w_cmd(0x80);
  147. }

  148. unsigned char lcd_r_start()
  149. {
  150. unsigned char s;
  151. RW=1;
  152. delay1();
  153. RS=0;
  154. delay1();
  155. E=1;
  156. delay1();
  157. s=P1;
  158. delay1();
  159. E=0;
  160. delay1();
  161. RW=0;
  162. delay1();
  163. return(s);
  164. }
  165. void lcd_w_cmd(unsigned char com)
  166. {
  167. unsigned char i;
  168. do{
  169.     i=lcd_r_start();
  170.         i&=0x80;
  171.         delay(2);
  172.         }
  173.         while(i!=0);
  174. RW=0;
  175. delay1();
  176. RS=0;
  177. delay1();
  178. E=1;
  179. delay1();
  180. P1=com;
  181. delay1();
  182. E=0;
  183. delay1();
  184. RW=1;
  185. delay(255);
  186. }
  187. void lcd_w_dat(unsigned char dat)
  188. {
  189. unsigned char i;
  190. do{
  191.     i=lcd_r_start();
  192.         i&=0x80;
  193.         delay(2);
  194.         }
  195.         while(i!=0);
  196. RW=0;
  197. delay1();
  198. RS=1;
  199. delay1();
  200. E=1;
  201. delay1();
  202. P1=dat;
  203. delay1();
  204. E=0;
  205. delay1();
  206. RW=1;
  207. delay(255);
  208. }
  209.    void delay(unsigned int i)
  210.   {unsigned int k;
  211.    for(k=0;k<i;k++);
  212.    }
復制代碼


完整程序 電路圖 仿真文件下載: lcd 密碼鎖.zip (75.46 KB, 下載次數: 101)

評分

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

查看全部評分

回復

使用道具 舉報

ID:96006 發表于 2015-11-16 17:47 | 顯示全部樓層
我的幣現在是0啊
回復

使用道具 舉報

ID:87193 發表于 2015-11-17 08:50 | 顯示全部樓層
怎么沒有截圖呢,或者其他的呢
回復

使用道具 舉報

ID:98680 發表于 2015-12-7 20:12 | 顯示全部樓層
看看·~~~~~~~~~~~
回復

使用道具 舉報

ID:97697 發表于 2015-12-24 14:37 | 顯示全部樓層
我也試做一個
回復

使用道具 舉報

ID:127184 發表于 2016-6-18 16:20 | 顯示全部樓層
不錯不錯,我帶走看看學習下
回復

使用道具 舉報

ID:127330 發表于 2016-6-20 01:08 | 顯示全部樓層
很好,還行,有用
回復

使用道具 舉報

ID:166410 發表于 2017-2-24 19:02 | 顯示全部樓層
不錯 還可以
回復

使用道具 舉報

ID:150257 發表于 2017-2-27 17:25 | 顯示全部樓層
怎么沒有圖 圖呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 女人毛片a毛片久久人人 | 中文字幕第一页在线 | 国产91视频播放 | 亚洲一区欧美一区 | 日韩福利一区 | 亚洲精品一区二区三区蜜桃久 | 羞羞色网站 | 午夜精品久久久久久久久久久久 | 成人午夜免费福利视频 | 精品国产一区二区三区久久久蜜月 | 精品一区二区不卡 | 天天操天天舔 | 在线亚洲一区 | 欧美aaaa视频 | 成人免费影院 | 精品一区在线看 | 国产精品福利网站 | 久久综合九九 | 亚洲精品欧美 | 中文字幕av中文字幕 | 日韩一区二区免费视频 | 欧美日韩精品影院 | 69福利影院 | 亚洲日本激情 | 国产精品精品视频 | 免费的色网站 | 国产精品久久久久久一区二区三区 | 亚洲成人国产精品 | 亚洲免费精品 | 欧美激情视频一区二区三区免费 | 国产精品成人一区二区三区夜夜夜 | 日韩精品在线观看免费 | 91视频国产精品 | 自拍偷拍第一页 | 一级黄色毛片子 | 青青操av | 人人精品 | 欧美久久久久久久久 | 五月综合激情在线 | 91短视频网址 | 久久一热 |