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

基于51单片机数码管计算器,普中开发板设计,51单片机,51单片机,proteus,音视频

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

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

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

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

4. 仿真

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

基于51单片机数码管计算器,普中开发板设计,51单片机,51单片机,proteus,音视频

5. 实物烧录和现象

基于51单片机数码管计算器,普中开发板设计,51单片机,51单片机,proteus,音视频

计算结果如下图:

软件准备:

第一次使用务必先安装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];			  //端选给P0
	a0=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;
			}
			else
			ff=16;
			if(num<100000&&num>-100000)
			{
			  TR0=0;
			}
			else
			TR0=1;

			break;

			case 3:
			x=x*y;						  //乘法运算
			num=x;

			if(num<100000&&num>-100000)
			{
			  TR0=0;
			}
			else
			TR0=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;
		}
		else
		TR0=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

基于51单片机数码管计算器,普中开发板设计,51单片机,51单片机,proteus,音视频文章来源地址https://www.toymoban.com/news/detail-787336.html

到了这里,关于【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于普中51单片机开发板的温控风扇

    自学单片机也不算很久,刚好遇上了这一门的课程设计,查找了好多的资料发现都不算合适,合适的又要收费,那么最后呢才找到了一个有关我使用的开发板的温控风扇程序,也就是普中单片机开发板,该程序来自--黑51论坛的作者yrx0203,论坛ID号:684871,在此特别鸣谢。话不

    2024年02月11日
    浏览(44)
  • 基于AT89C51单片机的简易计算机设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87715642?spm=1001.2014.3001.5503 源码获取 主要内容: 本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。 基本要求: 1、采

    2024年02月08日
    浏览(44)
  • 单片机实现简易计算器功能,附有解析与代码

    目录 首先分为根据要实现的功能来选择硬件和软件: 硬件部分 软件部分 输入部分: 计算部分: 连续计算: 源代码示例: 主函数: 键盘输入: LCD1602显示: 蜂鸣器: 延时函数: 首先我们要实现的功能有:多位显示,小数计算,连续计算,符号按错修改,, 用到LCD1602显示

    2024年02月09日
    浏览(40)
  • 单片机51实现计算器详细代码能自己运行

    实现单字节加减乘除四则运算 1、能通过键盘输入正确键值 2、能进行简单的四则运算 3、能以数码管正确显示数值 4、能重复操作 4.仿真图 如22+96

    2024年02月11日
    浏览(32)
  • 51单片机简单计算器实现(100行)附源码

     不引流,项目最后附上本项目百行源码!! 如果对你有帮助不妨点个赞! 本项目使用: 51单片机 , 矩阵键盘 , 四位数码管 使用LCD显示的思路相差不大,由于是仿真,包容性比较强,所以还有很大优化空间         实际上有一定编程基础的同学借助代码里的注释应该

    2024年02月03日
    浏览(39)
  • 【附报告】51单片机计算器(LCD1602液晶显示)

      由于本文较早,这里推荐一下近期刚优化的:【优化】51单片机计算器(LCD1602液晶显示)_Gxtoeilee的博客-CSDN博客   1 设计目标 设计可选模式的计算器  2 主要功能 功能一:可选两种计算模式,模式一为四则运算,模式二为扩展内容; 功能二:除法的计算结果保留到小数点

    2024年02月11日
    浏览(48)
  • 【C语言】51单片机计算器(LCD1602液晶显示)

      由于本文较早,这里推荐一下近期刚优化的:【优化】51单片机计算器(LCD1602液晶显示)_Gxtoeilee的博客-CSDN博客   1 设计目标 设计可选模式的计算器  2 主要功能 功能一:可选两种计算模式,模式一为四则运算,模式二为扩展内容; 功能二:除法的计算结果保留到小数点

    2024年02月07日
    浏览(45)
  • 普中51单片机学习(十四)

    中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 中断系统结构

    2024年02月22日
    浏览(30)
  • 普中51单片机学习(八)

    循环左移右移函数 crol (a,b):循环左移函数,a是左移的值,b是左移的位数。包含在instrins.h库函数里面。 cror (a,b):循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数里面。 实验代码

    2024年02月20日
    浏览(32)
  • 普中51单片机学习(十)

    数码管显示原理 动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同

    2024年02月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包