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

本文主要是介绍【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【普中开发板】基于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. 设计说明书(报告)

img

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

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

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

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

4. 仿真

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

img

5. 实物烧录和现象

img

计算结果如下图:

软件准备:

第一次使用务必先安装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

img

这篇关于【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/508273

相关文章

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快