液晶显示计算器(主程序)

2023-10-21 21:28

本文主要是介绍液晶显示计算器(主程序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*-----------------------------------------------

  内容:整数之间运算,没有小数所有除法得出的结果不正确,有负号运算,
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include"display.h"
#include"delay.h"
#include"keyboard.h"


/*------------------------------------------------
                    主程序
------------------------------------------------*/
main()
{
 unsigned char num,i,sign;                   
 unsigned char temp[8];        //最大输入8个
 bit firstflag;
 int a=0,b=0;
 unsigned char s;

 Init_Timer0();   //初始化定时器0
while (1)         //主循环
  {


 num=KeyPro();  //扫描键盘
 if(num!=0xff)  //如果扫描是按键有效值则进行处理
   { 
    if(i==0)    //输入是第一个字符的时候需要把改行清空,方便观看
      {
      for(s=0;s<8;s++) //赋值完成后把缓冲区清零,防止下次输入影响结果
          TempData[s]=0;
      }
    if(('+'==num)|| (i==8) || ('-'==num) || ('x'==num)|| ('/'==num) || ('='==num))//输入数字最大值8,输入符号表示输入结束
      {
      i=0;  //计数器复位

     if(firstflag==0)  //如果是输入的第一个数据,赋值给a,并把标志位置1,到下一个数据输入时可以跳转赋值给b
         {
         sscanf(temp,"%d",&a);//从一个字符串输入到变量
         firstflag=1;
         }
      else  
         sscanf(temp,"%d",&b);
      for(s=0;s<8;s++) //赋值完成后把缓冲区清零,防止下次输入影响结果
            temp[s]=0;
      
      ///
      if(num!='=')      //判断当前符号位并做相应处理
         sign=num;      //如果不是等号记下标志位
      else
         {  
         firstflag=0;   //检测到输入=号,判断上次读入的符合
         switch(sign)
           {
            case '+':a=a+b;
            break;
            case '-':a=a-b;
            break;
            case 'x':a=a*b;
            break;
            case '/':a=a/b;
            break;
            default:break;
           }
         sprintf(temp,"%d",a);  //打印十进制到临时缓冲区
          for(s=0;s<8;s++)       //由于打印的是ASCII码值
            { 
            if(temp[s]==0)      //所以需要转换,如果为0表示null 数码管上则不能显示,所以赋值0
                TempData[s]=0;
            else if(temp[s]==0x2d)//表示负号,数码管显示负号 0x40
                 TempData[s]=0x40;
            else 
                 TempData[s]=dofly_DuanMa[temp[s]-'0'];//其他0-9负号则进行ASCII 到 数字处理,如当前是'3',用'3'-'0'=3
                                                       //'3'的16进制是0x33,'0'的16进制是0x30                 
            }
         sign=0;a=b=0;            //用完后所有数据清零
         for(s=0;s<8;s++)
            temp[s]=0;
         }
      }

   else    if(i<16)
      {

         temp[i]=num+'0'; 
         TempData[i]=dofly_DuanMa[num];//输出数据
         i++;   //输入数值累加
       }
  
    }    
  }
}

 

这篇关于液晶显示计算器(主程序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

QT学习之计算器

网格布局初尝试,快速构建计算器 项目结构: wident.h拖动建立界面,20个button,一个lineedit 布局好后整体网格布局调整,依次给每个案件输入文本,并改objectname方便后期辨识 为了在lineedit显示数字,转到槽,编辑点击事件,如显示“1” void Widget::on_pushButton1_clicked(){expression += "1";u

Arcgis字段计算器:随机生成规定范围内的数字

选择字段计算器在显示的字段计算器对话框内,解析程序选择Python,勾选上显示代码块, 半部分输入: import random; 可修改下半部分输入: random.randrange(3, 28) 表示生成3-28之间的随机数 字段计算器设置点击确定完成随机数的生成,生成的随机数如下图所示。

Vue初学-简易计算器

最近在学习Vue的指令,做了一个简易计算器,比较适合刚入门的人参考学习。用到的知识点有: 1.插值表达式 2.v-model,双向绑定+、-、*、/、**等操作符 3.v-show,控制操作数2是否显示,乘方时不显示操作数2 4.methods选项,定义了calculate ()方法,实现各种运算 5.watch选项,监听selected的值的变化。 下面是程序的执行效果: 如果选择的是**乘

每日OJ_牛客_Emacs计算器(逆波兰表达式)

目录 牛客_Emacs计算器(逆波兰表达式) 解析代码 牛客_Emacs计算器(逆波兰表达式) Emacs计算器__牛客网 解析代码 逆波兰表达式(后缀表达式)求值,需要借助栈,思路: 循环输入,获取逆波兰表达式,然后进行以下补助,直到测试完所有的测试用例: 遇到数字字符串,将该数字字符串转化为数字然后入栈。遇到操作符时,从栈顶取两个数字,然后进行该运算符所对应运算

Django 中的用户界面 - 创建速度计算器

在 Django 中创建一个用户界面来计算速度,可以通过以下步骤完成。这个速度计算器将允许用户输入距离和时间,计算并显示速度。 一、问题背景 一位 Django 新手希望使用 Django 构建一个用户界面,以便能够计算速度(速度 = 距离/时间)。用户创建了一个名为 “speed” 的 Django 项目。但是,在运行服务器时遇到了错误,无法获取速度的用户界面。 二、解决方案 1、检

多少次幂的计算器,指数计算器

https://miniwebtool.com/zh-cn/exponents-calculator/?n1=0.95&n2=100&prec=10

Python习题 159:设计一个工资计算器

(编码题)编写一个 Python 函数,设计一个工资计算器,用来计算每周的工资。参数有: hours_worked:工作小时数hourly_rate:时薪overtime_rate:超出40小时的工资率,默认为 1.5,仅限关键字参数 def calculate_payment(hours_worked, hourly_rate, *, overtime_rate=1.5):regul

数据结构实验:栈实现计算器(表达式计算)

原创作品转载请注明出处http://blog.csdn.net/acvcla/article/details/41732447 欢迎抄袭,造福各位伸手党 /*************************************************************************> 转载请注明出处http://blog.csdn.net/acvcla/artic

AWS-亚马逊网络服务(基础服务)-AWS 定价计算器-概述与动手部署:

让我们来概述并亲身实践如何使用 AWS 定价计算器来计算 概述: AWS 定价计算器是 Amazon Web Services (AWS) 提供的基于 Web 的工具,可帮助用户估算其特定用例的 AWS 服务成本。欢迎来到雲闪世界。 它允许客户建模他们的基础设施并根据他们打算使用的服务和资源预测每月的成本。 AWS 定价计算器的主要功能: 用户可以选择单个 AWS 服务,如 EC2

【栈】| 力扣高频题: 基本计算器二

🎗️ 主页:小夜时雨 🎗️专栏:算法题 🎗️如何活着,是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/basic-calculator-ii/description/ (可点击) 本道题是栈的经典应用问题:表达式求值问题, 我们依旧是采取栈 + 分类讨论的方式。 解决思路