【普中开发板】基于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<reg52.h> //头文件
#include<intrins.h>//头文件
#include<math.h>
#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&&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&&num>-100000){TR0=0;}elseTR0=1;break;case 3:x=x*y; //乘法运算num=x;if(num<100000&&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<=9&&key>=0) //判断按下的键是否为数值{num=num*10+(key-0);if (operators>0){y=num;iny=1;}else{x=num;if(num<100000&&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