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

QQ登錄

只需一步,快速開始

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

簡(jiǎn)單易懂的電子密碼鎖 c51+i2c+1602 帶protues仿真工程文件

  [復(fù)制鏈接]
ID:70751 發(fā)表于 2015-1-10 16:35 | 顯示全部樓層 |閱讀模式
自己弄了個(gè)簡(jiǎn)單易懂的電子密碼鎖,開鎖后有音樂的。有仿真和程序,可以運(yùn)行的。
有3個(gè)問題,論壇里面的密碼鎖貌似都是同樣的問題。如果有高手下載了,請(qǐng)給寶貴意見:
1.主函數(shù)與中斷函數(shù)如果同時(shí)調(diào)用頭文件,會(huì)提示警告,不知道有什么好的方法,百度說重新定義一個(gè)h文件供中斷使用,但是這樣非常麻煩。
2.看了論壇里面的電子密碼鎖,為什么都是一個(gè)c文件配一個(gè)h文件,我也試一下,但是總會(huì)提示錯(cuò)誤,好像是not in list之類的,所以還是用回原始易懂的方法,就新建h文件,然后引用!類似郭天祥視頻講的那種寫法。
3.關(guān)于配上音樂,論壇里面有個(gè)用12864做的也是用定時(shí)器來播放音樂,我的也是,但是這樣做的話,不管是按復(fù)位鍵還是什么按鈕,都無法結(jié)束音樂,只能等音樂結(jié)束!用中斷來重新設(shè)一個(gè)按鈕的話,最多是讓密碼鎖關(guān)鎖,但是,音樂繼續(xù)播放。

電子密碼帶音樂.rar

96.31 KB, 下載次數(shù): 230, 下載積分: 黑幣 -5

評(píng)分

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

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2015-1-10 17:47 來自手機(jī) | 顯示全部樓層
很好的作品,謝謝分享。
下面是樓主的mima.h文件:
  1. #ifndef _MIMA_H_
  2. #define _MIMA_H_

  3. #include"mima.h"
  4. #include<reg51.h>
  5. #include"lcd.h"
  6. #include"keyscan.h"

  7. #define A 0x0a         //輸入密碼
  8. #define enter 0x0b     // 確認(rèn)
  9. #define B 0x0c         //修改密碼
  10. #define backspace 0x0d //退格
  11. #define D 0x0e         // 關(guān)鎖

  12. /*比較密碼函數(shù),密碼正確返回1,不正確返回0*/
  13. bit mimaduibi(unsigned char *shuru1,unsigned char *shuru2)
  14. {
  15.         unsigned char i;
  16.     for(i=0;i<7;i++)
  17.         {
  18.                 if(shuru1[i]!=shuru2[i])
  19.                 return 0;
  20.         }
  21.            return 1;
  22. }

  23. /*選擇輸入密碼或修改密碼函數(shù),輸入密碼返回A,修改密碼返回B*/

  24. unsigned char step_choose()//選擇輸入密碼或修改密碼處理函數(shù)
  25. {
  26.         unsigned char key;
  27.         key=0xff;
  28.         write_com(0x06);//寫一個(gè)字符后地址指針加 1
  29.     write_com(0x01);//顯示清零,數(shù)據(jù)指針清零
  30.         lcd_pos(0,0);
  31.         write_zfc("Input password ");
  32.         lcd_pos(1,0);
  33.         write_zfc("  Press key A   ");       
  34.         while((key!=A)&&(key!=B))
  35.     key=keyscan();       
  36.         return key;
  37. }

  38. /*輸入密碼函數(shù),密碼正確返回1,錯(cuò)誤返回0*/

  39. bit input_mima(unsigned char *mima)//輸入密碼函數(shù)
  40. {
  41.         unsigned char count,key;
  42.         lcd_pos(1,0);
  43.         for(count=0;count<8;count++)
  44.         {
  45.                 delay(100);
  46.                 if(count<7)
  47.                 {
  48.                         do{key=keyscan();}//掃描鍵盤
  49.                         while(key==0xff);
  50.                         if((key!=backspace)&&(key!=A)&&(key!=enter))//不是退格也不是確認(rèn)鍵
  51.                         {
  52.                                 write_dat('*');//是數(shù)字鍵顯示*
  53.                                 mima[count]=key;
  54.                         }
  55.                         if(key==backspace)//是退格鍵
  56.                         {
  57.                                 if(count>0)
  58.                                 {
  59.                                     lcd_pos(1,--count);//光標(biāo)前移一位
  60.                                         write_dat(' ');//清空一位
  61.                                         mima[count] =' ';//寫空
  62.                                         lcd_pos(1,count);
  63.                                         count--;  //密碼計(jì)數(shù)器減一 ,因?yàn)檠h(huán)后會(huì)+1,所以在這里要加1
  64.                                 }
  65.                         }
  66.                         if(key==enter)    //沒完成密碼輸入返回錯(cuò)誤信息
  67.                         {
  68.                                 lcd_pos(0,0);
  69.                                 return(0);
  70.                         }
  71.                 }
  72.                 if(count==7)
  73.                 {
  74.                         do{key=keyscan();}
  75.                         while((key!=backspace)&&(key!=enter));
  76.                         if(key==backspace)
  77.                         {
  78.                                 lcd_pos(1,--count);
  79.                                 write_dat(' ');
  80.                                 mima[count]=' ';
  81.                                 lcd_pos(1,count);
  82.                                 count--;
  83.                         }
  84.                         if(key==enter) //密碼位數(shù)正確
  85.                         {
  86.                                 return(1); //返回1正確信號(hào)
  87.                         }
  88.                 }
  89.         }
  90.        
  91. }

  92. #endif
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:71922 發(fā)表于 2015-1-10 18:21 | 顯示全部樓層
謝謝分享,先下載學(xué)習(xí)一下。
回復(fù)

使用道具 舉報(bào)

ID:72142 發(fā)表于 2015-1-13 14:31 | 顯示全部樓層
挺不錯(cuò)的謝謝你的分享
回復(fù)

使用道具 舉報(bào)

ID:71833 發(fā)表于 2015-1-15 12:51 | 顯示全部樓層
寫的不錯(cuò),受教了
回復(fù)

使用道具 舉報(bào)

ID:69254 發(fā)表于 2015-2-24 12:44 | 顯示全部樓層

挺不錯(cuò)的謝謝你的分享
回復(fù)

使用道具 舉報(bào)

ID:72763 發(fā)表于 2015-4-3 09:26 | 顯示全部樓層
挺不錯(cuò)的謝謝你的分享

回復(fù)

使用道具 舉報(bào)

ID:98680 發(fā)表于 2015-12-7 18:51 | 顯示全部樓層
謝謝分享~~~~~~~
回復(fù)

使用道具 舉報(bào)

ID:95438 發(fā)表于 2015-12-11 14:40 | 顯示全部樓層
真不錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:121877 發(fā)表于 2016-5-19 09:45 | 顯示全部樓層
666666 很棒的作品 加油
回復(fù)

使用道具 舉報(bào)

ID:10075 發(fā)表于 2016-5-25 16:32 | 顯示全部樓層
很好的作品,謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:10075 發(fā)表于 2016-5-25 16:33 | 顯示全部樓層
很好的作品,謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:128060 發(fā)表于 2016-6-25 09:57 | 顯示全部樓層
謝謝你的分享,對(duì)我很大幫助!
回復(fù)

使用道具 舉報(bào)

ID:189227 發(fā)表于 2017-4-18 00:16 | 顯示全部樓層
感謝樓主,很有用!
回復(fù)

使用道具 舉報(bào)

ID:194844 發(fā)表于 2017-5-8 15:46 | 顯示全部樓層
挺不錯(cuò)的謝謝你的分享
回復(fù)

使用道具 舉報(bào)

ID:238299 發(fā)表于 2017-10-16 21:36 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:235055 發(fā)表于 2017-10-22 22:59 | 顯示全部樓層

挺不錯(cuò)的謝謝你的分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表