【普中】基于51单片机简易计算器显示设计( proteus仿真+程序+设计报告+实物演示+讲解视频)

发布时间:2023年12月17日


【普中开发板】基于51单片机简易计算器显示设计( proteus仿真+程序+设计报告+实物演示+讲解视频)

Proteus 仿真:Proteus 8.16(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P05

📟1. 主要功能:

普中开发板实验设计

本设计旨在设计一个基于51单片机的简易计算器仿真设计。

性能指标

(1) 用单片机51单片机设计一个简易计算器, 并用1602液晶显示相应的

数据。

(2) 可以进行简单的加减乘除运算。

(3) 最大可以 9999*9999即计算结果9位数以内的运算。

(4) 可以通过 proteus 仿真和普中开发板运行。

(目前仅完全适配普中开发板A234,其他普中开发板型号可能需要做代码修改或接线)

需注意本设计仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

以下为本设计资料展示图:

📟2. 讲解视频:

讲解视频包含仿真运行讲解、实物运行讲解和代码讲解

【普中】基于51单片机简易计算器LCD显示proteus仿真实物讲解

📟3. 设计说明书(报告)

img

本设计以STC89C52RC单片机作为计算器的微处理器;采用44矩阵按键作为数据输入,以LCD1602实现信息交互。矩阵按键的设计:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成44=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。采用低功耗的字符型液晶作为显示器件,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。显示更为直观。该系统基于可靠地硬件设计和稳定的软件算法实现题目的基本要求。

📟4. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。
img

📟5. 实物烧录和现象

计算结果如下图:

img

软件准备:

第一次使用务必先安装CH340驱动。

双击打开 STC-ISP.exe。

下载步骤:

0.板子先上电,接电源线到电脑USB口,先不上电,板子无灯光。

1.选择选择单片机型号

2.选择下载器的串口

3.打开编译生成的 HEX 文件

4.点击下载,单片机板子电源键按下接通电源,等待下载完成提示

📟6. 程序代码

使用keil4或者keil5编译,代码有注释。

img

核心代码:

#include "reg52.h"
#include "string.h"
#include "stdio.h"
#include "lcd1602.h"
#include "keyboard.h"

#define keydeng		14
#define keyzuoyi    12

code unsigned char KeyDisPlaybuf[16] = 
{
    '1', '2', '3', '+',\
    '4', '5', '6', '-',\ 
    '7', '8', '9', '*',\
    '<', '0', '=', '/'
};

long Count(char *ch, char len)//简单计算器 仅支持加减乘除+-*/
{
    unsigned char i = 0;
    char Operation;
    long Num1=0,Num2=0;
    while(i<len && ch[i]!='+' && ch[i]!='-' && ch[i]!='*' && ch[i]!='/')	 //输入的数据 数值1
    {
        Num1*=10;
        Num1+=ch[i]-'0';
        i++;
    }
    Operation=ch[i++];
    while(i<len && ch[i]!='=')	   //输入的数据 数值2
    {
        Num2*=10;
        Num2+=ch[i]-'0';
        i++;
    }
    switch(Operation)	   //计算
    {
        case'+':return Num1+Num2;//加法
        case'-':return Num1-Num2;//减法
        case'*':return Num1*Num2;//乘法
        case'/':return Num1/Num2;//除法
    }
	return 0;
}

void EasyCounter(void)
{
	unsigned char buff[30];
	unsigned char text[30];
	unsigned char key;
	unsigned char i = 0;
	do
  {
			key = keycan();//读取键值	
			if(key!=0xff)//键值不等于0
			{
				text[i++]=KeyDisPlaybuf[key];//记录键值对应的字符
				text[i]='\0';
        		LCD_ShowStr(0,0,"                ");
				LCD_ShowStr(16-strlen(text),0,text); //第一行显示字符
			}
        if(key==keyzuoyi&&i>0)//按下"<"时删除一位
          i-=2;
	}while(key!=keydeng);//按下'='时结束输入
	sprintf(buff, "%ld", Count(text, strlen(text)));
  	LCD_ShowStr(0,1,"                ");
	LCD_ShowStr(16-strlen(buff),1,buff);	  //第二行显示字符
}

void main(void)	//主函数
{
  LCD_Init();
  while(1)
  {
    EasyCounter();	//按键扫描+计算+显示
  }
}

📟7. 设计资料内容清单

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码

3、功能要求

4、讲解视频

5、烧录工具

6、开题报告

7、设计报告

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

普中-2&普中-3&普中-4开发板原理图.pdf

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

文章来源:https://blog.csdn.net/weixin_52733843/article/details/135000741
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。