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

標題: LCD1602做密碼鎖—可修改密碼 帶仿真文件 電路圖 [打印本頁]

作者: 孫曉云    時間: 2015-7-17 11:22
標題: LCD1602做密碼鎖—可修改密碼 帶仿真文件 電路圖
源文件:
  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)
作者: 1466709776    時間: 2015-11-16 17:47
我的幣現在是0啊
作者: lemon0210    時間: 2015-11-17 08:50
怎么沒有截圖呢,或者其他的呢
作者: 梁同學    時間: 2015-12-7 20:12
看看·~~~~~~~~~~~
作者: 我叫路人8    時間: 2015-12-24 14:37
我也試做一個
作者: a1342031249    時間: 2016-6-18 16:20
不錯不錯,我帶走看看學習下
作者: 我的天空1    時間: 2016-6-20 01:08
很好,還行,有用
作者: zhao111    時間: 2017-2-24 19:02
不錯 還可以
作者: 虛榮心像惡鬼    時間: 2017-2-27 17:25
怎么沒有圖 圖呢




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩免费视频 | 99热精品在线观看 | 一级特黄a大片 | 日韩欧美不卡 | 免费一区 | 黄色免费网址大全 | 国产中文一区二区三区 | 精品欧美一区二区三区久久久小说 | 国产在线一区二区 | 国产精品一卡二卡三卡 | 男女羞羞在线观看 | 国产真实精品久久二三区 | av片免费 | 视频一区二区中文字幕 | 日本淫视频 | 久久久久久久久久久久久9999 | 国产精品亚洲综合 | 国产精品亚洲一区二区三区在线 | 久久综合久久久 | 性欧美hd| 欧美极品在线观看 | 久久伊人精品一区二区三区 | 亚洲一二三区免费 | 一二三区视频 | 91超碰caoporn97人人 | 欧美二区乱c黑人 | 91精品国产91久久综合桃花 | 国产美女黄色 | 国产精品不卡视频 | 毛片网站在线观看 | 天天操天天操 | 亚洲女人天堂成人av在线 | 操操日| 少妇特黄a一区二区三区88av | 中文精品视频 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 国产精品久久777777 | 9久久婷婷国产综合精品性色 | 亚洲综合大片69999 | www.欧美.com | 国产免费一区二区 |