单片机51实现计算器详细代码能自己运行

这篇具有很好参考价值的文章主要介绍了单片机51实现计算器详细代码能自己运行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.实现功能:

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

2.元器件清单

单片机51实现计算器详细代码能自己运行

3.软件流程图

单片机51实现计算器详细代码能自己运行
4.仿真图
单片机51实现计算器详细代码能自己运行
如22+96
单片机51实现计算器详细代码能自己运行
单片机51实现计算器详细代码能自己运行文章来源地址https://www.toymoban.com/news/detail-512541.html

6.相关代码

#include "reg51.h"
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
unsigned int a=0,b=0; //输入
unsigned char fuhao=0;//符号
unsigned int c=0;//结果
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
unsigned char disp[]={0,0,0,0,0,0,0,0};

void delay(unsigned int i)//延时
{
	while(i--);
}

unsigned char key_scan()//按键检测
{
unsigned char i,j;
i=0;
j=0;
P1=0x0f;
if(P1!=0x0f) //检测有无按下
{
 switch(P1)//检测行
 {
  case 0x0e:i=3;break;
  case 0x0d:i=2;break;
  case 0x0b:i=1;break;
  case 0x07:i=0;
 }
 P1=0xf0;
 switch(P1)//检测列
 {
  case 0xe0:j=13;break;
  case 0xd0:j=9;break;
  case 0xb0:j=5;break;
  case 0x70:j=1;
 }
 while(P1!=0xf0);//等待按键松开
}
return i+j;
}

void main()//主函数
{
	unsigned char i;
	unsigned int m=0;
	while(1)
	{
		//显示
		if(fuhao<5)
		{
		P0=smgduan[a%1000/100];smg1=0;delay(100);smg1=1;
		P0=smgduan[a%100/10];smg2=0;delay(100);smg2=1;
		P0=smgduan[a%10];smg3=0;delay(100);smg3=1;

		switch(fuhao)//符号
		{
			case 1:P0=0x01;break;
			case 2:P0=0x40;break;
			case 3:P0=0x08;break;
			case 4:P0=0x80;break;
			default:P0=0;
		}
		smg4=0;delay(100);smg4=1;

		P0=smgduan[b%1000/100];smg5=0;delay(100);smg5=1;
		P0=smgduan[b%100/10];smg6=0;delay(100);smg6=1;
		P0=smgduan[b%10];smg7=0;delay(100);smg7=1;
		}
		else//显示结果
		{
			P0=smgduan[c%1000/100];smg5=0;delay(100);smg5=1;
			P0=smgduan[c%100/10];smg6=0;delay(100);smg6=1;
			P0=smgduan[c%10];smg7=0;delay(100);smg7=1;
		}
		//==================================================
		i=key_scan();//检测
		if((i>0)&&(i<11))//输入数值
		{
			if(fuhao==0)//第1个输入
			{
				a=a*10+i-1;
				if(a>999)
					a=a%1000;				
			}
			else //第2个输入
			{
				b=b*10+i-1;
				if(b>999)
					b=b%1000;				
			}
		}
		if(i==13)//+
		{
			fuhao=1;
		}
		if(i==14)//-
		{
			fuhao=2;
		}
		if(i==15)//*
		{
			fuhao=3;
		}
		if(i==16)// /
		{
			fuhao=4;
		}
		if(i==11)//ok
		{						
			switch(fuhao)
			{
				case 1:c=a+b;break;
				case 2:c=a-b;break;
				case 3:c=a;c=c*b;break;
				case 4:c=a/b;
			}
			fuhao=5;						
		}
		if(i==12)//清除
		{			 
			 a=0;
			 b=0;
			 c=0;
			 fuhao=0;
		}
	}
}

到了这里,关于单片机51实现计算器详细代码能自己运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于AT89C51单片机的计算器设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87759134?spm=1001.2014.3001.5503 源码获取 主要内容: 本次设计所提出的一种基于单片机技术的简易计算器的方案,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它

    2024年02月03日
    浏览(43)
  • 基于AT89C51单片机四位加法计算器的设计

    1.设计任务 利用AT89C51单片机为核心控制元件,设计一个四位加法计算器,设计的系统实用性强、操作简单,实现了智能化、数字化。 1)、通过4*4矩阵键盘输入数字及运算符; 2)、可以进行4位十进制数以内的加法 运 算。如果计算结果超出四位数,则全部显示“E ” LED灯亮

    2024年02月04日
    浏览(48)
  • 基于AT89C51单片机的简易计算器的设计与仿真

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

    2024年02月03日
    浏览(57)
  • 【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)

    【普中开发板】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频) Proteus 仿真:Proteus 8.16(有低版本) 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:P04 普中开发板实验设计 本设计旨在设计一个基于51单片机的简易计算器仿真设计。 功能要求

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

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

    2024年02月09日
    浏览(47)
  • 基于AT89C52单片机的计算器设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/88637995?spm=1001.2014.3001.5503 源码获取 B 源码+仿真图+课程设计+51 摘 要 计算器一般是指“电子计算器”,能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操

    2024年01月16日
    浏览(58)
  • 如何用51单片机实现pwm调光+呼吸灯(超详细+源码)

    在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED灯的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音以及实现功率继电器的线圈节能等。 PWM(Pulse Width Modulation,脉冲宽度调制)为脉冲周期固定

    2024年02月14日
    浏览(82)
  • 【51单片机入门】实现流水灯的原理及四种方法(详细易上手型)

    初学单片机,流水灯的实现是必不可少的,下面将介绍流水灯的原理及使用STC-ISP软件延时计算器生成的延时代码实现流水灯的四种方法,最后介绍如何将延时函数模块化。 目录  一、流水灯原理  二、循环 三、移位运算符 四、库函数 五、数组          六、延时函数模块

    2024年02月05日
    浏览(57)
  • 51单片机实现简易计算机,Keil4代码Proteus工程一步到位

    目录  前言  Proteus硬件部分 键盘 程序部分 运算代码逻辑(代码解释) LCD屏幕显示运算结果 输入部分 键值判断部分 删除按键的实现 程序执行运算 Hello,大家好。想做关于嵌入式的一些小项目已经很久了,今天借着我们课设的机会,给大家展示我自己对代码逻辑的理解,为了方

    2024年02月08日
    浏览(42)
  • 定量分析计算51单片机复位电路工作原理 怎么计算单片机复位电容和电阻大小

    下面画出等效电路图  可以知道单片机内必然有一个电阻RX,为了简化分析,我们假设他是线性电阻(不带电容,电感的支路) 还有一个基础知识: 电容器的充电放电曲线: 还需要知道电容电压的变化是连续的,(高数知识)无法跳变。 一个很大的误区就是认为电容一上电

    2024年02月12日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包