永发信息网

用四位数码管显示的单片机计算器程序

答案:1  悬赏:0  手机版
解决时间 2021-04-05 08:44
  • 提问者网友:萌卜娃娃
  • 2021-04-04 15:48
用四位数码管,16位键盘显示。求个程序,思路也行,主要是能把这个做出来
最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-04-04 17:28
给个6位数码管的主程序,子程序 是显示和按键扫描 也比较长,就不贴出来了
假设结果不会溢出,还是6位数
void main()
{
while(1)
{
c=1;
while(c<7)//输入第1个6 位数
{
keyval=keyscan();
if(keyval<10)
{
switch(c)
{
case 1:b1=keyval; break;
case 2:b2=keyval; break;
case 3:b3=keyval; break;
case 4:b4=keyval; break;
case 5:b5=keyval; break;
case 6:b6=keyval; break;
}
c++;
}
display(b1,b2,b3,b4,b5,b6);//显示
}

while(c==7) //输入计算符号
{
keyval=keyscan();
if(keyval>=10)
{
d=keyval;
}
c=1;
}
while(c<7) //输入第2个6 位数
{
keyval=keyscan();
if(keyval<10)
{
switch(c)
{
case 1:d1=keyval; break;
case 2:d2=keyval; break;
case 3:d3=keyval; break;
case 4:d4=keyval; break;
case 5:d5=keyval; break;
case 6:d6=keyval; break;
}
c++;
}
display(d1,d2,d3,d4,d5,d6);
}
P1=0;
bb= b1*100000+b2*10000+b3*1000+b4*100+b5*10+b6;
dd=d1*100000+d2*10000+d3*1000+d4*100+d5*10+d6;

while(keyval!=15) //等待按下"="号
{
keyval=keyscan();
}
delay(100);
switch(d1)//根据输入的运算符,作不同的运算
{
case 10:ee=bb+dd; break;//加法
case 11:
flag1=0;//flagj 是正负号标志
if(bb>=dd);//减法
{
ee=bb-dd;
flag1=1;
}
else ee=bb-dd;
break;
case 12:ee=bb*dd; break;;//乘法
case 13:ee=bb/dd; break; ;//除法
}
f1=ee/100000%10;// 分离 个十百千万
f2=ee/10000%10;
f3=ee/1000%10;
f4=ee/100%10;
f5=ee/10%10;
f6=ee%10;
display(f1,f2,f3,f4,f5,f6);//显示运算结果
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯