38
主要内容:
设计一种单片电子密码锁。 它可以判断输入的值是否正确并显示正确的密码。 当出现错误时,警报器会发出蜂鸣声。 它由单片机系统、矩阵键盘、LED显示和报警系统组成。 系统可完成开锁、超时报警、超时锁定、管理员解密、修改用户密码等基本密码锁功能。 除了上面提到的基本密码锁功能外,还具有电量调节存储、声光提示等功能,根据实际情况还可以增加远程控制功能。
基本要求:
1、认真完成系统需求分析,明确数据需求和处理需求;
2、设计系统概念模型并绘制系统流程图;
3、设计硬件电路图和程序流程图;
4、源代码;
5、系统运行结果满足课程设计要求;
主要参考资料:
[1] 李光地等,《微控制器基础》,北京航空航天大学出版社,2001年。
[2]周爱武,王海伟,肖云。 数据库课程设计[M]. 北京:机械工业出版社,2016
[3]李光才,楼兰迪《微控制器课程设计实例指导》北京航空航天大学出版社,2017年。
截止日期
导师签名
课程负责人签名
概括
随着人们生活水平的提高,如何实现家庭防盗的问题变得尤为突出。 传统的机械锁由于结构简单,经常被破坏。 电子锁保密性高,使用灵活性好。 ,安全系数高,深受广大用户喜爱。
本课题设计时设想了两种方案:一种是以AT89c51为核心的单片机控制方案;另一种是以AT89c51为核心的单片机控制方案。 另一种是由74LS112双JK触发器组成的数字逻辑电路控制方案。 考虑到数字电路方案原理过于简单,无法满足当前的安全要求,本文采用前一种方案。
该系统由单片机系统、矩阵键盘、LED显示和报警系统组成。 系统可完成开锁、超时报警、超时锁定、管理员解密、修改用户密码等基本密码锁功能。 除了上面提到的基本密码锁功能外,还具有电量调节存储、声光提示等功能,根据实际情况还可以增加远程控制功能。 该系统成本低、功能实用。
关键词:单片机; 电子密码; 引领
目录
概括
1 概述
1.1 课程设计选题
1.2 项目背景
1.3 课程设计环境
2 具体设计
2.1 设计分析
2.2 总体设计图及流程图设计
2.3 单片机设计图
2.4 解锁机制
2.5 按键电路设计
3 详细设计
4 模拟现象记录
4.1 密码输入错误
4.2 正确输入密码
总结
参考
1 概述
1.1 课程设计选题
本次课程设计我选择的主题是电子密码锁。
1.2 项目背景
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人们带来的便利也是不可否认的。 温度传感器就是一个典型的例子,但人们对它的要求也越来越高。 层次越高,为了给现代人们的工作、科研、生活提供更好、更方便的设施,就必须从数字单片机技术入手,一切都将朝着数字化控制、智能化方向发展。控制。 模拟测试时,按正确密码:1234,输入后,密码正确。 如果密码输入错误,输入后蜂鸣器会响。 删除键可删除意外输入的数字。
1.3 课程设计环境
Proteus是英国著名的EDA工具(仿真软件)。 从原理图布局、代码调试,到单片机与外围电路的协同仿真,一键切换到PCB设计,真正实现从概念到产品的完整设计。 它是全球唯一集电路仿真软件、PCB设计软件和虚拟模型仿真软件于一体的设计平台。 其处理器型号支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等。2010年增加了CORTEX和DSP系列处理器,其他系列处理器型号还在继续待补充。 它还支持IAR、keil和matil等多种编译器。
2 具体设计
2.1 设计分析
模拟测试时,按正确密码:1234,输入后,密码正确。 如果密码输入错误,输入后蜂鸣器会响。 删除键可删除意外输入的数字。 采用以AT89c51为核心的单片机控制方案。 利用单片机灵活的编程设计和丰富的IO口,以及其控制的准确性,不仅可以实现基本的密码锁功能,还可以增加功率调节存储、声光提示甚至远程控制。 AT89c51是一种具有4K字节闪存可编程、可擦除只读存储器的微控制器。 AT89C51微控制器的可擦除只读存储器可重复擦除100次。 该器件采用 ATMEL 高密度非易失性存储器制造技术制造。 AT89C 微控制器为许多嵌入式控制系统提供了高度灵活且廉价的解决方案。 本设计以AT89C51为核心,连接发光二极管LED灯、矩阵键盘和蜂鸣器。 下面主要介绍以AT89c51为核心的单片机和按键电路。
2.2 总体设计图及流程图设计
图 2-1 流程图
图2-2 总体设计图
2.3 单片机设计图
图2-3 单片机设计图
图2-4 单片机设计与实现
2.4 解锁机制
单片机发送到开锁执行机构,电路驱动电磁锁关闭,从而达到开锁的目的。 当用户输入的密码正确时,锁解锁成功。
它由电路驱动和解锁两个层次组成。 驱动电路由D5、R1、T10组成。 对于T10,可以选择普通的小功率晶体管,如9014、9018,就可以满足要求。 D5作为解锁提示; 它由D6、C24和T11组成。 其中D6和C24是为了消除电磁锁可能产生的反向高压以及可能产生的电磁干扰。 T11可采用8050等中功率晶体管。电磁锁的选择视情况而定,但吸力必须足够,并有一定的余量。 本设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁。 如果发光二极管亮,则表示锁已解锁; 如果熄灭,则表示锁未解锁。
2.5 按键电路设计
由于本设计需要使用矩阵键盘,因此本设计采用矩阵键盘,也可以减少键盘与单片机接口时占用的I/O线数量。 这种方法通常在key较多的情况下使用。
图2-4 按钮图设计
3 详细设计
具体代码:
#包括
typedef 无符号字符 u8;
typedef 无符号 int u16;
//sbit特殊功能位声明:声明特殊功能寄存器的一个位
#define key P1//按钮io端口
sbit fen=P3^0;//蜂鸣器io口
sbit rs=P3^1; //液晶屏控制端口
sbit rw=P3^2;
sbit e=P3^3;
sbit LED=P3^4; //LED灯io口
//bit位变量声明:定义位变量的值
u8 keyz=17,j=0,biao1=0,a=10,b=10,c=10,d=10;
位彪=0;
u16 zh;
u8 shu[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
u8 zi[]={"输入密码:"};
u8 num[]={"0123456789ABCDEF"};
无效延迟(u16 i){
当我 – );
/蜂鸣器/
void Fen(u8 a,b) //蜂鸣器生成函数
u8i,j;
对于(i=0;i
对于(j=0;j
{fen=~fen;延迟(b);}
/*液晶显示*/
void writecom(u8 com){//LCD写命令
rs=0;
读写=0;
e=0;
P0=com;
延迟(5);
e=1;
e=0;
void writedat(u8 dat){//LCD写入数据
rs=1;
读写=0;
e=0;
P0=数据;
延迟(5);
e=1;
e=0;
void initlcd(){//LCD初始化函数
写com(0x38); //显示模式设置
writecom(0x0c);
写com(0x06);
void xian(){//LCD显示数字函数
writedat(num[keyz]);
if(a==10){a=keyz; }//对于abcd,四位单独赋值
否则 if(b==10){b=keyz;}
否则 if(c==10){c=keyz;}
否则{d=keyz;}
if(j!=3){j++;}biao=0;
/*键盘*/
void Key(){u8 a=0;//矩形键盘函数
if(key!=0x0f){延迟(1000);
如果(键!=0x0f){
键=0x0f;
开关(键){
案例 0x07: keyz=0;biao=1;break;
案例 0x0b: keyz=1;biao=1;break;
案例 0x0d: keyz=2;biao=1;break;
案例 0x0e: keyz=3;biao=1;break;
键=0xf0;
开关(键){
案例 0x70: keyz=keyz;biao=1;break;
案例 0xb0: keyz=keyz+4;biao=1;break;
案例 0xd0: keyz=keyz+8;biao=1;break;
案例 0xe0: keyz=keyz+12;biao=1;break;
而((一个
void shi(){u8 i;//按键判断函数值
if(biao&&keyz!=15){ //判断flag biao是否为1,如果为1,则有按键操作且key的值不等于1
writecom(0x80+0x40+j); //累加操作的数字显示位置
if(j//数字显示位置边界
switch(keyz){//switch判断按键并执行相应的操作
案例 0:xian(); 休息;
情况1:xian(); 休息;
情况2:xian(); 休息;
情况3:xian(); 休息;
情况4:xian(); 休息;
案例5:xian(); 休息;
案例6:xian(); 休息;
案例7:xian(); 休息;
案例8:xian(); 休息;
案例9:xian(); 休息;
案例 10:writedat(num[keyz]);
j++;biao=0;打破;
案例 11:writedat(num[keyz]);
j++;biao=0;打破;
案例12:
biao1=0;//重置标志biao1,锁定
彪=0;打破;
case 13:writecom(0x01);delay(1000);//清全屏
对于(i=0;i
writecom(0x80+i);
writedat(zi[i]);}
j=0;彪=0;打破;
case 14: //删除当前数字的操作
writedat('');
j——;
writecom(0x80+0x40+j);writedat(' ');
彪=0;打破;
案例15://确认按钮
j++;biao=0;打破;
if(keyz==15){//如果键值等于15,则视为按下确认键
writecom(0x01);延迟(1000);
zh=a*1000+b*100+c*10+d;//组合ABCD、四位数字,判断是否是正确的密码
if(zh==1234){ //设置密码为1234
j=0;
biao1=1;//设置biao1标志为1,表示密码正确
keyz=17;//使键值跳出最大值15,并且不会循环显示
别的{
j=0;
biao1=0;//否则密码放错
键z=17;
分(20,200); //蜂鸣器错误
zh=0;a=10,b=10,c=10,d=10;//重置ABCD变量
对于(i=0;i
writecom(0x80+i);
writedat(zi[i]);}
无效主(){u8我; 发光二极管=1;
初始化液晶屏(); //液晶屏初始化函数
对于(i=0;i
writecom(0x80+i);
writedat(zi[i]);}
而(1){
钥匙(); //定义键盘功能
石(); //按钮判断函数,灯亮或者报警
P2=shu[keyz]; //数码管显示当前输入值
if(biao1==1){ led=0; //判断标志位biao1,如果为1,则密码显示正确,ok
writecom(0x80+0x40+10);
writedat('O');
writecom(0x80+0x41+10);
writedat('K'); }
else if(biao1==0){led=1;//如果biao1为0,则显示密码错误,显示no。
writecom(0x80+0x40+10);
writedat('N');
writecom(0x80+0x41+10);
writedat('O');}
4 模拟现象记录
4.1 密码输入错误
当密码输入错误时,蜂鸣器会发出警报声。
图4-1 密码输入错误
4.2 正确输入密码
图4-2 正确输入密码
总结
本次培训分为三个阶段:一是电路仿真和原理图; 二、焊接单片机实验板; 三、电路硬件调试。 每一步都做得很仔细。 这是首次将模拟应用于实践。 我感觉自己收获很多。 一般来说,一次性成功的板子很少,必须经过调试和错误检查,才能得到一块完整的电路板。 这次做了一个电子密码锁和液晶显示屏。 原理看似简单,但过程却让我深深感受到,无论多么简单的电路图,理论与实践还是有一定差距的。 参考书中的原理图经过亲自改进,使功能更加完善,尤其是程序的调试,需要花费很多时间,也是最困难的部分。 我们的最终目标是应用而不是理论结果。 我们学习的理论知识是比较高级的,但是因为我们通常会把知识付诸实践。 通过这次设计,培养了我的创新意识和综合素质,更好地掌握了电子产品设计和生产的技术和流程,提高了我的个人基本能力、实验设计能力、独立工作能力。 我的基础知识变强了,可以看图了。 、能焊接、能安装、能测量、能验资。 回顾这次的课程设计,感触还是很多的。 从理论到实践,在这些日子里,可以说是苦多于甜,但是我可以学到很多东西,同时,我不仅可以巩固以前所学的知识。 我收获了很多知识,学到了很多书本上没有学到的知识。 通过这次课程设计,我了解到理论与实践相结合是非常重要的。 仅有理论知识是远远不够的。 只有将所学的理论知识与实践相结合,从理论中得出结论,才能真正服务于社会,从而提高自己的实践水平和独立思考水平。 设计过程中遇到的问题可以说是困难重重,但好消息是最终都得到了解决。
参考
[1] 肖潇,葛文奇. 单片机技术在电气传动系统中的应用分析[J]. 中国标准化,2017。
[2] 毛阳. 单片机技术在电气传动控制系统中的应用与研究[J]. 中国高新区,2018。
[3] 贾飞. 项目教学法在单片机技术课程中的应用案例[J]. 张家口职业技术学院学报,2017。
[4]罗东华. 互联网+背景下单片机技术课程改革与建设研究[J]. 教育现代化,2017。 [5]李健。 单片机技术在矿区智能勘察设备中的应用[J]. 电子制作,2017。
[6] 严璞,王桂峰. 基于单片机技术的室内照明光伏优化供电控制系统设计[J]. 中国新技术新产品,2018。
[7]宋树林. 单片机技术在物联网电子产品中的应用研究[J]. 现代工业经济与信息化,2017。