毕业设计(论文)-基于Atmega88V数字密码锁的设计.doc_第1页
毕业设计(论文)-基于Atmega88V数字密码锁的设计.doc_第2页
毕业设计(论文)-基于Atmega88V数字密码锁的设计.doc_第3页
毕业设计(论文)-基于Atmega88V数字密码锁的设计.doc_第4页
毕业设计(论文)-基于Atmega88V数字密码锁的设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

咸宁学院学士学位论文电子与信息工程学院本 科 毕 业 论 文论文题目 数字密码锁的设计 学生姓名 073621* 学 号 073621010 专 业 电子信息科学与技术 班 级 07电信(1) 指导教师 2010年5月3湖北科技学院学士学位论文摘 要基于atmega88v设计的数字密码锁是以atmega88v为核心控制电路,配以电源电路、复位电路、指示电路、报警电路、键盘电路等外围电路,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能。该系统中,atmega88v是输入和输出的联系部件,它通过读取从键盘输入的数据并对存储在单片机中的密码进行识别比较,判断密码是否输入正确,并作出相应的决定,指示报警器是否发出嗡鸣声以及发光二极管是否闪烁。这种密码锁以其安全性高、成本低、易操作等优点受到越来越多人的欢迎。关键词:密码锁;atmega88v;键盘;lcd显示abstractthe core control circuit of digital code lock designed based on atmega88v is atmega88v,and together with the power circuit, reset circuit, indicating circuit, alarm circuit, keyboard and other peripheral circuits circuit it can realize the function of input, identification, modification, storage of the password, and the alarm when inputting the wrong password. in the system, atmega88v is the link of input and output components, it can estimate whether the input password is right by identifying and comparing the data reading from the keyboard and the password stored in the microcontroller, and make the appropriate decision that whether the indicating alarm audible hum and the light diode blinking. because of its high security, low cost, easy operation, etc, this digital code lock is more and more popular. key words: digital code lock; atmega88v; keyboard; lcd displayiii目 录1.绪 论12. 课题设计方案32.1 整体方案选择32.2 控制器的选择52.2.1 51系列单片机概述52.2.2 pic系列52.2.3 avr系列63.系统的主要器件93.1 atmega88v单片机简介93.2 液晶显示模块0802114.硬件设计154.1 单片机的最小系统154.2 键盘电路164.3 显示电路174.4 报警电路185.软件设计196.调试216.1 软件调试216.2 硬件调试217. 结论与展望23参考文献25附录a(原理图):27附录b(pcb图):28附录c(实物图):29附录d(main.c):30咸宁学院学士学位论文1. 绪 论随着社会经济的不断发展,安全防盗已成为社会问题。如何制造安全可靠,又要使用方便的各种防盗锁,是制锁着长期以来研制的主题。数字密码锁是二十一世纪锁业的一次革命,它特点是不用钥匙、无锁孔、不易损坏、不易磨损、不易被破译、可多次跟换密码、换号不换锁,具有防砸、防撬、防堵等功能,安装门锁时不破坏原门1。数字密码锁是利用数字密码来开启的锁具,其重复概率仅为十万分之一,具有很高的安全性;而旋芯式锁具使用却相对不够安全2。通过对社会各阶层千余人的调查,百分之百的人都愿意一身轻松没有任何顾虑的出入家门,都愿意用上一种锁具可使人摆脱钥匙的束缚3。因此,设计数字密码锁的市场发展前景极为广阔。基于atmega88v设计的数字密码锁是以atmega88v为核心控制电路,配以电源电路、晶振电路、复位电路、指示电路、报警电路、键盘和机电驱动电路等,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能。该系统中,atmega88v是输入和输出的联系部件,它通过读取从键盘输入的数据并对数据进行识别比较,判断密码是否输入正确,并作出相应的决定,指示驱动电磁是否执行开锁功能及报警器是否发出嗡鸣声。这种密码锁以其安全性高、成本低、易操作等优点受到越来越多人的欢迎。2课题设计方案2. 课题设计方案2.1 整体方案选择方案一:基于触发式电子密码锁的设计触发式电子密码锁是应用数字电子技术的编、译码技术,并通过按键实现密码的设置、修改及识别功能4。该设计电路主要由按键部分、计数部分、译码部分、显示部分及报警等电路组成。由于密码采用脉冲输入法,故按键部分不能用数字键盘,须采用轻触式开关。密码由用户按下轻触式开关的次数决定。按键部分与脉冲触发计数器相连接,当用户按下轻触式开关,经计数器计数后,将输入密码送入译码部分进行识别比较,从而决定密码锁是否打开以及警报是否响起。其原理框图如图1。按键部分计数部分译码部分显示部分报警部分图1 触发式电子密码锁原理框图基于触发式电子密码锁的设计方案简单,制作成本也较低,不过需用到较多集成芯片,电路焊接起来很复杂;密码采用脉冲输入法,故对输入脉冲有很高要求,而且密码输入及修改过程也比较繁杂。方案二:基于vhdl的电子密码锁的设计基于vhdl的电子密码锁的设计,是以现场可编程逻辑器件(fpga)为设计载体,以硬件描述语言(vhdl)为主要表达方式,以quartus开发软件和eda开发系统为设计工具, 实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能5。其硬件电路比较简单,可以将其分成键盘输入部分、密码锁控制电路部分、电源电路部分和密码锁显示电路四部分。其组成框图如图2:电源电路 按键电路控 制 器显示电路报警电路图2 数字密码锁原理框图该设计中,电源部分是用来为整个电路提供工作电压,保证电路正常工作;用户可以通过外接键盘输入密码开锁或者修改密码等;显示电路包括数字显示器和信号指示灯,数字显示器是用来显示用户输入的密码,信号灯用来提示用户密码输入的正确与否;报警部分是在密码输入错误时发出警报;整个硬件电路的核心部分就是控制部分,控制部分又可以分成使能电路、消抖电路、编码器、比较器、译码器、密码存储器、控制器等几个模块6,这几个模块共同控制着密码输入,密码修改,开锁,报警等功能,这些模块的功能可以由一片fpga芯片来完成。基于vhdl的电子密码锁的设计,硬件电路简单,焊接方便,其硬件描述语言即程序的编写较为复杂,硬件成本相对较高。方案三: 基于单片机的数字密码锁的设计 基于单片机的数字密码锁的设计,是以单片机为核心控制器,配以稳压电路、晶振电路、复位电路、指示电路、报警电路、键盘和机电驱动电路等,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能7。其原理框图如图3:电源电路晶振电路复位电路键盘电路控制器指示电路报警电路图 3 基于单片机的电子密码锁的设计原理框图在原理框图中,稳压电路为整个电路提供工作电压,使电路各部分能正常工作;晶振电路产生稳定的时钟周期,使程序正常运行;复位电路是在系统出现故障时使程序在地址为零的地方重新运行;键盘是用来输入或修改密码的;指示电路是指明电路是否正常工作;报警电路是在密码输入错误时发出报警信号。在这几部分电路的共同工作下,即可实现数字密码锁的各项功能。基于单片机的数字密码锁的设计方案,硬件电路较简单,软件编程也不复杂,而且其硬件成本很低,安全性高,易操作,方便而且实用。由上述分析、系统成本和可行性实用性等因素考虑,本课题选用方案三,即采用单片机来实现数字密码锁的各项功能。2.2 控制器的选择2.2.1 51系列单片机概述应用最广泛的八位单片机首推intel的51系列,主要有8031系列、8051系列,后来atmel公司以8051的内核为基准,推出了at89系列单片机8。51系列有如下优点9:1.从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。2.乘法和除法指令,这也给编程带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。3.二进制-十进制调整指令 da,能将二进制变为bcd码,这对于十进制的计量十分方便。而在其他的单片机中,则也需调用专用的子程序才行。51系列也有许多值得改进之处10,如:1.运行速度过慢等。当晶振频率为12mhz时,机器周期达1s,显然适应不了现代高速运行的需要2.所有i/o口都是准双向口,i/o口的驱动能力弱。3.芯片里面的p0口没有上拉电阻,如果要输出高电平或者要定义成输入口,一般要接电阻上拉。4.功耗比较高,抗干扰能力也不是很强。2.2.2 pic系列pic系列单片机是美国微芯公司(microship)的产品,它也是一种精简指令型的单片机,指令数量比较少,中档的pic系列仅仅有35条指令而已,低档的仅有33条指令。但是如果使用汇编语言编写pic单片机的程序有一个致命的弱点就是pic中低档单片机里有一个翻页的概念,编写程序比较麻烦11。pic系列单片机的特点是:1. 哈佛结构的总线结构:mcs-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而pic单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在pic单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。 2.双指令流水线结构:mcs-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而pic的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。 3.寄存器组:pic单片机的所有寄存器,包括i/o口,定时器和程序计数器等都采用ram结构形式,而且都只需要一个指令周期就可以完成访问和操作;而mcs-51单片机需要两个或两个以上的周期才能改变寄存器的内容。2.2.3 avr系列avr单片机也是atmel公司的产品,最早的就是at90系列单片机,现在很多at90单片机都转型为atmega系列和attiny系列,avr单片机最大的特点是精简指令型单片机,执行速度在相同的振荡频率下是8位mcu中最快的一种单片机12。avr单片机其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业13。avr单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通用寄存器一共32个(ro-r31),前16个寄存器(r0r15)都不能直接与立即数打交道,因而通用性有所下降。avr系列没有类似累加器a的结构,它主要是通过r16r31寄存器来实现a的功能。在avr中,没有像5l系列的数据指针dptr,而是由x(由r26、r27组成)、y(由r28、r29组成)、z(由r30、r31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组dptr),而且还能作后增量或先减量等的运行。在51系列中,所有的逻辑运算都必须在a中进行;而avr却可以在任两个寄存器之间进行,省去了在a中的来回折腾,这些都比51系列强。avr的专用寄存器集中在003f地址区间,无需像pic那样得先进行选存储体的过程,使用起来比pic方便。avr的i/o脚类似pic,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10ma左右,低电平吸入电流20ma。综合来看,avr与51、pic单片机相比具有一系列的优点,用通俗的说法主要体现在这几个方面:1.在相同的系统时钟下avr运行速度最快;2.所有avr单片机的flash、eeprom蓄存器都可以反复烧写、支持在isp在线编程(烧写),入门费用非常少;3.片内集成多种频率的rc振荡器、上电自动复位、看门狗、启动延时等功能,使得电路设计变得非常简单;4.每个io口作输出时都可以输出很强的高、低电平,作输入时io口可以是高阻抗或者带上拉电阻14;5.片内具有丰富实用的资源,如ad模数器、da数模器,丰富的中断源、spi、usart、twi通信口、pwm等等;6.片内采用了先进的数据加密技术,大大的提高了破解的难度;7.片内flash空间大、品种多,引脚少的有8脚,多的有64脚等各种封装8.部分芯片的引脚兼容51系列,代换容易,如attiny2313兼容at89c2051,atmega8515/162兼容at89s51等本课题采用avr系列的atmega88v单片机作为密码锁的核心控制器。41课题设计方案3.系统的主要器件由于本设计采用atmega88v单片机作为核心控制器,该单片机的特点之一就是内部自带晶振电路,而且该晶振电路可以满足完成本设计所需的要求,故本设计的结构框图与第二章节中的图3稍有差别,本系统的结构框图如图4:电源电路复位电路键盘电路控制器指示部分报警电路图 4 基于单片机的电子密码锁的设计原理框图 在该设计中,电源部分由外接电源直接提供,故在作品版面上没有设计电源模块;复位电路是由一个按键,一个电容和两个电阻组成;键盘电路是由6个按键和6个电阻组成独立键盘连接到单片机上完成按键功能;指示电路是由发光二极管和液晶显示以及电阻组成,用以完成设计中的指示功能和显示功能;报警电路是由发光二极管、蜂鸣器和电阻组成,用以完成密码输入错误时发出警报的功能;核心控制器采用atmega88v单片机。所以本设计中用到的器件很少也很简单,下面主要介绍一下atmega88v单片机的引脚结构和功能以及液晶显示器的用法。3.1 atmega88v单片机简介atmega88v是基于avr增强型risc结构的低功耗8位cmos微控制器。由于其先进的指令集以及单时钟周期指令执行时间,atmega88v的数据吞吐率高达1mips/mhz,从而可以缓减在功耗和处理速度之间的矛盾15。atmega88v有如下特点16:8k字节的系统内可编程flash(具有在编程过程中还可以读的能力,即rww),512字节的eeprom,1k字节sram,23个通用i/o口线,32个通用工作寄存器,三个具有比较模式的灵活的定时/计数器(t/c),片内/外中断,可编程串行usart,面向字节的两线串行借口,一个spi串行端口,一个6路10位adc(tqfp与mlf封装的器件具有8路10位adc),具有片内振荡器的可编程看门狗定时器,以及五种可以通过软件选择的省电模式。空闲模式时cpu停止工作,而sram、t/c、usart、两线串行接口、spi端口以及终端系统继续工作;掉电模式时晶体振荡器停止震荡,所有功能除了中断和硬件复位之外都停止工作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基准,器件的其他部分则处于睡眠状态;adc噪声抑制模式时cpu和所有的i/o模块停止运行,而异步定时器和adc继续工作,以减少adc转换时的开关噪声;standby模式时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力。atmega88v芯片的引脚图17如图5:图 5 atmega88v引脚图系统主要器件vcc: 数字电路的电源gdn: 地端口b(pb7.0)xtal1/ 端口b为8位双向i/o口,并具有可编程的内部上拉电xtal2/tosc1/tosc2 阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟未起振,端口b保持高阻态。通过对系统时钟选择位的设定,pb6可作为反向震荡放大器与内部时钟操作电路的输入,pb7可作为反向震荡放大器的输出。系统使用内部rc振荡器时,通过设置assr寄存器的as2位,可以将pb7.6作为异步定时器/计数器2的输入口tosc2.1使用。端口b也可以用作其他不同的特殊功能。端口c(pc5.0): 端口c为7位双向i/o口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口b保持为高阻态。pc6/reset: rstdisbl位被编程时,可将pc6作为一个i/o口使用。因此pc6引脚与端口c其它引脚的电特性是有区别。rstdisbl位未被编程时,pc6将作为复位输入引脚reset。此时,即使系统时钟没有运行,该引脚上出现的持续时间超过最小脉冲宽度的低电平将产生复位信号。持续时间不到最小脉冲宽度的低电平不会产生复位信号。端口c也可以用作其它不同的特殊功能。端口d(pd7.o) 端口d为8位双向i/o口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口d保持为高阻态。端口d也可以用作其它不同的特殊功能。avcc: avcc为a/d转换器的电源。当引脚pc3.0与pc7.6用于adc时,avcc应通过一个低通滤波器与vcc连接。不使用adc时该引脚应直接与vcc连接。pc6.4的电源则是由vcc提供的。aref: aref为adc的模拟基准输入引脚。adc7.6(tqfp与mlf封装) tqfp与mlf封装芯片的adc7.6引脚为两个10位a/d转换器的输入口,它们的电压由avcc提供。3.2 液晶显示模块0802字符型液晶显示模块是一种将lcd显示屏、驱动器、控制器和偏压产生电路集成在一块pcb板上的液晶显示模块,是专门用于显示字符、数字和符号的点阵型液晶显示模块,分4位和8位数据传输方式,提供57点阵光标和510点阵光标的显示模式。字符型液晶显示模块还有显示数据缓冲区ddram、字符发生器cgrom和字符发生器cgram。0802液晶显示就是一种字符型液晶显示模块,下面用表格的方式介绍它的主要技术参数、引脚说明和指令功能以及字符代码与字符图形对应关系18。1. 主要技术参数如表1:表1 主要技术参数显示容量82个字符工作电压4.55.5v工作电流2.0ma最佳工作电压5.0v2. 引脚说明如表2:表2 引脚说明编号符号引脚说明编号符号引脚说明1vss电源负端9d2data i/o2vdd电源正端10d3data i/o3volcd驱动电压11d4data i/o4rs数据/命令选择端12d5data i/o5r/w读/写选择端13d6data i/o6e使能信号14d7data i/o7d0data i/o15leda背光源正极8d1data i/o16ledk背光源负极3 指令表如表3表3 指令表指令rsrwd7d6d5d4d3d2d1d0清除屏幕0000000001光标返回000000001*置输入模式00000001i/ds显示开关控制0000001dcb光标或字符移位000001scrl*置功能00001dlnf*置字符发生存储地址0001字符发生存储器地址置数据存储地址001显示数据存储器地址读忙标志或地址01bf计数器地址写数据到ddram10要写的数据从ddram读数据11读出的数据在表3.2.3中,i/d表示光标移动方向,i/d=1右移,i/d=0左移;s表示屏幕上所有文字是否左移或右移,s=1表示有效,s=0无效;d控制整体的开与关,1开显示,0关显示;c控制光标的开与关,1有光标,0无光标;b控制光标是否闪烁,1闪烁,0不闪烁;s/c为1时移动显示的文字,0时移动光标;r/l为1时右移,0时左移;dl为1时为8位总线,0时为4位总线;n为0时为单行显示,1时双行显示;f为0时显示57的点阵字符,1时显示510的点阵字符;bf为忙标志位,1表示忙,此时模块不能接受命令或者数据,0表示不忙。4. 字符代码与字符图形对应关系如表4:表4 字符代码与字符图形对应关系硬件设计4. 硬件设计由第三章中图4可知,本课题的硬件设计部分可分为控制器模块、电源模块、复位模块、按键模块、液晶显示模块和报警模块。电源模块由外接电源直接提供,为单片机提供工作电压,使电路各部分能正常工作;复位电路是由一个按键,一个电容和两个电阻组成,功能是在系统出现故障时使程序在地址为零的地方重新运行;键盘电路是由6个按键和6个电阻组成独立键盘连接到单片机上,用来输入或修改密码;指示电路是由发光二极管和液晶显示以及电阻组成,用以完成设计中的指示功能和显示功能;报警电路是由发光二极管、蜂鸣器和电阻组成,用以完成密码输入错误时发出警报的功能;核心控制器采用atmega88v单片机。在所有模块中,电源模块、复位模块和控制器模块可构成单片机最小系统,本章节主要介绍这几个模块的设计原理原理图。4.1 单片机的最小系统单片机最小系统一般由电源电路、晶振电路、复位电路以及单片机组成19。电源电路是为单片机提供工作电压,保证单片机正常工作;晶振电路是为单片机提供时钟周期,使程序正常运行;复位电路是在系统出现故障时使程序在地址为零的地方重新运行。本课题选用的单片机是avr系列的atmega88v,该芯片内部自带晶振部分20,其晶振在本课题中可以完成为单片机提供时钟周期的任务,故无需再外加外部晶振电路。电源模块由外接5v电源来提供,故也没设计;其复位电路图设计如图6:图6 复位电路复位电路的设计是由1个按键、1个电容和2个电阻组成,其工作原理是:按键后:电容器被短路放电、rest直接和+5v相连,就是高电平,此时进入“复位状态”;松手后,电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到rest,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,rest降为低电平,开始正常工作21。在本课题中,单片机最小系统图如图7:图7 atmega88v单片机最小系统4.2 键盘电路键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘。在单片机组成的各种系统中,用得最多的是非编码键盘,也有用到编码键盘的。非编码键盘又分为行列式(又称为矩阵式)键盘和独立键盘22。矩阵键盘就是将键盘的两端都接到单片机的i/o口上;独立键盘就是把键盘的一端接地,另一端接到单片机的i/o口上。在本次设计中,键盘电路采用独立键盘,由6个按键和6个电阻控制。其连接方式如图8:图8 按键电路当有键按下时,单片机接键盘的引脚通过键盘接到地端,即该引脚为低电平,没有键按下时单片机的引脚通过电阻接到电源端,即为高电平。检测是否有键按下的方式就是检测单片机接按键的引脚是否有高低电平变化。在6个按键中,4个按键设置为向上、向下、向左和向右功能,完成密码的输入;另外2个按键设置为“确定”和“取消”键,用来辅助密码的设置、输入和修改;6个电阻的一端接电源,另一端接按键和单片机,其功能是在没有键按下时,防止单片机的i/o口直接接到电源。4.3 显示电路jcm0802b是一种将lcd显示屏、驱动器、控制器和偏压产生电路集成在一块pcb板上的液晶显示模块23,jcm0802b的lcd显示屏显示方式为2 行显示28字符,其背光亮度和显示对比度可调。这种模块使用简单方便,而且它与单片机接口也很简单。与数码管相比,液晶显示具有功耗低、抗干扰能力强等有优点,因此应用非常广泛26。其原理图如图9:图9 显示电路液晶显示模块一共有16个 引脚,引脚1和2分别接地和电源,引脚3通过可变电阻接到电源,通过改变可变电阻的阻值来调节液晶显示的亮度,引脚4、5、6分别为rs、rw和e引脚,接到单片机的pd5、pd6和pd7引脚上,引脚15、16为背光电源的正端和负端,其余引脚为数据传送通道。4.4 报警电路报警电路原理图27如图10:图10 报警电路原理图报警电路是由发光二极管、蜂鸣器和电阻组成,其中发光二极管和蜂鸣器并联后与电阻串联,然后接到单片机的pd4端口上。当pd4为高电平时,报警电路的发光二极管不发光,蜂鸣器也不会响;只有在pd4端口为低电平时,发光二极管才发光,蜂鸣器报警。报警电路的功能是,当单片机通过读取从键盘上输入的密码,并对其进行识别比较,在从键盘上输入的数据与存储在单片机中的密码不相符的情况下,报警电路发出鸣叫声,并且发光二极管闪烁。 以上是硬件电路几个模块的原理图及原理简单介绍,整体电路图见附录a。软件设计5软件设计任何程序都是从主函数开始,本设计也不例外。当进入主函数后,执行的第一条指令就是初始化系统。在本设计中,因为系统需要初始化的器件和端口有很多,故单独编写了一初始化函数,然后主函数中直接调用。nyny初始化主函数开始设置密码判断eepro是否有密码输入密码保存密码判断密码是否输入正确显示right报警在系统初始化函数中,需要初始化系统时钟、i/o端口、中断设置和lcd设置等等,设置系统时钟是让系统为特殊的读写规则及时钟不经过分频;i/o端口初始化是将接键盘的端口设置为输入,接液晶的端口设置为输出以及允许pc0pc5引脚电平变化中断;lcd的初始化有些复杂故又单独编写了一个lcd初始化函数,在初始化函数中直接调用lcd初始化函数就可初始化lcd。总之初始化系统是为接下来实现密码锁的各项功能做准备。在初始化之后,单片机就要辨别eeprom中是否已经存有密码,该判断通过if语句实现,如果eeprom中地址为0x10的空间中存储的数与0x88测试相等就表示eeprom中有密码,否则就没有密码。若没有密码就进入设置密码的状态state = 0,进行密码设置,然后进入输入密码状态;如果eeprom中已经存有密码就是状态state = 1,直接进入输入密码的状态。输入密码之后要判断密码是否输入正确,此判断由for循环以及if语句来实现,如果输入密码错误就给单片机的pd4引脚赋值0,即为低电平,发光二极管发光并且蜂鸣器叫,这就是报警,然后重新进入输入密码状态;如果输入密码正确就在液晶上显示“right”,即可以开锁。调试6调 试本设计的调试部分可分为两部分,一部分是软件调试,另一部分是硬件调试。软件调试的目的是检测软件编程是否正确并且是否能实现密码锁的各项功能,硬件调试是检测硬件电路各部分模块是否焊接正确,能否操作等。6.1 软件调试软件编程是一个非常漫长的过程,为了达到预期目标,我花了长达9天的时间来完成数字密码锁的程序编写。在这编写程序的9天时间里,我遇到了很多的问题和困难,有些问题我久经思考和实践,也能找出解决方法,可是有些问题却久久无法解决,好在有指导老师的耐心指导和帮助,我终于解决了遇到的所有问题和困难,完成了这个艰巨的任务。下面是我在编写程序过程中遇到的几个典型问题:1.在初始化函数中,只将pd4引脚设置为输出,忘了将其赋值为1,即pd4默认为低电平,故一上电就有电流经过蜂鸣器和发光二极管,即报警电路报警,我虽然知道报警电路报警是由于pd4引脚为低电平引起的,但我检查程序从头到尾都没发现在哪有给pd4赋值0的语句,所以这个问题纠结了我很久之后我才想到pd4是默认为低电平,故在系统初始化是要将其初始化为高电平。 2.lcd初始化函数中,没有意识到在显示操作前,必须对液晶显示模块执行软件复位,即连续向液晶中写入三条软件复位指令30h,故在显示过程中总会出现这样那样的问题,比如无法在要求的位置显示,或者能准确的显示,但无法持续,总会变成乱码等等现象,因为完全没有对液晶显示模块执行软件复位的意识,故思考实践了很久都找不到问题的根源,最后还是请教老师才意识到这一点,最后纠正过来。3.向eeprom中存取数据时,由于疏忽,只定义了一个数组,往eeprom中存数据时是存在该数组中,从eeprom中取出数据后还存在该数组中,这样就会引起混乱,当eeprom读程序出现错误时,依旧可以“取出”存在eeprom中的数据,这样就无法辨别取出的数据是否真的是从eeprom中取出,经老师指点,最后纠正了此错误。4.按键模块的程序不是由中断引进的,导致当按键速度稍快或用力不均时无法检测到有键按下或抖动现象很严重,用软件消抖也无法改善此现象,后来尝试了用中断引入按键模块的程序设计,即当有键按下时就产生中断,这样可以明显消去抖动现象,准确检测到是否有键按下。5.在lcd显示过程中没有进行忙测试,故在显示时会出现混乱状态,研究实践后加上忙测试程序,混乱现象明显消去。 在软件编程过程中还遇到了很多问题,比如子函数没有事先声明、变量定义不规范等等,但在老师的耐心指导和帮助下,我克服了所有困难,解决了一切问题,终于完成了此项重任,实现了一个数字密码锁最基本的功能。6.2 硬件调试在根据原理图设计做出数字密码锁的实物之后,我分别对0802液晶显示模块、独立键盘模块、单片机内带的eeprom模块和报警电路做了测试,即硬件部分的调试可作为四个部分:液晶显示调试、独立按键调试、eeprom调试和报警电路调试。首先我对液晶显示模块做了测试,测试从最简单的操作开始,即运用0802液晶显示模块的指令表,完成清屏、归位、输入方式设置、光标移位、功能设置和显示开关控制等功能,编写好测试程序后,下载到单片机中。由于这些操作很简单,故只要遵照0802液晶显示的工作时序编写程序, 顺利的下载到单片机就可以看到预期的结果,液晶上显示了自己想要的显示内容。其次我对按键电路做了测试,即编写程序使得当某个按键按下时,液晶上会显示我想要显示的内容。由于手动按键存在很明显的抖动现象,而我又没有注意到这一点,故在刚开始测试时总是存在错误,有时候按下按键会的到想要的结果,有时候又得不到想要的结果,经多次检查分析之后,终于发现这个问题,于是在用软件做了消抖操作后,此现象有了明显的改善。再次我对单片机自带的eeprom模块做了测试,即往eeprom里存入一个数,并将该数显示到液晶显示上,然后再从eeprom中读出此数也显示到液晶显示上。编写好测试程序后很顺利的下载到单片机中,刚开始能得到预期的结果,但数字显示一会儿后液晶显示上会出现乱码,检查很久都没弄明白这是怎么回事,最后不得不向指导老师请教,原来是程序没有语法错误,但缺少一个循环语句,或者说大循环,导致单片机运行到最后一个语句后就不知到该干嘛,就出现错误,也就是程序跑飞了,加上大循环后果然没再出现这个问题。最后我对报警电路做了测试,报警电路原理和结构都很简单,就是让pd4引脚为高低电平的问题,高电平就不报警,低电平就报警,程序中就是给pd4引脚赋值1或0,所以测试很顺利,没有出现什么问题。结论与展望7. 结论与展望本课题基本上实现了数字密码锁的基本功能:对输入的密码进行识别比较,正确则开锁,否则报警。但由于时间和能力等各方面的原因,设计结果与预期目标有一定差距。在预期目标中,密码锁应该是自带电源且有至少12个按键和电机驱动电路,可以方便设置和输入密码以及展示开锁的过程,除了能实现对输入的密码进行识别比较并作出相应操作的基本功能外,密码锁还具备在一次密码输入过程超过30s或者密码连续三次输错就报警的功能,但是在实际设计结果中,密码锁是外接电源,只有6个按键,而且没有电机驱动电路,最大的缺点是,任何人都可以更改密码,这是本次设计中的缺陷,也是本次设计中的遗憾之处。虽然本次设计并没有达到预期的完美效果,但最基本的要求还是达到了,最重要的是在本次设计的过程中,我真正的学到了那些本该在课堂上学到却因自己的不努力而没学到的知识和一些课外知识,锻炼了自己的动手能力、独立思考的能力以及解决问题的能力,所以虽然存在缺陷和遗憾,我依然感觉自己收获颇丰,毕竟这是我第一次自己独立动手设计的作品,我相信在以后的学习中我一定会表现的更加出色,设计出更加完美的作品。致谢致 谢本论文从拟定题目到定稿,从对论文设计原理一无所知到模糊了解再到逐渐清晰,此过程历时数月,我也经历了千辛万苦,但最终有一个结果,我感到很欣慰。通过本次设计,我感觉自己成长了很多,对自己所学的知识有了更深刻的了解掌握,提高了自己的动手能力,能够运用所学的知识实现自己的需要。而我这些进步和成长,都离不开倪浩的帮助。倪老师治学严谨,学识渊博,平易近人,在教学期间以及指导毕业设计期间,不仅传授了我做学问的秘诀,还传授了做人的准则,这些都使我终生受益。无论是在给我们上课期间,还是在我的论文选题、资料查询、开题、研究和撰写的每一个环节,都得到老师的悉心指导和帮助。借此机会我向老师表示衷心的感谢!同时,我要感谢所有教过我的老师,正是由于他们的传道、授业、解惑,让我学到了求知的秘诀和做人的道理。我也要感谢我的母校咸宁学院,是她提供了良好的学习环境和生活环境,让我的大学生活丰富多姿,为我的人生留下精彩的一笔。另外,感谢07信本全体同学的帮助和勉励。同窗之谊和手足之情,我将终生难忘!我愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有领导、老师、同学、和朋友。学无止境。明天,我将更加努力,更加完美! 参考文献参考文献1 朱璇,唐晓茜,殷建军基于单片机智能加密电子密码锁设计j轻工机械,2009.82 孟祥忠.数字电子密码锁的设计d.大连理工,2007.63 刘潇婷.基于fpga的红外遥控电子密码锁的实现d.大连海事大学,2008.34 邱燕,邓鹏戈数字电子密码锁j现代电子技术,2010.75 王红航,张华斌.电子密码锁的eda设计与实现j.电子元器件应用,2009.66 陈华丽,何颜平.基于vhdl的数字密码锁设计j.研究与开发,2008.87 罗维,葛亦斌,邱烨,盛蒙蒙.基于at89s52电子密码锁系统的设计j.数字技术与应用,2009.78 张毅刚.新编mcs-51单片机应用设计m.哈尔滨:哈尔滨工业大学出版社,2003.69 张培仁.基于c语言编程mcs-51单片机原理与应用m.北京:清华大学出版社,2002.1010 耿德根avr单片机将领导八位单片机新潮流8051将终成为历史j电子质量,2001,8.11 陈再清pic单片机、51单片机和avr单片机的对比分析j.电子质量,2006.8.12 吴双力,崔剑,王伯岭.avr-gcc与avr单片机c语言开发m.北京:北京航空航天大学出版社出版,20041013 李广第,朱月秀.单片机基础(第3板)m北京:北京航空航天大学出版社,2007.6.14 胡汉才.高档avr单片机原理及其应用m.北京:清华大学出版社,2008.315 mega88 atmel datasheet16 江海波,王卓然,耿德根.深入浅出avr单片机:从atmega48/88/168开始m北京:中国电力出版社,2008.617 刘兰香,张秋生.atmega128单片机应用与开发实例m.北京:机械工业出版社,2006.4.18 李宏,张家田.液晶显示器件应用技术m.北京:机械工业出版社,2004.219 李广第,朱月秀.单片机基础(第3板)m北京:北京航空航天大学出版社,2007.6.20 金春林,邱慧芳.avr系列单片机c语言编程与应用实例m.北京:清华大学出版社,2003.621 楼然苗,李光飞.单片机课程设计指导m.北京:北京航空航天大学出版社,2007.722 李捷,陈典涛,陈建华.一种基于单片机的电子密码锁的设计j农机化研究,2004.923 徐玮.51单片机综合学习系统1602字符型液晶显示篇j电子制作,2008.824 first chip empress the system eda/ic of the electronics engineering designm25 shucheng zhu,zhenwang,tianwei zhuo,linzhong zhu. an intelligent robot based on sound source localization and ultrasound distance detectionj. department of electrical and computer engineering,the hong kong university of science and technology,hk;department of computer cont

温馨提示

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

评论

0/150

提交评论