资源简介

本设计以单片机为核心,用LCD12864显示编写而成的简易计算器,能实现10以内的加减乘除,硬件电路采用Protues搭建,程序采用Keil编写,用两者的连调实现计算器的效果。

资源截图

代码片段和文件信息

#include “reg51.h“
#include 
#include “ziku.h“
#define uchar unsigned char
uchar keyi=-4j=0a=0;
int suan[8]={00000000};
writedata (uchar dat);
writecmd(uchar cmd);
LCDInitialize();
Show(uchar Pageuchar Lineuchar Widthuchar *Row);
ShowGraph(uchar Pageuchar Lineuchar Widthuchar Highuchar *Graph);
Showchinese(uchar pageuchar lineuchar *p);
Showshu(uchar pageuchar lineuchar *q);

void delayms(uchar ms)
{
uchar i;
while(ms--)
{
for(i=0;i<60;i++);
}
}

uchar keyscan(void)
{
  uchar scantemp;
  P1=0xf0;
  if((P1&0xf0)!=0xf0)
  {
    delayms(1000);
i=i+4;j=j+1;
delayms(10);
if(j>7) j=0;
if(i>24) i=-4;
if((P1&0xf0)!=0xf0)

 scan=0xfe;
 while((scan&0x10)!=0)
 { 
   P1=scan;
   if((P1&0xf0)!=0xf0)
   {temp=(P1&0xf0)|0x0f;
   return((~scan)+(~temp));
   }
   else scan=(scan<<1)|0x01;
   }
  }
 }
 return(0);
 }

jisuan()

  int n;
  if(a==1)
  { n=suan[1]/suan[5];
    delayms(10);
Showshu(540&shuzi[15*16]);
Showshu(548&shuzi[n%10*16]);
}
else
if(a==2)
{ n=suan[1]*suan[5];
  delayms(10);
  Showshu(540&shuzi[n/10*16]);
      Showshu(548&shuzi[n%10*16]);
 }
else
if(a==3)
    { n=suan[1]-suan[5];
  delayms(10);
  Showshu(540&shuzi[15*16]);
  Showshu(548&shuzi[n%10*16]);
     }
 else
 if(a==4)
 {
  n=suan[1]+suan[5];
  delayms(10);
  Showshu(540&shuzi[n/10*16]);
  Showshu(548&shuzi[n%10*16]);
}
}

main(void)
{
LCDInitialize();
    Showchinese(00qing);
Showchinese(016shu);
Showchinese(032ru);
Showchinese(048maohao);
ShowGraph(080324Pig);
    while(1)
{ int m;
key=keyscan();
switch(key)
{
  case 0x11: Showshu(5i&shuzi[7*16]);suan[j]=7;break;
  case 0x12: Showshu(5i&shuzi[4*16]);suan[j]=4;break;
  case 0x14: Showshu(5i&shuzi[1*16]);suan[j]=1;break;
  case 0x18: for(m=0;m<7;m++) 
            { Showshu(58*m&shuzi[15*16]);}
            i=24;j=7;break;
  case 0x21: Showshu(5i&shuzi[8*16]);suan[j]=8;break;
  case 0x22: Showshu(5i&shuzi[5*16]);suan[j]=5;break;
  case 0x24: Showshu(5i&shuzi[2*16]);suan[j]=2;break;
  case 0x28: Showshu(5i&shuzi[0*16]);suan[j]=0;break;
  case 0x41: Showshu(5i&shuzi[9*16]);suan[j]=9;break;
  case 0x42: Showshu(5i&shuzi[6*16]);suan[j]=6;break;
  case 0x44: Showshu(5i&shuzi[3*16]);suan[j]=3;break;
  case 0x48: Showshu(5i&shuzi[14*16]);suan[j]=0;jisuan();break;
  case 0x81: Showshu(5i&shuzi[10*16]);a=1;break;
  case 0x82: Showshu(5i&shuzi[11*16]);a=2;break;
  case 0x84: Showshu(5i&shuzi[12*16]);a=3;break;
  case 0x88: Showshu(5i&shuzi[13*16]);a=4;break;
}
    }
}

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

     文件     100460  2011-02-04 14:03  计算器\jisuan.DSN

     文件       1054  2011-02-06 10:42  计算器\jisuan.PWI

     文件     100460  2011-02-04 14:03  计算器\Last Loaded jisuan.DBK

     文件      18953  2011-02-06 09:55  计算器\s

     文件         67  2011-02-06 09:55  计算器\s.lnp

     文件      16409  2011-02-06 09:55  计算器\s.M51

     文件       1609  2011-02-06 09:56  计算器\s.Opt

     文件        174  2011-02-06 10:05  计算器\s.plg

     文件       2191  2011-02-04 17:07  计算器\s.Uv2

     文件       6376  2005-03-22 15:22  计算器\STARTUP.A51

     文件      14048  2011-02-06 09:55  计算器\STARTUP.LST

     文件        749  2011-02-06 09:55  计算器\STARTUP.OBJ

     文件       1609  2011-02-06 09:52  计算器\s_Opt.Bak

     文件       2157  2011-02-04 11:59  计算器\s_Uv2.Bak

     文件       2715  2011-02-06 09:26  计算器\Text.c

     文件       6015  2011-02-06 09:55  计算器\Text.LST

     文件      12808  2011-02-06 09:55  计算器\Text.OBJ

     文件       1538  2011-02-05 09:18  计算器\Text1.C

     文件       4400  2011-02-06 09:55  计算器\Text1.LST

     文件       8857  2011-02-06 09:55  计算器\Text1.OBJ

     文件       2836  2011-02-06 09:55  计算器\ziku.h

     目录          0  2011-02-06 10:42  计算器

----------- ---------  ---------- -----  ----

               305485                    22


评论

共有 条评论