本来做出来之后时间也是比较久了,具体代码的意义我暂时没有再回看,给标注出来,相信读者也是看了就明白,主要是当初在调试折腾的过程需要下一些功夫,因为当时是初学者,完成慢,成品也不好,还请多多包涵。

目录

  • 功能概述
  • 代码实现
  • 相关链接

功能概述

这里使用的是普中的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单片机实现简易计算器相关推荐

  1. 【Proteus仿真】51单片机制作简易计算器+ LCD1602显示

    [Proteus仿真]51单片机制作简易计算器+ LCD1602显示 Proteus仿真效果演示 程序代码 #include<reg51.h> //头文件 #define uint uns ...

  2. c语言51单片机计算器,新基于51单片机的简易计算器

    <新基于51单片机的简易计算器>由会员分享,可在线阅读,更多相关<新基于51单片机的简易计算器(24页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的简易计算器1.前言: ...

  3. 51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)

    本设计: 基于51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号S0001 芯片可以替换为 ...

  4. 基于51单片机的简易计算器的实现

    目录 一.硬件简介 1.LCD1602液晶显示器介绍 (1)LCD1602的组成 (2)各引脚功能介绍 (3)DDRAM 2.矩阵按键介绍 (1)矩阵按键的优点: (2)原理: (3)检测方法: (4 ...

  5. 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能

    基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...

  6. 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)

     资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...

  7. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  8. 基于51单片机的简易电子数字计算器Proteus仿真

    资料编号:089 采用51单片机,使用矩阵键盘,可以计算加减乘除,进行简易计算: 全套资料齐全:具体功能请看下面演示视频 89-基于51单片机的简易电子数字计算器Proteus仿真 单片机最小系统介绍 ...

  9. 基于51单片机的简易游戏机

    基于51单片机的简易游戏机 目录 基于51单片机的简易游戏机 一.绪论 二.设计方案 三.系统原理框图及模块的作用 四.硬件设计及说明 五.实际的程序流程图,写清楚程序模块的功能 六.系统使用说明 七 ...

最新文章

  1. do_page_fault: epc == 00000000, ra == 00000000
  2. struts2中一个表单中提交多个请求(动态调用方法)
  3. phpstudy如何升级php,phpstudy如何升级phpmyadmin?
  4. matPlotLib绘制决策树
  5. GitHub重大更新即将加入免费软件包管理服务;钉钉社区因出现违规内容将停更整改一个月;Uber上市,定价为45美元……...
  6. Centos镜像使用帮助
  7. 用Python画一个时钟---简易版
  8. 钰泰ETA6002,2.5A,3MHz开关充电器,带路径管理
  9. C语言期末考试复习题(有答案)
  10. 安装PostgreSQL客户端
  11. JAVA计算机毕业设计劳务外包管理系统(附源码、数据库)
  12. GNSS定位中的不同高度概念及计算
  13. javascript中关于日期和时间的基础知识
  14. 超好用的两款作图工具,用起来~~~
  15. 【实战】1213- 点赞动画还可以做得那么飘逸!
  16. 威联通 php升级,威联通折腾篇十七:Docker 安装的 NextCloud 升级、备份及恢复
  17. 关于最新社区版idea启动项目前端404 后端报错 isInvalidPath - Path with “WEB-INF“ or “META-INF“: [WEB-INF/page/fore/home
  18. 百度云盘照片导入华为相册里_怎么把云相册的照片导到手机相册里?
  19. html+css布局
  20. 去掉所有的空格、回车换行符

热门文章

  1. 数据库 存储过程和函数
  2. InstallShield Limited Edtion for VS2015
  3. 有关于脉动调查的这些问题你都知道吗
  4. prim最小生成树算法原理
  5. 总结及寒假计划 2019.1
  6. 想深入了解TensorFlow,不能错过总监亲自答的这8个问题
  7. java ace admin_ace-admin-master
  8. 高效能人士七个习惯读书笔记
  9. 日语 N5 知识点 - 何为五段动词
  10. SVN server 服务端修改端口号