51单片机简易计算器可算小数Word下载.docx

上传人:b****3 文档编号:14389859 上传时间:2022-10-22 格式:DOCX 页数:13 大小:133.28KB
下载 相关 举报
51单片机简易计算器可算小数Word下载.docx_第1页
第1页 / 共13页
51单片机简易计算器可算小数Word下载.docx_第2页
第2页 / 共13页
51单片机简易计算器可算小数Word下载.docx_第3页
第3页 / 共13页
51单片机简易计算器可算小数Word下载.docx_第4页
第4页 / 共13页
51单片机简易计算器可算小数Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

51单片机简易计算器可算小数Word下载.docx

《51单片机简易计算器可算小数Word下载.docx》由会员分享,可在线阅读,更多相关《51单片机简易计算器可算小数Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

51单片机简易计算器可算小数Word下载.docx

0xed,0xdd,0xbd,0x7d,

0xeb,0xdb,0xbb,0x7b,

0xe7,0xd7,0xb7,0x77};

charcodetable2[]="

789/456*123-.0=+"

;

charj,k,temp,temp1,temp2,key,mchar,m,flag2=0,flag3=0;

longx,y,num;

intoperators,input,iny;

charerror[5]="

error"

charoverflow[8]="

overflow"

charwelcome_[16]="

welcometouse!

"

voiddelay(uintx)//延时

{

uinta,b;

for(a=x;

a>

0;

a--)

for(b=10;

b>

b--);

}

voiddelay_ms(uintx)//延时

for(b=110;

voidwrite_com(ucharcom)//写命令

P0=com;

rs=0;

lcden=0;

delay(10);

lcden=1;

voidwrite_data(uchardate)//写数据

P0=date;

rs=1;

}

longming(intx)

longm;

switch(x)

{

case9:

m=1000000000;

returnm;

break;

case8:

m=100000000;

case7:

m=10000000;

case6:

m=1000000;

case5:

m=100000;

case4:

m=10000;

case3:

m=1000;

case2:

m=100;

case1:

m=10;

case0:

m=1;

}

voiddisplay(longa)

longd;

inti,flag1=0,temp,c=-1;

init();

if(a<

0)

a=a*c;

write_data('

-'

);

for(i=9;

i>

=0;

i--)

d=ming(i);

temp=a/d;

a=a%d;

if((temp==0)&

&

(flag1==0))

;

else

write_data(0x30+temp);

flag1=1;

}

if(i==2)

.'

voidinit()//LCD初始化

rw=0;

dula=0;

wela=0;

write_com(0x38);

//显示模式设置:

16×

2显示,5×

7点阵,8位数据接口

delay(20);

write_com(0x0e);

//显示模式设置

write_com(0x06);

光标右移,字符不移

write_com(0x01);

//清屏幕指令,将以前的显示内容清除

voidyunsuan()//运算

if(iny)

switch(operators)

case1:

x=x+y;

num=x;

if(num<

10000000000&

num>

-10000000000)

display(num);

else

dataoverflow();

case2:

x=x-y;

{

case3:

x=x*y;

num=x/100;

case4:

if(y==0)

dealerror();

if(y<

100)

x=x*100;

y=y*100;

y=y/100;

x=x/y;

y=0;

voiddealerror()//除数为0

inti=0;

write_com(0x01);

for(i=0;

i<

5;

i++)

write_data(error[i]);

voiddataoverflow()//数值溢出

8;

write_data(overflow[i]);

voidwelcome()//欢迎界面

16;

write_data(welcome_[i]);

voidkeyinput(chars)//键盘输入

if(s<

='

9'

s>

0'

)//判断按下的键是否为数值

if(flag3==0)

num=num*10+100*(s-'

num=num*10+10*(s-'

if(flag2==1)

num=num/10;

flag3=1;

if(operators>

y=num;

iny=1;

x=num;

if(num<

-10000000000)//当前数值是否超出限定范围

display(num);

dataoverflow();

switch(s)

case'

:

/*iny=0;

operators=0;

*/

flag2=1;

break;

write_data(table2[14]);

yunsuan();

iny=0;

num=0;

flag2=0;

flag3=0;

+'

if(operators)

operators=1;

write_data(table2[15]);

operators=2;

write_data(table2[11]);

*'

operators=3;

write_data(table2[7]);

flag3=0;

/'

operators=4;

write_data(table2[3]);

voidmain()//主函数

chari;

charflag0=1;

welcome();

for(i=0;

10;

delay_ms(100);

while

(1)

P3=0xf0;

temp1=P3;

P3=0x0f;

temp2=P3;

temp=temp1|temp2;

while(P3!

=0x0f)

beep=0;

beep=1;

if(temp==table1[i])

m=table2[i];

flag0=0;

if(flag0==0)

keyinput(m);

flag0=1;

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

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1