当前位置:首页 >> 智能终端演进 >> 【STM32单片机】简易计算器设计,d40

【STM32单片机】简易计算器设计,d40

cpugpu芯片开发光刻机 智能终端演进 1
文件名:【STM32单片机】简易计算器设计,d40 【STM32单片机】简易计算器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者


一、功能简介

本项目使用STM32F103C8T6单片机控制器,使用动态数码管模块、矩阵按键、蜂鸣器模块等。

主要功能: 系统运行后,数码管默认显示0,输入对应的操作数进行四则运算,支持最大8位显示,支持显示小数点后2位数。


二、软件设计 /*作者:嗨小易(QQ:3443792007)*///将整数各位取出存放数组//num:转换的整数//buf:转换后存储到数组内//返回值:整数的长度u8 int_to_array(u32 num,u8 buf[]){u8 i=0;u8 tempbuf[SMG_SHOW_BITNUM];int j=0;u8 cnt=0;if(num!=0)//传入的数据不为0{while(num!=0){tempbuf[i]=num%10;//将各个位的数赋值于数组tempbuf[i]num/=10;//现在数组tempbuf[i]记录的是各个位上的数的反序i++;//i记录这个数是几位数}for(j=i-1;j>=0;j--){buf[cnt++]=gsmg_code[tempbuf[j]];}}else//传入的数据为0buf[cnt++]=gsmg_code[0];return cnt;}//计算结果并显示void get_result_show(void){u8 smgbuf[SMG_SHOW_BITNUM];u8 bitnum=0;u8 key=0;u8 buf[3];//缓存显示小数的数据while(1){key=KEY_Matrix_Scan();if(key==14)//清除操作{sys_ctrl.equal=0;sys_ctrl.sign=0;sys_ctrl.curNum=0;sys_ctrl.preNum=0;sys_ctrl.dot=0;break;}//等号键、计算结果if(sys_ctrl.equal==SIGN_EQUAL){switch(sys_ctrl.sign){case SIGN_ADD: sys_ctrl.result=sys_ctrl.preNum+sys_ctrl.curNum;break;case SIGN_MIN: if(sys_ctrl.preNum<sys_ctrl.curNum)sys_ctrl.result=sys_ctrl.curNum-sys_ctrl.preNum;elsesys_ctrl.result=sys_ctrl.preNum-sys_ctrl.curNum;break;case SIGN_MUL: sys_ctrl.result=sys_ctrl.preNum*sys_ctrl.curNum;break;case SIGN_DIV: if(sys_ctrl.curNum!=0)sys_ctrl.result=(float)sys_ctrl.preNum/sys_ctrl.curNum;if(sys_ctrl.result!=(int)sys_ctrl.result)//有小数,保留小数后2位{sys_ctrl.result=sys_ctrl.result*100;sys_ctrl.dot=2;}break;}bitnum=int_to_array(sys_ctrl.result,smgbuf);if(sys_ctrl.dot)//有小数显示{if(sys_ctrl.result<10)//放大100倍结果小于10,比如0.01{buf[0]=0x3f|0x80;buf[1]=0x3f;buf[2]=smgbuf[0];SMG_Display(buf,SMG_SHOW_BITNUM-1-bitnum);}else if(sys_ctrl.result<100)//放大100倍结果小于100,比如0.12{buf[0]=0x3f|0x80;buf[1]=smgbuf[0];buf[2]=smgbuf[1];SMG_Display(buf,SMG_SHOW_BITNUM-bitnum);}else{smgbuf[bitnum-1-sys_ctrl.dot]|=0x80;SMG_Display(smgbuf,SMG_SHOW_BITNUM+1-bitnum);}}else//无小数显示SMG_Display(smgbuf,SMG_SHOW_BITNUM+1-bitnum);sys_ctrl.sign=0;}else{sys_ctrl.equal=0;break;}}}
三、实验现象

B站演示视频:https://space.bilibili.com/444388619


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接