四位简易计算器精确到一位小数点.docx

上传人:b****3 文档编号:6719835 上传时间:2023-05-10 格式:DOCX 页数:13 大小:16.26KB
下载 相关 举报
四位简易计算器精确到一位小数点.docx_第1页
第1页 / 共13页
四位简易计算器精确到一位小数点.docx_第2页
第2页 / 共13页
四位简易计算器精确到一位小数点.docx_第3页
第3页 / 共13页
四位简易计算器精确到一位小数点.docx_第4页
第4页 / 共13页
四位简易计算器精确到一位小数点.docx_第5页
第5页 / 共13页
四位简易计算器精确到一位小数点.docx_第6页
第6页 / 共13页
四位简易计算器精确到一位小数点.docx_第7页
第7页 / 共13页
四位简易计算器精确到一位小数点.docx_第8页
第8页 / 共13页
四位简易计算器精确到一位小数点.docx_第9页
第9页 / 共13页
四位简易计算器精确到一位小数点.docx_第10页
第10页 / 共13页
四位简易计算器精确到一位小数点.docx_第11页
第11页 / 共13页
四位简易计算器精确到一位小数点.docx_第12页
第12页 / 共13页
四位简易计算器精确到一位小数点.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

四位简易计算器精确到一位小数点.docx

《四位简易计算器精确到一位小数点.docx》由会员分享,可在线阅读,更多相关《四位简易计算器精确到一位小数点.docx(13页珍藏版)》请在冰点文库上搜索。

四位简易计算器精确到一位小数点.docx

四位简易计算器精确到一位小数点

/****************************四位简易计算器(精确到一位小数点)********************************************

P0接4*4键盘的8个针脚

P1接共阴数码管a-h对应P1^0-P1^7

P3接S1-S8对应P3^0-P3^7

**************************************************************************************/

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitP0_4=P0^4;

sbitP0_5=P0^5;

sbitP0_6=P0^6;

sbitP0_7=P0^7;

sbitdin=P1^7;

//0123456789-

ucharcodedisplay[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

uchardataweima[]={0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff};

uchardatashu[4]={0,0,0,0};

uchardatak,key,i=0,temp,re=0;

intdatakey1,key2,x=0,y=0,sh;

intdataresult;

//*******************************延迟函数1ms*************************************

voiddelay(void)

{

uintn,m;

for(m=0;m<1;m)

for(n=0;n<110;n);

}

//********************************输入小数点*******************************************

voidxiaoshu(void)

{

if(re!

=0)

{

for(re=0;re<4;re)

shu[re]=0;

re=0;

i=0;

x=0;

y=0;

key1=0;

key2=0;

weima[0]=0xf7;

weima[1]=0xf7;

weima[2]=0xfb;

weima[3]=0xfd;

weima[4]=0xfe;

weima[5]=0xff;

weima[6]=0xff;

weima[7]=0xff;

}

else

{

x=i;

y;

}

}

//*********************************数码显示***********************************

voidscan(void)

{

intk;

for(k=0;k<4;k)

{

P1=display[shu[k]];

P3=weima[k4];

if((x!

=0)&&(k==x-1))

din=1;

delay();

P3=0xff;

}

}

//*****************************按键识别*********************************

voidanjian(void)

{

//----------扫描第1行-------------------

P0=0xff;

P0_4=0;

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

delay();//防抖动

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

switch(temp)

{

case0x07:

key=1;i;break;//“1“

case0x0b:

key=2;i;break;//“2“

case0x0d:

key=3;i;break;//“3“

case0x0e:

key=10;break;//““

}

}

temp=P0;

temp=temp&0x0f;

while(temp!

=0x0f)//松键判断

{

temp=P0;

temp=temp&0x0f;

}

}

//----------扫描第2行-------------------

P0=0xff;

P0_5=0;

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

delay();

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

switch(temp)

{

case0x07:

key=4;i;break;//“4“

case0x0b:

key=5;i;break;//“5“

case0x0d:

key=6;i;break;//“6“

case0x0e:

key=11;break;//“-“

}

}

temp=P0;

temp=temp&0x0f;

while(temp!

=0x0f)

{

temp=P0;

temp=temp&0x0f;

}

}

//----------扫描第3行-------------------

P0=0xff;

P0_6=0;

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

delay();

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

switch(temp)

{

case0x07:

key=7;i;break;//“7“

case0x0b:

key=8;i;break;//“8“

case0x0d:

key=9;i;break;//“9“

case0x0e:

key=12;break;//“*“

}

P1=display[key];

}

temp=P0;

temp=temp&0x0f;

while(temp!

=0x0f)

{

temp=P0;

temp=temp&0x0f;

}

}

//----------扫描第4行-------------------

P0=0xff;

P0_7=0;

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

delay();

temp=P0;

temp=temp&0x0f;

if(temp!

=0x0f)

{

switch(temp)

{

case0x07:

key=15;break;//复位

case0x0b:

key=0;i;break;//“0“

case0x0d:

key=14;break;//“=“

case0x0e:

key=13;break;//“/“

}

}

temp=P0;

temp=temp&0x0f;

while(temp!

=0x0f)

{

temp=P0;

temp=temp&0x0f;

}

}

}

//********************存数*********************************************

//存储输入的数字

voidcun(void)

{

ucharh;

if(i!

=1)

for(h=7;h>0;h--)

weima[h]=weima[h-1];

shu[i-1]=key;

//************

if(i==1)

sh=key;

else

sh=sh*10key;

//**************

key=20;

}

//********************运算**********************************************

//存储键入的运算符号,存储输入的值

voidsuan(void)

{

key1=sh;

sh=1;

//*****************************

if(x!

=0)

{

uinta;

a=pow(10,i-x-1);

key1=key1/a;

}

elsekey1*=10;

//******************************

k=key;

for(i=0;i<4;i)

shu[i]=0;

weima[0]=0xf7;

weima[1]=0xf7;

weima[2]=0xfb;

weima[3]=0xfd;

weima[4]=0xfe;

weima[5]=0xff;

weima[6]=0xff;

weima[7]=0xff;

i=0;

key=20;

x=0;

}

//********************计算结果******************************************

voidresu(void)

{

ucharm=0;

re;

key2=sh;

//********************************

if(x!

=0)

{

uinta;

y;

a=pow(10,i-x-1);

key2=key2/a;

}

elsekey2*=10;

//*************有小数点*********************

if(y!

=0)

{

if(k==10)result=key1key2;

if(k==11)result=key1-key2;

if(k==12)result=(key1*key2)/10;

if(k==13)result=10*key1/key2;

if(result>9999)

{

x=0;

result/=10;

}

elsex=3;

}

//*************没有小数点*********************

else

{

if(k==10)result=(key1key2)/10;

if(k==11)result=(key1-key2)/10;

if(k==12)result=(key1*key2)/100;

if(k==13)result=key1/key2;

x=0;

}

//************负值情况*****************

if(result<0)

{

result=0-result;

m=1;

}

shu[0]=result/1000;//千位

shu[1]=result/100;//百位

shu[2]=result0/10;//十位

shu[3]=result;//个位

i=4;

//**************正数显示***************

if(m!

=1)

{

if((x==0)&&(shu[0]==0))

{

shu[0]=10;

if(shu[1]==0)

{

shu[1]=10;

if(shu[2]==0)

shu[2]=10;

}

}

elseif(shu[0]==0)

{

shu[0]=10;

if(shu[1]==0)

shu[1]=10;

}

}

//***********负值显示****************

else

{

if(x==0)

{

if((shu[0]==0)&&(shu[1]==0)&&(shu[2]==0))

{

shu[0]=10;

shu[1]=10;

shu[2]=12;

}

elseif((shu[0]==0)&&(shu[1]==0))

{

shu[0]=10;

shu[1]=12;

}

elseif(shu[0]==0)

shu[0]=11;

}

else

{

if((shu[0]==0)&&(shu[1]==0))

{

shu[0]=10;

shu[1]=12;

}

elseif(shu[0]==0)

shu[0]=11;

}

}

//******************************************

key=20;

weima[4]=0xf7;

weima[5]=0xfb;

weima[6]=0xfd;

weima[7]=0xfe;

 

}

//***********************主函数*****************************************

voidmain()

{

while

(1)

{

scan();

anjian();

//-------计算结果-----

if(key==14)

resu();

//------小数点------

elseif(key==15)

xiaoshu();

//------运算符--------

elseif((key<14)&&(key>9))

suan();

//-------输入数字----------

elseif((key<10)&&(key>-1))

{

if(i<5)cun();

elsei=4;

}

}

}

//**********************************************************************

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2