24-基于51单片机的4乘4计算器设计

最新更新时间:2021-10-13来源: eefocus关键字:51单片机  计算器  LCD1602 手机看文章 扫描二维码
随时随地手机看文章

具体实现功能

系统由STC89C52单片机+4乘4按键模块+LCD1602液晶显示屏+电源构成。


具体功能:


利用输入采用4×4矩阵键盘,可以进行加、减、乘、除等几种数字运算,并在LCD1602上显示操作过程及结果。


设计背景

计算器的市场需求较大,应用范围广泛,任何一个办公地点不可缺少的都需要计算器,常见的计算器有:算术型计算器,可进行加、减、乘、除等简单的四则运算。科学型计算器,可进行乘方、开方、指数、对数等方面的运算。程序计算器,可以编程序,把较复杂的运算步骤贮存起来,进行多次重复的运算。简易计算器应用更为广泛,将其设计的更加具有市场竞争力是完全有必要的。我国计算器已经有了很成熟的技术,这里推广的是新观念,通过实际的成品实践,最好由低到高推出系列产品,即所谓上市一代、储备一代、研制一代,不管什么产品都需要不断的保持更新。


单片机是单片微型机的简称,故又称为微控制器MCU(Micro Control Unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点。


本文设计的简易计算器利用矩阵键盘进行按键的输入,通过对矩阵键盘的扫描,获取用户的输入,并实时的显示在1602液晶上,每次获取到输入时,根据软件设计的相应方法对输入进行处理、运算,输入结束后,将最终的运算结果输出的液晶上。


硬件设计

如图是本系统的硬件设计方案,具体地,硬件电路由以下模块构成:


(1)单片机最小系统。用于驱动和控制其他模块,以实现整体功能,其以STC89C51单片机为核心芯片,并辅以复位电路和晶振电路;


(2)按键模块。由4*4矩阵按键构成,实现数值及运算符的输入;


(3)显示模块。通过LCD1602液晶显示屏显示运算过程及运算结果;


(4)电源模块。用于整个系统的供电。

软件设计

软件编程平台选择最常用的keil软件。由于该程序并未涉及到底层的驱动问题,因此选择方便快捷的C语言编程。在编程中,将该程序分为四个模块:延时模块、1602显示模块、用于处理计算表达式的对战模块及主函数模块。采用模块化设计,方便调试与理解。具体程序见附录三。在这里重点介绍软件核心的表达式处理程序算法。


本文软件设计需要实现:


(1)按键键盘的扫描,实现输入按键值的判断;


(2)各种运算的处理与实现;


(3)运算过程及结果的显示;


(4)清零功能的实现。


具体的程序设计思路如图所示。


原理图

本系统原理图设计采用Altium Designer19,具体如图。

程序

本设计利用KEIL5软件实现程序设计,具体如图。

仿真实现

本设计利用protues8.7软件实现仿真设计,具体如图。

关键字:51单片机  计算器  LCD1602 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic548322.html

上一篇:25-基于51单片机的温湿度检测及调节系统
下一篇:23-基于51单片机的智能电子秤设计

推荐阅读

51单片机流水灯控制(5种方法)
实现流程: 1. 新建一个工程(新项目) 2. 查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚 3. 编写程序(通过查看原理图可以看到我们需要控制整个P2口以控制8个LED灯) 4. 编译程序,下载程序至开发板 5. 查看效果(调试)进制转换表(因为单片机首先处理的是十六进制的数据,所以我们需要将二进制控制需求转换成十六进制去写代码):控制代码:#include <REGX52.H> //头文件#include "Delay.h"#include "intrins.h"/* -----------------------------------------
发表于 2022-09-29
<font color='red'>51单片机</font>流水灯控制(5种方法)
51单片机 定时器时钟
1.main.c注:Sec,Min,Hour可不进行赋值#include <REGX52.H>#include "Delay.h"#include "LCD1602.h"#include "Timer0.h"unsigned char Sec=55,Min=59,Hour=23;void main(){ LCD_Init(); Timer0Init(); LCD_ShowString(1,1,"Clock:"); LCD_ShowString(2,1," : :"); while(1) { LCD_ShowNum(2
发表于 2022-09-28
51单片机 按键控制LED流水灯模式
1.将之前文件中Delay.c.h复制过来,进行添加2.模块化编程3.main.c#include <REGX52.H>#include "Timer0.h"#include "Key.h"#include <INTRINS.H>unsigned char KeyNum,LEDMode;void main(){ P2=0xFE; Timer0Init(); while(1) { KeyNum=Key(); if(KeyNum==1) { LEDMode++; if(LEDMode>=2)LEDMode=0; } } }void Timer0_Routi
发表于 2022-09-28
<font color='red'>51单片机</font> 按键控制LED流水灯模式
51单片机 LCD1602调试工具
本章博客讲述的是关于LCD1602的调试,使用它是为了更加直观的表示出代码所要实现的功能1.首先,需要添加两份驱动文件到新建的工程中来,再插入到新建的工程中来将其复制到新建文件的同一目录下,在进行添加2.写出以下代码进行编译查看效果#include <REGX52.H>#include "LCD1602.h"void main(){ LCD_Init(); LCD_ShowChar(1,1,'A'); LCD_ShowString(1,3,"Hello"); LCD_ShowNum(1,9,123,3); //高位补零,如果最后一位是2则显示23 LCD_
发表于 2022-09-28
<font color='red'>51单片机</font> <font color='red'>LCD1602</font>调试工具
51单片机 模块化编程
了解模块化编程1.首先了解一下传统方式编程和模块化编程传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等2. 模块化编程注意事项.c文件:函数、变量的定义.h文件:可被外部调用的函数、变量的声明任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)使用到的自定义函数的.c文件必须添加到工程参
发表于 2022-09-28
<font color='red'>51单片机</font> 模块化编程
51单片机 动态数码管显示
本章博客写的内容主要围绕动态数码管显示,动态数码管显示与静态数码管显示比较稍有变化,主要在添加延时函数这点上1.首先将上一章节使用子函数方法的代码复制过来将Nixie( , )移到下方while循环中(因为要实现效果为动态的)void main(){ while(1) { Nixie(1,1); Nixie(2,2); Nixie(3,3); }}编译下载后效果为:对于这种效果要进行消影的处理因为单片机编译处理顺序是按照:位选 段选 (清零),位选 段选 ,位选 段选由上一段的段选到下一部分的位选需要进行清零处理接下来主要进行:增添延时函数和清零处理2.在STC-ISP中生成相应的延时函数,函数时间为1ms,并对其进行灵活修改,
发表于 2022-09-28
<font color='red'>51单片机</font> 动态数码管显示

推荐帖子

晶振的问题
我用了一个有源的晶阵 是5v电压供电的那一种 输出是ttl电平 可是我下面接了一个非门 可是没有输出啊 是不是驱动能力不构 如何提高呢 感谢啊晶振的问题
futterfly 微控制器 MCU
推荐一款:【灵生】单片机代码自动生成器(自动编程工具)
推荐一款:【灵生】单片机代码自动生成器(自动编程工具)以往编写单片机程序全靠程序员敲代码,门槛高,学习困难,不容易入门,而且编程繁琐,本软件只需要鼠标一拖拽模块,再模块间功能连线下,再点生成代码,就可以完成自动编程工作,解放脑力和双手。单片机代码自动生成器(就是自动化编程),比如拖入指示灯模块和按钮模块,模块一连,然后点生成代码,就自动生成按一下按钮后指示灯就亮一下的代码,, 全自动生成,解放双手和脑力 用户群体: 客户是面向比如会电子电路但是不会单片机编
net2uizoo 创新实验室
急~~~~请教一条关于WinCE的SQL语句~~~~急
我在SQL2005上执行下面这条语句没有问题,但是在CE上就错了,请问怎么解决? select*from( SelectSakuseiHiduke, caseDakokuCodewhen\'01\'thenmax(SakuseiJikoku)else\'\'endasShuKkinTime, caseDakokuCodewhen\'02\'thenmax(SakuseiJikoku)else\'\'endasTaiKinTime fro
liujihouren WindowsCE
求MSP430中矩阵键盘同时按两个键,实现一个功能的程序
MSP430中,矩阵键盘同时按两个键,实现一个功能的程序怎么写啊求MSP430中矩阵键盘同时按两个键,实现一个功能的程序
hnhsplj 微控制器 MCU
verilog中文版教材
本帖最后由paulhyde于2014-9-1509:19编辑verilog中文版教材verilog中文版教材
dabenlu803 电子竞赛
求如下TCL555输出方波的周期
计算能力不足,请大家帮忙计算如下图中输出方波的周期@maychang@gmchen@chunyang@Gen_X@qwqwqw2088在计算过程中芯片内部MOS管导通电阻ron不能忽略 求如下TCL555输出方波的周期
S3S4S5S6 模拟电子
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved