【毕业设计】_基于STM32单片机的简易计算器(原理图+源码)
系统采用STM32单片机作为主控,并能够进行基本的四则运算和取余计算。通过矩阵键盘实现了一个简易的计算器功能。在进入仿真界面后,用户需要输入数字和运算方式。红框内的按键为数字按键,分别对应数字1-9,按键13对应数字0。右侧按键对应加、减、乘、除和取余的功能。按键14对应取余,按键12对应除法。下面以计算156乘以9为例进行演示,结果为1404。
·
一. 系统概述
系统采用STM32单片机作为主控,并能够进行基本的四则运算和取余计算。通过矩阵键盘实现了一个简易的计算器功能。

二. 仿真概述
- 在进入仿真界面后,用户需要输入数字和运算方式。红框内的按键为数字按键,分别对应数字1-9,按键13对应数字0。

- 右侧按键对应加、减、乘、除和取余的功能。按键14对应取余,按键12对应除法。

- 下面以计算156乘以9为例进行演示,结果为1404。

三.程序设计
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "MatrixKey.h"
#include "Key.h"
uint8_t num[16]={1,2,3,10,
4,5,6,11,
7,8,9,12,
13,0,15,16
};//用num数组对应矩阵上的1~16,表示计算器上的0~9
char lxc[]={"+-*/%="};//表示控制字符(10~13对应+-*/,15,16对应%=)
int main(void)
{
OLED_Init();
MatrixKey_Init();
uint8_t KeyNum,Tum;
uint32_t sum1,sum2;
unsigned char i,j,k;
unsigned char mode=0;
i=j=k=0;
sum1=sum2=0;
OLED_ShowString(1,1,"Please Input:");
while (1)
{
KeyNum=MatrixKey_GetValue();
if(KeyNum!=0)
{
Tum = num[KeyNum-1];
if(Tum<10&&k==0&&i<3)
{
i++;
sum1*=10;
sum1+=Tum;
OLED_ShowNum(2,1,sum1,i);
}
if(Tum>9&&Tum<17)
{
k=1;
switch(Tum)
{
case 10 : OLED_ShowChar(2,4,lxc[0]);mode=1;break;
case 11 : OLED_ShowChar(2,4,lxc[1]);mode=2;break;
case 12 : OLED_ShowChar(2,4,lxc[2]);mode=3;break;
case 13 : OLED_ShowChar(2,4,lxc[3]);mode=4;break;
case 15 : OLED_ShowChar(2,4,lxc[4]);mode=5;break;
}
}
if(Tum<10&&k==1&&j<3)
{
j++;
sum2*=10;
sum2+=Tum;
OLED_ShowNum(2,5,sum2,j);
}
if(Tum==16)
{
OLED_ShowChar(2,8,lxc[5]);
switch(mode)
{
case 1 : OLED_ShowNum(2,9,sum1+sum2,4);break;
case 2 : OLED_ShowSignedNum(2,9,(int32_t)(sum1-sum2),4);break;
case 3 : OLED_ShowNum(2,9,sum1*sum2,4);break;
case 4 : OLED_Showfloat(2,9,(float)sum1/(float)sum2,3,2);break;
case 5 : OLED_ShowNum(2,9,sum1%sum2,4);break;
}
}
}
}
}
24-32f-63
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)