历史上的今天
返回首页

历史上的今天

今天是:2026年03月23日(星期一)

正在发生

2023年03月23日 | 基于AT89C51单片机的算术运算计算器系统设计

2023-03-23 来源:elecfans

本设计是基于AT89C51单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除4 位无符号数字的简单四则运算,并在LED 上相应的显示结果。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51 单片机,输入采用4×4 矩阵键盘。显示采用4 位7 段共阳极LED 动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计,这里推荐大家看看十天学会单片机。


0 引言

本系统采用AT89C51单片机作为控制器,用来实现实现四位数的“+”,“-”,“*”,“/”运算,运算结果通过数码管显示,并具有有清零功能。AT89C51 具有如下特点:40 个引脚,4k BytesFlash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM),32 个外部双向输入/ 输出(I/O)口,5 个中断优先级2层中断嵌套中断,2 个16 位可编程定时计数器,2 个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。


1 总体设计方案

1.1 系统组成与工作原理

本系统以51 单片机为主控核心,与矩阵键盘、晶振、LED 显示管模块一起组合而成。其工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,得出按键值,单片机则对数据进行储存与相应的处理转换,之后送入数码管动态显示。将运算结果送入数码管动态显示。本设计只能进行结果不超过四位数的运算,其功能如下:

(1)数字键“0”到“9”用数码管显示。

(2)加法运算: 加数与被加数均不能超过9999,加法最终结果不能超过9999.

(3)减法运算: 减法运算正常逻辑为大的数值减去小的数值,本计算器亦如此,只能进行正常逻辑的运算,如为小的数值减去大的数值,则将得到的负数与535 相加,得到相应的结果,即如果想进行小数减大数的运算,则把得到的结果减去535 即得到负数的正确结果。

(4)乘法运算: 与上述方法一样,计算结果不能超出9999,如溢出则显示结果只有后三位。

(5)除法运算: 除数与被除数均不能超过9999,计算结果只显示整数部分。

(6)等于键: 只有按下等于键才能将运算结果显示出来,否则一直显示上一个数。

(7)清零功能:程序不稳定或出现错误时,运用清零键回到初始状态,也可用复位键清零。


2 系统硬件设计

2.1 系统硬件总体设计

本系统由键盘矩阵、LED 显示管、这几个部分组成,键盘输入键值,LED 显示管显示当前按键及结果。硬件总体设计图1 如下:

基于AT89C51单片机的算术运算计算器系统设计

2.2 矩阵扫描显示当前按键模块

利用AT89S51 单片机的P0 端口的P0.0 - P0.7 连接到一个七段数码管的a - h 的笔段上,数码管的公共端接电源。矩阵扫描显示当前按键模块见图2.

基于AT89C51单片机的算术运算计算器系统设计

2.3 键盘布局模块

矩阵键盘的工作原理:计算器的键盘布局如图3 所示:一般有16 个键组成,在单片机中正好可以用一个P 口实现16 个按键功能,这种形式在单片机系统中也最常用。

基于AT89C51单片机的算术运算计算器系统设计

3 系统软件设计

3.1 系统软件总体设计

本系统的软件流程如图4 所示。

基于AT89C51单片机的算术运算计算器系统设计

3.2 显示程序模块

显示程序将要显示数值的千位、百位、十位与个位分别计算出来,通过P0 段选口输出数值,通过位选口P3^3、P3^4、 P3^5、P3^6 实现动态显示。


LED 数码管,实现七段数码管的显示四位十进制数。通过段选来显示按键及计算结果的数值。由于本硬件设计选用的是共阳接法,所以对应的段码表如下3.3 键盘扫描模块

本次键盘扫描程序采用的是行列翻转法扫描键盘,即先置行为0,读列值,存在变量1 中,然后把列置为0,读行值,存在变量2 中,把变量1 和变量2 相加即为按键对应的键值,下表为相应按键对应的键值


4 结束语

本计算器是以51系列单片机为核心构成计算器系统,该设计为能进行简易算术运算的计算器,在现有的硬件条件下只能进行结果不超过四位数的运算,能实现加减乘除的运算功能与数字清零功能,以及系统的复位功能。


推荐阅读

史海拾趣

Gamewell-FCI ( Honeywell )公司的发展小趣事

在电子行业中,Gamewell-FCI作为霍尼韦尔(Honeywell)旗下的重要品牌,其发展历程充满了诸多关键节点和里程碑事件。以下是五个与Gamewell-FCI(Honeywell)公司发展相关的故事,每个故事均基于事实描述:

1. Gamewell-FCI的起源与并入霍尼韦尔

Gamewell-FCI的起源可以追溯到其前身Gamewell Fire Alarm Telegraph Company,该公司成立于19世纪末,以生产创新的火灾报警系统而闻名。随着技术的不断进步和市场需求的扩大,Gamewell逐渐发展成为火灾安全领域的领导者。20世纪后期,Gamewell被FCI(Fire Control Instruments)收购,进一步巩固了其在消防报警技术领域的地位。随后,随着霍尼韦尔在工业自动化和安全领域的扩展,Gamewell-FCI被并入霍尼韦尔大家庭,成为其安全与生产力解决方案集团的一部分。这一合并不仅为Gamewell-FCI带来了更广阔的市场和资源,也使其能够继续推动消防安全技术的创新与发展。

2. 技术创新与产品线扩展

在并入霍尼韦尔后,Gamewell-FCI凭借其深厚的技术底蕴和创新能力,不断推出新产品和技术解决方案。从传统的火灾报警系统到先进的智能火灾探测和预警系统,Gamewell-FCI始终走在行业前列。公司还积极拓展产品线,涵盖了气体检测、紧急通讯、安全疏散等多个领域,为客户提供全方位的消防安全解决方案。这些技术创新和产品线扩展不仅增强了Gamewell-FCI的市场竞争力,也为其在全球范围内的业务扩展奠定了坚实基础。

3. 全球化布局与战略合作

随着全球化进程的加速,Gamewell-FCI也积极实施全球化战略,通过在全球各地设立分支机构、与当地企业建立合作关系等方式,不断扩大其市场覆盖面。同时,公司还注重与行业内的领军企业建立战略合作关系,共同推动消防安全技术的创新与发展。这些合作不仅为Gamewell-FCI带来了更多的商业机会,也促进了全球消防安全领域的交流与合作。

4. 应对市场挑战与转型

面对不断变化的市场环境和客户需求,Gamewell-FCI始终保持着敏锐的洞察力和灵活的反应能力。当传统消防安全市场逐渐饱和时,公司及时调整战略方向,将重心转向智能消防、物联网等新兴领域。通过引入先进的物联网技术、大数据分析等手段,Gamewell-FCI成功实现了从传统消防设备制造商向智能消防安全解决方案提供商的转型。这一转型不仅为公司带来了新的增长点,也为其在全球消防安全领域的领先地位提供了有力支撑。

5. 可持续发展与社会责任

作为霍尼韦尔的一部分,Gamewell-FCI始终将可持续发展和社会责任视为企业发展的重要组成部分。公司致力于通过技术创新和高效运营来降低产品对环境的影响,并积极推广节能减排、绿色建筑的理念。同时,Gamewell-FCI还积极参与社会公益事业,为灾区提供紧急救援、为教育机构提供安全培训等,展现了其作为行业领导者的社会责任感。这些努力不仅提升了公司的品牌形象和社会声誉,也为公司的长远发展奠定了坚实基础。

American Micro Products Inc公司的发展小趣事

AMP深知品质是企业的生命线。因此,公司始终将品质管理放在首位,从原材料的采购到生产过程的每一个环节都严格把控。同时,AMP还注重客户需求的收集与反馈,根据市场变化及时调整产品策略,确保产品能够满足客户的实际需求。

海芯科技(AVIA)公司的发展小趣事

随着公司业务的不断拓展和市场份额的逐步扩大,海芯科技开始注重品牌建设和市场推广。公司积极参加各类行业展会和交流活动,与业内同行和客户进行深入交流和合作。同时,公司还加大了对品牌形象的宣传力度,通过广告、宣传册等多种方式提升品牌知名度和美誉度。这些举措不仅提升了公司的市场影响力,也为公司的长期发展奠定了坚实的基础。

台湾致强(FORT)公司的发展小趣事

致强科技自2005年成立以来,便专注于高功率、低阻值且低TCR(温度系数)的电阻产品研发与生产。团队由一群具有机电整合、金属材料加工及冶金制程丰富经验的专家组成,他们独立研发出全合金材料的电阻生产制程,这一创新不仅区别于业界常见的厚膜或厚膜贴合金制程,还大幅提升了电阻的性能与稳定性。通过不断的技术迭代,致强科技成功推出了一系列高精度、高功率的合金电阻产品,广泛应用于各类电子产品中,满足了市场对高质量电流检知电阻的迫切需求。

Green Power Solutions公司的发展小趣事
定期清洁稳压器的外壳和内部灰尘,保持散热良好。
Concord Semiconductor Corp公司的发展小趣事

Concord Semiconductor Corp自创立之初,便专注于半导体技术的研发与创新。公司在早期阶段成功开发出一种高效能、低功耗的半导体芯片,这一创新成果迅速在行业内引起关注。随着技术的不断完善和市场的广泛认可,公司的产品线逐渐丰富,客户群体也不断扩大。技术创新成为Concord Semiconductor Corp发展的核心驱动力,推动公司不断向前发展。

问答坊 | AI 解惑

无法上传附件!

为什么今天无法上传附件,根本就没有这个选项啊? 难道是ie问题,或者论坛受到攻击?…

查看全部问答>

【EEWORLD】“简简单单DSP”系列学习活动(11月07日已更新第七期)

【EEWORLD】“简简单单DSP”系列学习活动 欢迎加入“简简单单DSP”系列学习活动,AQUA学习小组将和您一起学DSP281x。 活动目的:     数字信号处理器(DSP)是广大电子工程师几乎必备的利器,从运动控制到图像处理的诸多领域,DSP已 ...…

查看全部问答>

模电设计不得不看——模拟电路设计原则

主要内容: 衡量设计质量的标准 常用模拟电路设计方法 电磁兼容和认证 PCB布局布线技巧等…

查看全部问答>

这个稳压电路为什么不能稳压?

XMM2为6.155mV,XMM1为7.395mV. 请指教! …

查看全部问答>

手机PCB可靠性的设计方案1

手机功能的增加对PCB板的设计要求日益曾高,伴随着一轮蓝牙设备、蜂窝电话和3G时代来临,使得工程师越来越关注RF电路的设计技巧。 射频(RF)电路板设计由于在理论上还有很多不确定性,因此常被形容为一种“黑色艺术”,但这个观点只有部分正确,RF电 ...…

查看全部问答>

光强传感器TSL2561读出的数据总是为0

ARM92440芯片IIC接口,驱动光强传感器TSL2561。 根据TSL2561手册中的描述,The TIMING register defaults to 02h at power on,现在我的代码可以读出这个02h;读ID Register (Ah),也能读到正确的值。 用示波器观察,能很清楚地观察到START、STOP ...…

查看全部问答>

CE6.0下的Cellcore是不是已经帮我们实现了GSM协议栈?很多公司找人去设计GSM协议栈是什么意思?

CE6.0下的Cellcore是不是已经帮我们实现了GSM协议栈?很多公司找人去设计GSM协议栈是什么意思?…

查看全部问答>

TI送的8962板子上用计时器中断实现LED闪烁

想要在TI送的8962板子上用计时器中断实现LED闪烁,代码是网上找的,但是下载到板子后没有实现功能,我看不出问题,请大家指教 #include \"hw_ints.h\" #include \"hw_memmap.h\" #include \"hw_types.h\" #include \"debug.h\" #include \"gpi ...…

查看全部问答>

关于inux防火墙的资料

最近看了一下linux下面的防火墙的实现过程有些资料上传与大家分享Linux安全体系的防火墙实现linuxnetfilter&iptables实现机制的分析与应用 [ 本帖最后由 daicheng 于 2010-12-20 14:35 编辑 ]…

查看全部问答>

集成PHY,开放外部总线,ST会做吗?

能做到的话,就太完美了,不知ST有没有这个想法 LM3S9000系列就是这种应用方案,看来LM还是走在前面呀 ST 不出的话,看来只得转用 LM了,呵呵…

查看全部问答>