标题:
简单易懂的电子密码锁 c51+i2c+1602 带protues仿真工程文件
[打印本页]
作者:
henjcan
时间:
2015-1-10 16:35
标题:
简单易懂的电子密码锁 c51+i2c+1602 带protues仿真工程文件
自己弄了个简单易懂的电子密码锁,开锁后有音乐的。有仿真和程序,可以运行的。
有3个问题,论坛里面的密码锁貌似都是同样的问题。如果有高手下载了,请给宝贵意见:
1.主函数与中断函数如果同时调用头文件,会提示警告,不知道有什么好的方法,百度说重新定义一个h文件供中断使用,但是这样非常麻烦。
2.看了论坛里面的电子密码锁,为什么都是一个c文件配一个h文件,我也试一下,但是总会提示错误,好像是not in list之类的,所以还是用回原始易懂的方法,就新建h文件,然后引用!类似郭天祥视频讲的那种写法。
3.关于配上音乐,论坛里面有个用12864做的也是用定时器来播放音乐,我的也是,但是这样做的话,不管是按复位键还是什么按钮,都无法结束音乐,只能等音乐结束!用中断来重新设一个按钮的话,最多是让密码锁关锁,但是,音乐继续播放。
电子密码带音乐.rar
2015-1-10 16:35 上传
点击文件名下载附件
下载积分: 黑币 -5
96.31 KB, 下载次数: 230, 下载积分: 黑币 -5
作者:
admin
时间:
2015-1-10 17:47
很好的作品,谢谢分享。
下面是楼主的mima.h文件:
#ifndef _MIMA_H_
#define _MIMA_H_
#include"mima.h"
#include<reg51.h>
#include"lcd.h"
#include"keyscan.h"
#define A 0x0a //输入密码
#define enter 0x0b // 确认
#define B 0x0c //修改密码
#define backspace 0x0d //退格
#define D 0x0e // 关锁
/*比较密码函数,密码正确返回1,不正确返回0*/
bit mimaduibi(unsigned char *shuru1,unsigned char *shuru2)
{
unsigned char i;
for(i=0;i<7;i++)
{
if(shuru1[i]!=shuru2[i])
return 0;
}
return 1;
}
/*选择输入密码或修改密码函数,输入密码返回A,修改密码返回B*/
unsigned char step_choose()//选择输入密码或修改密码处理函数
{
unsigned char key;
key=0xff;
write_com(0x06);//写一个字符后地址指针加 1
write_com(0x01);//显示清零,数据指针清零
lcd_pos(0,0);
write_zfc("Input password ");
lcd_pos(1,0);
write_zfc(" Press key A ");
while((key!=A)&&(key!=B))
key=keyscan();
return key;
}
/*输入密码函数,密码正确返回1,错误返回0*/
bit input_mima(unsigned char *mima)//输入密码函数
{
unsigned char count,key;
lcd_pos(1,0);
for(count=0;count<8;count++)
{
delay(100);
if(count<7)
{
do{key=keyscan();}//扫描键盘
while(key==0xff);
if((key!=backspace)&&(key!=A)&&(key!=enter))//不是退格也不是确认键
{
write_dat('*');//是数字键显示*
mima[count]=key;
}
if(key==backspace)//是退格键
{
if(count>0)
{
lcd_pos(1,--count);//光标前移一位
write_dat(' ');//清空一位
mima[count] =' ';//写空
lcd_pos(1,count);
count--; //密码计数器减一 ,因为循环后会+1,所以在这里要加1
}
}
if(key==enter) //没完成密码输入返回错误信息
{
lcd_pos(0,0);
return(0);
}
}
if(count==7)
{
do{key=keyscan();}
while((key!=backspace)&&(key!=enter));
if(key==backspace)
{
lcd_pos(1,--count);
write_dat(' ');
mima[count]=' ';
lcd_pos(1,count);
count--;
}
if(key==enter) //密码位数正确
{
return(1); //返回1正确信号
}
}
}
}
#endif
复制代码
作者:
liuyuxi
时间:
2015-1-10 18:21
谢谢分享,先下载学习一下。
作者:
Mr.mumu
时间:
2015-1-13 14:31
挺不错的谢谢你的分享
作者:
清风明月12
时间:
2015-1-15 12:51
写的不错,受教了
作者:
qingxinrushui
时间:
2015-2-24 12:44
挺不错的谢谢你的分享
作者:
agy518
时间:
2015-4-3 09:26
挺不错的谢谢你的分享
作者:
梁同学
时间:
2015-12-7 18:51
谢谢分享~~~~~~~
作者:
KO小敏子
时间:
2015-12-11 14:40
真不错
作者:
a790750118
时间:
2016-5-19 09:45
666666 很棒的作品 加油
作者:
tomko
时间:
2016-5-25 16:32
很好的作品,谢谢分享。
作者:
tomko
时间:
2016-5-25 16:33
很好的作品,谢谢分享。
作者:
zcsdhm123
时间:
2016-6-25 09:57
谢谢你的分享,对我很大帮助!
作者:
15905066625
时间:
2017-4-18 00:16
感谢楼主,很有用!
作者:
tomgay
时间:
2017-5-8 15:46
挺不错的谢谢你的分享
作者:
zhgbn
时间:
2017-10-16 21:36
谢谢楼主
作者:
sunny118
时间:
2017-10-22 22:59
挺不错的谢谢你的分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1