在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++语言基础 → STM32多功能计算器

STM32多功能计算器

C/C++语言基础

下载此实例
  • 开发语言:C/C++
  • 实例大小:2.01M
  • 下载次数:21
  • 浏览次数:156
  • 发布时间:2021-07-11
  • 实例类别:C/C++语言基础
  • 发 布 人:拾光小君
  • 文件格式:.zip
  • 所需积分:2

实例介绍

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

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

图:

from clipboard
 

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

 from clipboard



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

图:

from clipboard
 

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

图:

from clipboard

from clipboard
 

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

图:


from clipboard



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

下面是部分源码:

#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("/");


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

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

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


实例下载地址

STM32多功能计算器

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 smile2020 发表于: 2022-01-01 16:00 54
没法用

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警