找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 772|回复: 0
打印 上一主题 下一主题
收起左侧

单片机密码锁设计与调试资料 系统框图

[复制链接]
跳转到指定楼层
楼主
本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。
本设计运算模块由AT89C51实现,数据输入模块由4*4矩阵键盘电路实现,输出数据模块由LCD显示电路实现,再外加一个复位电路完成整个简易计算器的设计。

1.2 系统的设计方案

本设计由以下几部分组成:AT89C51单片机系统(运算模块)、键盘电路、显示电路、时钟电路和复位电路构成,计算器系统框图如图1-1所示。

图1-1 计算器系统框图
1.3 系统的设计要求
为了更好地实现系统的功能,硬件电路的设计应该遵循以下原则:
1.3.1优化硬件电路
采用软件设计与硬件设计相结合的方法。尽管采用软件来实现硬件系统的功能时,也许响应的时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在设计本系统的时候,在满足可靠性和实时性的前提下,尽可能地通过软件来实现硬件功能。
1.3.2可靠性及抗干扰设计
根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统的设计思想是在满足功能的情况下争取较少数量的芯片。
1.3.3灵活的功能扩展
功能扩展是否灵活是衡量一个系统优劣的重要指标之一。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。
根据提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。计算器主要由以下一些功能模块组成:非编码键盘模块、运算模块(单片机内部)和LCD液晶显示模块等。
该系统的硬件设计采用了模块化的设计方法。AT89C51单片机、LCD液晶显示屏显示电路和键盘电路是整个电路的核心,它们能实现系统的功能要求。
简易计算器主要包括:键盘电路、运算电路和输出显示电路。

第二章 硬件模块设计
在本设计中主要用到的硬件:单片机AT89C51、液晶显示屏LCD1602 、4*4矩阵键盘。
单片机AT89C51的硬件资源分配:
(1)P3口:作为输入口,与键盘连接,实现数据的输入;
(2)P0、P2口:作为输出口(P2口为高位,P0口为低位),控制LCD液晶显示屏显示数据的结果;
(3)P1口和部分P3口:作为液晶显示屏LCD1602显示输出。

键盘控制模块
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
2.2.1 矩阵键盘的工作原理
键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合;当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
通用计算机使用的键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。
而非编码键盘成本低廉。从简易和成本角度出发,本设计选用的是非编码键盘。如图2-1所示。一般由16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。其矩阵图所对应的仿真图如图2-2所示。
图2-1 矩阵键盘内部电路图              图2-2矩阵键盘布局图


在本设计中,计算器输入键盘的4条行线、4条列线分别连接到MM74C922X1-X4Y1-Y4引脚,MM74C922的数据输出口与单片机的P2口相连,MM74C922DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的按键值。
2.3 LCD显示模块
本设计采用LCD液晶显示器来显示输入输出数据。通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。LCD引脚图如图2-3所示。
图2-3  LCD1602 引脚图
LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,在实际使用中是否带背光并无多大差别.
2.3.1 显示电路
当系统需要显示少量数据时,采用LCD液晶显示屏进行显示是一种经济实用的方法。P1口作为液晶显示的数据端口,P3.4-P3.6口作为其控制端口,控制LCD液晶显示屏显示输出数据。

第三章 软件设计

3.1 功能介绍

实际运用中人们熟悉的计算器,其功能主要如下:
1、键盘输入;
2、显示数值;
3、加、减、乘、除四则运算;
3.2系统流程图

在软件设计中程序分别要完成键盘输入检测、LCD初始化及显示、算术运算和错误处理及输出等功能。对主程序进行初始化,其他的程序选择模块式的方式。首先对每个模块进行调试,当模块调试成功后,逐一地加入主程序中,最后完成整个软件部分的设计。系统流程图如图3-1所示。

3.3 程序
本设计程序采用C语言编程,程序分为多个模块,由主程序、键值转换和LCD系列程序等模块组成。具体可见附录
第四章 系统调试
4.1软件介绍
4.1.1 Keil uVision2仿真软件简介
Keil uVision2是德国Keil公司开发的基于Windows平台的单片机集成开发环境,它包含一个高效的编译器、一个项目管理器和一个MAKE工具。生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。Keil uVision2的界面如图4-1所示,Keil uVision2允许同时打开、浏览多个源文件。
4.2 软件调试
  图4-1 Keil uVision2的界面
4.2.1 软件分析及常见故障
在此次设计中使用Keil uVision2,其中使用Keil uVision2软件汇编源程序,使用Proteus软件对硬件电路进行模拟。正确连接电路图,使其能按照项目要求及设计初衷正常工作。
从库里正确拾取元器件,认真合理地连线,做到不缺件,不缺线,选取合适的元件参考值,使其能正常工作。通过编译,连接程序。使其生成.hex文件。测试该计算器是否能正常工作。若不能,首先要检查有没有漏掉元器件,元器件是否都连接好。其次,要看元件各引脚是否都连接正确,有无接反的。最后要看元件的参考值是否选择合理,电源电压是否能带动元器件正常工作。
常见故障:
1、逻辑错误:它是由设计错误或加工过程中的工艺性错误所造成的。这类错误包括错线、开路、短路等。
2、元器件失效:有两方面的原因:一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。
3、可靠性差:因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;走线和布局不合理也会引起系统可靠性差。
4、电源故障:若样机有电源故障,则加电后很容易造成器件损坏。电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。
调试方法:包括多级调试和联机调试。在调试过程中要针对可能出现的故障认真分析,直至检查出原因并排除。
本次硬件调试过程中,对所出现的问题进行了认真的分析和改正,最后能够很好的达到设计要求的效果。
系统仿真图如图4-2所示。
图4-2 系统仿真图
4.2.2 结果演示
下面以加、减、分别做演示为例:
(1)加法:以243和536作为加数和被加数运算,结果为779。加法仿真结果图如图4-3所示。
图4-3 加法仿真结果图
(2)减法:以956和356作为被减数和减数运算,结果为600。减法仿真结果图如图4-4所示。
图4-4 减法仿真结果图
4.3 硬件调试
把所有元器件的参数都设置好,程序在keil里面生成.hex文件,运行一切正常后开始准备焊接硬件。在焊接硬件过程中首先得准备好所有必备的东西,比如所需元器件和焊接所用工具等。在焊接前应先在面包板上把硬件插好调试,接通电源看能否显示出结果,如果元器件都是好的并且结果可以显示出,就可以焊接了。如果显示不出来再检查各个器件是否有损坏,并用万用表挨个检查,直至一切显示正常再焊接。
在焊接时要注意相邻焊点不能粘在一起,连接线不能太长,并且注意焊点的虚焊、假焊。在使用电烙铁时温度不能太高也不能太低,一般在350度左右,温度太低容易形成冷焊点,太高则会烧坏电路板。
电路板焊接好以后首先测试一下各个元器件是否正常,焊点有无虚焊、连焊、假焊等现象,检查没有问题以后接通电源查看LCD显示是否正常,如果一切显示没有问题把硬件妥善保管,防止不小心损坏。硬件电路实物图如图4-6所示。
图4-6 硬件电路实物图


结束语

通过这次简易计算器的设计,很大程度的提高了我的理解力和动手能力,也拓宽了知识面。在图书馆和网上查阅资料使我了解了更多的资料,也方便了我们以后的使用。在查询的资料中让我对单片机有了更深入的了解,能把学到的知识用活,而不只局限于理论方面。
在硬件制作过程中,当我把硬件都焊好以后接通电源LCD怎么都不显示数字并且在很短的时间内就会发热,我查了焊接点和仿真图都没有问题,接着仔细查找了LCD显示器各个管脚,发现两个电压管脚接反了,但在仿真时没出现问题,而在实物中出现了问题,是由于仿真元件都是理想化的,各个问题在实物中根据实际情况就会出现。
编程时,充分使用了结构化的思想。这样一来,因为语句较少,程序调试也比较方便,功能模块可以逐一地调试,充分体现了结构化编程的优势。当每个模块都完成时,将其功能互相整合就完成了整体的设计。经历了从最初的不了解设计内容到最后做出仿真结果的过程使我从根本上提高了对专业的认识及兴趣,对于我们工科学生来说,学习了这些对我们以后工作有重大的影响。很感谢师傅给我们提供了这样的平台,能使我们的动手能力增强。感谢老师对我们提供的帮助。

本人初学,仅供参考,存在错误和不足之处,请大家回帖多多指教,不胜感激.切勿照搬,文件下载:
Keil代码与Proteus仿真下载:http://www.51hei.com/bbs/dpj-229515-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表