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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

密码锁修改后带程序版.docx

1、密码锁修改后带程序版 湖南科技大学课程设计报告课程名称:单片机原理及应用课程设计设计题目: 电阻测量 院 系: 通信与控制工程系 专 业: 通信工程 班 级: 学生姓名: 学 号: 08409218 08409224 起止日期: 2010年12月20日 2010年12月31日 指导教师: 教研室主任: 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日 目 录设计要求 1一 方案论证

2、与对比 11.1方案一 11.2方案二 2二 硬件电路设计 32.1 总体设计框图 32.2 功能模块 32.21 开锁电路设计. 32.22 按键电路设计 42.3 LED显示电路 42.4 STC89C52芯片接口电路设计 62.5 8255A芯片接口电路设计 82.6密码正确时显示电路的设计 10三 系统软件设计 113.1 主程序设计 113.2 键盘程序设计 11四 系统功能测试与整体指标 12五 详细仪器清单 13六 总结与思考及致谢 14七 参考文献 15附录:源程序 16摘 要从经济实用的角度出发,采用美国Atmel公司的单片机STC89C52与8255作为主控芯片,结合外围的

3、键盘输入、显示、报警、开锁等电路,用c语言编写主控芯片的控制程序,设计了一款具有报警功能的电子密码锁,能完成按密码开锁,超次锁定,管理员解密基本的密码锁功能。经实验证明,此设计有安全性高、价格低廉,低功耗,便于实现,易于改进等优点,具有推广价值。 关键词:单片机;电子密码锁;矩阵键盘;LED数码管电子密码锁设置设计要求密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。2、密码的输入: 采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;

4、或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。一 方案论证与对比1.1方案一以STC89C52为核心的单片机控制。其原理如图1所示。 图1 单片机系统原理方框图利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,能实现基本的密码锁功能,且添加LED灯提示功能。 1.2方案二 采用数字电路控制。其原理方框图如图2所示。 图2 数字电路原理方框图采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘

5、输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,更重要的是它更

6、加适合我们学生做课程设计,方便简洁准确的达到课程设计的要求,所以我们采用第一种方案。本方案采用一种是用以89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现达到设计要求基本的密码锁功能。二 硬件电路设计2.1 总体设计总框图(图3)图3 总体设计框图2.2 功能模块2.21开锁电路设计通过单片机送给开锁执行机构,将P3.5置低电平,密码正确指示灯亮,从而达到开锁的目的。其原理如图4所示。图4 密码锁开锁示意图2.22按键电路设计本设计使用44矩阵键盘中的两个按键S4,S5。其中S4为数字键,S5为功能键。S4键功能是:输入密码的长度,输入密码。S

7、5键功能是:确认键矩阵结构图如图5所示。图5 44矩阵键盘原理电路图2.3 LED显示电路本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,用89C52单片机经8255A扩展6位八段码LED显示器,用8255A的B口作为段码(字形代码)数据口,PA作为位控制端口。逻辑电路结构如图6所示。 图6 LED数码管逻辑结构图数码管的笔画顺序,本组用到的数码管是共阳极的,当在公共引脚接上电源正极,笔画脚通过一个220欧姆的电阻接负极,对应的笔画就会点亮。显示的数字09的8位二进制码下表所示。要在某位数码管上显示一个数字,首先把待显示的数字的显示码送给8255的PB口,接着

8、选中要显示的位。例如:要在开发板中最右边的数码管上显示一个0,则需要先把0的显示码0XC0送至PB口,接着给PA5赋低电平,随后让单片机保持这个值不变,下载时钟程序即可让数码管显示规定的数字。由于我们需要让六位数码管同时动态显示,还应考虑到显示时间的长短,这时用一个延时程序来控制即可。表 1 数码管显示数值所对应的段码表显示码数字十六进制二进制dpgfedcba00xc01100000010xf91111100120xa41010010030xb01011000040x991001100150x921001001060x821000001070xf81111100080x80100000009

9、0x9010010000注:1对应的笔画熄灭,0对应的笔画点亮。注:1对应的笔画熄灭,0对应的笔画点亮。2.4 STC89C52芯片接口电路设计 STC89C52是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。C52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其内部结构如图7所示。 图7 MCS-51单片机的内部结构框图2.41中央处理器中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度

10、整个单元系统协调的工作,完成运算和控制输入输出功能等操作。2.42数据存储器(RAM)STC89C52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM有256个,可存放读写的数据,运算的中间结果或用户定义的字型表。2.43程序存储器(ROM)STC89C52共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。2.44定时/计数器8051有三个16位的可编程定时/计数器,以实现定时或计数产生中断,用于控制程序转向。2.45并行输入输出(I/O)口STC89C

11、52共有4组8位I/O口(P0、 P1、P2和P3),用于对外部数据的传输。2.46全双工串行口STC89C52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。2.47中断系统STC89C52具备较完善的中断功能,有两个外中断、三个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。2.48时钟电路StC89C52内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但STC89C52单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Har

12、vard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的 MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构2.49 STC89C52的引脚说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直插DIP结构,下图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。芯片图如图8所示。 图8 STC89C52芯片图2.5 8255A芯片接口电路设计2.51.内

13、部结构8255A的内部结构由三部分电路组成:与CPU的接口电路、内部控制逻辑电路和与外设连接的输入/输出接口电路,8255芯片图如图9图9 8255芯片引脚图(1)与CPU的接口电路与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。数据总线缓冲器是一个三态、双向、8位寄存器,8条数据线D7D0与系统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入指令读取外设输入的数据。(2)内部控制逻辑电路内部控制逻辑包括A组控制与B组控制两部分。A组控制寄存器用来控制A口PA7PA0和C口的高4位PC7PC4;B组控制

14、寄存器用来控制B口PB7PB0和C口的低4位PC3PC0。它们接收CPU发送来的控制命令,对A, B, C 3个端口的输入/输出方式进行控制。(3)输入/输出接口电路 8255A片内有A, B, C 3个8位并行端口,A口和B口分别有1个8位的数据输出锁存/缓冲器和1个8位数据输入锁存器,C口有1个8位数据输出锁存/缓冲器和1个8位数据输入缓冲器,用于存放CPU与外部设备交换的数据。2.52引脚信号 RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选

15、中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB

16、0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择; 当A0=1.A1=1时,控制寄存器被选;2.6密码正确时显示电路的设计当密码输

17、入后,我们通过单片机来控制流水灯显示是否正确,如果正确,那么就会有一个流水灯被点亮,其原理图如下图10所示: 图10 流水灯原理图 流水灯是由发光二极管和限流电阻构成的,在设计电路中我们通过单片机的P16引脚,来控制我们选择点亮的流水灯,密码正确则灯D11点亮。三 系统软件设计3.1主程序设计主程序主要完成初始化、检查有无按键按下、以及调用显示等等,密码输入正确,则流水灯亮。其流程图如9所示 图9 主程序流程图3.2 键盘程序设计 键扫程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按

18、下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。其流程图如图10所示。 图10 键盘程序流程图四 系统功能测试与整体指标很多程序就是在调试过程中慢慢完善,先前所完成的程序部分只能算一个基本框架,当然,这一切是建立在硬件没用问题的基础上。程序在进行调试时,可以像硬件一样使用分模块调试,这样可以最迅捷的找出问题所在,不受其他模块的影响。软件调试在Wave或Keil C51编译器下进行,源程序编译及仿真调试应分段或以子程序为单元逐个进行,最后可结合硬件实时调试。刚开始调试的时候没有考虑的那么完善,仅仅考虑到密码对了,就算结束。在后续的修改与调试期间,发现了许多问题。

19、比如当输入密码时,若4秒没有输入,就会跳过这位,直接进入到下一位的输入。若一直没有输入,最终将跳过所有密码输入位,显示“Error”。而开始时,并没有考虑到这点。发现这些问题后,我们立即进行了改善,解决了这个问题。在整个设计的过程中,大问题没有,但小问题一直不断。但是我们一直努力发现问题,并解决问题,做到了自己最大的努力。五 详细仪器清单表1 仪器清单仪器名称数量仪器名称数量STC89C52芯片1个1k电阻23个按键2个2k电阻2个30pF电容3个晶振1个8255芯片1个三极管6个八段数码管5个PCB板1个流水灯8个六 总结与思考及致谢 课程设计是考验我们大学这三年来的所学,它要求我们将大学这

20、三年来所学到的知识能够融会贯通、熟练应用,并要求我们能够理论联系实际,培养我们的综合运用能力以及解决实际问题的能力。通过这段时间的设计,自己对学习有了更深刻的认识。在大学学习的这段期间内,知识是通过一门门独立的课程传授给我们的,而实际问题能够顺利的得到解决,不但需要多方面的知识,而且还需要对这些知识综合地加以运用。所以此次毕业设计既是学习的过程,也是实践的过程,不仅要对所学的知识加以了巩固和延伸,也让我学会慎密、全面的考虑问题,抓住主要矛盾加以解决的思维方法和围绕问题多方设法以求得解决的顽强意志。 在这半学期里,我们不断学习、不断积累并且不断的提高。在谢四莲老师的悉心指导下,我们从最初的开题报

21、告开始做起,进行设计方案的确定;之后开始我们自己的源程序的编写,时序的仿真和论文初稿的拟定等几个阶段。 在设计的过程中也遇到了许多困难,比如刚接到题目时发现本设计需要使用汇编语言编写程序,然后进行仿真,实现其基本功能,由于自己对汇编语言不是很懂,所以该设计一开始就对自己造成了一定的麻烦。在编写一些模块时,许多功能一开始都没考虑到,所以在实现其功能时都出现了其它应有的错误,再后来就是仿真了,因为各模块需要根据所设计的要求来,所以在设置一些参数时都很困难。 这次的课程设计,是对我这三年来所学的专业知识是否踏实的检验,让我们对这三年中所学知识进行了综合,也让我们温习了一些已经快要淡忘的专业知识。与此

22、同时,我也充分认识到自身的许多不足:基础知识学得不够扎实,缺乏综合运用及理论联系实际的能力等。另外在此次设计过程中,也学会了其它的一些东西,学会了自己查找资料,快速浏览书籍掌握内容等学习方法。七 参考文献1 张鑫. 单片微机原理与应用. 北京.电子工业出版社. 20082 楼然苗.李光飞. 单片机课程设计指导. 北京.航空航天大学出版社. 20073 长洪润.刘秀英. 单片机应用设计200例(上、下). 北京.航空航天大学出版社.20064 张毅刚. 新编MCS-51单片机应用设计(第3版)哈尔滨工业大学出版社.20085 马静.单片机原理与应用. 实践教学指导书中国计量出版社. 2003附录

23、:源程序#include #define uchar unsigned char#define uint unsigned int#define NO_KEY_DOWN 0XFF#define SET 0X28#define UP 0X18uchar xdata PA _at_ 0xD9FF, PB _at_ 0XDBFF, PC _at_ 0XDDFF, /定义外部变量,强制分配地址 EX_PORT_CON _at_ 0XDFFF; uchar code LED_CODE=0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA, /LED段码(09) 0X20,0X2

24、8; uchar code SECRATE3=12,34,50;uchar data INPUT_NUM3=0,0,0;uchar data DISPLAY_BUF6;uchar code ERROR6=0X64,0X77,0X77,0X27,0X77,0XFF;uchar *PP;uchar BIT_PLACE=0,COUNT=0,KEY,S=0,LENGH=1;bit X=0,Y=0;void Input_Secret();void Display();void Delay(uint A);uchar Key_Scan();void Num2_Buf();void main() EX_PO

25、RT_CON=0X81; PA=0XFE; PB=0XFF; EA=ET0=TMOD=1; TR0=1; TH0=0X3C; TL0=0XB2; PP=DISPLAY_BUF; BIT_PLACE=0; goto START; while(1) Display(); if(Key_Scan()=SET) START: while(1) Y=0; KEY=Key_Scan(); Display(); if(KEY=UP) if(LENGH=6)LENGH=1; else LENGH+; if(KEY=SET)Y=1;break; PP=DISPLAY_BUF; X=1; S=0; while(1

26、) Num2_Buf(); KEY=Key_Scan(); Display(); if(KEY=SET)|(S=4)&X) if(PP=ERROR)PP=DISPLAY_BUF; / if(BIT_PLACE=0XFF)BIT_PLACE=0; / else if(BIT_PLACE=9)INPUT_NUMBIT_PLACE/2-=9; else INPUT_NUMBIT_PLACE/2+; else /在十位 if(INPUT_NUMBIT_PLACE/2=90)INPUT_NUMBIT_PLACE/2-=90; else INPUT_NUMBIT_PLACE/2+=10; void Display() uchar I,J=0X01; if(Y) for(I=0;ILENGH;I+) PB=0XFF; PA=0XFF; if(BIT_PLACE=I)&(COUNT=10); else PB=(*(PP+I); PA=(JI); Delay(200); else PA=0XDF; PB=LED_CODELENGH; void Num2_Buf() uchar I; for(I=0;I20)COUNT=0; if(COUNT=20) S+;void Delay(uint A) while(A-); uchar

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1