51单片机实现简易计算器
本来做出来之后时间也是比较久了,具体代码的意义我暂时没有再回看,给标注出来,相信读者也是看了就明白,主要是当初在调试折腾的过程需要下一些功夫,因为当时是初学者,完成慢,成品也不好,还请多多包涵。
目录
- 功能概述
- 代码实现
- 相关链接
功能概述
这里使用的是普中的HC6800-ES V2.0开发板(根据B站up主江科大自化协的教程学习,讲得很好,他用的是这块板子),count1跟count2用的都是unsigned char的类型,结果也需要是unsigned char(太大了就溢出了所以这里都限制着,只能计算比较小的数),功能有加、减、乘、除、退格、清零(其实就是复位)。
代码实现
主要代码块如下所示,LCD屏的驱动用的是开发板资料带的,特别说明这里“10”对应的是数字0,“11”对应退格功能。
void main()
{unsigned char num;unsigned char count1=0,count2=0,flag=0,flag2=0;unsigned int sum1=0,sum2=0,sum=0;LCD_Init();while(1){num = MatrixKey();if(num){if(num>=1&&num<=11&&count1<5&&flag==0){if(num==11){sum1=sum1/10;count1--;if(count1<0){count1=0;}}else if(num==10){sum1=sum1*10;count1++;}else {sum1=sum1*10+num;count1++;}LCD_ShowNum(1,1,sum1,5);}if(num>=1&&num<=11&&count2<5&&flag==1){if(num==11){sum2=sum2/10;count2--;if(count2<0){count2=0;}}else if(num==10){sum2=sum2*10;count2++;}else {sum2=sum2*10+num;count2++;}LCD_ShowNum(1,7,sum2,5);}if('+'==num){LCD_ShowChar(1,6,'+');flag=1;flag2='+';}if('-'==num){LCD_ShowChar(1,6,'-');flag=1;flag2='-';}if('x'==num){LCD_ShowChar(1,6,'x');flag=1;flag2='x';}if('/'==num){LCD_ShowChar(1,6,'/');flag=1;flag2='/';}if('='==num){count2=5;if(flag2=='+'&&sum2!=0){sum=sum1+sum2;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='-'&&sum2!=0){sum=sum1-sum2;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='x'&&sum2!=0){sum=sum1*sum2;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='/'&&sum2!=0){sum=sum1/sum2;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='+'&&sum2==0){sum=sum1;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='-'&&sum2==0){sum=sum1;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='x'&&sum2==0){sum=0;LCD_ShowChar(2,1,'=');LCD_ShowNum(2,2,sum,5);}if(flag2=='/'&&sum2==0){LCD_ShowString(2,1,"ERROR");}}}}
}
相关链接
b站视频,功能实现之效果:
51单片机实现简单计算器----bilibili弹幕网
51单片机实现简易计算器相关推荐
- 【Proteus仿真】51单片机制作简易计算器+ LCD1602显示
[Proteus仿真]51单片机制作简易计算器+ LCD1602显示 Proteus仿真效果演示 程序代码 #include<reg51.h> //头文件 #define uint uns ...
- c语言51单片机计算器,新基于51单片机的简易计算器
<新基于51单片机的简易计算器>由会员分享,可在线阅读,更多相关<新基于51单片机的简易计算器(24页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的简易计算器1.前言: ...
- 51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)
本设计: 基于51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号S0001 芯片可以替换为 ...
- 基于51单片机的简易计算器的实现
目录 一.硬件简介 1.LCD1602液晶显示器介绍 (1)LCD1602的组成 (2)各引脚功能介绍 (3)DDRAM 2.矩阵按键介绍 (1)矩阵按键的优点: (2)原理: (3)检测方法: (4 ...
- 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能
基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...
- 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)
资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...
- 【006】基于51单片机的简易电子计算器Proteus仿真设计
一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...
- 基于51单片机的简易电子数字计算器Proteus仿真
资料编号:089 采用51单片机,使用矩阵键盘,可以计算加减乘除,进行简易计算: 全套资料齐全:具体功能请看下面演示视频 89-基于51单片机的简易电子数字计算器Proteus仿真 单片机最小系统介绍 ...
- 基于51单片机的简易游戏机
基于51单片机的简易游戏机 目录 基于51单片机的简易游戏机 一.绪论 二.设计方案 三.系统原理框图及模块的作用 四.硬件设计及说明 五.实际的程序流程图,写清楚程序模块的功能 六.系统使用说明 七 ...
最新文章
- do_page_fault: epc == 00000000, ra == 00000000
- struts2中一个表单中提交多个请求(动态调用方法)
- phpstudy如何升级php,phpstudy如何升级phpmyadmin?
- matPlotLib绘制决策树
- GitHub重大更新即将加入免费软件包管理服务;钉钉社区因出现违规内容将停更整改一个月;Uber上市,定价为45美元……...
- Centos镜像使用帮助
- 用Python画一个时钟---简易版
- 钰泰ETA6002,2.5A,3MHz开关充电器,带路径管理
- C语言期末考试复习题(有答案)
- 安装PostgreSQL客户端
- JAVA计算机毕业设计劳务外包管理系统(附源码、数据库)
- GNSS定位中的不同高度概念及计算
- javascript中关于日期和时间的基础知识
- 超好用的两款作图工具,用起来~~~
- 【实战】1213- 点赞动画还可以做得那么飘逸!
- 威联通 php升级,威联通折腾篇十七:Docker 安装的 NextCloud 升级、备份及恢复
- 关于最新社区版idea启动项目前端404 后端报错 isInvalidPath - Path with “WEB-INF“ or “META-INF“: [WEB-INF/page/fore/home
- 百度云盘照片导入华为相册里_怎么把云相册的照片导到手机相册里?
- html+css布局
- 去掉所有的空格、回车换行符