基于AT89C51单片机的简易计算机设计

news2024/9/21 12:31:18

点击链接获取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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue核心 计算属性 侦听属性

1.9.计算属性 1.插值语法实现 <!DOCTYPE html> <head><meta charset"UTF-8"><title>姓名案例_插值语法实现</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js"></script…

linux部署jdk\redis\nginx\fastdfs

一、jdk安装及配置修改 1、本地下载jdk包 jdk-8u131-linux-x64.tar.gz&#xff0c;上传到服务器&#xff08;也可通过命令直接下载&#xff09; 2、将压缩包放服务器/usr/local路径下&#xff0c;后解压&#xff1a;tar -zxvf jdk-8u131-linux-x64.tar.gz 如之前已安装&…

OSCP-XPosedAPI(本地文件包含、查看源码、os.system、命令盲注)

目录 扫描 Web API枚举 命令盲注 提权 扫描 发现了两个开放的端口:端口22上的SSH和端口13337上的未知服务。 用netcat手动探测端口13337,但是运行几个常见的TCP/UDP服务初始化命令没有输出。 尝试了一个完整的脚本和版本nmap扫描的开放端口࿰

Vue3:基础入门

Vue3&#xff1a;基础入门 Date: April 10, 2023 Sum: vue简介、vue的基本使用、vue的指令与过滤器、品牌列表案例 目标&#xff1a; 能够知道 vue 的基本使用步骤 掌握插值表达式和 v-bind 指令的用法 能够掌握如何使用 v-on 指令绑定事件 能够使用 v-model 指令实现数据…

Science | 华盛顿大学Baker团队提出AI新范式设计全新蛋白复合物

蛋白质的结构形态和生物学功能是由氨基酸序列决定的。 人工蛋白质设计的目标就是创造可以折叠成特定结构以实现特定功能的新型氨基酸序列。 当然&#xff0c;这并不是一个简单的问题&#xff0c;因为它需要了解蛋白质如何在细胞中折叠&#xff0c;而这一过程在很大程度上仍不为…

【微服务】- 分布式系统的流量防卫兵 - sentinel

Sentinel流量防卫兵 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 一个有梦有戏的人 怒放吧德德 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff0…

代码优化- 中间表示上的优化

中间表示上的代码优化依赖于具体所使用的中间表示&#xff1a;控制流图&#xff08;CFG&#xff09;、控制依赖图&#xff08;CDG&#xff09;、静态单赋值形式&#xff08;SSA&#xff09;、后续传递风格&#xff08;CPS&#xff09;等 共同的特点是需要进行程序分析&#xf…

7 ADC(一)

7 ADC ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 12位&#xff08;0-2^(12-1)&#xff09;逐次逼近型ADC&#xff0c;1us转换时间…

HTTP连接要考虑超时,重试和并发之原因

一、原因&#xff08;why) 连接超时配置得特别长&#xff0c;比如 60 秒。一般来说&#xff0c;TCP 三次握手建立连接需要的时间非常短&#xff0c;通常在毫秒级最多到秒级&#xff0c;不可能需要十几秒甚至几十秒。如果很久都无法建连&#xff0c;很可能是网络或防火墙配置的…

光纤网卡传输速率和它的应用领域有哪些呢?通常用会到有哪些型号网络变压器呢?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;常有客户问起光纤网卡该如何选用到合适的产品&#xff0c;选用时要注意到哪些事项&#xff0c;这节将结合配合到的网络变压器和大家一起探讨&#xff0c;希望对大家有些帮助。 1&#xff0e;光纤网卡传输速率与网络…

AlgoC++第三课:C++世界观

目录 C世界观前言1. 程序逻辑2. 内存的逻辑3. 调度的逻辑4. 编译的逻辑5. 作用域的逻辑6. 命名空间的逻辑7. 生命周期的逻辑8. C类的逻辑9. 编译时和运行时的逻辑总结 C世界观 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xff0c;链接。记录下个人学习笔记&#xff0c…

如何查看CPU的L2、L3缓存的容量

可以用CPU-Z&#xff0c;不过需要下载。 可以用命令&#xff1a; wmic cpu get L2CacheSize,L3CacheSize结果&#xff1a;

Golang微服务一把嗦 用户微服务集成主流最新go技术栈

声明&#xff1a;此文章为博主个人学习记录&#xff0c;仅供学习和交流&#xff0c;如有侵权请联系博主。 前言 前段时间&#xff0c;因为本地k8s环境一直出问题&#xff0c;线上云环境也用不起&#xff0c;&#xff08;后面搞定了再慢慢学习&#xff09;所以就暂时搁置了k8s学…

SQL Server基础 第二章 表结构管理

目录 一、数据类型 1&#xff0c;字符类数据类型 2&#xff0c;数值型数据类型 3&#xff0c;日期/时间型数据类型 二、主键&#xff08;Primary key&#xff09; 三、默认值 四、唯一键&#xff08;Unique&#xff09; 五、自增标识 六、约束 七、外键 一、数据类型 …

node+vue+mysql+java健身房网站管理系统

通过大数据管理的方法对健身房管理系统进行了详细的设计说明以及介绍&#xff0c;对健身房管理系统进行了开发和实践。作为一个健身房网站&#xff0c;它为用户提供了一个良好的求知平台。让用户能更好地了解健身带来的好处。前端技术&#xff1a;nodejsvueelementui,视图层其实…

3D智能四向穿梭车在电商物流中的应用|HEGERLS箱式四向穿梭车系统在服装制造仓的创新应用

四向穿梭车技术是物流仓储系统中的革命性技术&#xff0c;也由于四向穿梭车对于场地的适应性非常强的特性&#xff0c;可实现前后、左右、上下六维运行&#xff0c;结合提升机的布置和输送系统的布局&#xff0c;灵活调整四向车的空间布局&#xff0c;使某些不规则场地和闲置空…

NXP公司LPC21xx+热敏电阻实现温度检测

LPC2131/32/34/36/38微控制器基于16位/32位Arm7TDMI-S™CPU&#xff0c;支持实时仿真和嵌入式跟踪&#xff0c;具有尺寸小&#xff0c;功耗低&#xff0c;多个32位定时器、单/双10位8通道ADC、10位DAC、PWM通道、47个GPIO线&#xff08;它们拥有多达9个边沿或电平触发的外部中断…

SpringCloud 项目如何方便 maven 打包以及本地开发

一、背景 springcloud-alibaba &#xff0c;使用 nacos 做配置中心&#xff0c;maven 作为构建工具。为了防止 test 、prod 环境配置文件覆盖问题&#xff0c;使用 mvn -P 命令。 二、项目 pom 文件 1. 利用 resources 标签来指定目录&#xff0c;build > resources 标签&a…

【轴承故障检测】滚动轴承中进行基于振动的故障诊断研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

110.【十万字带你深入学习23种设计模式】

Java 23种设计模式 (一)、设计模式相关内容介绍1.软件设计模式概述(1).软件设计模式的产生背景(2).软件设计模式的概念(3).学习设计模式的重要性(4).设计模式分类 2.UML图(1).类图概述(2).类图的作用(3).类图表示法 3.软件设计原则(1).开闭原则 (重写不修改)(2).里氏代换原则 (…