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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的電子密碼鎖程序

[復制鏈接]
跳轉到指定樓層
樓主

結果圖:
                                 

一、目的概述(收集相關資料、選設計方案、電路設計):
本設計是以STC89C52單片機為控制核心的電子密碼鎖,屬于單片機的應用。做本設計有助于對單片機矩陣鍵盤,數碼管以及串行通信原理的深入了解。電子鎖由于其保密性高,使用靈活性好,安全系數高,受到了廣大用戶的青睞。
系統設計方案為:
1)系統設置6 位密碼,密碼通過鍵盤輸入,若密碼正確,則將鎖打開。
2)密碼可由用戶自己設定,在開鎖狀態下,用戶可自行修改密碼。

3)具有自動報警功能,密碼輸入錯誤時,報警由揚聲器發出“滴滴”報警聲。而密碼輸入正確則是“叮咚”聲。

系統設計結構圖:
               
本設計由主控芯片51單片機,單片機時鐘電路,鍵盤,數碼管組成。單片負責控制整個系統的控制執行過程。開鎖成功由數碼管顯示OPEN,以及蜂鳴器“叮咚”表示,開鎖失敗由數碼管顯示Err,以及蜂鳴器“滴滴”表示。

二、實驗原理圖
電路設計:


程序設計:(只展示核心部分)
主程序

1.  //4×4 鍵盤及8 位數碼管顯示構成的電子密碼鎖  
2.  void main() //主程序
3.  {  
4.      uchar key;  
5.      Timer0_Init();  
6.      while(1)  
7.      {  
8.          key = KeyScan();  
9.          password(key);  
10.     }  
11. }  

核心程序:數碼管的動態掃描顯示

12. void Display()  
13. {  
14.     uchar i;  
15.     Segment_sel=0x00;//消隱  
16.     switch(i)    //位選,選擇點亮的數碼管,  
17.     {  
18.         case(0):  
19.             LSA=0;LSB=0;LSC=0; break;  
20.         case(1):  
21.             LSA=1;LSB=0;LSC=0; break;  
22.         case(2):  
23.             LSA=0;LSB=1;LSC=0; break;  
24.         case(3):  
25.             LSA=1;LSB=1;LSC=0; break;  
26.         case(4):  
27.             LSA=0;LSB=0;LSC=1; break;  
28.         case(5):  
29.             LSA=1;LSB=0;LSC=1; break;     
30.     }  
31. }  

核心程序:矩陣鍵盤的掃描輸入

32. uchar KeyScan()  
33. {  
34.     for(i=0;i<8;i++)  
35.     {  
36.         P1 = P1Pin[ i];  
37.         Button = P1;  
38.         if(Button != P1Pin[ i])  
39.         {  
40.             Delayms(5);  
41.             Button = P1;  
42.             if(Button != P1Pin[ i])  
43.             {  
44.                 KeyState=1;  
45.                 key8 = Button;  
46.             }  
47.             while(Button != P1Pin[ i])  
48.             { Button = P1; }  
49.         }  
50.     }  
51.     switch(key8)  
52.     {  
53.         case 0x77:{key = 1;break;}  
54.         case 0x7b:{key = 2;break;}  
55.         case 0x7d:{key = 3;break;}  
56.         case 0xb7:{key = 4;break;}  
57.         case 0xbb:{key = 5;break;}  
58.         case 0xbd:{key = 6;break;}  
59.         case 0xd7:{key = 7;break;}  
60.         case 0xdb:{key = 8;break;}  
61.         case 0xdd:{key = 9;break;}  
62.         case 0xeb:{key = 0;break;}  //0  
63.         case 0x7e:{key = 10;break;}  //÷  
64.         case 0xbe:{key = 11;break;}  //×  
65.         case 0xde:{key = 12;break;}  //+  
66.         case 0xee:{key = 13;break;}  //-  
67.         case 0xed:{key = 14;break;}  //=  
68.         case 0xe7:{key = 15;break;}  //ENTER  
69.         default:{key = 0xff;break;}  
70.     }  
71.     return key;  
72. }  

核心程序:輸入密碼以及校對和處理

73. void password(uchar key)//0~9 數字鍵,10 輸入密碼,11 設置密碼,12 刪除上一個數,13 重新輸入 15 確定  
74. {  
75.     uchar i=0;  
76.     if(KeyState==1)  
77.     {  
78.         switch(state)  
79.         {  
80.             case 0:  
81.             {  
82.                 if(key == 10)  
83.                 {  
84.                     state = 1;  
85.                     LSA=1;LSB=1;LSC=1;  
86.                     Segment_sel=0xff;  //顯示8  
87.                 }  
88.                 else if(key == 11)  
89.                 {  
90.                     state = 2;  
91.                     LSA=1;LSB=1;LSC=1;  
92.                     Segment_sel=0xfd;  //顯示P  
93.                 }  
94.                 break;  
95.             }  
96.             case 1:  
97.             {  
98.                 if(key>=0 && key <= 9)  //輸入  
99.                 {  
100.                     InPassword[5]=InPassword[4];  
101.                     InPassword[4]=InPassword[3];  
102.                     InPassword[3]=InPassword[2];  
103.                     InPassword[2]=InPassword[1];  
104.                     InPassword[1]=InPassword[0];  
105.                     InPassword[0]=smgduan[key];  
106.                     KeyState=0;  
107.                 }  
108.                 else if(key == 15)  //確定  
109.                 {  
110.                     if(Compare(InPassword))  
111.                     {  
112.                         for(i=17;i<23;i++)  
113.                             InPassword[ i]=smgduan;  
114.                         Delayms(1000);  
115.                     }//open  
116.                     else  
117.                     {   
118.                         for(i=23;i<27;i++)  
119.                             InPassword[ i]=smgduan;  
120.                         Delayms(1000);  
121.                     }//err  
122.                 state = 0;  
123.                 }  
124.                 else if(key == 13)  //重新輸入  
125.                 {  
126.                     for(i=0;i<6;i++)  
127.                         InPassword[ i] = 0xff;  // 全亮  
128.                     Delayms(1000);  
129.                     state = 0;  
130.                 }  
131.                 break;  
132.             }  
133.     else//如果沒有按鍵按下  
134.     {  
135.         if(state == 0)  
136.         {  
137.             Segment_sel= 0x00;// 不顯示  
138.         }  
139.     }  
140. }  

C語言代碼51hei下載地址:
電子密碼鎖程序.zip (1.79 KB, 下載次數: 92)

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

使用道具 舉報

沙發
ID:884666 發表于 2021-2-26 15:57 來自手機 | 只看該作者
你好,請問我下載以后為什么蜂鳴器一直叫,按鍵也沒效果
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美综合一区二区 | 福利视频一区二区 | 欧美一二三 | 成人妇女免费播放久久久 | 国产免费一区二区 | 成人中文字幕在线观看 | 亚洲在线| 91精品观看 | 久久三区| 91视频在线| 成人在线视频网 | 日韩综合在线播放 | 秋霞a级毛片在线看 | 毛片av免费看 | 一区二区不卡 | 欧美视频第二页 | 国产欧美一区二区三区国产幕精品 | 亚洲伊人久久综合 | 日韩一二三区视频 | 免费观看羞羞视频网站 | 欧美色性 | 在线视频亚洲 | 黄色综合 | 亚洲一区二区三区在线视频 | 免费成人高清在线视频 | 国产小视频在线观看 | 日韩av在线一区 | 日批的视频 | 看一级毛片 | 一区二区三区在线 | 欧美亚洲一区二区三区 | 精品美女久久久 | 中文字幕精品视频在线观看 | 一区二区三 | 在线只有精品 | 亚洲午夜av | 97av视频 | www视频在线观看 | 天天综合网天天综合色 | 成人精品毛片国产亚洲av十九禁 | 亚洲欧美一区二区三区情侣bbw |