基本信息
源码名称:STM32多功能计算器
源码大小:2.01M
文件格式:.zip
开发语言:C/C++
更新时间:2021-07-11
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

这是我前几天用stm32f03c8t6做的一个简易计算器,用4×4矩阵键盘输入,LCD1602显示。下面是对我计算器的介绍,,附件中还可以下载源程序代码。

我的简易计算器是搭建在面包板上面的

图:


 

这是proteus仿真图,大家可以参照这个接线。(这里不建议用proteus进行仿真,proteus仿真stm32效果不好)

 



该计算器可以实现连续加减运算,

图:


 

较大数字或者较小数字可以用科学计数法显示,

图:


 

当用除法运算时,能够保留三位小数字,

图:




另外,在运算时还可以通过串口观察数据变化。

下面是部分源码:

#include "stm32f10x.h"

#include "delay.h"

#include "keyscan.h"

#include "LCD1602.h"

#include "usart.h"

#include "math.h"

u8 num,flag;

double r,o;

long long a,b,x,y,z,sum,k;

int e,f,g,h,i,t,len,w,l;

int s,m,w,j,q,d,n,c=0;

 

int main()

{

LCD_init();

uart_init(9600);

while(1)

{

  num=keyscan();

a=num;

if(a>=0&&a<=9&&s!=2&&flag!=0)

{

if(a!=0||n!=0)

{

LCD_write_data((u8)a 0x30);

if(n==0)

{

b=a;

}

else

{

b=sum*10;

sum=a;

}

sum=sum b;

///////////////////////////////  

            if(q==0&&j==0)

            {  

x=sum;

printf("x=%lld ",x);

d=1;

m=0;

            }

       if(q==1&&j==1)

 {

x=-sum;

printf("x=%lld ",x);

d=1;

m=0;

            }

 

/////////////////////////////////

            if(q==1&&(j==2||j==0))

            {             

              y=sum;

printf("y=%lld ",y);

d=2;

            }

/////////////////////////////////

            n ;

w ;

    delay_ms(100);

  }

 }

if(a==10&n!=0&&m!=1&&flag!=0)//

   {

  if(c>=1)

{

q=1;

j=0;

x=z;

}

      //LCD_write_data(' ');

LCD_write_data(0x2b);

printf(" ");

j=0;

n=0;

q=1;

flag=1;

b=0;

sum=0;

  c ;

  w ;

  

delay_ms(100);

 }

if(a==11&&m!=1&&flag!=0)

{

//LCD_write_data('-');

  LCD_write_data(0x2d);//''

printf(" - ");

if(c>=1)

{

q=1;

j=0;

x=z;

}

  if(d==0)

{

j=1;

}

if(d==1)

{

j=2;

}

    n=0;

        q=1;

        flag=2;

  b=0;

  sum=0;

  m=-m;

  w ;

c ;

delay_ms(100);

 }

if(a==12&n!=0&&m!=1&&flag!=0)

{

  LCD_write_data('*');//×

//LCD_write_data(0x2a);//×

  if(c>=1)

{

q=1;

j=0;

x=z;

}

printf(" * ");

   j=0;

        n=0;

        q=1;

        flag=3;

  b=0;

  sum=0;

  m=-m;

  w ;

c ;

delay_ms(100);

}

if(a==13&n!=0&&m!=1&&flag!=0)

{

// LCD_write_data('');//除号

LCD_write_data(0xfd);//÷

  if(c>=1)

{

q=1;

j=0;

x=z;

}

printf("/");


有需要的小伙伴可以到附件中去下载全部代码。

由于本人储备知识量较少,基础较为薄弱,计算器中使用变量较多,代码较为繁琐,感兴趣的小伙伴们可以在评论区相互探讨学习,若计算器中还存在问题,也希望大家可以指正批评。

最后,感谢大家的支持!!!