简易计算器毕业设计(8)

2018-12-17 12:41

附 录

附录一 简易计算器源程序

#include

#include #include

#include

#define uchar unsigned char #define uint unsigned int #define ulong unsigned long float a,b ,c=0,jg; uchar

jxh,bz=0,yunsuan=0,ws=10,shuzhi,ks=0,xiaoshu=0,fuhej=0; bit

xiaoshubz=0,dm=0,dm1=0,dm2=0,dm3=0,dm4=0,dm5=0,dm6=0,dm7=0,dm8=0; bit shift=0,ctrl=0;

uchar code xa[]={0xef,0xdf,0xbf,0x7f }; Uchar code xb[][4]={{0xee,0xed,0xeb,0xe7},{0xde,0xdd,0xdb,0xd7},{0xbe,0xbd,0xbb,0xb7},{0x7e,0x7d,0x7b,0x77},}; uchar hc[8],table1[8]={21,21,21,21,21,21,21,21}, table2[8]={21,21,21,21,21,21,21,21},xxianshi[14]={21,21,21,21,21,21,21,21,21,21,21,21,21,21}; uchar

print[16]={21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21} ; void take( ) ; void delay(uint m); uchar key() ; uchar keychuli(); void clearc( ) ; void chezhi( ); void hezhi( ) ; void see( ) ;

void zhuan16(float z); float zhuan10();

/////////////////////////////////////////////////////////////////////////////////////////////////// void main() {

lcdset( );

31

display( 1, 1, \科学计算器\ display( 3, 7, \ while(1) { if(shift==0)display( 2, 1, \

if(shift==1&&ctrl==0) display( 2, 1, \ if(shift==1&&ctrl==1)display( 2, 1, \ jxh=key() ;

switch(jxh)

{ case 1: if(shift==0)shuzhi=0;

if(shift==1&&ctrl==0)shuzhi=5;

if(shift==1&&ctrl==1)shuzhi=10;take( );see( );break; //数字0,1 case 2: if(shift==0)shuzhi=1;

if(shift==1&&ctrl==0)shuzhi=6;

if(shift==1&&ctrl==1)shuzhi=11;take( );see( );break; //数字2,3 case 3: if(shift==0)shuzhi=2;

if(shift==1&&ctrl==0)shuzhi=7; if(shift==1&&ctrl==1)shuzhi=12; take( );see( );break; //数字4,5

case 4: if(shift==0)shuzhi=3;

if(shift==1&&ctrl==0)shuzhi=8; if(shift==1&&ctrl==1)shuzhi=13; take( );see( );break; //数字6,7

case 11: if(shift==0)shuzhi=4;

if(shift==1&&ctrl==0)shuzhi=9; if(shift==1&&ctrl==1)shuzhi=14; take( );see( );break; //数字8,9 case 12: shuzhi=22 ;if(shift==1&&ctrl==1)shuzhi=15; take( ); see( ); break; /// 小数点 case 13: if(shift==0)

{dm=1;dm1=1;ks=7;bz=6;} if(shift==1&&ctrl==0)

{dm=1;dm2=1;ks=8;bz=6;}see( );break;//计算sin ,cos

case 14: if(shift==0)

{dm=1;dm3=1;ks=5;bz=6;} if(shift==1&&ctrl==0)

{dm=1;dm4=1;ks=6;bz=6;} if(shift==1&&ctrl==1)

{dm=1;dm8=1;ks=12;bz=6;ctrl=0;}see( );break;//计算 平方,根号,10>16进制,

case 21: if(shift==0)

32

{dm=1;dm5=1;ks=9;bz=6;} if(shift==1&&ctrl==0)

{dm=1;dm6=1;ks=10;bz=6;} if(shift==1&&ctrl==1)

{dm=1;dm7=1;ks=11;bz=6;}see( );break;//计算 tan ,cot,16>10进制 case 22: fuhej++;if(fuhej==1)shift=!shift;if(fuhej==2){ctrl=!ctrl;fuhej=0;}break; //复合键设定

case 23: if(bz==0){bz=1;ks=1;hezhi( );} see( ); break; //+

case 24: if(bz==0){bz=2;ks=2;hezhi( );} see( ); break; //- case 31: if(bz==0){bz=3;ks=3;hezhi( );};see( );break; //* case 32: if(bz==0){bz=4;ks=4;hezhi( );};see( );break; // \

case 33: if(bz<7&&bz!=0)

{bz=5;yunsuan=ks;if(dm==0)hezhi( );

else {bz=6;hezhi( );bz=5;} see( );};break; // =

case 34: clearc( );see( ); display( 3, 7, \// 清零

}

switch(yunsuan) { case 1: jg=a+b ;chezhi( );yunsuan=0;break; case 2: jg=a-b ;chezhi( );yunsuan=0;break; case 3: jg=a*b ;chezhi( );yunsuan=0;break; case 4: jg=a/b ;chezhi( );yunsuan=0;break; case 5: jg=a*a ;chezhi( );yunsuan=0;break; case 6: jg=sqrt(a);chezhi();yunsuan=0;break; case 7: jg=sin(a);chezhi( );yunsuan=0;break; case 8: jg=cos(a);chezhi( );yunsuan=0;break; case 9: jg=tan(a);chezhi( );yunsuan=0;break; case 10: jg=log10(a);chezhi( );yunsuan=0;break;

case 11: jg=zhuan10();chezhi( );yunsuan=0;break;//16>10 case 12: zhuan16(a);see( );yunsuan=0;break; //10>16 } } }

///***************************清零函数*********************************************//

// 说明:将一些中间变量清零,并将显示缓冲区送灭的代码 void clearc( ) { uchar i;

33

bz=0;yunsuan=0;ws=10;c=0;ks=0;xiaoshu=0;

xiaoshubz=0;dm=0;dm1=0;dm2=0;dm3=0;dm4=0;dm5=0;dm6=0; dm7=0;dm8=0;ctrl=0;shift=0;fuhej=0; for(i=0;i<8;i++)

{table1[i]=21;table2[i]=21;xxianshi[i]=21; }

for(i=0;i<14;i++) { xxianshi[i]=21; }

for(i=0;i<16;i++) { print[i]=21; } }

///***************************拆字函数***********************************//

//说明:将运算的结果拆开,给予不同的运算不同的精度,然后送显示缓冲区 void chezhi( )

{ uchar i; bit j=0;

if(jg<0){jg=jg*(-1);j=1; }

if(jg<99999999)

{xxianshi[0]=jg/10000000 ;

xxianshi[1]=(ulong)(jg)/1000000; xxianshi[2]=(ulong)(jg)/100000; xxianshi[3]=(ulong)(jg)/10000; xxianshi[4]=(ulong)(jg)/1000; xxianshi[5]=(ulong)(jg)/100; xxianshi[6]=(ulong)(jg)/10; xxianshi[7]=(ulong)(jg);

if(((yunsuan==4)|(xiaoshubz!=0)|dm==1)&&(dm7==0)) { xxianshi[8]=22;

xxianshi[9]=(ulong)(jg*10); xxianshi[10]=(ulong)(jg*100); xxianshi[11]=(ulong)(jg*1000); if(dm==1)

{xxianshi[12]=(ulong)(jg*10000); xxianshi[13]=(ulong)(jg*100000); } } if(jg!=0)

{ for(i=0;i<8;i++)

{ if(xxianshi[i]!=0) {xxianshi[i-1]=21;break; } if(xxianshi[i]==0){xxianshi[i]=21;

34

if(i==7)xxianshi[i]=0; } } }

else{ for(i=0;i<8;i++) { xxianshi[i]=21; }

xxianshi[7]=0; }

if(j==1) //显示‘-’号 { for(i=0;i<8;i++) {if( xxianshi[i]!=21)

{ xxianshi[i-1]=17;break; } } } see( ); }

else display( 4, 2, \

}

///********************************显示****************************************// void see( )

{ uchar i,j=0,k=0; if(dm1==1)

{display( 3, 1, \ } if(dm2==1)

{display( 3, 1, \ } if(dm3==1)

{display( 3, 1, \平方\ } if(dm4==1)

{display( 3, 1, \根号\ } if(dm5==1)

{display( 3, 1, \ } if(dm6==1)

{display( 3, 1, \

35

函数


简易计算器毕业设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:袁天罡称骨算命(男女命)详解-刘东整理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: