历史上的今天
返回首页

历史上的今天

今天是:2025年03月08日(星期六)

2021年03月08日 | 基于AT89C51的十进制计算器设计

2021-03-08 来源:eefocus

本系统采用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 如下:


1


图1 硬件总体设计图


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

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


2


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


2.3 键盘布局模块

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


3


图3计算器的键盘布局模块


3 系统软件设计

3.1 系统软件总体设计

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


4


图4 系统的软件流程图


3.2 显示程序模块

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


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


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


4 结束语

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

推荐阅读

史海拾趣

酷宅(Coolkit)公司的发展小趣事

酷宅科技在追求经济效益的同时,也积极履行社会责任。公司关注环保和可持续发展问题,推动绿色制造和绿色消费。在产品设计和生产过程中,酷宅科技注重节能减排和资源循环利用,努力降低对环境的影响。此外,公司还积极参与公益事业和社会活动,为社会做出积极贡献。

以上五个故事框架涵盖了酷宅科技在电子行业中的发展历程、市场策略、技术创新和社会责任等方面。每个故事都基于事实进行描述,旨在客观展现酷宅科技在电子行业中的发展轨迹和贡献。

飞虹(FeiHong)公司的发展小趣事

在稳步发展的同时,苏州锋驰也积极拓展对外合作与投资。公司共对外投资了3家企业,并通过这些投资进一步拓宽了业务范围和市场渠道。这些合作不仅为苏州锋驰带来了更多的技术资源和市场机会,也增强了公司的综合竞争力。同时,公司还积极与上下游企业建立紧密的合作关系,形成了良好的产业生态。

COMPEX公司的发展小趣事

在追求经济效益的同时,COMPEX公司也积极履行社会责任,注重可持续发展。公司致力于减少生产过程中的环境污染,采用环保材料和工艺,推动绿色生产。此外,公司还积极参与社会公益事业,为社会的发展贡献自己的力量。这种对社会责任的担当和可持续发展的理念,使得COMPEX在行业中树立了良好的形象。

请注意,这些故事是基于COMPEX公司可能的发展背景和电子行业的一般趋势编写的,并不代表COMPEX公司的实际发展历程。如需了解更多关于COMPEX公司的具体故事和事实,建议查阅公司官方资料或相关新闻报道。

Ememory Technology Inc公司的发展小趣事

为了满足市场对高性能、低功耗芯片的需求,eMemory在2016年宣布向150nm高电压制程工艺扩展其可编程Neobit技术。这一技术的成功开发,使得eMemory能够在LCD驱动IC、逻辑IC和功率控制IC等高速增长的市场中占据一席之地。Neobit技术的可擦编程只读存储器特性,为芯片设计提供了更大的灵活性和可定制性。

Dexter Research Center Inc公司的发展小趣事

Dexter Research Center Inc.(以下简称Dexter)最初是由一群热衷于电子科技研究的科学家和工程师组成的实验室。他们热衷于探索新的传感器技术,并在实验室环境下取得了多项技术突破。然而,技术的真正价值在于其商业化应用。Dexter意识到这一点,决定将研究成果转化为实际产品,推向市场。经过数年的努力,Dexter成功开发出了一系列高性能、高精度的传感器产品,并受到了市场的热烈欢迎。

DURABLE公司的发展小趣事

在竞争激烈的电子行业中,DURABLE公司深知单打独斗难以取得长远发展。因此,公司积极寻求与其他行业的跨界合作机会。通过与汽车制造商、医疗设备制造商等行业的合作,DURABLE成功将自身的技术优势应用于更多领域的产品中。这种跨界合作模式不仅拓宽了公司的业务领域和收入来源,还为公司带来了更多的创新灵感和市场机遇。通过与其他行业的合作,DURABLE实现了资源共享和优势互补,实现了共赢发展。

问答坊 | AI 解惑

电路基本概念

电  流 电荷的定向移动叫做电路中,电流常用I表示。电流分直流和交流两种。电流的大小和方向不随时间变化的叫做直流。电流的大小和方向随时间变化的叫做交流。电流的单位是安(A),也常用毫安(mA)或者微安(uA)做单位。1A=1000mA,1mA=1000uA ...…

查看全部问答>

C语言时钟程序在KEIL中提示出错

#include                         #define uchar unsigned char #define uint unsigned int char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,     ...…

查看全部问答>

监控云台问题?

高手请赐教: 1、云台解码器的拨码开关是不是用二进制确定其地址码?是不是所有的厂商都要用一个8拨片的拨码开关?有8个拨片的拨码开关和6个拨片的拨码开关一起的是怎么回事? 2、解码器的解码芯片如:ATMEL AT89c51 的程序加密以后还能不能读出 ...…

查看全部问答>

调试串口问题

请问怎样可以把调试串口UART0修改成普通的串口(即没有调试信息输出),需要修改哪些文件里的信息啊? 是不是还要修改注册表啊?我在文件WINCE500中搜索了下platform.reg,总共有以下三处路径有platform.reg, 我分别把它们关系到串口的地方的 ...…

查看全部问答>

香版主:虚拟串口

香版主:STM32USB的虚拟串口怎么用?我下了这个"VCPDriver_V1.1_Setup"装上去怎么没反映?还有我在"um0424"上没有找到"Software Driver"文件夹,当然也没有inf文件.大家帮帮忙啊,  …

查看全部问答>

STM32 USB HID实现USB双向通信

STM32 和USB HID实现USB双向通信有什么作用??…

查看全部问答>

AD的困扰--AD采集的数据转换后比模拟量值偏小

最近用msp430f2013的SD16采集0.08v到0.4v的电压值,但是AD转换后的数据比模拟值要偏小,而且随着信号的增大,偏差越来越大。量程范围内,最大偏差10mv。各位大侠请指点下小弟,感激不尽。…

查看全部问答>

做DSP开发最应当懂的34个问题

replyreload += \',\' + 1586804;做DSP开发最应当懂的34个问题 一.什么是DSP?(缺省) 二.DSP的C语言同主机C语言的主要区别? 1)DSP的C语言是标准的ANSI C,它不包括同外设联系的扩展部分,如屏幕绘图等。但在CCS中,为了方便调试,可以将数据通过p ...…

查看全部问答>

求助:EM78P153的代码选项寄存器word0、word1、word2怎么赋值

如题,EM78P153提供了三个代码选项寄存器,datasheet里面又说在执行程序时不能存取,那怎么赋值呢?这是位配置? 写了个延时函数 void delay(unsigned int z),调用的时候 delay(1000);出现warning说是从short转换到unsigned int溢出,改成25 ...…

查看全部问答>

求助

图1D1的作用是什么,工作原理是怎么样的,求解释 …

查看全部问答>