基于51单片机的简易计算器设计(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!

提供对应的Proteus仿真电路图,Keil程序源码(C语言),设计文档、原理图,PCB、模块资料、元件清单、程序流程图等电子资料参考学习,附带项目全部资料下载链接。

1)项目完整资料获取链接:下载链接

2)Keil、Proteus各个版本安装包: 下载链接

01设计要求

设计一个基于51单片机的简易计算器设计系统:

功能:进行计算器的基本功能运算。

02系统概述

1)硬件:4*4 矩阵键盘 + LCD1602显示

2)软件:主程序、按键扫描、LCD1602显示三大模块

3)软件程序主要由三部分组成: 主程序、按键扫描程序和LCD1602显示程序

03Proteus仿真在这里插入图片描述

04示例代码

#include "reg52.h"
#include <stdlib.h>  

/**************计算器复位****************/
void fuwei()
{
    uchar idata j,i;
    write_com(0x0f); write_com(0x01); write_com(0x81);
    resultdate=0;
    for(i=0;i<2;i++)
    {
        date[i]=0;bfun[i]=0;pai[0][i]=0;pai[1][i]=0;fsym[i]=0;futojiao[i]=0;
        for(j=0;j<14;j++) bdate[i][j]='\0';
    }
    count=0;count_num=0;proc=0;ferror=0;eqsign=0;sc=0;savesign=0;ywei=0;press=0;on_symbol=0;
}

/**************error处理******************/
void callerror(void)
{
    uchar idata i;
    write_com(0x01); write_com(0x81);
    write_str("     error!     ");
    for(i=0;i<200;i++) delay(25);
}

/*****************运算符预处理*****************/
void cullars(uchar csym)
{
    read_date();
    ferror++; continu=csym;
    if(ferror==2&&state<0x43){callerror();huifu();return;}
    if(ferror==2&&state>0x42)
    {
        press=1;
        process_date('=');
        press=1;
        process_date('m');
        ferror=1;
        if(continu=='^'||continu=='%'){process[proc]='h';proc++;process[proc]=continu;proc++;}
        else{process[proc]=continu;proc++;}
    }
    if(continu=='%') write_str(" f");
    else write_date(' ');
    write_date(continu);
    ywei=0; savesign=0; count_num=1; count=0; on_symbol=continu;
    write_com(0xc2);
}

05原理图

在这里插入图片描述

注:

  1. 源码使用Keil4或Keil5打开

  2. 仿真使用的是Proteus8.13及以上版本,版本过低可能会打不开。

06资料获取

1)项目完整资料获取链接:下载链接

2)Keil、Proteus各个版本安装包: 下载链接

posted @ 2026-06-30 14:38  _Passion  阅读(14)  评论(0)    收藏  举报