ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:238.60KB ,
资源ID:10286319      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10286319.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(密码锁控制器的设计毕业设计.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

密码锁控制器的设计毕业设计.docx

1、密码锁控制器的设计毕业设计成绩:课 程 设 计 任 务 书所属课程名称 单片机原理与接口技术 题 目 密码锁控制器的设计 分 院 机电学院 辽东学院1.课 程 设 计 任 务 书课程设计题目:基于Proteus的单片机密码锁控制器的设计 课程设计时间:自 2013年 7 月 8 日起至 2013年 7 月15日。课程设计要求:要求设计的电子密码锁的密码用键盘上的数字按键产生的6位数字码构成的密码,如果输入密码正确开锁(发光二极管亮),如果密码不正确,发出报警信号。(1)显示位数:6位密码显示(2)键盘设计密码学生签名: 2013年07月15日课程设计评阅意见项目课程设计态度评价10%出勤情况评

2、价10%任务难度、量评价10%创新性评价10%综合设计能力评价20%报告书写规范评价20%答辩20%成绩综合评定等级评阅教师: 2013年 07月 15 日2.摘 要随着社会的发展,单片机市场已经形成一个规格齐全、品种繁多的大家族,用户有非常大的选择余地。单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有非常重要的用途。电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来

3、实现的。设计包括系统硬件的设计和软件的设计,硬件设计主要是对CPU的选用,本设计选用的是型号为AT89C51的单片机,其次是各种扩展模块的选用,如74LS273、74LS244等扩展模块,还有各种电子元件的选用。【关键字】单片机 密码锁 报警功能3.绪 论计算机系统已明显地朝巨型化、单片化、网络化三个方向发展。巨型化发展的目的在于不断提高计算机的运算速度和处理能力,以解决复杂系统计算和高速数据处理,比如系统仿真和模拟、实时运算和处理。单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算简称单片机。单片机的内部硬件结构和指令系统主要是针对自动控

4、制应用而设计的所以单片机又称微控制器MCU(MicroControllerUnit)。用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(EmbeddedMCU)。单片机自20世纪70年代问世以来,以其鲜明的特点得到迅猛发展,已广泛应用于家用电器、智能玩具、智能仪器仪表、工业控制、航空航天等领域,经过30多年的发展,性能不断提高,品种不断丰富,已经形成自动控制的一支中坚力量。据统计,我国的单片机年容量已达13亿片,且每年以大约16的速度增长,但相对于国际市场我国的占有率还不到1。这说明单片机应用在我国有着广阔的前景。对于从事自动控制的技术人员来讲,掌握单片机

5、原理及其应用已经成为必不可少的学习任务。随着人们生活水平的提高,日常生活和工作中的住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等一系列安全防盗问题变的尤其突出。传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,且人们常需携带多把钥匙, 使用极不方便, 一旦钥匙丢失安全性即大打折扣。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁因具有安全性高、成本低、功耗低、易操作等优点,受到了广大用户的青睐。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。但当时多半是配合机械锁一起作用且存在着诸如体积较大,成本较高

6、,可靠性较低等缺点一时难以普及。20世纪80年代后,随着信息技术、集成电路、半导体技术的发展,电子密码锁的设计也取得了快速的进步。现今常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。对于采用集成电路控制的方案,其中的编码电子锁电路分为编码电路、控制电路、复位电路、解码电路、防盗报警电路、门铃电路,而电子锁主要由输入元件、电路(包括电源)以及锁体三部分组成。显然此种方案的物理实现结构较为复杂且重新设置密码、输入密码的操作过程也会给用户带来一定的不方便;而利用单片机控制的方案,由于单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密

7、码锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能,但其也有一定的局限性,就在于其控制原理的复杂以及要求设计人员具有更加良好的程序设计能力,调试较为繁琐,否则程序一旦跑飞将造成意想不到的损失。4.设 计 方 案 分 析4.1 课程设计目的采用MCS-51系列单片机AT89S52作为主控芯片,结合外围电路,设计密码锁控制系统,能够实现:如果输入密码正确开锁(绿色发光二极管亮),如果密码不正确,发出报警信号(红色发光二极管亮)。4.2 方案的确立1.为了实现密码的保密性,采用一个44的矩阵式键盘可以任意设置用户密码,从而提高了密码的保密性。2.采用LCD显示单元,提高了可读性 ,提供良好的人

8、机界面。4.3 硬件电路方框图电路由两大部分组成:AT89S51单片机及其外围电路和密码锁电路。图4-1 系统结构框图5.模 块 介 绍5.1 复位电路图5-1 复位电路5.2 时钟电路图5-2 时钟电路5.3 LCD显示电路图5-3 LCD显示电路5.4 矩阵键盘图5-4 矩阵键盘5.5 报警电路图5-5 报警电路6.Proteus 硬 件 仿 真6.1 硬件模拟软件介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单

9、片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它

10、也支持IAR、Keil和MPLAB等多种编译器。运行界面如下图:图6-1 Proteus运行界面在Proteus绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。实践证明,在使用 Proteus进行系

11、统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus有较高的推广利用价值。6.2 程序流程图图6-2 程序流程图6.3 软件编译与调试图6-3 编译与调试6.4 Proteus图图6-4 Proteus图6.5 芯片引脚功能介绍AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8T

12、TL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被

13、写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉

14、的缘故。 P3口也可作为AT89C51的一些特殊功能口,如:P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3口同时为闪烁编程和编程校验接收一些控制信号。 7.源 程 序 及 注 释#include #define uint unsigned int#define uchar unsigned char#define KEY P1 /键盘输入端口#define No_key 20 /无按键时的返回值#define lcddata P0 /1602的数据输入端口sbit lcden= P22;sbit lcdrs= P20;sbit lcdrw= P21;sbit light=

15、 P30;sbit light1= P31;uchar j ; /用来统计输入 个数的全局变量uchar aa; /用来在定时器中计数的 全局变量 uchar code table= Hello!;uchar code table1= OK! ;uchar code table2=Enter please: ;uchar code key_table16 = 1,2,3,10, 4,5,6,11, 7,8,9,12, 0,13,14,15 ;uchar password=9,2,0,6,0,1 ; /设定初始密码uchar save6; /保存输入的数据uchar conflag ; /确认标

16、志uchar lockflag; /锁键盘标志uchar startflag; /开始标志 void delay(uint z); /延时子函数void wright_com(uchar com); /写指令函数void wright_data(uchar date) ; /写数据函数void init(); /初始化void display_OK(); / 显示OKvoid delete(); /删除输入的最后一个数uchar keyscan() ; /带返回值的键盘扫描程序void enter_code(uchar t); /输入密码函数,把输入的数据存入数组中并在屏幕上显示相应的东西,v

17、oid confirm(); /确认密码对不对,把输入的数据与密码逐一对比,完全一样刚正确,void succeed_an(); /输入密码成功时的 响应,void fail_an(); /输入密码 失败时 响应 void lockkey(); /锁键盘三秒void reset(); /复位函数void display_enter(); /显示输入void main(void) uchar temp; init(); while(1) if(lockflag) temp=keyscan(); / 锁键期间也要进行键盘扫描 if(temp!=No_key) /重新记时三秒 aa=0; /重新在定

18、时器中计数 else temp=keyscan(); /反复扫描输入,等待随时输入 if(temp!=No_key) /有按键按下才进行下面的操作 if(temp=10) reset(); startflag=1; /开始标志置位 if(startflag) enter_code(temp); /每扫描一次键盘就要进行一次处理,保存输入的数值 if(temp=13) /按下确认键盘就要进行密码确认 confirm(); /进行确认判断 if(conflag) /密码确认为正确 succeed_an(); /密码正确,作出相应的反应 else fail_an(); /密码错误,作相应反应 if(

19、temp=14) delete(); /作删除操作 /* 显示enter*/void display_enter() uchar num; wright_com(0x80);for(num=0;num13;num+) wright_data(table2num); /* 显示OK*/void display_OK() uchar num;wright_com(0x80);for(num=0;num13;num+) wright_data(table1num); /* 删除最后一个*/void delete() wright_com(0x80+0x40+j); /确定删除对象wright_dat

20、a( ); /显示空格即为删除save-j=0; /删除后数据清零wright_com(0x80+0x40+j); /为下次输入数据时写好位置,必须是在最后一个后面/* 对各种变量进行复位*/void reset()uchar num;display_enter();wright_com(0x80+0x40); /擦除屏幕上的显示for(num=0;num=0&t10) if(j=0) wright_com(0x80+0x40) ; /第一输入时要先写入地址指令,否则无法显示 wright_data(*) ; else wright_data(*) ;/不是第一个输入则不用再写地址 savej

21、+=t; /保存输入的数据 /*校对密码以确定是不是正确的*/void confirm()uchar k;for(k=0;k=60) /三秒到了 aa=0; /清零可以方便下次再使用 light1=1; /关闭警报 lockflag=0; /标志清零解除键锁,方便下次使用 /*初始化*/void init() uchar num; /*定时器初始化*/ TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1; /开启总中断TR0=1;/把定时器关闭/*1602初始化*/lcdrw=0; /这个必须要置 零,否则无法正常显示 l

22、cden=0;wright_com(0x38) ; /初始化 wright_com(0x0c) ; /打开光标 0x0c不显示光标 0x0e光标不闪,0x0f光标闪wright_com(0x01) ; /清显示wright_com(0x80) ;for(num=0;num0;x-) for(y=110;y0;y-) ;/*4x4矩阵键盘扫描函数*/uchar keyscan() uchar temp,num=No_key; /num的初值要为无键盘按下时的返回值/*扫描第一行*/ KEY=0xfe; temp=KEY; temp=temp&0xf0; /读出高四位 while(temp!=0x

23、f0) delay(5); /延时消抖 temp=KEY; temp=temp&0xf0; while(temp!=0xf0) /确认确实有按键按下 temp=KEY; switch(temp) /根据这八个电平可以确定是哪个按键按下 case 0xee:num=1; break; case 0xde:num=2; break; case 0xbe:num=3; break; case 0x7e:num=10; break; while(temp!=0xf0) /等待松手 temp=KEY; temp=temp&0xf0; /*扫描第二行*/ KEY=0xfd; temp=KEY; temp=

24、temp&0xf0; while(temp!=0xf0) delay(5); temp=KEY; temp=temp&0xf0; while(temp!=0xf0) temp=KEY; switch(temp) case 0xed:num=4; break; case 0xdd:num=5; break; case 0xbd:num=6; break; case 0x7d:num=11; break; while(temp!=0xf0) temp=KEY; temp=temp&0xf0; /*扫描第三行*/ KEY=0xfb; temp=KEY; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=KEY; temp=temp&0xf0; while(temp!=0xf0) temp=KEY; switch(temp) case 0xeb:num=7; break; case 0xdb:num=8 ; break; case 0xbb:num=9; break; case 0x7b:num=12; break; while(temp!=0xf0) temp=KEY; temp=temp&0xf0; /*扫描第四行*/ KEY=0xf7; temp=KEY;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2