• 大小: 253KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: 计算  51  

资源简介

stc89c51所制作的一个简易计算器包含原理图,使用51单片机制作的,利用矩阵键盘输入,实现数据的加减乘除,多位运算

资源截图

代码片段和文件信息



/*       能够实现多位的二级运算 
/************* 
键盘格式
1    2     3   +
4    5     6   -
7    8     9      *
0    c     =      /
************/



#include “reg52.h“
#include
#include
#include
#include “intrins.h“

int counter(void);
void calculate1();
void show(int num);

long int sum=0;  
uchar temp1=10;  
uchar k=0z=0i=0tm=0n=0flag=0; //lay对k tran对zq对清屏 i对lay   m对operator
 int lay[18];         //储存键入字符
char operator[3];
long int tran[6];

        //储存计算过程中运算符


void main()
{

UartInit();
  init1602();
    while(1)
  { 

    temp1=matrixkeyscan();    //键盘扫描

 
        if(temp1==‘c‘)      //将各个数组相当于初始化;    将1602初始化一下  即清屏
{
init1602();
k=0z=0i=0tm=0n=0flag=0;

 
if((temp1!=10))
{

 if((temp1!=‘=‘)&&(temp1!=‘c‘))
{  
lay[i]=temp1; 
i++;

if((temp1==‘+‘)||(temp1==‘-‘)||(temp1==‘*‘)||(temp1==‘/‘))
{
write_dat(temp1);   //显示运算符
write_com(0x06);
}
   }

}
if(temp1==‘=‘)        //     =在键盘扫描已经给显示了    
{   lay[i]=temp1;



/******************将多位转化为每个数字存在另一个数组*************/
   /**********   因为此处的限制 所以只能实现两个运算符*******/

     for( k=0;(lay[k]>=0&&lay[k]<=9);k++) t=k+1;  //将运算符找出 ,将t赋值,便于后面运算

if(k>=2)   //将单位数字转化为一个数字
{
switch(k)
 {
 case 2: lay[k-1]=lay[k-1]+10*lay[k-2]; break;
 case 3: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3] ;  break;
 case 4: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4] ;  break;
 case 5: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]+10000*lay[k-4] ;  break;
 }
}
tran[0]=lay[k-1];
tran[1]=lay[k];


  for(t++;(lay[t]>=0&&lay[t]<=9);t++) z++ ; //将单位数字转化为一个数字 ,将运算符之间的数字个数

  if(z>=2)  //统计为z
{
switch(z)
 {
 case 2: lay[k+1]=10*lay[k+1]+lay[k+2]; break;
 case 3: lay[k+1]=100*lay[k+1]+10*lay[k+2]+lay[k+3]; break;
 case 4: lay[k+1]=1000*lay[k+1]+100*lay[k+2]+10*lay[k+3]+lay[k+4]; break;
 case 5: lay[k+1]=10000*lay[k+1]+1000*lay[k+2]+100*lay[k+3]+10*lay[k+4]+lay[k+5]; break;
 }
}

   tran[2]=lay[k+1];
   tran[3]=lay[t]; z=0;


   for(t++;(lay[t]>=0&&lay[t]<=9);t++) z++ ; //将单位数字转化为一个数字 ,将运算符之间的数字个数
  k=t;
  
  if(z>=2)  //统计为z
{
switch(z)
 {
 case 2: lay[k-1]=lay[k-1]+10*lay[k-2]; break;
 case 3: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3] ;  break;
 case 4: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4] ;  break;
 case 5: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]+10000*lay[k-4] ;  break;
 }
}
   tran[4]=lay[k-1]

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        829  2017-12-22 16:50  计算器\1602计算器\jisuan.H

     文件       4144  2017-12-26 15:04  计算器\1602计算器\keyscan.h

     文件       1155  2017-12-28 15:57  计算器\1602计算器\lcd1602.h

     文件       5055  2017-12-30 15:30  计算器\1602计算器\main.c

     文件      14969  2017-12-30 15:21  计算器\1602计算器\main.LST

     文件      21563  2017-12-30 15:21  计算器\1602计算器\main.OBJ

     文件        573  2018-06-18 17:46  计算器\1602计算器\usart.c

     文件        196  2017-12-26 14:31  计算器\1602计算器\usart.h

     文件       1815  2017-12-30 15:21  计算器\1602计算器\usart.LST

     文件       2514  2017-12-30 15:21  计算器\1602计算器\usart.OBJ

     文件     201728  2018-03-24 09:25  计算器\1602计算器\电路图\许相乐.SchDoc

     文件      65311  2018-03-31 17:57  计算器\1602计算器\电路图\许相乐.SchDocPreview

     文件      19606  2017-12-30 15:21  计算器\1602计算器\计算机

     文件        706  2018-04-02 20:13  计算器\1602计算器\计算机.build_log.htm

     文件      10703  2017-12-30 15:21  计算器\1602计算器\计算机.hex

     文件         41  2017-12-30 15:21  计算器\1602计算器\计算机.lnp

     文件      23855  2017-12-30 15:21  计算器\1602计算器\计算机.M51

     文件        178  2017-12-30 15:30  计算器\1602计算器\计算机.plg

    .......     90014  2018-10-22 21:08  计算器\1602计算器\计算机.uvgui.lenovo

     文件      72773  2018-06-18 17:46  计算器\1602计算器\计算机.uvgui.xyt

     文件      72166  2018-03-16 18:08  计算器\1602计算器\计算机.uvgui_xyt.bak

    .......      6085  2018-10-22 21:08  计算器\1602计算器\计算机.uvopt

    .......     14420  2018-10-22 21:08  计算器\1602计算器\计算机.uvproj

    .......      5726  2018-03-09 16:28  计算器\1602计算器\计算机_uvopt.bak

    .......     14007  2018-03-09 16:28  计算器\1602计算器\计算机_uvproj.bak

     文件       3573  2017-12-12 09:09  计算器\1602计算器\键盘扫描及赋值.h

     文件     149655  2019-03-30 12:29  计算器\计算器硬件\原理图.pdf

     目录          0  2018-09-02 20:05  计算器\1602计算器\电路图

     目录          0  2018-10-22 21:08  计算器\1602计算器

     目录          0  2019-03-30 12:29  计算器\计算器硬件

............此处省略4个文件信息

评论

共有 条评论