单片机做计算器的程序

单片机做计算器的程序,第1张

1、直接调用库函数。

2、下面是函数的配置,从中可以看出,i=0时,端口25.16.4所对应的灯亮,i=1时,端口27.28.5所对应的灯亮,在for循环中,两组灯交替闪烁。

3、通过自定义宏进行 *** 作,来实现。

4、自定义的宏如下,将灯的端口及开关,通过自定义宏的方式,可以在程序中进行直接 *** 作。

5、直接控制端口所对应的寄存器

6、直接 *** 作寄存器,需要定义端口对应的寄存器。

展开全部

首先会按键扫描,再会数码管或液晶屏显示,基本上可以了

程序

流程:

扫描按键(最多5次,最大65536,简易计算器吗)获得一个数,再扫描按键获得加减乘除符号

扫描按键获得另一个数

扫描按键获得“=”,显示计算结果

由于程序比较长,且与硬件有关,因此只贴出主程序:

void

main()

{

while(1)

{

c=1

while(c<6)//输入第1个5

位数

{

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

}

c++

}

display1(b1,b2,b3,b4,b5)

}

while(c==6)

//输入计算符号

{

keyval=keyscan()

if((keyval>=10)&&(keyval<14))

//10-13代表加减乘除

4种符号

{

d=keyval

}

c=1

display3(d)

}

while(c<6)

//输入第2个5

位数

{

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

}

c++

}

display2(d1,d2,d3,d4,d5)

}

bb=

b1*10000+b2*1000+b3*100+b4*10+b5//5个按键数值合成一个数

dd=d1*10000+d1*1000+d3*100+d4*10+d5

//另外5个按键数值也合成一个数

while(keyval!=14)

//等待按下"="

{

keyval=keyscan()

}

Delay1ms(10)

switch(d)

{

case

10:ee=bb+dd

break//+

case

11:

flag1=1//结果是负数的标志,先假定是负数

if(bb>=dd)

{

ee=bb-dd

//结果不是负数

flag1=0

}

else

ee=dd-bb

//减数和被减数交换

break

case

12:ee=bb*dd

break//*可能会溢出

case

13:ee=bb/dd

//除法小数部分会丢失,保留2位

ff=bb%dd

fd1=ff*10/dd

fd2=ff*100/dd%10

break

}

f10=ee/1000000000%10

f9=ee/100000000%10

f8=ee/10000000%10

f7=ee/1000000%10

f6=ee/100000%10

f5=ee/10000%10

f4=ee/1000%10

f3=ee/100%10

f2=ee/10%10

f1=ee%10

display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2)

while(keyval!=15)

{

keyval=keyscan()

}

b1=0b2=0b3=0b4=0b5=0

d1=0d2=0d3=0d4=0d5=0

bb=0dd=0ee=0

init2()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11150405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存