基于51单片机的简易计算器设计

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

一.硬件方案

本设计是以51单片机为核心的计算器模拟系统设计,输入采用4×4矩阵键盘,可以进行加、减、乘、除4位带符号数字运算,并在LCD1602上显示操作过程。


主要由51单片机+最小系统+LCD1602液晶显示模块+4*4矩阵按键电路;如图:

二.设计功能

(1)本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。

(2)矩阵按键输入、LCD1602液晶显示,构成一套可以运算两个数之间的加减乘除的设计。

(3)最大运算是:9999*9999,可以运算负数;


三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

四.软件设计

(1)程序流程图

(2)主程序源码


void main()

{

uchar   key=0xff;               //键值初始化

uchar   n=0; //第1个数可以按1-4次

uchar   m=5; //第2个数可以按1-4次

uchar   x=0; 

data_a=0;                       //前一个数

data_b=0;                       //后一个数

data_c=0;                       //结果 

init_lcd();  //1602液晶初始化

display_a();

    while(1)

  {

  key=keycheckdown(); /*动态扫描键盘,返回按键对应值,赋给j        key=0到f */

if(0xff!=key) /*若返回值有效,进入内部处理程序*/

  if(key<10)

  {

        if(n<4){data_a=data_a*10+key;m=5;display_a();}n++;  //首先输入第一个数

    if(m<4){data_b=data_b*10+key;n=5;display_b();}m++;  //必须按了+-*/才能输入第二个数

  }

          else

          { switch(key) /*功能键选择*/

{

case 0xa:n=5;m=0;x=1;W_lcd(5,0,'+');break; //加  /* + S=1 */ /* 数值转换函数 */

case 0xb:n=5;m=0;x=2;W_lcd(5,0,'-');break;   /* - S=2 *///减

case 0xc:n=5;m=0;x=3;W_lcd(5,0,'*');break;   /* * S=3 *///乘

case 0xd:n=5;m=0;x=4;W_lcd(5,0,'/');break;   /* / S=4 *///除

case 0xe:n=5;m=5;eql(x);W_lcd(12,0,'=');display_c(x);break;   /* = */

case 0xf:n=0;x=0;m=5; data_a=0;data_b=0;data_c=0;LCD_Write_String(0,0,table);LCD_Write_String(0,1,table);W_lcd(0,0,'0');break; /*     C*/

}     

  }

do{P1=0xf0;}while(P1!=0xf0); /*等待按键松开*/

  }//(0xff!=key)   

  }//while

}//main

关键字:51单片机  简易计算器  LCD1602 引用地址:基于51单片机的简易计算器设计

上一篇:基于51单片机的八路抢答器设计
下一篇:基于51单片机的甲醛浓度检测仪

推荐阅读最新更新时间:2024-11-07 13:24

AT89S51单片机的硬件组成
AT89S51单片机的片内硬件组成结构如图2-1所示。它把那些作为控制应用所必需的基本功能部件都集成在一个尺寸有限的集成电路芯片上,具有如下功能部件和特性:      (1)8位微处理器(CPU)。      (2)数据存储器(128B RAM)。      (3)程序存储器(4KB FLASH ROM)。      (4)4个8位可编程并行I/O口(PO口、Pl口、P2口和P3口)。      (5)1个全双工的异步串行口。      (6)2个可编程的16位定时器/计数器。      (7)1个看门狗定时器。      (8)中断系统具有5个中断源、5个中断向量。      (9)特殊功能寄存器(SFR) 26个。  
[单片机]
AT89S<font color='red'>51单片机</font>的硬件组成
液晶显示器lcd1602驱动程序
#include lcd1602_driver.h #include msp430g2553.h #include typedef.h #ifndef _LCD_1602_ #define _LCD_1602_ //lcd1602的io #define LCD1602_WR_DATA_PORT P2OUT //数据输出端口 #define LCD1602_RD_DATA_PORT P2IN //数据输入端口 #define LCD_EN_SET { P1DIR |= BIT5 ; P1OUT |= BIT5; } //lcd使能设置 #define LCD_EN_CLR { P1DIR |= BIT5; P1OUT &= ~
[单片机]
基于51单片机实现短距离无线通信
1 引言 短距离无线传输具有抗干扰性能强、可靠性高、安全性好、受地理条件限制少、安装灵活等优点,在许多领域有着广泛的应用前景。低功耗、微型化是用户对当前无线通信产品尤其是便携产品的实际需求,短距离无线通信逐渐引起广泛关注。常见的短距离无线通信有基于802.11的无线局域网WLAN、蓝牙 (blueTooth)、HomeRF及欧洲的HiperLAN(高性能无线局域网),但其硬件设计、接口方式、通信协议及软件堆栈复杂,需专门的开发系统,开发成本高、周期长,最终产品成本也高。因此这些技术在嵌入式系统中并未得到广泛应用。普通RF产品不存在这些问题,且短距离无线数据传输技术成熟,功能简单、携带方便,使其在嵌入式短程无线产品中得到了
[单片机]
基于<font color='red'>51单片机</font>实现短距离无线通信
51单片机中断定时器浅谈
中断处理函数原型 void timer1() interrupt 0 using 0 timer1() 函数名 interrupt 表示是中断处理函数 0 表示是第几个中断源的处理函数 using 0 表示是使用第几组工作寄存器一般在C语言里面编译器屏蔽了会自动分配程序员一般不用关心。 注意:如果在中断处理函数中进行处理数据不能处理的数据量太大,因为定时器时间已到它就会又进入下一个中断处理函数,也就是这个中断处理函数还没有处理完下一个中断又来了。这样会造成结果错误或异常。 定时器: 定时器又2个寄存器控制,一个是TMOD 用于选择定时器、计数器 T0,T1的工作模式和工作方式
[单片机]
C51单片机的3*3矩阵键盘程序
#include reg51.h #include dis.h /**延时1**/ //用于消抖 void delay1(void) {uchar i; for(i=0;i 200;i++); } /****延时2**********/ void delay2(void) { uchar i,j,s; for(i=250;i 0;i--) for(j=250;j 0;j--) for(s=5;s 0;s--); } /****串口初使化****/ void chuankou_init(void) { TMOD=0X20; //定时器1,方式2,8位 计数器 SCON=0x40; //方式1,而不允许
[单片机]
数字式温湿度传感器SHT11在51单片机系统的应用
1 概述 温湿度的测量在仓储管理、生产制造、气象观测、科学研究以及日常生活中被广泛应用,传统的模拟式湿度传感器一般都要设计信号调理电路并需要经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。SHT11是瑞士Sensirion公司推出的基于CMOSensTM技术的新型温湿度传感器。该传感器将CMOS芯片技术与传感器技术结合起来,从而发挥出它们强大的优势互补作用。 2 性能特点 SHT11温湿度传感器的主要特性如下: ●将温湿度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一芯片(CMOSensTM技术); ●可给出全校准相对湿度及温度值输出; ●带
[单片机]
数字式温湿度传感器SHT11在<font color='red'>51单片机</font>系统的应用
ORG 0030H
ORG是伪指令,告诉编译器,程序从ROM的0000开始存放程序,但是AJMP MAIN是一条无条件跳转指令,也就是说,单片机上电之后首先从0000处开始执行程序,但是,AJMP直接将程序跳转到MAIN标号指向的存储区域开始取指令,并执行,而一般MAIN标号是放在语句ORG 0030之后的,也即,主程序是从0030这个地址开始存放的; 这是因为,单片机内部有几个中断源,默认内部中断(包含几个定时器中断,还有外部中断)的入口是在0000-0030之间的,每个中断大概占用两个字节还是四个字节,记不清楚了。而这些内部中断一旦产生,指针必然立刻指向0004-0030之间,如果你的程序有语句放在这个地址内,程序必然跑飞!!! 因此,在80
[单片机]
基于51单片机的数字电压表仿真设计
0 引言 随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。数字电压表是采用数字化测量技术设计的电压表。数字电压表与模拟电压表相比,具有读数直观、准确、显示范围宽、分辨力高、输入阻抗大、集成度高、功耗小、抗干扰能力强,可扩展能力强等特点,因此在电压测量、电压校准中有着广泛的应用。本文采用ADC0808对输入模拟信号进行转换,控制核心AT89C51单片机对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号,通过Proteus仿真软件实现接口电路设计,并进行实时仿真。 Proteus软件是一种电路分析和实物模拟仿真软件。它运
[单片机]
基于<font color='red'>51单片机</font>的数字电压表仿真设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved