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

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

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P04

1. 主要功能:

普中开发板实验设计

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

功能要求:实现加减乘除四则简单运算数码管显示

1、能通过矩阵键盘输入正确键值;

2、能进行简单的四则运算;

3、能以数码管正确显示数值;

4、最大支持运算结果9 9999,超出将蜂鸣器报警;

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

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

资料下载链接:

P系列单片机设计下载链接(复制到浏览器打开)

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

2. 讲解视频:

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

【普中】基于51单片机简易计算器仿真+开发板讲解(proteus代码报告)

3. 设计说明书(报告)

本次课程设计的主要目标是以51单片机为基础,结合Proteus仿真软件,设计一款简易计算器。这个计算器需要实现加减乘除四则运算功能,并且能够将运算结果通过数码管进行显示。这个任务不仅要求我们掌握单片机的编程技术,还需要我们深入理解数码管显示的工作原理,同时还需要通过Proteus软件进行系统的仿真和调试。

在设计过程中,我们将从硬件电路设计和软件编程两个方面进行。硬件电路设计包括单片机最小系统、输入按键、输出数码管等部分。其中,单片机最小系统是整个系统的核心,它包括了单片机、时钟电路、复位电路等基本部分。输入按键将用于用户输入数字和运算符号,而输出数码管则将用于显示运算结果。

软件编程方面,我们将使用C语言进行编程。首先,我们需要根据设计需求,编写出相应的程序。程序应该能够读取用户的输入,进行四则运算,并根据运算结果驱动数码管进行显示。然后,我们将在Proteus中进行仿真和调试,检查程序的正确性和系统的稳定性。

通过这个课程设计,我们不仅能够更加深入地理解单片机的原理和应用,还能够掌握基本的电路设计和软件编程技能。同时,通过Proteus的仿真和调试功能,我们还可以更好地理解系统的运行过程,提高我们的调试和解决问题的能力。我们期待通过这个课程设计,能够更好地掌握单片机的应用,为未来的学习和工作打下坚实的基础。

4. 仿真

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

5. 实物烧录和现象

计算结果如下图:

软件准备:

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

双击打开 STC-ISP.exe。

下载步骤:

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

1.选择选择单片机型号

2.选择下载器的串口

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

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

6. 程序代码

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

核心代码:

#include //头文件#include//头文件#include#define uint unsigned int //宏定义#define uchar unsigned char//宏定义long x=0,y=0,num=0;uint operators,input,iny=0;uchar key,k,ff=16;sbit a0=P2^2;//138锁存器sbit a1=P2^3;sbit a2=P2^4;sbit beep=P2^5;sbit led=P3^0; uchar code table[]={ //数码管段选 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x00,0x40 }; //uchar code table1[]={0xfe,0xfd}; //数码管位选void delay(uint xms)//延时{uint xx,yy;for (xx=xms;xx>0;xx--)for(yy=110;yy>0;yy--);}void display() //显示函数,数码管动态扫描{uchar wan,qian,bai,shi,ge;wan=num/10000;qian=num%10000/1000;bai=num%1000/100;shi=num%100/10;//num求摸数码管显示十位ge=num%10;//num求余数码管显示个位P0=0x00;//数码管全关P0=table[ff];//端选给P0a0=0; //位选a1=0; a2=0;delay(3);//延时P0=0x00;P0=table[ge];//段选显示个位数a0=0;a1=0;a2=0;//选中第一位delay(3);P0=0x00;P0=table[shi];//段选显示十位数a0=1;a1=0;a2=0;//选中第二位delay(3);P0=0x00;P0=table[bai];a0=0;a1=1;a2=0;//选中第三位delay(3);P0=0x00;P0=table[qian];//段选显示千位数a0=1;a1=1;a2=0;//选中第四位delay(3);P0=0x00;P0=table[wan];//段选显示万位数a0=0;a1=0;a2=1;//选中第五位delay(3);} /**********算术运算函数*************/void arithmetic(){if (iny){switch(operators){case 1://加法运算x=x+y;num=x;if(num-100000) //正常范围{TR0=0;}else //超出范围,报警TR0=1;break;case 2: //减法运算x=x-y;num=x;if(num<0){num=num*(-1);ff=17;}elseff=16;if(num-100000){TR0=0;}elseTR0=1;break;case 3:x=x*y;//乘法运算num=x;if(num-100000){TR0=0;}elseTR0=1;break;case 4://除法运算x=x/y;num=x;if(y!=0) //除数不为0{//TR0=0;led=1;}else//除数为0报警//TR0=1;led=0;}}} /***********符号处理函数*************/void fuhao() {if(key=0)//判断按下的键是否为数值{num=num*10+(key-0);if (operators>0){y=num;iny=1;}else{x=num;if(num-100000){TR0=0;}elseTR0=1;}}else{switch(key)//按键判断{case 'c'://x=0;//y=0;//num=0;if(operators==0){x=x/10;//一位一位删除num=x;iny=0;}if(operators>0){y=y/10;//一位一位删除num=y;}//iny=0;//operators=0;//display();break;case '=':arithmetic();iny=0;operators=0;//num=0;break;case '+':if (operators)arithmetic();operators=1;num=0;break;case '-':if (operators)arithmetic();operators=2;num=0;break;case '*':if (operators)arithmetic();operators=3;num=0;break;case '/':if (operators)arithmetic();operators=4;num=0;break;}}}

7. 设计资料内容清单

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

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

1、仿真图

2、程序源码

3、功能要求

4、讲解视频

5、烧录工具

6、开题报告

7、设计报告

8、软硬件流程框图

Altium Designer 安装破解

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

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

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

相关数据手册

答辩技巧

设计报告常用描述

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