51单片机简易计算器可算小数Word下载.docx
- 文档编号:18963179
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:12
- 大小:133.27KB
51单片机简易计算器可算小数Word下载.docx
《51单片机简易计算器可算小数Word下载.docx》由会员分享,可在线阅读,更多相关《51单片机简易计算器可算小数Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 简易 计算器 小数