点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87715642?spm=1001.2014.3001.5503
源码获取
主要内容:
本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。
基本要求:
1、采用软件设计与硬件设计相结合的方法。
2、熟悉掌握单片机相关操作原理。
3、完成对应的系统设计,硬件设计,仿真调试。
主要参考资料:
[1] 裴岩、刘利民单片机系统综合设计与实践[J].内蒙古大学出版.2003.1
[2] 杨国林.C语言程序设计[J].内蒙古大学出版社.2001.9
[3] 郭天祥.新概念51单片机C语言程序[J].电子工业出版社.2009.1
完 成 期 限
指 导 教师签名
课程负责人签名
目录
引言 1
第一章 设计原理及要求 2
1.1 设计方案的确定 2
1.2 系统的设计方案 2
1.3 系统的设计要求 2
第二章 硬件模块设计 4
2.1 单片机AT89C51 4
2.2矩阵键盘的工作原理 4
2.3 键盘电路主要器件介绍 5
2.4 显示电路 6
第三章 软件设计 7
3.1 功能介绍 7
3.2系统流程图 7
第四章 系统调试 9
4.1软件介绍 9
4.1.1 Keil uVision4仿真软件简介 9
4.1.2 protues简介 9
4.2 软件调试 11
4.2.1 软件分析及常见故障 11
4.2.2 仿真结果演示 12
总结 13
参考文献 14
引言
计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。
近几年单片机技术的发展很快,其中电子产品的更新速度迅猛。计算器是日常生活中比较的常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器呢。
17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加、减、乘、除、乘方和开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它只能做加减运算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直到20世纪50年代末才有电子计算器的出现。
第一章 设计原理及要求
1.1 设计方案的确定
本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。
本设计运算模块由AT89C51实现,数据输入模块由4*4矩阵键盘电路实现,输出数据模块由LCD显示电路实现,再外加一个时钟电路和一个复位电路完成整个简易计算器的设计。
1.2 系统的设计方案
本设计由以下几部分组成:AT89C51单片机系统(运算模块)、键盘电路、显示电路、时钟电路和复位电路构成,计算器系统框图如图1-1所示。
图1-1 计算器系统框图
1.3 系统的设计要求
为了更好地实现系统的功能,硬件电路的设计应该遵循以下原则:
1、优化硬件电路
采用软件设计与硬件设计相结合的方法。尽管采用软件来实现硬件系统的功能时,也许响应的时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在设计本系统的时候,在满足可靠性和实时性的前提下,尽可能地通过软件来实现硬件功能。
2、可靠性及抗干扰设计
根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统的设计思想是在满足功能的情况下争取较少数量的芯片。
3、灵活的功能扩展
功能扩展是否灵活是衡量一个系统优劣的重要指标之一。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。
根据提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。计算器主要由以下一些功能模块组成:非编码键盘模块、运算模块(单片机内部)和LCD液晶显示模块等。
该系统的硬件设计采用了模块化的设计方法。AT89C51单片机、LCD液晶显示屏显示电路和键盘电路是整个电路的核心,它们能实现系统的功能要求。
简易计算器主要包括:键盘电路、运算电路和输出显示电路。
第二章 硬件模块设计
在本设计中主要用到的硬件:单片机AT89C51、液晶显示屏LCD1602 、4*4矩阵键盘。
单片机AT89C51的硬件资源分配:
(1)P3口:作为输入口,与键盘连接,实现数据的输入;
(2)P0、P2口:作为输出口(P2口为高位,P0口为低位),控制LCD液晶显示屏显示数据的结果;
(3)P1口和部分P3口:作为液晶显示屏LCD1602显示输出。
2.1 单片机AT89C51
本设计所用单片机采用AT89C51单片机,它兼容于MCS-51系列单片机,而且具有1000次可擦写的FLASHMEMORY,方便于系统的开发以及参数的修改。尽管它是8位机,但它的处理精度完全满足系统的设计要求。该种单片机的最高频率可达到24MHz。在12MHz时,其处理速度完全达到设计要求,AT89C51的实物图及引脚图如图2-1所示。
2.2矩阵键盘的工作原理
键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合;当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
通用计算机使用的键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。
而非编码键盘成本低廉。从简易和成本角度出发,本设计选用的是非编码键盘。如图2-2所示。一般由16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。其矩阵图所对应的仿真图如图2-1所示。
图2-1 矩阵键盘内部电路图
2.3 键盘电路主要器件介绍
为了进一步节省单片机I/O口资源,我们在设计中使用了MM74C922芯片。MM74C922是一款44键盘扫描IC,它可检测到与之相连的44键盘的按键输入,并通过数据输出口将按键相应的编码输出。其引脚图如图2-4所示。
图2-2 MM74C922芯片引脚图
2.4 显示电路
当系统需要显示少量数据时,采用LCD液晶显示屏进行显示是一种经济实用的方法。P1口作为液晶显示的数据端口,P3.4-P3.6口作为其控制端口,控制LCD液晶显示屏显示输出数据。
显示电路图如图2-3所示。
图2-3 LCD液晶显示电路
第三章 软件设计
3.1 功能介绍
实际运用中人们熟悉的计算器,其功能主要如下:
1、键盘输入;
2、显示数值;
3、加、减、乘、除四则运算;
4、对错误输入和输出的控制及提示。
3.2系统流程图
在软件设计中程序分别要完成键盘输入检测、LCD初始化及显示、算术运算和错误处理及输出等功能。对主程序进行初始化,其他的程序选择模块式的方式。首先对每个模块进行调试,当模块调试成功后,逐一地加入主程序中,最后完成整个软件部分的设计。系统流程图如图3-1所示。
图3-1 系统流程图
第四章 系统调试
4.1软件介绍
4.1.1 Keil uVision4仿真软件简介
Keil uVision4是德国Keil公司开发的基于Windows平台的单片机集成开发环境,它包含一个高效的编译器、一个项目管理器和一个MAKE工具。其中Keil C51是一种专门为单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。Keil uVision5的界面如图4-1所示,Keil uVision4允许同时打开、浏览多个源文件。
图4-1 Keil uVision的界面
4.1.2 protues简介
protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年已经增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器,界面图如图4-2所示。
图4-2 protues界面图
4.2 软件调试
4.2.1 软件分析及常见故障
在此次设计中使用Keil uVision4和Proteus软件仿真,其中使用Keil uVision4软件编译源程序,使用Proteus软件对硬件电路进行模拟。正确连接电路图,使其能按照题目要求及设计初衷正常工作。
通过编译,连接程序。使其生成.hex文件,并连入连好的Proteus图中。测试该计算器是否能正常工作。若不能,首先要检查有没有漏掉元器件,元器件是否都连接好。其次,要看元件各引脚是否都连接正确,有无接反的。最后要看元件的参考值是否选择合理,电源电压是否能带动元器件正常工作。
系统仿真图如图4-3所示。
图4-3 系统仿真图
4.2.2 仿真结果演示
下面以加、减、乘和除分别做仿真演示:
(1)加法:以2和8作为加数和被加数运算,结果为10。加法仿真结果图如图4-4所示。
图4-4 加法仿真结果图
(2)减法:以2和1作为被减数和减数运算,结果为1。减法仿真结果图如图4-5所示。
图4-5 减法仿真结果图
(3)乘法:以2和8作为乘数和被乘数运算,结果为16。乘法结果仿真图如图4-6所示。
图4-6 乘法结果仿真图
(4)除法:以2和1作为被除数和除数运算,结果为2。除法结果仿真图如图4-7所示。
图4-7 除法结果仿真图
由以上四种运算结果可知软件仿真均正确,没有显示错误。
总结
通过这次简易计算器的设计,很大程度的提高了我的理解力和动手能力,也拓宽了知识面。在图书馆和网上查阅资料使我了解了更多的资料,也方便了我们以后的使用。在查询的资料中让我对单片机有了更深入的了解,能把学到的知识用活,而不只局限于理论方面。
在硬件的制作过程中我走了好多的弯路,主要是在系统还没有设计很有把握就开始动手制作了。后来发现与设计的要求还有偏差,反复的改过了几次,浪费了大量的时间和体力。感受到设计人员要有耐心,要认真的从要求开始研究。软件的编写过程中费了很大的力气,因为软件的编写要求很高,要很细心,一不小心就会调用错误,很深刻的体会到作为软件编程人员是绝不能粗心大意的。一个程序的完成的速度和质量高低与细心与否有着很大联系。
编程时,充分使用了结构化的思想。这样一来,因为语句较少,程序调试也比较方便,功能模块可以逐一地调试,充分体现了结构化编程的优势。当每个模块都完成时,将其功能互相整合就完成了整体的设计。经历了从最初的不了解设计内容到最后做出仿真结果的过程使我从根本上提高了对专业的认识及兴趣,对于我们工科学生来说,学习了这些对我们以后工作有重大的影响。很感谢学校和老师给我们提供了这样的平台,能使我们的动手能力增强。感谢老师对我们提供的帮助。
参考文献
[1] 裴岩、刘利民单片机系统综合设计与实践[J].内蒙古大学出版.2003.1
[2] 杨国林.C语言程序设计[J].内蒙古大学出版社.2001.9
[3] 郭天祥.新概念51单片机C语言程序[J].电子工业出版社.2009.1
[4] 基于单片机的简易计算器设计.http://www.doc88.com/p-14265767228.html
[5] 计算器模拟系统设计. http://www.doc88.com/p-90657023744.html
[9] 基于单片机的计算器. http://www.doc88.com/p-48737185877.html
[10] AT89C51单片机简介http://www.hbfydz.com/xxyd/103.htm