找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9374|回复: 16
打印 上一主题 下一主题
收起左侧

简单易懂的电子密码锁 c51+i2c+1602 带protues仿真工程文件

  [复制链接]
跳转到指定楼层
楼主
ID:70751 发表于 2015-1-10 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己弄了个简单易懂的电子密码锁,开锁后有音乐的。有仿真和程序,可以运行的。
有3个问题,论坛里面的密码锁貌似都是同样的问题。如果有高手下载了,请给宝贵意见:
1.主函数与中断函数如果同时调用头文件,会提示警告,不知道有什么好的方法,百度说重新定义一个h文件供中断使用,但是这样非常麻烦。
2.看了论坛里面的电子密码锁,为什么都是一个c文件配一个h文件,我也试一下,但是总会提示错误,好像是not in list之类的,所以还是用回原始易懂的方法,就新建h文件,然后引用!类似郭天祥视频讲的那种写法。
3.关于配上音乐,论坛里面有个用12864做的也是用定时器来播放音乐,我的也是,但是这样做的话,不管是按复位键还是什么按钮,都无法结束音乐,只能等音乐结束!用中断来重新设一个按钮的话,最多是让密码锁关锁,但是,音乐继续播放。

电子密码带音乐.rar

96.31 KB, 下载次数: 230, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2015-1-10 17:47 来自手机 | 只看该作者
很好的作品,谢谢分享。
下面是楼主的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     // 确认
  9. #define B 0x0c         //修改密码
  10. #define backspace 0x0d //退格
  11. #define D 0x0e         // 关锁

  12. /*比较密码函数,密码正确返回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. /*选择输入密码或修改密码函数,输入密码返回A,修改密码返回B*/

  24. unsigned char step_choose()//选择输入密码或修改密码处理函数
  25. {
  26.         unsigned char key;
  27.         key=0xff;
  28.         write_com(0x06);//写一个字符后地址指针加 1
  29.     write_com(0x01);//显示清零,数据指针清零
  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. /*输入密码函数,密码正确返回1,错误返回0*/

  39. bit input_mima(unsigned char *mima)//输入密码函数
  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))//不是退格也不是确认键
  51.                         {
  52.                                 write_dat('*');//是数字键显示*
  53.                                 mima[count]=key;
  54.                         }
  55.                         if(key==backspace)//是退格键
  56.                         {
  57.                                 if(count>0)
  58.                                 {
  59.                                     lcd_pos(1,--count);//光标前移一位
  60.                                         write_dat(' ');//清空一位
  61.                                         mima[count] =' ';//写空
  62.                                         lcd_pos(1,count);
  63.                                         count--;  //密码计数器减一 ,因为循环后会+1,所以在这里要加1
  64.                                 }
  65.                         }
  66.                         if(key==enter)    //没完成密码输入返回错误信息
  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) //密码位数正确
  85.                         {
  86.                                 return(1); //返回1正确信号
  87.                         }
  88.                 }
  89.         }
  90.        
  91. }

  92. #endif
复制代码


回复

使用道具 举报

板凳
ID:71922 发表于 2015-1-10 18:21 | 只看该作者
谢谢分享,先下载学习一下。
回复

使用道具 举报

地板
ID:72142 发表于 2015-1-13 14:31 | 只看该作者
挺不错的谢谢你的分享
回复

使用道具 举报

5#
ID:71833 发表于 2015-1-15 12:51 | 只看该作者
写的不错,受教了
回复

使用道具 举报

6#
ID:69254 发表于 2015-2-24 12:44 | 只看该作者

挺不错的谢谢你的分享
回复

使用道具 举报

7#
ID:72763 发表于 2015-4-3 09:26 | 只看该作者
挺不错的谢谢你的分享

回复

使用道具 举报

8#
ID:98680 发表于 2015-12-7 18:51 | 只看该作者
谢谢分享~~~~~~~
回复

使用道具 举报

9#
ID:95438 发表于 2015-12-11 14:40 | 只看该作者
真不错
回复

使用道具 举报

10#
ID:121877 发表于 2016-5-19 09:45 | 只看该作者
666666 很棒的作品 加油
回复

使用道具 举报

11#
ID:10075 发表于 2016-5-25 16:32 | 只看该作者
很好的作品,谢谢分享。
回复

使用道具 举报

12#
ID:10075 发表于 2016-5-25 16:33 | 只看该作者
很好的作品,谢谢分享。
回复

使用道具 举报

13#
ID:128060 发表于 2016-6-25 09:57 | 只看该作者
谢谢你的分享,对我很大帮助!
回复

使用道具 举报

14#
ID:189227 发表于 2017-4-18 00:16 | 只看该作者
感谢楼主,很有用!
回复

使用道具 举报

15#
ID:194844 发表于 2017-5-8 15:46 | 只看该作者
挺不错的谢谢你的分享
回复

使用道具 举报

16#
ID:238299 发表于 2017-10-16 21:36 | 只看该作者
谢谢楼主
回复

使用道具 举报

17#
ID:235055 发表于 2017-10-22 22:59 | 只看该作者

挺不错的谢谢你的分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表