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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1616|回復(fù): 0
收起左側(cè)

51單片機(jī)密碼鎖提供斷電保護(hù)并控制舵機(jī) 仿真程序

[復(fù)制鏈接]
ID:1104491 發(fā)表于 2023-12-17 00:39 | 顯示全部樓層 |閱讀模式
嗯,這個(gè)是屬于學(xué)校社團(tuán)做的一個(gè)任務(wù)吧,也是很簡(jiǎn)單的一個(gè);
首先,密碼鎖離不開(kāi)矩陣鍵盤(pán)(具體可看b站江科大視頻來(lái)學(xué)習(xí))
然后就是舵機(jī),pwm控制傳輸信號(hào),鳴聲器,
斷電保護(hù)離不開(kāi)i2c和at89c52嗎,
具體代碼如下:
然后我在29行我對(duì)LCD_ShowNum(2,1,Key,4);這一段進(jìn)行了定義修改
如果你取消了,密碼就無(wú)法顯示,當(dāng)然密碼忘了就對(duì)這個(gè)定義添加回來(lái)
第一次使用建議添加回來(lái)因?yàn)槲乙餐涀詈笠淮蚊艽a修改成啥了(難受)
舵機(jī)電源,數(shù)據(jù)和接地的接口我放在芯片旁邊了
其次,密碼正確輸出顯示ok,舵機(jī)旋轉(zhuǎn)
密碼錯(cuò)誤顯示err,同時(shí)鳴聲器報(bào)警
s1到s10為1,2,3,4......,0
s11為確認(rèn)密碼鍵
s12為密碼清空鍵
s13為密碼重置鍵
說(shuō)難不難,說(shuō)簡(jiǎn)單不簡(jiǎn)單,畢竟剛剛學(xué)51單片機(jī)才2個(gè)月:)
代碼展示!
main.c文件如下
  1. #include <REGX52.H>
  2. #include "Delay.h"
  3. #include "LCD1602.h"
  4. #include "MatrixKey.h"
  5. #include "Buzzer.h"
  6. #include "timer0.h"
  7. #include "at24c02.h"

  8. unsigned char KeyNum,kount=0,PWM_kount=0;
  9. unsigned int PassWord,Count,NewKey,Ncount,Key,i,Data,Num;               

  10. sbit SG_PWM=P2^0;        
  11. sbit Buzzer=P2^5;

  12. void Delay_ms(unsigned int nms)
  13. {
  14.                         unsigned int i,j;
  15.                         for(i=nms;i>0;i--)
  16.                         for(j=113;j>0;j--);
  17. }

  18. void main()
  19. {
  20.         Timer0_Init();
  21.         LCD_Init();
  22.         LCD_ShowString(1,1,"PassWord:");
  23.         Key=AT24C02_ReadByte(2);
  24.   Key=Key*100+AT24C02_ReadByte(1);
  25. //        LCD_ShowNum(2,1,Key,4);
  26.         while(1)
  27.         {        
  28.                 KeyNum=MatrixKey();
  29.                 if(KeyNum)
  30.                 {  
  31.                         if (KeyNum<=10)        
  32.                         {
  33.                                 if(Count<=3)
  34.                                 {
  35.                                         PassWord*=10;
  36.                                     PassWord+=KeyNum%10;
  37.                                 }
  38.                                 Count=Count+1;
  39.                         }
  40.                         if(Count==1)
  41.                         {
  42.                                 LCD_ShowNum(2,1,PassWord,4);
  43.                                 Delay(4);
  44.                         }
  45.                         if(Count==2)
  46.                         {
  47.                                 LCD_ShowNum(2,1,PassWord,4);
  48.                                 Delay(4);
  49.                         }
  50.                         if(Count==3)
  51.                         {
  52.                                 LCD_ShowNum(2,1,PassWord,4);
  53.                                 Delay(4);
  54.                         }
  55.                         if(Count==4)
  56.                         {
  57.                                 LCD_ShowNum(2,1,PassWord,4);
  58.                                 Delay(4);
  59.                         }                        
  60.                         if(KeyNum==11)
  61.                         {        
  62.                                 if(PassWord==Key)
  63.                                 {
  64.                                         LCD_ShowString(1,13,"ok ");
  65.                                         PassWord=0;
  66.                                         Count=0;
  67.                                         LCD_ShowNum(2,1,PassWord,4);
  68.                                         Delay(1000);
  69.                                         LCD_ShowString(1,13,"   ");
  70.                                         PWM_kount=1;         
  71.                                         Delay(1000);
  72.                                         PWM_kount=2;         
  73.                                         Delay(1000);
  74.                                         PWM_kount=3;         
  75.                                         Delay(1000);
  76.                                         PWM_kount=4;         
  77.                                         Delay(1000);
  78.                                         PWM_kount=5;         
  79.                                         Delay(1000);
  80.                                 }
  81.                                 else
  82.                                 {
  83.                                         LCD_ShowString(1,13,"err");
  84.                                         for(i=0;i<200;i++)
  85.                                         {
  86.                                                 Buzzer=!Buzzer;
  87.                                                 Delay(1);
  88.                                         }
  89.                                         PassWord=0;
  90.                                         Count=0;
  91.                                         LCD_ShowNum(2,1,PassWord,4);
  92.                                         Delay(1000);
  93.                                         LCD_ShowString(1,13,"   ");
  94.                                        
  95.                                 }
  96.                         }
  97.                         if(KeyNum==12)
  98.                         {
  99.                                 PassWord=0;
  100.                                 Count=0;
  101.                                 LCD_ShowNum(2,1,PassWord,4);
  102.                         }
  103.                         if(KeyNum==13)
  104.                         {
  105.                                 Count=0;
  106.                                 LCD_ShowString(1,1,"OldPassWord:");
  107.                                 while(1)
  108.                                 {
  109.                                         KeyNum=MatrixKey();
  110.                                         if(KeyNum)
  111.                                         {
  112.                                                 if (KeyNum<=10)        
  113.                                                 {
  114.                                                         if(Count<=3)
  115.                                                         {
  116.                                                                 PassWord*=10;
  117.                                                                 Delay(8);        
  118.                                                                 PassWord+=KeyNum%10;
  119.                                                         }
  120.                                                         Count=Count+1;
  121.                                                 }
  122.                                                 if(Count==1)
  123.                                                 {
  124.                                                         LCD_ShowNum(2,1,PassWord,4);
  125.                                                         Delay(4);
  126.                                                 }
  127.                                                 if(Count==2)
  128.                                                 {
  129.                                                         LCD_ShowNum(2,1,PassWord,4);
  130.                                                         Delay(4);
  131.                                                 }
  132.                                                 if(Count==3)
  133.                                                 {
  134.                                                         LCD_ShowNum(2,1,PassWord,4);
  135.                                                         Delay(4);
  136.                                                 }
  137.                                                 if(Count==4)
  138.                                                 {
  139.                                                         LCD_ShowNum(2,1,PassWord,4);
  140.                                                         Delay(4);
  141.                                                 }
  142.                                         }
  143.                                         if(KeyNum==11)
  144.                                         {
  145.                                                 if(PassWord==Key)
  146.                                                 {
  147.                                                         LCD_ShowString(1,1,"OldPassWord:OK");
  148.                                                         Delay(1000);
  149.                                                         LCD_Init();
  150.                                                         PassWord=0;
  151.                                                         LCD_ShowString(1,1,"NewPassWord:");
  152.                                                         while(1)
  153.                                                         {
  154.                                                                 KeyNum=MatrixKey();
  155.                                                                 if(KeyNum)
  156.                                                                 {
  157.                                                                         if (KeyNum<=10)        
  158.                                                                         {
  159.                                                                                 if(Ncount<=3)
  160.                                                                                 {
  161.                                                                                         PassWord*=10;
  162.                                                                                         PassWord+=KeyNum%10;
  163.                                                                                         NewKey=PassWord;
  164.                                                                                 }
  165.                                                                                 Ncount=Ncount+1;
  166.                                                                         }
  167.                                                                         LCD_ShowNum(2,1,PassWord,4);
  168.                                                                         if(KeyNum==11)
  169.                                                                         {
  170.                                                                                 AT24C02_WriteByte(1,NewKey%100);
  171.                                                                                 Delay(8);        
  172.                                                                                 AT24C02_WriteByte(2,NewKey/100);
  173.                                                                                 Delay(8);
  174.                                                                                 Key=AT24C02_ReadByte(2);
  175.                                                                                 Key=Key*100+AT24C02_ReadByte(1);
  176.                                                                                 Count=0;
  177.                                                                                 PassWord=0;
  178.                                                                                 LCD_ShowNum(2,1,PassWord,4);
  179.                                                                                 LCD_Init();
  180.                                                                                 LCD_ShowString(1,1,"PassWord:");
  181.                                                                                         while(1)
  182.                                                                                                         {        
  183.                                                                                                                 KeyNum=MatrixKey();
  184.                                                                                                                 if(KeyNum)
  185.                                                                                                                 {  
  186.                                                                                                                         if (KeyNum<=10)        
  187.                                                                                                                         {
  188.                                                                                                                                 if(Count<=3)
  189.                                                                                                                                 {
  190.                                                                                                                                         PassWord*=10;
  191.                                                                                                                                                 PassWord+=KeyNum%10;
  192.                                                                                                                                 }
  193.                                                                                                                                 Count=Count+1;
  194.                                                                                                                         }
  195.                                                                                                                         if(Count==1)
  196.                                                                                                                         {
  197.                                                                                                                                 LCD_ShowNum(2,1,PassWord,4);
  198.                                                                                                                                 Delay(4);
  199.                                                                                                                         }
  200.                                                                                                                         if(Count==2)
  201.                                                                                                                         {
  202.                                                                                                                                 LCD_ShowNum(2,1,PassWord,4);
  203.                                                                                                                                 Delay(4);
  204.                                                                                                                         }
  205.                                                                                                                         if(Count==3)
  206.                                                                                                                         {
  207.                                                                                                                                 LCD_ShowNum(2,1,PassWord,4);
  208.                                                                                                                                 Delay(4);
  209.                                                                                                                         }
  210.                                                                                                                         if(Count==4)
  211.                                                                                                                         {
  212.                                                                                                                                 LCD_ShowNum(2,1,PassWord,4);
  213.                                                                                                                                 Delay(4);
  214.                                                                                                                         }                        
  215.                                                                                                                         if(KeyNum==11)
  216.                                                                                                                         {        
  217.                                                                                                                                 if(PassWord==NewKey)
  218.                                                                                                                                 {
  219.                                                                                                                                         LCD_ShowString(1,13,"OK ");
  220.                                                                                                                                         PassWord=0;
  221.                                                                                                                                         Count=0;
  222.                                                                                                                                         LCD_ShowNum(2,1,PassWord,4);
  223.                                                                                                                                         Delay(1000);
  224.                                                                                                                                         LCD_ShowString(1,13,"   ");
  225.                                                                                                                                         PWM_kount=1;         
  226.                                                                                                                                         Delay(1000);
  227.                                                                                                                                         PWM_kount=2;         
  228.                                                                                                                                         Delay(1000);
  229.                                                                                                                                         PWM_kount=3;         
  230.                                                                                                                                         Delay(1000);
  231.                                                                                                                                         PWM_kount=4;         
  232.                                                                                                                                         Delay(1000);
  233.                                                                                                                                         PWM_kount=5;         
  234.                                                                                                                                         Delay(1000);
  235.                                                                                                                                 }
  236.                                                                                                                                         else
  237.                                                                                                                                 {
  238.                                                                                                                                         LCD_ShowString(1,13,"Err");
  239.                                                                                                                                         for(i=0;i<200;i++)
  240.                                                                                                                                         {
  241.                                                                                                                                                 Buzzer=!Buzzer;
  242.                                                                                                                                                 Delay(1);
  243.                                                                                                                                         }
  244.                                                                                                                                         PassWord=0;
  245.                                                                                                                                         Count=0;
  246.                                                                                                                                         LCD_ShowNum(2,1,PassWord,4);
  247.                                                                                                                                         Delay(1000);
  248.                                                                                                                                         LCD_ShowString(1,13,"   ");                                                        
  249.                                                                                                                                 }
  250.                                                                                                                         }

  251.                                                                                                                 }
  252.                                                                                                                                 if(KeyNum==12)
  253.                                                                                                                                 {
  254.                                                                                                                                                 PassWord=0;
  255.                                                                                                                                                 Count=0;
  256.                                                                                                                                                 LCD_ShowNum(2,1,PassWord,4);
  257.                                                                                                                           }
  258.                                                                                                                                 
  259.                                                                                                           }                                                                                                                                                                                                        
  260.                                                                                                         }
  261.                                                                                         }
  262.                                                                 }
  263.                                                 }
  264.                                 }
  265.                                         if(KeyNum==12)
  266.                                         {
  267.                                                 PassWord=0;
  268.                                                 Count=0;
  269.                                                 LCD_ShowNum(2,1,PassWord,4);
  270.                                                 LCD_Init();
  271.                                                 LCD_ShowString(1,1,"PassWord:");
  272.                                         }
  273.                                 }
  274.                         }        
  275.                 }
  276.         }
  277. }

  278. void Timer0() interrupt 1     
  279. {
  280.   
  281.   TL0 = 0x33;               
  282.   TH0 = 0xFE;                                 
  283.   
  284.   kount++;                                       
  285.         kount%=40;                        
  286.         
  287.   if(kount<PWM_kount)
  288.   {                                                                        
  289.     SG_PWM=1;
  290.   }
  291.   else
  292.   {
  293.     SG_PWM=0;
  294.   }
  295. }
復(fù)制代碼
然后就是附件
我用到了這些
1.png
仿真程序下載: 51單片機(jī)項(xiàng)目(考核).7z (91.58 KB, 下載次數(shù): 17)

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 男人天堂手机在线视频 | 日本不卡一区 | av不卡一区 | 精品自拍视频在线观看 | 国产日韩一区二区 | 最新国产精品精品视频 | 福利片一区二区 | 看片91| 日本天天操 | 一区久久| 欧美国产日韩在线观看成人 | 一区二区三区免费在线观看 | 国产精品视频久久久 | 成人蜜桃av | 黄a在线播放 | 一级黄色毛片a | 国产精品夜间视频香蕉 | 91精品国产色综合久久不卡98口 | 精品色| 国产精品一区二区三级 | 国产免费拔擦拔擦8x高清 | 成人高清视频在线观看 | 成人免费看黄网站在线观看 | 久久在线视频 | 午夜日韩视频 | av天天干| 午夜视频在线观看视频 | 91高清视频在线 | 中文精品一区二区 | 国产专区在线 | 黄色在线免费观看视频 | 天天做日日做 | 久久伊人影院 | www.国产精品 | 99久久精品国产一区二区三区 | 久久精品国产一区 | 久久成人人人人精品欧 | 久久骚 | 成人一区二区三区在线 | 草草视频在线观看 | 日韩伦理一区二区 |