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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于stc89c52單片機(jī)開發(fā)的2個串口通信的密碼鎖仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
功能基本完善,就差一個顯示時鐘的。
新人第一次發(fā)帖請多多支持!


單片機(jī)源程序如下:

  1. #include<reg52.h>       
  2. #include"lcd.h"
  3. #include"eeprom.h"
  4. sbit LED=P1^7;
  5. sbit KEY1=P1^0;
  6. sbit KEY2=P1^1;
  7. sbit DOOR=P1^2;
  8. sbit CLOSE=P1^3;
  9. bit off;
  10. unsigned char code Init[13] = "Set password:";
  11. unsigned char code Save[13] = "Do you save? ";
  12. unsigned char code CnCh[15] = "Input password:";
  13. unsigned char code Titl1[16]="password error! ";
  14. unsigned char code Titl2[18]="password correct!";
  15. unsigned char code Titl3[10]="Loading...";                           //password error  password correct
  16. unsigned char MM[6];
  17. unsigned char SMM[6];
  18. unsigned char i1,j,flag2,flag1,flag3,flag4,flag5,flag,flag6,a;
  19. int num;
  20. void delay(uchar c)  
  21. {
  22.     uchar a,b;
  23.     for(b=4*c;b>0;b--)
  24.     for(a=113;a>0;a--);
  25. }

  26. void comout(uchar com)
  27. {
  28. SBUF=com;
  29. while(!TI);
  30. TI=0;
  31. }

  32. void InitUART(void)
  33. {
  34.     TMOD = 0x20;
  35.     SCON = 0x50;
  36.     TH1 = 0xFD;
  37.     TL1 = TH1;
  38.     EA = 1;
  39.     ES = 1;
  40.     TR1 = 1;
  41. }

  42. void mima()
  43. {
  44.     if(num<=9&&num>=0)
  45.         {
  46.         if(i1==5)
  47.         {comout(1);}
  48.         if(i1!=5)
  49.         {comout(0);}
  50.            MM[i1]=num;
  51.           
  52.            flag1=0;
  53.         }
  54.         if(i1==6&&SBUF=='A')
  55.         {flag3=1;}
  56.         if(num<=9&&num>=0&&flag4==3)
  57.         {
  58.          SMM[j]=num;
  59.          flag5=0;
  60.         }
  61.          

  62. }

  63. void LCD_w()
  64. {
  65. unsigned char i;
  66.                 if(flag2==0&&flag3==0&&flag==0)
  67.                 {
  68.                         LcdWriteCom(0x02);
  69.                         delay(5);
  70.                          for(i=0; i<13; i++)
  71.                         {
  72.                                 LcdWriteData(Init[i]);       
  73.                         }
  74.                 }
  75.                    if(flag3==0)
  76.                    {
  77.                         LcdWriteCom(0xC0);
  78.                         for(i=0;i<6;i++)
  79.                         {        flag2=1;
  80.                                 LcdWriteData('0'+MM[i]);
  81.                         }
  82.                         }
  83.                
  84.                 if(flag3==1)
  85.                 {
  86.                         LcdWriteCom(0x02);
  87.                         delay(5);                               
  88.                        
  89.                                   for(i=0; i<13; i++)
  90.                         {
  91.                                 LcdWriteData(Save[i]);       
  92.                         }
  93.                                 flag4=1;
  94.                                 flag3=2;
  95.                          }
  96.                   if(flag4!=2&&flag4!=3&&flag==0) {
  97.                         LcdWriteCom(0xC0);
  98.                         for(i=0;i<6;i++)
  99.                         {
  100.                                 LcdWriteData('0'+MM[i]);          //
  101.                         } }
  102.                  if(flag4==2)
  103.                  {          LcdInit();
  104.                                   LcdWriteCom(0x02);
  105.                                 delay(5);                               
  106.                        
  107.                                   for(i=0; i<15; i++)
  108.                         {
  109.                                 LcdWriteData(CnCh[i]);       
  110.                         }
  111.                        
  112.                         delay(5);
  113.                         flag4=3;
  114.                  }
  115.                  if(flag4==3)                  //
  116.                 {        LcdWriteCom(0xC0);
  117.                          delay(5);
  118.                         for(i=0;i<6;i++)
  119.                         {
  120.                                 LcdWriteData('0'+SMM[i]);        //
  121.                         }
  122.                         }
  123.                 /////////////////////////////////////////////////////






  124. }

  125. void display()
  126. {
  127. uchar n,bb,i,y;
  128. if(j==6)
  129. {EA=0;
  130.   for(n=0;n<6;n++)
  131.           {
  132.           bb=0;
  133.            delay(5);
  134.            if(At24c02Read(n)!=SMM[n]&&bb==0)
  135.                 {
  136.                   y++;
  137.                  
  138.                 }
  139.           }
  140.           
  141.          if(y==0)
  142.          {
  143.           flag4=4;
  144.           LcdWriteCom(0x01);
  145.                         delay(5);
  146.                   for(i=0; i<18; i++)
  147.                         {
  148.                                 LcdWriteData(Titl2[i]);       
  149.                         }
  150.                    LcdWriteCom(0xC0);
  151.                         for(i=0;i<10;i++)
  152.                         {
  153.                                 LcdWriteData(Titl3[i]);
  154.                         }
  155.                         KEY1=0;
  156.                         KEY2=1;
  157.                         for(a=0;a<6;a++)
  158.                         {SMM[j]=0;}

  159.                         a=0;
  160.                
  161.                
  162.                 }
  163.                                                
  164.          
  165.           if(y>0)
  166.           {
  167.            flag4=4;
  168.           LcdWriteCom(0x01);
  169.                         delay(5);
  170.                   for(i=0; i<16; i++)
  171.                         {
  172.                                 LcdWriteData(Titl1[i]);       
  173.                         }
  174.                   
  175.                   delay(100);
  176. //                  flag4=2;
  177. //                  LcdWriteCom(0x01);
  178.                   for(i=0;i<6;i++)
  179.                   {SMM[i]=0;}
  180.                   i=0;
  181.                   flag6=1;
  182.                   j=0;
  183.                   y=0;
  184.           }       
  185.           j=0;          

  186. }

  187. EA=1;
  188. comout(1);
  189. }                         


  190. void main()
  191. {

  192. LcdInit();
  193. InitUART();
  194. while(1)
  195. {
  196. if(DOOR==0&&CLOSE==0)
  197. {display();
  198. mima();
  199. LCD_w();
  200.        if(flag4==1&&num=='B')
  201.            {
  202.                 EA=0;
  203.                 for(i1=0;i1<6;i1++)
  204.                 {
  205.                 delay(10);
  206.                    At24c02Write(i1,MM[i1]);
  207.                  delay(5);
  208.                 }
  209.                 for(a=0;a<6;a++)
  210.                         {MM[a]=0;}
  211.                 a=0;
  212.                 flag=1;                                                           //
  213.                 if(At24c02Read(5)!=0)
  214.                    {LED=0;
  215.                            flag1=10;
  216.                         flag2=10;
  217.                         flag3=10;
  218.                         i1=0;
  219.                    }
  220.                 flag4=2;

  221.            }
  222.           EA=1;
  223. }
  224.   }

  225. }

  226. void UARTInterrupt(void) interrupt 4
  227. {

  228. RI=0;

  229. num=SBUF;
  230.   
  231.   if(num=='A'&&flag1==0&&flag==0)
  232.   {
  233.    i1++;
  234.    num=-1;
  235.    flag1=1;

  236.   }
  237.        
  238.   if(num=='C'&&flag4!=2&&flag4!=3&&flag6==0)        //
  239.   {
  240.   i1=0;
  241.   flag3=0;
  242.   flag2=0;
  243.   comout(0);
  244.   }


  245.     if(num=='A'&&flag4==3&&flag5==0&&flag==1)
  246.   {
  247.    j++;
  248.    num=-1;
  249. //  flag1=1;
  250.    flag5=1;
  251.   }
  252.     if(num=='C'&&flag5==0&&flag6==0)          //
  253.   {
  254.   j=0;
  255. //  i1=0;
  256.    flag5=1;

  257.   }


  258.         if(num=='C'&&flag6==1)          //
  259.   {          
  260.           
  261.                                      for(a=0;a<6;a++)
  262.                   {SMM[a]=0;}
  263.                   LcdWriteCom(0x02);
  264.                   delay(10);
  265.                   a=0;
  266.                    flag4=2;
  267.                   flag6=0;

  268.   }

  269.    if(CLOSE==0&&DOOR==1)
  270.    {
  271.            KEY1=0;
  272.         KEY2=0;
  273.    }
  274.       if(CLOSE==1&&DOOR==1)
  275.    {
  276. ……………………

  277. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

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


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:939359 發(fā)表于 2021-6-20 21:01 | 只看該作者
兄弟這個怎么運(yùn)行啊  修改密碼啥的  那個電機(jī)的作用是什么
回復(fù)

使用道具 舉報

板凳
ID:959883 發(fā)表于 2021-8-22 20:35 | 只看該作者
介紹一下功能唄
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成av人片在线观看 | av官网在线| 欧美久久一级 | 欧美二区在线 | 伊人伊人伊人 | 色播av | 久久久天堂 | 国产在线一区二区三区 | 天天玩夜夜操 | 亚洲成人毛片 | 一区二区在线 | 国产视频一区二区在线观看 | 久久久www成人免费无遮挡大片 | 69堂永久69tangcom| 国产精品久久久久久久一区探花 | 欧美一级特黄aaa大片在线观看 | 日韩在线精品强乱中文字幕 | 一区二区三区在线 | 亚洲精品一区二区 | 日日淫| 日韩精品一区二区三区在线观看 | 亚洲啊v在线 | 日韩欧美不卡 | 久久亚洲综合 | 91精品国产综合久久小仙女图片 | 午夜影院操 | 欧美男人天堂 | 成人一区二区三区 | 日韩视频专区 | 91国内在线观看 | 成人综合视频在线观看 | 91精品在线播放 | 色就干| 国产第一区二区 | 欧美成人a∨高清免费观看 欧美日韩中 | 精品一区二区三区不卡 | 日韩在线视频一区二区三区 | 亚洲精品一区二区三区中文字幕 | 999精品在线观看 | 免费观看色 | 日韩国产欧美在线观看 |