密码锁-《单片机技术》课程设计说明书

上传人:无*** 文档编号:205128470 上传时间:2023-04-28 格式:DOC 页数:40 大小:1.12MB
收藏 版权申诉 举报 下载
密码锁-《单片机技术》课程设计说明书_第1页
第1页 / 共40页
密码锁-《单片机技术》课程设计说明书_第2页
第2页 / 共40页
密码锁-《单片机技术》课程设计说明书_第3页
第3页 / 共40页
资源描述:

《密码锁-《单片机技术》课程设计说明书》由会员分享,可在线阅读,更多相关《密码锁-《单片机技术》课程设计说明书(40页珍藏版)》请在装配图网上搜索。

1、 单片机技术课程设计说明书 密码锁 学 院: 电气与信息工程学院 学生姓名: 顾海涛 指导教师: 王韧 职称/学位 副教授 专 业: 自动化 班 级: 1201 学 号: 1230740118 完成时间: 2015年7月 湖南工学院单片机技术课程设计课题任务书学院:电气与信息工程学院 专业:自动化指导教师王韧学生姓名顾海涛课题名称密码锁内容及任务一、设计任务设计一个具有特定功能的密码锁。二、设计内容1、密码锁的硬件系统(1)、单片机最小系统模块(2)、供电模块(3)、显示模块(4)、键盘模块(5)、掉电存储保护模块(6)、报警模块2、密码锁的软件系统(1)、系统监控程序模块(2)、显示程序模块

2、(3)、键盘程序模块(4)、掉电存储程序模块(5)、报警程序模块三、设计要求密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息并报警提示。主要参考资料1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,2003.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3马忠梅.单片机的C语言应用程序设计M.第4版.北京:北京航空航天大学出版社,2003.6. 4李光飞.

3、单片机C程序设计指导M.北京:北京航空航天大学出版社,2003.01.5李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9.教研室意见 教研室主任:(签字)年 月 日摘 要在日常的生活和工作中,档案的保存多采用加锁的方式。使用机械锁,钥匙丢失后安全性降低。在许多领域,电子密码锁代替了机械锁,电子密码锁具有安全性高、成本低、功耗低等优点。电子密码锁以AT89S52作为主控芯片与数据存储器单元,结合行列式键盘输入、LCD液晶显示、报警等。C语言编写的主控制程序与EEPROM、AT24C02读写程序相结合,设计了可以多次更改密码,具有报警功能的电子密码锁系统。密码锁设计具有

4、防试探按键输入、开锁、报警、修改密码等功能,具有一定推广应用价值。 关键词:密码锁;AT89S52;报警;LCD显示 目 录1 绪论11.1 课题的背景及意义11.2 设计的主要任务12 设计思想与方案32.1 设计思想32.2 设计方案及工作原理33 硬件系统的设计53.1 AT89S52控制模块53.2 电源模块53.3 时钟模块63.4 复位模块63.5 下载模块73.6 键盘模块73.7 LCD12864显示模块73.8 报警模块83.9 AT24C02模块94 软件系统设计104.1 单片机资源使用情况104.2 软件系统主要软件模块介绍10 4.2.1 主程序设计10 4.2.2

5、键扫描程序设计11 4.2.3 键功能程序设计12 4.2.4 液晶显示程序设计13 4.2.5 密码设置程序设计14 4.2.6 开锁程序设计144.3 设计课题软件系统程序清单145 系统设计结果分析及结论155.1 系统使用说明155.2 软件调试155.3 系统实物调试结果155.4 误差分析165.5 设计体会16结束语17参考文献18致谢19附录20附录A 电路原理图20附录B 实物图21附录C 程序清单22附录D 元器件清单34III1 绪论 1.1 课题的背景及意义 安全问题是现代社会各界普遍关注的焦点之一。在现实生活中,很多场合都用到了电子密码锁,比如说门禁系统,银行账户管理

6、系统,保险箱等地方都要用到电子密码锁,而且对其要求也很高。所以高安全性密码锁的研究就成了一个必需的话题。近几年各种安全产品如指纹识别、卡辨识、红外防盗等已相继问世,但这类产品的特点是针对特定指纹或有效卡。只能适用于保密要求高或供个人使用的保险箱保险柜等,虽然这些产品安全性高,但其生产成本高,携带、安装及使用不方便,这在一定程度上限制了这类产品的普及和推广。随着单片机的迅速发展,其应用领域越来越广,如消费电子、家用电器、办公设备、商业营销设备、工业控制和机电一体化控制系统、智能测量仪表以及汽车与航空航天电子系统中都广泛采用了单片机。51系列单片机由于具有可靠性好,以及扩展控制功能强等优点,成为国

7、内目前应用最广泛的一种单片机之一。随着单片机的应用领域越来越广泛,可以看出它的优越性和可靠性,所以将其应用到保密和安全方面是必然的,也是相当可靠的,相当有意义的,基于单片机的电子密码锁的研究在保护财产和人身安全方面可以给人们带来更多更好的服务。电子锁由于其保密性高,使用灵活,安全性高,受到了广大用户的欢迎。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。课程设计的意义在于培养学生学习、思考、动手的能力,让学生在整个过程中通过查询相关资料学习电子密码锁的有关理论知识,熟悉理论的同时要明白电子密码锁的工作原理,从而展开主要功能的实现。通过老师的指导,查询相关资料确定密码锁系

8、统各个硬件模块的制作,以及完善软件系统和硬件系统。学生通过查询资料、设计方案、制作调试的过程,真正做到了理论实践相结合,这不仅对学生的学习能力、动手能力得到了相应的提高、更激发了学生自主学习、实践的兴趣。 1.2 设计的主要任务密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。密码锁设计是基于AT89S52为核心,由独立电源模块供电、液晶显示模块(采用12864液晶显示器),键盘模块(采用4*4行列式键盘)

9、,声光报警,掉电保护电路等模块组成。把所需模块通过排线连接在一起,设计其原理图,各部分的程序流程图,并连接实物电路板,利用Keil软件进行主程序和各模块子程序的编写,编译,调试。并把所需程序下载到单片机中,并记录设计的结果。2 设计思想与方案2.1 设计思想为实现电子密码锁的大众化,让个人的资料得到更好的保护,根据所学的知识和能力对电子密码锁进行设计,具有以下几点要求: (1)密码锁具有掉电保护的能力,防止因失电而导致密码数据的丢失。(2)密码锁具有超级密码,防止因用户忘记密码而导致密码锁不能正常使用。(3)密码锁可以根据用户的个人喜好和需求更改密码,让用户更方便的使用密码锁。(4)密码锁具有

10、保密输入密码和密码输入错误到达一定次数是进行声光报警的功能,更好的为用户保护个人数据。2.2 设计方案及工作原理 随着社会的进步和科技的发展,密码锁也得到了飞速的发展,出现了各种各样的密码锁,也有很多的方法可以制作密码锁。根据所学知识和能力,设计采用基于AT89S52单片机的方案制作密码锁。 密码锁设计以AT89S52单片机作为设计核心,利用单片机灵活的编程设计和丰富的I/O端口及其准确的控制,实现基本的密码控制功能。在单片机的外围电路外接输入行列式键盘用于密码的输入和一些功能的控制;外接12864LCD液晶显示器用于输出显示;外接LED及蜂鸣器用于声光报警。密码锁设计主要由单片机、行列式键盘

11、、液晶显示器和密码存储等部分组成。其中行列式键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的行列式键盘输入密码,然后经过单片机对用户输入的密码与单片机内部保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平转到液晶显示密码正确还是密码错误以及控制蜂鸣器及发光二极管是否进行声光报警。密码锁设计一共由两部分组成,硬件电路和软件部分。其中硬件部分由键盘输入模块、复位模块、晶振模块、报警模块、时钟模块、AT24C02模块等组成。软件部分对应的主要由主程序、键扫描程序、键功能程序、液晶显示程序、密码设置程序以及开锁程序等组成。密码锁设计原理框图如图1所示。图1 电路原理框图

12、3 硬件系统的设计3.1 AT89S52控制模块 AT89S52主要性能与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器,1000次擦写周期,全静态操作。32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。 AT89S52具有 8K 在系统可编程Flash存储器。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 AT89S52引脚图如图2

13、所示。图2 AT89S52引脚图3.2 电源模块单片机工作电压+5V,可通过设计一个输出为+5V的直流稳压电源电路获得,+5V直流稳压电源电路原理图见附录A。+5V直流稳压电源实物图见附录B.参数计算分析:220V的交流电,通过变压器降压(电压比18:1)得到12V的交流电,然后通过整流桥整流、大电容滤波(2200F)后,最后经过7805稳压芯片以及最后的小电容(0.1F)滤波可得稳定输出+5V直流电压。其中R2=470的作用主要是限流。电源电路如图3所示。图3 电源模块原理图3.3 时钟模块AT89S52单片机内部的振荡电路是一个高增益反向放大器,引线X1和X2分别是放大器的输入端和输出端,

14、单片机内部虽然有震荡电路,但要形成时钟电路,外部还要附加电路。AT89S52的时钟产生方式有两种,内部时钟方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以密码锁选用内部时钟方式。利用单片机内部的震荡电路在X1和X2引线上外接定时元件,内部振荡电路产生自激振荡,最常用的是在X1和X2之间接晶振与电路构成稳定的自激振荡器。其中晶振选用12MHz的石英晶体,1s为一个机器周期。选用33PF电容。以得到需要的时钟信号。时钟模块电路图如图4所示。图4 时钟模块电路图3.4 复位模块AT89S52基本复位电路共有上电复位,按键电平复位和按键脉冲复位3种。其中上电自动复位是通过电容充电来

15、实现,按键脉冲复位则是利用RC微分电路产生的脉冲来实现的,密码锁设计是由这两种复位实现。因电容的充电时间和R、C的值成正比,因此,经过计算,密码锁设计选用一个200和1K的电阻还有22F电容来控制复位时间。复位模块原理图如图5所示。图5 复位模块电路图3.5 下载模块密码锁设计是由USB接口与电脑进行串行通信,下载所需程序到单片机中。下载口所接引脚有电源、地、复位、P1.5P1.7。P1.5作为指令输入端,P1.6作为数据输出端,P1.7作为时钟输入端。下载模块电路图如图6所示。图6 下载模块电路图3.6 键盘模块根据系统的基本要求,采用由16个按键构成的行列式键盘分别接在AT89S52单片机

16、的P2.0-P2.7,相对于独立式键盘节省了大量口线和空间,给电路设计带来极大的方便,不过也相应的增加了程序的设计难度和设计挑战。采用矩阵式连接方法,组成44式16个按键,分别代表数字“09”、“确定键”、“返回”键等。键盘模块电路原理图如图7所示。3.7 LCD12864显示模块液晶显示是通过在主程序中调用相关的液晶功能函数来执行相应功能,经过液晶接在单片机上的P0及P1部分管脚,通过液晶功能函数LCD12864()的调用对液晶进行操作,用来驱动液晶以实现不同的显示功能,达到界面显示的要求。LCD的17口外接一50K电位器和2K电阻用来限流。液晶模块原理图如图8所示。图7 键盘模块原理图图8

17、 液晶模块电路原理图3.8 报警模块报警模块由蜂鸣器和单片机组成。蜂鸣器按形式可以分为电磁式蜂鸣器和压电式蜂鸣器,通常在蜂鸣器的两端加入一定的电流通过电磁感应产生震动就可以使蜂鸣器发出声音。蜂鸣器一般由振膜、电磁感应线圈组成,其结构简单,使用方便,适用于各种声音报警场合。但要注意蜂鸣器的正负极不能接反。密码锁设计选择的是一只压电式蜂鸣器,压电式蜂鸣器工作时需要100mA驱动电流。当单片机的P3.1口输出低电平时,三极管饱和导通,蜂鸣器发声,AT89S52输出高电平时,三极管截止,蜂鸣器不发声。蜂鸣器外接一1K电阻和一个型号为9012的三极管来进行限流和振荡作用。报警模块原理图如图9所示。图9

18、报警模块原理图3.9 AT24C02模块AT24C02是低功耗CMOS型E2PROM,内含2568位存储空间,具有工作电压宽(2.55.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和IO线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连

19、接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件.AT24C02正是运用了I2C规程,使用主从机双向通信,主机)和从机均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。AT24C02模块原理图如图10所示。图10 AT24C02模块原理图4 软件系统设计4.1 单片机资

20、源使用情况密码锁设计使用了单片机的P0口到P3口。P0口是单片机与12864液晶显示器通讯的数据口线;P2口主要是用于矩阵式键盘电路的扩展;P1.0接LCD12864的RS端;P1.1接LCD12864的RW端;P1.2为LCD12864提供使能信号;P2.0、P3.0口主要控制声光报警器的工作;P3.6控制24C02的SDA信号;P3.7控制24C02的SCL信号。4.2 软件系统主要软件模块介绍其中主程序是用于系统初始化,显示主界面,进入密码锁基本功能;键盘扫描程序通过扫描行列式键盘,判断是否有键按下,若有键按下则进行消抖处理后保存键值,并且调用相应的程序;键功能程序主要是判断哪一个按键按

21、下,并执行相应的键功能程序;液晶显示程序的基本功能有液晶初始化和对其读写的功能;密码设置程序的基本功能是对密码锁的密码进行修改;开锁程序主要是通过调用键扫程序,转换并保存按键对应的ASCII码值,并判断输入的密码是否正确。4.2.1 主程序设计主程序流程图如图11所示。图11 主程序流程图4.2.2 键扫描程序设计键扫描程序流程图如图12所示。图12 键扫描流程图4.2.3 键功能程序设计键功能程序流程图如图13所示。 图13 键功能流程图4.2.4 液晶显示程序设计液晶显示程序流程图如图14所示。图14 液晶显示流程图 4.2.5 密码设置程序设计密码设置程序流程图如图15所示。4.2.6

22、开锁程序设计 开锁程序流程图如图16所示。 图15 密码设置流程图 图16 开锁程序流程图4.3 设计课题软件系统程序清单 见附录C。5 系统设计结果分析及结论5.1 系统使用说明密码锁上电或按键复位后能自动显示系统提示界面,进入准备工作状态。密码锁具有系统原始密码888888以及超级密码(仅设置者知道,不可更改),用户可以通过行列式键盘设定并存储用户密码,密码输入时处于保密显示状态,密码输入错误显示“密码错误!请重新输入密码!”,输入密码错三次,蜂鸣器及LED亮叫10S(报警),锁屏10S,自动回到开锁状态(S13确定键,S16返回键,S1-S16都是密码数字键)。5.2 软件调试基本上排除

23、了应用系统的硬件故障后,就可以进入软件的综合调试阶段,这个阶段的主要任务是排除软件错误以及解决硬件遗留的问题。密码锁系统程序是用C语言编写的,软件调试可以一个模块一个模块地进行。在进行软件调试时要充分利用调试软件中单步、断点、设置观察项等调试手段,主要针对程序跳转错误、程序错误、动态错误和输入输出错误等方面着重调试。5.3 系统实物调试结果基本排除了应用系统的硬件故障后,进入软件的综合调试阶段。通过不断地修改程序与调试,基于AT89S52单片机的密码锁实物显示的效果如图17所示。图17 密码锁实物效果图5.4 误差分析经过软件调试和硬件调试发现按键的时间与电子密码锁响应的时间存在着比较明显的差

24、异。后经过上网查阅资料,翻阅书籍,询问同学后发现因为电子密码锁采用的是C语言编写的纯软件延时,所以实际时间上与理论时间存在一定的误差,时间误差只能无限接近而不能完全消除。另外可能因为晶振出现松动,液晶屏幕可能出现乱码。 5.5 设计体会通过课程设计的积极参与,经历了课题制作过程中的组装、改进、解决问题等几个过程之后,获得了许多实践经验,还总结了一些解决问题的办法。在课程设计中,遇到了硬件及软件的多方面问题。如在进行硬件调试时LCD液晶显示器不亮,经过上网搜索以及咨询班级同学后,得到了解决。并且通过撰写课程设计文档,使我更加熟练的使用WORD软件进行操作。了解了很多以前并不知道的操作方法。通过单

25、片机课程设计,认识到理论结合实践的重要性。课程设计可以锻炼动手能力和文档的书写能力。总之,在课程设计中,收获了很多技能。也理解了许多书本上没有的道理!结束语课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节。是对学生学习的理论、实际工作能力的具体训练和考察过程。随着科学技术迅速发展,单片机已经成为当今计算机应用中空前活跃的一门学科,在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。回顾起单片机课程设计,在其中学到很多很多的的东西,不仅可以巩固了学过的知识,而且学到了很多在书本上所没有学到过的知识。通过单片机课程设

26、计懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高实际动手能力和独立思考的能力。在设计的过程中,困难重重,遇到过各种各样的问题,同时在设计的过程中发现对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机掌握得不好,通过课程设计之后,一定把以前所学过的知识重新温故。课程设计终于顺利完成了,在设计中遇到了很多问题,在同学的帮助下,指导老师的监督督促下,终于得到解决。非常感谢!参考文献1 李广第,朱月秀,冷祖祁.单片机基础M.北京:北京航空航天大学出版社,2007.6:191802 唐俊瞿.单片机原

27、理及应用M.北京:冶金工业出版社,2003:1021213 阎石.数字电子技术基础M.北京:高等教育出版社,2006:50844 陆中宏,高松.单片机应用技术M.北京:机械工业出版社,2010:32615 邱光源.电路(第五版) M.北京:高等教育出版社,2006:1501626 康华光.电子技术模拟部分(第五版)M.北京:高等教育出2006:20617 单片机原理与应用及C51程序设计M.北京:清华大学出版社2006:85968 李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社,2003:8359 李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004:2365

28、10 马忠梅.单片机的C语言应用程序设计(第4版)M.北京:北京航空航天大学出版社,2003.6:2336致 谢首先,我要感谢我的父母从小对我的关爱和教育,照顾。让我一直可以健康快乐的成长。同时我们要感谢我们的指导老师王韧老师对我们的指导和关怀。他渊博的知识、严谨的治学态度和敏锐的分析能力,使我们受益匪浅。最后,我们要感谢同学,他们对我们的支持和付出是我们此次课程设计得以顺利进行的保障。附 录附录A 电路原理图附录B 实物图附录C 程序清单/*程序名:密码锁指导老师:王韧作者:顾海涛时间:2015年6月使用说明:输入原始密码或超级密码,如输入错误可按s16键返回取消,从新输入,按s13确定键,

29、进入是否修改密码,密码输入3次错误则报警。*/#include#includedelay.h#includeLCD_init.h#includejzanjian.h#includeE24c02.h#define uchar unsigned char#define uint unsigned intsbit led=P30;sbit fe=P31;uint mima6;uint supermima6;uint shuruma16;uint shuruma26;uint i,j,m,k,anjian;uchar v=0;/*保存超级密码*/void chaoji()uint x;for(x=0;

30、x6;x+) e24c02_write(0x40+x,6); supermimax=e24c02_read(0x40+x);/*原始密码*/void yuanshi()uint s;for(s=0;s6;s+) e24c02_write(s,8);/*键值函数*/void key_display()v=keyscan();if(v=0x11|v=0x21|v=0x41|v=0x81|v=0x12|v=0x22|v=0x42|v=0x82|v=0x14|v=0x24|v=0x44|v=0x84|v=0x18|v=0x28|v=0x48|v=0x88) switch(v)case 0x11:anj

31、ian=0;break;/0case 0x21:anjian=1;break; /1case 0x41:anjian=2;break; /2 case 0x81:anjian=3;break; /3 case 0x12:anjian=4;break;/4case 0x22: anjian=5;break;/5 case 0x42:anjian=6;break;/6case 0x82:anjian=7;break;/7 case 0x14: anjian=8;break;/8case 0x24: anjian=9;break; /9 case 0x44: anjian=10;break; /a

32、case 0x84:anjian=11;break;/bcase 0x18: anjian=12;break;/ccase 0x28: anjian=13;break;/d case 0x48:anjian=14;break;/e case 0x88:anjian=15;break;/fdefault:break;/*写密码函数*/void write_mima()for(i=0;i6;i+)mimai=shuruma1i;e24c02_write(i,mimai);/*读密码*/void read_mima()for(i=0;i6;i+) mimai=e24c02_read(i);/*开锁显

33、示函数*/void yes_repleace()/正确密码write_com(0x01);LCD12864_display(1,3,密码对了);LCD12864_display(2,3,祝贺您!);led=0;delay_ms(2000); /延时led=1;/灯亮/*错误显示*/void no_repleace()/错误密码write_com(0x01);LCD12864_display(1,3,密码错误!);LCD12864_display(2,1,请重新输入密码!);delay_ms(1000);jiaoyan();/*报警函数*/void no3_repleace() /3次错误wri

34、te_com(0x01);LCD12864_display(1,3,对不起!);LCD12864_display(2,3,机会已过);LCD12864_display(3,3,锁屏十秒钟);LCD12864_display(4,3,开启警报);m=200;fe=1;led=1; /fe警报 while(m-)fe=fe;led=led;delay_ms(50);/*首界面函数*/void shoujiemian() init();LCD12864_display(1,1,请输入密码:);LCD12864_display(4,1,确定);LCD12864_display(4,7,返回);/*修改

35、函数*/void xiugaimm()/修改密码 shoujiemian();write_com(0x90+3);for(i=0;i6;i+)/输入新密码anjian=16;while(anjian=16)key_display();write_date(0x2a);shuruma1i=anjian;while(anjian!=12&anjian!=15)key_display();write_com(0x01);LCD12864_display(1,1,请确认密码:);LCD12864_display(4,1,确定);LCD12864_display(4,7,返回);write_com(0x

36、90+3);for(i=0;i6;i+)/再次输入新密码anjian=16;while(anjian=16)key_display();write_date(0x2a);shuruma2i=anjian;while(anjian!=12&anjian!=15)key_display();for(j=0;j6;j+)/比较if(shuruma2j!=shuruma1j)break;anjian=16;if(j=6)/判断新密码是否相同write_mima();write_com(0x01);LCD12864_display(1,3,密码修改成功 );LCD12864_display(3,2,祝贺

37、您 );/正确反应elsewrite_com(0x01);LCD12864_display(1,3,因两次密码);LCD12864_display(2,3,不相同 );LCD12864_display(3,2,密码修改失败!);while(anjian!=12&anjian!=15)key_display();/*输入函数*/void shuru() shoujiemian();write_com(0x90+3);for(i=0;i6;i+)/取值anjian=16;while(anjian=16)key_display();write_date(0x2a);shuruma1i=anjian;

38、while(anjian!=12&anjian!=15)key_display();if(anjian=15)shuru(); /重新输入/*比较函数*/void jiaoyan()uchar flag;flag+;if(flag4)shuru();read_mima();for(j=0;j6;j+)/比较if(mimaj!=shuruma1j)break;for(k=0;k6;k+)/比较if(supermimak!=shuruma1k)break;if(k=5)write_com(0x01);LCD12864_display(1,2,启用超级密码!);delay_ms(500);for(i

39、=0;i6;i+) shuruma1i=supermimai; /密码改为超级密码write_mima();if(j=6|k=6)/判断密码是否正确j=0;k=0;flag=0;yes_repleace();/正确反应write_com(0x01);LCD12864_display(1,1,是否修改密码?);LCD12864_display(4,1,确定);LCD12864_display(4,7,返回);anjian=16;delay_ms(10);while(anjian!=12&anjian!=15)/是否修改密码key_display();if(anjian=12)xiugaimm()

40、;else no_repleace();/错误反应else/错误超过三次flag=0;no3_repleace();/*主函数*/void main() /yuanshi();chaoji();init();LCD12864_display(1,1,单片机课程设计); /封面显示 LCD12864_display(2,1,课题: 密码锁); LCD12864_display(3,1,指导老师: 王 韧); LCD12864_display(4,1,设计学生: 顾海涛);delay_ms(5000);while(1)jiaoyan();/*/程序名:LCD12864显示程序指导老师:王韧作者:顾

41、海涛时间:2015.6功能:LCD初始化使用说明:rs=P10;rw=P11; en=P12;D0-D7接p00-p07口/*/#include#includeLCD_init.h#includedelay.h#define uchar unsigned char#define uint unsigned int /定义sbit rs=P10;sbit rw=P11; sbit en=P12; /液晶口线/*液晶写指令*/void write_com(uchar com) /写指令rs=0;rw=0;en=0;P0=com;delay_ms(2);en=1;delay_ms(2);en=0;/

42、*写数据*/void write_date(uchar date) rs=1;rw=0;en=0;P0=date;delay_ms(2);en=1;delay_ms(2);en=0;/*初始化*/void init()en=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);/*显示函数*/void LCD12864_display() switch (hang) case 1:write_com(0x7f+lie);break; /液晶第一行case 2:write_com(0x8

43、f+lie);break; /液晶第二行case 3:write_com(0x87+lie);break; /液晶第三行case 4:write_com(0x97+lie); /液晶第四行while() write_date(); /*/程序名:行列式键扫描程序指导老师:王韧作者:顾海涛时间:2016.6使用说明:s1-s8接p20-p27口/*/#include#includejzanjian.h#includedelay.h#includeLCD_init.h#define uchar unsigned char#define uint unsigned int#define anjian

44、_bus P2uchar keyscan()uchar scan,tmp; /列号,行号anjian_bus=0xf0; /发全行0扫描码if(anjian_bus&0xf0)!=0xf0) /若有键按下delay_ms(20); / 延时去抖if(anjian_bus&0xf0)!=0xf0) /延时再判键是否还按下scan=0xfe;while(scan&0x10)!=0) /逐行扫描anjian_bus=scan; /输出行扫描码if(anjian_bus&0xf0)!=0xf0) /本行有键按下tmp=(anjian_bus&0xf0)|0x0f;delay_ms(500);while

45、(anjian_bus&0xf0)!=0xf0); /按键判释放return (scan)|(tmp); /还回键值 else scan=(scan1)|0x01; /行扫描码左移一位return (0); /无键按下,还回0/* /程序名: 24c02程序指导老师: 王韧作者:顾海涛时间:2015.6使用说明: SDA接p36;SCL接p37/*/#include#includeE24c02.h#includedelay.h#define uint unsigned int#define uchar unsigned charsbit sda=P36;sbit scl=P37;/*起始信号函

46、数*/void start(void) /起始信号sda=1;scl=1;delay_us(6);sda=0;delay_us(6);scl=0;/*终止信号函数*/void stop(void) /终止信号sda=0;scl=1;delay_us(6);sda=1;delay_us(6);sda=0;scl=0;/*应答信号函数*/void ack(void) /应答信号uchar i;scl=1;delay_us(5);while(sda=1)&(i200)i+;scl=0;delay_us(5);/*非应答信号函数*/void unack(void) /非应答信号sda=1;delay_

47、us(5);scl=1;delay_us(5);scl=0;delay_us(5);/*写一个字节*/void i2cwr_byte(uchar date) /i2c写一个字节uchar i;for(i=0;i8;i+)sda=(bit)(date&0x80);date=1;delay_us(5);scl=1;delay_us(5);scl=0;/*读一个字节*/uchar i2cre_byte(void)uchar i,date;scl=0;delay_us(5);sda=1;for(i=0;i8;i+)scl=1;delay_us(5);date=1;date+=(uchar)sda;scl=0;delay_us(5);return date;/*写数据*/void e24c02_write(uchar add,uchar date)scl=1;sda=1;start();i2cwr_byte(0xa0);ack();i2cwr_byte(add);ack();i2cwr_byte(date);ack();stop();delay_ms(30);/*读数据*/uchar e24c02_read(uchar

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!