毕业设计基于单片机的电子密码锁_第1页
毕业设计基于单片机的电子密码锁_第2页
毕业设计基于单片机的电子密码锁_第3页
毕业设计基于单片机的电子密码锁_第4页
毕业设计基于单片机的电子密码锁_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用数字密码代替钥匙的单片机控制的电子密码锁应运而生。在这次毕业设计中我采用at89c51单片机为核心4*4矩阵键盘作为输入器件,lcd1602字符型液晶作为显示电路来制作基于单片机的电子密码锁。该密码锁具有可更改密码、密码掉电保护、输入密码错误报警、输入密码错误三次锁定

2、键盘的功能。该密码锁具有操作人性化、低功耗、高保密性等一系列优点。本文详细地介绍了系统硬件与软件的设计,以及仿真调试的详细过程。 关键词:4*4矩阵键盘, at89c51, 1602lcd显示器,密码锁 abstract in our daily life, the security of house, company department, documents and finance forms, also some personal information always used the lock to protect them. if use the normal keys to loc

3、k out the door, we should taken many keys with us . that is so difficult to use. and if we lost the keys with careless, the security looks very easy to break out. as the developing of the technology people ask for high security machines. for satisfy this request, the cipher lock is appeared. the cip

4、her has higher security, lower cost, lower power and easy to use. at the graduation design i at89c51 microcontroller as the core 4 * 4 matrix as input devices, lcd1602 keyboard type lcd display circuit as a character based on single chip to make the electronic combination lock. this combination lock

5、 has may change your password, password off electricity protection, input password mistake alarm, input password mistake three times the function of lock the keypad. this combination lock have operation humanization, low power consumption, high confidentiality and so on a series of advantages. this

6、paper introduced in detail the system hardware and software design, and the detailed process simulation debugging. keywords: matrix keyboards, at89c51, 1602lcd,combination lock目录第1章 概论11.1 设计意义11.2背景知识介绍11.3 本文主要工作以及内容安排2第2章 系统总体方案设计32.1 总体方案设计32.1.1 实现功能:32.1.2 4*4键盘说明42.2 at89c51单片机介绍42.3硬件设计62.3.

7、1 时钟电路的设计62.3.2 复位电路的设计72.3.3 密码存储电路的设计82.3.4 键盘电路设计92.3.5 显示电路的设计112.3.6 报警电路142.3.7 开锁电路15第3章 软件设计163.1 编程工具介绍163.2 编程语言介绍173.3 软件编程183.3.1软件设计原则183.3.2 软件设计方案183.3.3 4*4矩阵键盘的编程方法193.3.4液晶显示子程序213.3.5 密码比较和报警程序223.3.6 密码重置程序设计23第4章 软件仿真以及调试264.1 仿真软件简介264.2 仿真程序基本工作界面264.3 仿真过程27总结30参考文献31致谢32附录a:

8、程序主函数33附录b:总电路图36第1章 概论1.1 设计意义 单片机的应用是具有高度现实意义的。单片机极高的可靠性,微型性和智能性,单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入到我们的日常生活当中。在这次基于单片机的电子密码锁毕业设计中,不仅使我加深对大学所学知识的理解,而且使我对单片机有了进一步的了解。在设计的过程中,不仅使我熟悉了at89c51单片的基本结构和相关的参数,而且了解单片机最小系统的构成。在这次设计中所学到的相关知识也许会在将来的工作和学习中用到。 随着单片机在各个领域的广泛应用,许多用单片机做控制的密码锁系统也应运而产生,如用单片机控制lcd液晶的各种

9、显示器显示数据,用单片机控制led七段操作显示器等。本次设计用由at89c51编程控制lcd1602液晶作显示的密码锁系统。该系统具有设定密码并储存密码、报警、输入密码错误锁定键盘等功能。它具有高保密性,操作方便、性能稳定等特点,可以广泛适合各类档案管理场所或者家庭室内财务保管处。通过本次基于at89c51系列单片机密码锁的设计,可以了解、熟悉有关单片机开发设计的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下一些方面: 1) 密码锁系统包含了8051系列单片机的最小应用系统的构成。 2) 可以了解到1602液晶的接口、工作原理以及这种显示器的接口实例

10、与具体连接与编程方法。 3) 用at24c02储存密码的原理和方法。1.2背景知识介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,价格低廉,可靠性高,灵活性好,开发较为容易。单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,

11、数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个层次中,如车间流水线控制、自动化系统等、智能型家用电器等。atmel公司开发生产了新型的8位单片机at89系列单片机。它不但具有一般mcs-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的at89c51就是其中典型的代表。单片机内部也有和电脑功能类似的模块,比如cpu,内存,并行总线,还有和硬盘作用相同的存储器件,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩vcd等等的家电里面都可以看到它的身影。1.3 本文主要工作以及内

12、容安排 本文主要介绍电子密码锁需要实现的功能以及如何利用单片机来制作电子密码锁。在本文中详细地介绍了具体硬件设计和软件模块化编程以及设计中各个功能的实现方法和过程。具体内容有:全文共分4章,结构安排如下:第1章 绪论介绍了本次设计目的及意义以及单片机的发展现状、1602字符型液晶在电子密码锁系统中的应用以及主要实现的功能。第2章 介绍了本次设计的硬件电路的设计思路以及元件的选择,详细的说明电路图中各个部分的功能和连线方式,为下一步的编程设计作好铺垫。第3章 介绍了单片机编程软件和常用的编程语言,确定了编程的主题思路以及设计功能的具体实现方法。第4章 介绍了如何在电脑上实现设计的软件仿真。 第2

13、章 系统总体方案设计2.1 总体方案设计考虑各方面因素本设计采用的是用以at89c51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的i/o端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能。其设计方案如图2.1所示。89c51单片机键盘控制复位电路串口显示电路24c02c掉电保护电路开锁电路图2.1 单片机控制方案 实现此方案硬件是基础,程序是关键。要充分利用仿真软件,不断调试程序,以使程序在满足各种功能的情况下最简。2.1.1 实现功能:密码锁初始密码为:000000. (1)开锁:插上电源后,程序自动调入初始密码,此时依次输入:00

14、0000,然后按#(确认)键,此时锁会打开,可以看到显示open,密码锁打开。(2)退出并关锁:按下*(取消)键,此时锁关闭,所有输入清除。 (3) 修改密码:在开锁状态下,再次输入正确的密码并按下#(确认)键,此时听到两声提示,输入新的六位密码并按d(重设)键,再重复输入一次新密码并按d,会听到两声提示音,表示重设密码成功,内部保存新密码并存储到at24c02。(如两次输入的新密码不一样,则重设密码失败)。(4) 报警并锁定键盘:当输入密码错误后,报警并锁定键盘3秒,如3秒内又有按键,3秒后再启动。 当重置新密码时,新密码会保存于at24c02存储器里.。2.1.2 4*4键盘说明 采用4*

15、4键盘输入,键盘对应名称如表2.1表2.1 键盘名称分布123a456b789c*0#d 其中,09为数字输入键,用于输入相应的数字 *号键为取消当前操作 #号键为确认 d键为修改密码 其它键无功能及定义2.2 at89c51单片机介绍 at89c51单片机包括:一个8位的微型处理器cpu;一个128k的片内数据存储器ram;4k片内程序存储器rom;四个8位并行的i/o接口p0p3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工uart的串行i/o口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12mhz。以上各个部分通

16、过内部总线相连接。下面简单介绍其主要部分的功能。处理器:cpu是单片微型计算机内部的核心部件,由它读入用户程序,并逐条执行指令,它是由8位算术逻辑运算部件(简称alu)、定时控制部件,若干寄存器a、b、psw、sp以及16位程序计数器(pc)和数据指针寄存器(dptr)等主要部件组成。算术逻辑单元的硬件结构与典型微型机相似。它具有对8位信息进行+、-、*、/ 四则运算和逻辑与、或、异或、取反、清“0”等运算,并具有判跳、转移、数据传送等功能,此外还提供存放中间结果及常用数据寄存器。控制器部件是由指令寄存器、译码器、定时与控制电路以及信息传送控制等部件组成的。指令寄存器中存放指令代码。在执行指令

17、时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或io接口电路,完成指令功能。程序计数器pc用来存放下一条将要执行的指令地址,共16位可对以64k字节的程序存储器直接寻址,指令执行结束后,pc计数器自动增加,指向下一条要执行的指令地址。cpu功能,总的来说是以不同的方式,执行各种指令。不同的指令其功能略异。有的指令涉及到寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件的关系;有的则与外部芯片如外部程序存储器发生联系。事实上,cpu是通过复杂的时序电路完成不同的指令功能。所谓cpu的时序是指控制按照指令功能发出一系列在时间上有一

18、定次序的信号,控制和启动一部分逻辑电路,完成某种操作。3表 2.2. p3口的第二功能引脚第2功能p3.0rxd(串行口输入端)p3.1txd(串行口输出端)p3.2int0(外部中断0请求输入端,低电平有效)p3.3int1(外部中断1请求输入端,低电平有效)p3.4t0(定时器/计数器0计数脉冲端)p3.5t1(定时器/计数器1计数脉冲端)p3.6wr(外部数据存储器写选通信号输出端,低电平有效)p3.7rd(外部数据存储器读选通信号输出端,低电平有效)输入/输出引脚p0口、p1口、p2口及p3口: p0口(22脚39脚),p0.0p0.7统称为p0口。当不接外部存储器与不扩展i/o接口时

19、,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展i/o口时,p0口为地址/数据分时复用口。它分时提供8位双向数据总线;p1口(1脚8脚),p1.0p1.7统称为p1口,可作为准双向i/o接口使用。对于eprom编程和进行程序校验时,p0口接收输入的低8位地址;p2口(21脚28脚),p2.0p2.7统称为p2口,一般可作为准双向i/o接口。当接有外部程序存储器或扩展i/o接口且寻址范围超过256个字节时,p2口用于高8位地址总线送出高8位地址。对于eprom编程和进行程序校验时,p2口接收输入的8位地址; p3口(10脚17脚), p3.0p3.7统称为p3口。它为双功能口,可以

20、作为一般的准双向i/o接口,也可以将每1位用于第2功能,而且p3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。p3口的第2功能见表2.2所示。中断系统: at89c51单片机有5个中断源,由两个中断优先级,每个中断源的优先级可以编程为高优先级或低优先级。中断允许受到cpu开中断和中断源开中断的两级控制。at89c51单片机有两个中断优先级,高优先级和低优先级,每个中断源都可以编程为高中断优先级和低中断优先级。这可以实现两级中断嵌套,嵌套的原则是:一个正在执行的中断服务程序可以被较高优先级的中断请求中断,而不能被同级或较低级的中断请求所中断。两极中断通过使用ip寄存器设置。at89c

21、51的管脚有四十多个这里就不在一一列出,图2.2.为其管脚分布。 图2.2. 8051的管脚分布2.3硬件设计2.3.1 时钟电路的设计时钟电路用于产生mcs-51单片机工作时所必需的时钟控制信号,mcs-51单片机的内部电路在时钟信号的控制下,严格的按时序执行指令进行工作。电路中的电容c1和c2典型值通常选择为30pf左右本设计采用20pf,电路图如2.3。对外接电容的值虽没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶振的振荡频率的范围通常是在1.2mhz-12mhz之间,本设计采用12mhz。晶振的频率越高,则系统的时钟频率也就越高,单片机的运行速度也

22、就越快。但反过来运行速度快对存储器的速度要求也就越高,对印制电路板的工艺要求也高,即要求线间的寄生电容要小;晶振和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。为了提高温度稳定性,应采用温度稳定性良好的电容。12 图2.3 时钟电路2.3.2 复位电路的设计单片机复位是使cpu 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。单片机复位的条件是:必须单片机复位引脚加上持续两个机器周期(即24 个振荡周期)以上的高电平,单片机才进入复位状态(即程序从0000h地址开始执行)。复位后的状态:单片机复位后,片内ram中低128的内容不会改

23、变,但特殊功能寄存器被初始化。复位期间单片机的ale和psen引脚输出高电平,复位后单片机的特殊功能寄存器状态除sp为07h,p0p3为ffh外其余都被复位为0。 at89c51单片机的第9管脚rst(reset缩写),当向rst管脚输入一个非常短暂的高电平时,单片机就会复位。复位管脚与计算机上的复位键功能很相似,当计算机正在进行或死机时,只要按一下复位键,计算机,就会重新启动。单片机的复位和这个过程相似,无论单片机在执行什么程序,如果触发复位就会使其回到程序的开头重新开始执行程序。最简单的复位电路就是在rst端与vcc之间连接一个10uf的电解电容。单片机上电瞬间,电容的正极电压瞬间变为vc

24、c,电解电容对于这个瞬间的电压突变相当于短路,于是vcc(高电平)相当于直接加到了rst端上。正是这个加在rst上的瞬间高电平使单片机复位。很快,电解电容充满电,在电路中相当于断路,于是rst端电平由高转低,单片机随即开始执行程序. 有时,只使用一个电解电容的复位电路可靠性不高,故本设计采用如图2.4所示的复位电路,以防电源开关或电源插头分-合过程引起的抖动而影响复位。图2.4 复位电路 2.3.3 密码存储电路的设计外置的拨码开关来设定密码,操作既不方便,电路又复杂。本设计采用了e2prom 来保存密码,它最大的优点就是掉电后,存储的内容不会丢失,这是一种十分理想的方案。密码写入rom 后即

25、使掉电也没关系,且可以随意读出、写入。真正改变了以往密码锁的密码由厂家固定,用户只有使用权,而没有更改权的缺点,真正实现了密码锁的保密性。密码存储电路如图2.5所示。本设计采用的芯片是atmel 公司的at24c02c, 内有512 字节的rom,且支持在线读写。其sda为数据传送线,接在单片机的p3.5 口。sck为移位时钟线,接在单片机的p3.4 口。利用p3.4 和p3.5口模拟串口来实现单片机和rom间的数据串行通讯。at24c02各管脚介绍:sck为串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚;sda为串行数据用于器件所有数据的发送或接收, 是一个开漏输出管脚

26、可与其它开漏输出或集电极开路输出进行线,a0、 a1、 a2为器件地址输入端这些输入脚用于多个器件级联时设置器件地址当这些脚悬空时默认值为0 ;wp为写保护,如果wp管脚连接到vcc所有的内容都被写保护只能读,当wp管脚连接到vss或悬空允许器件进行正常的读/写操作。图2.5 存储电路2.3.4 键盘电路设计键盘是一组规则排列的开关元器件组合,是最常用的输入设备。操作人员可以通过键盘向计算机输入数据、地址、指令或其他的控制命令,实现简单的人机对话。(1) 按键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置

27、的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,所以按键信息输入是与软件结构密切相关的过程。 对于一个键盘或一组键,总有一个接口电路与cpu相连。cpu可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键编号送入累加器acc,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。(2) 键盘的分类键盘按照接口原理可分为编码键盘和非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法不同。编码键盘主要用硬件来实现对按键的识别,非编码键盘主要由软件来实现键盘的定义与识别,只简单地提供行和列的矩阵,其它工作均由软件完成,由于经济实用,所以较多地应用于

28、单片机系统中。根据结构的不同,非编码键盘又可分为矩阵式键盘和独立式键盘。矩阵式键盘由行线和列线构成,按键位于行、列交叉点上,矩阵式键盘在按键较多时使用会节省很多i/o口,但是,各按键间相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。(3) 按键结构与特点 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的 ttl逻辑电平,以便与通用数字系统的逻辑电平相容。机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图2.6所示,抖动时间的长短与开

29、关的机械特性有关,一般为510ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当按键数较多时,采用软件去抖。在检测到有按键按下时,执行一个10ms20ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。12图2.6 键盘抖动过程表2.3. 键盘的连线方式单片机连接管脚

30、p1.0p1.3为行线 按键号码 p1.3 1 2 3 a p1.2 4 5 6 b p1.1 7 8 9 c p1.0 * 0 # d p1.4p1.7为列线 p1.4 p1.5 p1.6 p1.7考虑到本次设计功能的要求以及软件编程和硬件电路连接,在本次设计所采用的是矩阵键盘,用4条i/o线作为行线,4条i/o线作为列线组的键盘,采用软件延时的办法来消除机械抖动。在行线和列线的每一个交叉点上,设置一个按键,键盘中按键的个数是4*4个=16个。这种行列式键盘结构能够有效地提高单片机系统中i/o口的利用率。 矩阵键盘和单片机管脚连接(表2.3.)和电路图(图2.7) p1.4-p1.7为行线,

31、p1.0-p1.3为列线.8 图2.7 4*4矩阵键盘2.3.5 显示电路的设计显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(led)和液晶显示器(lcd)两种。由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到了广泛的应用。发光二极管led,组成的显示屏,每个点都是一个或多个发光二极管,通过控制电路控制二极管的亮与灭来控制点的发光,从而使整个大屏幕显示图案。 液晶显示器lcd1602,所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。最常见的就是tft类型的,它是由光源,液晶光栅,和控制芯片组成,他的光源是常亮的白色强光,当

32、光线通过液晶光栅(液晶屏)的时候,通过电压改变液晶颗粒滤光方向,从而改变每个点的颜色和强度来显示图案。6 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、pda移动通信工具等众多领域。液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息, 如汉字、图形、图表等。 两者之间的区别:(1)二极管本身发光, 液晶本身不发光,只是透射光。 (2)二极管体

33、积大,图像质量一般,适合作室外大屏幕,价格较低。液晶成本较高,面积无法做得很大,但图像质量很好,适合做显示器。 (3)二极管耗电大,液晶耗电小。 (4)二极管图像刷新率低,液晶的高 。二者的档次相差比较大,一般来讲在一些图像简单,对成本控制较严格的场合,用二极管,比如商场、银行等服务部门的电子提示窗,街道、百货公司外面的广告宣传窗;而液晶一般都是作计算机显示器、电视、手持设备等对图像质量要求高的场合,在本次计设中综合考虑各方面的因素,我选定1602作为显示电路。1602管脚的具体功能如表2.4。.1602液晶的主要参数: 显示容量:162个字符 芯片工作电压:4.55.5v 工作电流:2.0m

34、a(5.0v) 模块最佳工作电压:5.0v1602的管脚示意图: 图2.8 1602管脚图 2.9 1602实物图1602一个很重要的端口vee,为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个1k欧的电位器调整其显示的对比度。11表2.4 1602液晶管脚主要功能引脚符号功能说明1vss一般接地2vdd接电源(+5v)3vee液晶显示器对比度调整端,接电源正极时对比度最弱,接地电源时对比度最高4rsrs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器5r/wr/w为读写信号线,高电平(1)时进行读操作,低电平(0

35、)时进行写操作6ee(或en)端为使能(enable)端,下降沿使能7db0低4位三态、 双向数据总线 0位(最低位)8db1低4位三态、 双向数据总线 1位9db2低4位三态、 双向数据总线 2位10db3低4位三态、 双向数据总线 3位11db4高4位三态、 双向数据总线 4位12db5高4位三态、 双向数据总线 5位13db6高4位三态、 双向数据总线 6位14db7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15bla背光电源正极16blk背光电源负极在本次设计中采用了1602来作为显示元件,用液晶构成显示电路不仅扩大显示的范围,而且减少显示电路对单片机i/o端

36、口的占用,同时减少单片机连线。单片机具体的连线方式:p0口作为数据输出口,rp1为p0口的上拉电阻,以提高其驱动力。p2口的p2.5、p2.6、p2.7作为1602液晶的控制口(lcd_rs连接p2.5; lcd_rw连接p2.6; lcd_en连接p2.7)。vee连接1个精密1千欧可调电阻器用来调节液晶显示器的亮度。详细的电路图(图2.10)。 图2.10 lcd显示电路2.3.6 报警电路蜂鸣器有两类3大品种。一类是压电式,一类是电磁式,电磁式又有两大品种,铁振膜式和动圈式,二者原理一样只是结构不同。所有蜂鸣器都有两种类型:纯蜂鸣器和带驱动的蜂鸣器,蜂鸣器都是用音频信号驱动的,都是交流驱

37、动。报警器的种类很多,比如:扬声器,蜂鸣器等,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、震动膜片以及外壳等组成。接通电源后,振荡器产生的音频信号通过电磁线圈,使得电磁线圈产生了一个磁场。本次设计采用的是压电式蜂鸣器作为报警器(图2.11)。蜂鸣器的一端接p2.1口,另一端接电源,当p2.1为低电平时,蜂鸣器报警,当p2.1为高电平时,蜂鸣器不作出反应4图2.11 报警电路2.3.7 开锁电路在本次设计中,基于节省材料、主次分明的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如2.12所示。当p2.0口输出低电平时,二极管d1导通发光,表示开锁;当二极管输出高电平时,

38、二极管不能导通也就是说二极管不发光,表示上锁。1图2.12 开锁电路第3章 软件设计3.1 编程工具介绍 kiel c51是美国kiel software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,比较方便.kiel c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势keil软件常与proteus仿真软件相配合使用单片机开发中除必要的硬件外,同样离不开软件。图3.1 编程软件工作界面我们写的汇编语言源程序要变为cpu可

39、以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于mcs-51单片机的汇编软件有早期的a51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发单片机的开发软件也在不断发展,keil软件是目前最流行开发mcs-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持keil即可看出。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。运行keil软件需要pentium或以上的cp

40、u,16mb或更多ram、20m以上空闲的硬盘空间、win98、nt、win2000、winxp等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用c语言编程,那么keil几乎就是你的最好的选择之一,即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调其试工具也会令你事半功倍。其工作界面如上图所示。3.2 编程语言介绍 汇编语言的实质和机器语言是相同的,都是其直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的

41、每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言主要是相对于汇编语言,而相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。 c

42、语言是一种高级语言。c语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到c语言,具体应用比如单片机以及嵌入式系统开发。 c语言特点(1)简洁紧凑、灵活方便 c语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。 把高级语言的基本结构和语句与低级语言的实用性结合起来。 c 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。(2)运算符丰富c语言的运算

43、符包含的范围很广泛,共有34种运算符。c语言把括号、赋值、强制类型转换等都作为运算符处理。从而使c语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。(3)数据类型丰富c语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外c语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。103.3 软件编程3.3.1软件设计原则所设计的软件不仅要满足密码锁:插上电源后,程序自动调入初始密码,此时依次输入 所000000,然后按#

44、(确认)键,此时锁会打开,可以看到显示open,密码锁打开;按下*(取消)键,此时锁关闭,所有输入清除,在开锁状态下,再次输入正确的密码并按下#(确认)键,此时听到两声提示,输入新的六位密码并按d(重设)键,再重复输入一次新密码并按d,会听到两声提示音,表示重设密码成功,内部保存新密码并存储到at24c02;(如两次输入的新密码不一样,则重设密码失败)。当输入密码错误后,报警并锁定键盘3秒,如3秒内又有按键,3秒再启动;当重置新密码时,新密码会保存于at24c02存储器里。而且要使程序最简化,通俗易懂。3.3.2 软件设计方案本次设计中的软件部分设计采用模块化程序设计,分块逐个实现在本次设计中

45、,在对每个单独进行程序修改时不影响全局,同时降低编程的工作量和调试的难度,主程序包括显示初始化预定义、主程序、4*4矩阵键盘扫描程序、1602显示子程序等组成。主程序流程图(图3.2)lcd液晶初始化开始程序lcd显示初始化密码设定值键盘扫描小于六位无效输入密码六位大于六位清零屏幕显示全为*密码验证密码重置读24c02密码值键盘上被选择的值图3.2 主程序流程图3.3.3 4*4矩阵键盘的编程方法(1)先读取键盘的状态,得到按键的特征编码。p1口高四位输入高电平,低四位输入低电平。当有按键按下时,可以从p1口的高四位读取端口低电平状态来确定列数;在确定有按键按下后, p1口的高四位输入高电平,

46、低四位输入3个高电平和1个电平,通过编程使3高1低在低四位端口中循环,当p1口的高四位中出现低电平时就可以确定行数。将行说和列数组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。 (2)根据按键的特征编码,查表得到按键的编码。将用上述方法得到的16个 按键的特征编码按表3.1排列的顺序排成一张特征编码与顺序编码的对应关系表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它所在的位置就是对应的顺序编码。 (3)根据矩阵键盘键值查找相对应程序的具体编程。键盘扫描程序的主要功能有: 1)识别键盘有无按键按下,若无键按下返回 2)如果有键按下,找出具体的按键值(特征

47、编码)。表3.1 按键号和特征编码对应按键号特征编码按键号特征编码按键号特征编码按键号特征编码10x1850x2490x42#0x41 20x2860x4400x21*0x1130x4870x12c0x8240x14a0x88b0x84d0x8180x22程序段如下/=按键检测并返回按键值=unsigned char keynum(void) unsigned char row,col,i; p1=0xf0; if(p1&0xf0)!=0xf0) delay5ms(); delay5ms(); if(p1&0xf0)!=0xf0) row=p10xf0; /确定行线i=0;p1=ai; /精确定位while(i0;x-) for(y=110;y0;y-);/-写指令-write_1602com(uchar com); /*液晶写入指令函数*lcd1602_rs=0; /数据/指令选择置为指令lcd1602_rw=0; /读写选择置为写p0=com; /送入数据delay(1);lcd1602_en=1; /拉高使能端,为制造有效的下降沿做准备delay(1);lcd1602_en=0; /en由高变低,产生下降沿,液晶执行命令 /-写数据-write_1602dat(uchar dat) /*液晶写入数据函数*

温馨提示

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

评论

0/150

提交评论