摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。
单片机也被称微控器,是因为它最早被用在工业控制领域。
单片机是靠程序运行的,并且可以修改。
本设计系统主机采用8052单片机,MCS-51单片机的程序存储器和数据存储器的地址空间是相互独立的,而且程序存储器一般为ROM或EPROM,只能读出不能写入。
扩展用的程序存储器芯片大多采用EPROM芯片,最大可扩展到64K字节。
该设计使用矩阵键盘输入。
LED数码管显示输入密码,用74HC245驱动数码管发光显示数码,LCD1602控制显示。
密码正确,二极管发光。
输入密码错误次数超过三次系统报警,蜂鸣器发出报警音。
关键词:单片机软件电路硬件电路目录第一章设计要求 (1)第二章系统组成及工作原理 (2)第三章硬件电路设计 (3)3.1 STC89C52单片机的介绍 (3)3.2单片机最小系统 (5)3.3键盘电路设计 (6)3.4 LCD1602显示电路 (8)3.5开锁电路 (11)3.6报警电路 (11)3.7仿真效果图 (12)第四章软件设计 (13)4.1 PROTEUS仿真软件 (13)4.2 KEIL编译设计 (15)4.3 普中ISP自动下载软件 (16)4.4程序流程图 (18)第五章设计、调试和测试结果与分析 (19)第六章设计小结 (23)参考文献 (24)附录 (25)第一章设计要求采用单片机、LCD等芯片,设计电子密码锁,能随时修改密码,具有防多次试探功能,连续输入密码达到一定次数,发出光声报警密码输入错误时有报警功能,连续输入3次错误,键盘自锁,等待管理解锁;开锁后或修改密码后可以选择退出,返回开锁前状态。
掌握Proteus软件的基本应用,用于设计与仿真,需要用PROTEUS软件绘制电路原理图及局部原理图;掌握单片机编程语言,可选用汇编语言或C语言;本次课程设计是要设计一个数字密码锁,设计要求如下:1、设计一个数字式密码锁。
2、密码由4 – 6位数字组成。
3、密码相符开锁,三次不符报警。
4、密码可以更新。
第二章 系统组成及工作原理STC89 C52图2.1 系统总设计图该电子密码锁采用4*4键盘作为输入信号,输入到作为主机STC89C52单片机,通过软件编程的程序,做出判断,结果再经1602LCD 液晶显示器作为输出显示。
晶振电路提供单片机运行脉冲。
● STC89C52单片机:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
具有以下标准功能: 8k 字节Flash ,512字节RAM , 32 位I/O 口线,看门狗定时器,内置4KB EEPROM ,复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
● 复位电路:复位电路,就是利用它把电路恢复到起始状态。
就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。
使CPU 及系统各部件处于确定的初始状态。
● 键盘控制电路:在此次的设计中,输入密码,修改密码等都需要通过键盘来实现,键盘采用矩阵键盘,这样可以减少I/O 口的使用。
● LCD 显示电路:本次实验采用的是LCD1602液晶显示,好处是相比于LED 数码管显示方便许多,也比较符合消费者的要求。
● 超次报警电路:密码箱最重要的是保护消费者的财产及隐私,若非本人操作很难一下子输对密码,本次设计是三次输入密码不正确蜂鸣器会响,模拟报警的装置。
● 开门电路:输对密码之后,继电器吸合,小灯点亮,模拟开保险箱的动作。
第三章硬件电路设计3.1 STC89C52单片机的介绍STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
图3.1 STC89C52功能引脚图●VCC:电源●GND:地●P0口:P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
●P1口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL逻辑电平。
对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),在flash编程和校验时,P1口接收低8位地址字节。
●P2口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。
对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。
在这种应用中,P2 口使用很强的内部上发送1。
在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
●P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为STC89C52特殊功能(第二功能)使用,如表3-1所示。
在flash编程和校验时,P3口也接收一些控制信号。
表3-1 P3口的第二功能表●RST: 复位输入。
晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。
看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。
●ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
●PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
●EA/VPP:访问外部程序存储器控制信号。
为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应接VCC。
在flash编程期间,EA也接12伏VPP电压。
●XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
●XTAL2:振荡器反相放大器的输出端。
3.2单片机最小系统的设计单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路、时钟电路、复位电路。
1、时钟电路单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。
单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。
内部时钟方式的原理电路如图2-8所示。
在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。
晶振的取值范围一般为0~24MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。
一些新型的单片机还可以选择更高的频率。
外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用20~30pF的瓷片电容。
2、复位电路无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。
复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。
单片机的复位条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。
单片机的复位形式:上电复位、按键复位。
图3.2 单片机最小系统3.3键盘电路设计按键工作处于两种状态:按下与释放。
一般按下为接通,释放为断开,这两种状态要被CPU识别,通常将两种状态转换为与之对应的低电平或高电平。
CPU通过按键信号电平的高低来判断按键的状态。
使用矩阵键盘,所以本设计采用行列式键盘,可减少键盘与单片机接口是所占用的I/O线的数目,按键比较多时,通常采用这种方法。
矩阵式键盘又叫行列式键盘。
用I/O接口线组成行、列结构,键位设置在行、列的交点上。
例如本设计(图4-4)4*4的行、列结构可组成16个键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O接口线。
而且键位越多,情况越明显。
因此,在按键比较多时,往往采用矩阵式键盘。
矩阵式键盘的按键识别方法有“行扫描法”。
行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。
(1)判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
(2)判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。