在《51单片机(二十九)—— 矩阵键盘输入实验》中,我们对矩阵键盘的原理及使用方法进行了介绍。在本文中,我们采用矩阵键盘设计一个计算器,实现简单的计算器功能。

这个实验的代码的主函数如下所示。

main()
{init_T0();for(;;){keyma=KEYscan();keyvalue=Keychange(keyma); if(keyvalue!=0xff){if(mm==0)for(n=0;n<8;n++)showdata[n]=0;  //清除数码管显示           if(('+'==keyvalue)|| (mm==8) || ('-'==keyvalue) || ('x'==keyvalue)|| ('/'==keyvalue) || ('='==keyvalue))//输入数字最大值8,输入符号表示输入结束{mm=0;  //计数器复位if(flag==0)  //如果是输入的第一个数据,赋值给a{sscanf(temp,"%d",&a);  //从一个字符串输入到变量flag=1;}else  sscanf(temp,"%d",&b);  //将第二个输入的数据,赋值给bfor(n=0;n<8;n++) //赋值完成后把缓冲区清零,防止下次输入影响结果temp[n]=0;if(keyvalue!='=')      //判断当前符号位sign=keyvalue;     //如果不是等号记下标志位else{  flag=0;         //检测到输入=号,判断上次读入的符合switch(sign){case '+':a=a+b;break;case '-':a=a-b;break;case 'x':a=a*b;break;case '/':a=a/b;break;default:break;}sprintf(temp,"%d",a);  //打印十进制到临时缓冲区for(n=0;n<8;n++)       //打印的值是ASCII码值{ if(temp[n]==0)      //数码管上不显示showdata[n]=0;else if(temp[n]=='-')  //负号showdata[n]=0x40;else showdata[n]=BJTY_DuanMa[temp[n]-'0'];//显示断码             }sign=0;a=b=0;            //用完后所有数据清零}}else if(mm<8){temp[mm]=keyvalue+'0'; showdata[mm]=BJTY_DuanMa[keyvalue];   //输出数据mm++;                          //输入数值累加}}}
}

将程序代码烧写之后可以看到实验现象,在这个实验中,数码管显示的数值与S1~S16旁边的数值相对应。按下按键可以进行计算。这个演示代码只是一个简单的计算器,只能进行整数的加减乘除运算,不能计算小数。

51单片机(三十)—— 矩阵键盘计算器相关推荐

  1. 51单片机基础之矩阵键盘4X4

    原理: 16个键盘,通过八个引脚就可以控制,高四位控制行,低四位控制列. 代码: #include <reg51.h>#define SMG P0 //宏定义数码管 #define KEY ...

  2. 基于51单片机的带矩阵键盘指纹密码电子锁原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示功能界面 2.支持添加/删除/搜索指纹,更改密码 3.支持指纹和密码开锁 4.采用DC002作为电源接口可直接输入5V给整个 ...

  3. 51单片机复习:矩阵键盘

    行列式扫描 如P10到P17 首先高四位为低电压,低四位为高电压,然后高四位为高电压,低四位 为低电压 则 起初高位低压,当按下某个按键时,那个线路与低位相接的电路被接通,所以下面为高压的低位也变成低 ...

  4. 6位密码锁的c语言编程,51单片机4*3矩阵键盘6位密码锁c语言程序

    满意答案 #include #include #define uchar unsigned char uchar key; int i=0; char b[4]={'0','0','0','0'};/ ...

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

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

  6. c51单片机矩阵键盘1602计算器_51单片机矩阵键盘计算器.doc

    51单片机矩阵键盘计算器 51单片机矩阵键盘计算器 /**********413暑假作品*********12864液晶显示屏,结合4*4矩阵键盘,简易计算器*,存储地址:STC-hex2 , LCD ...

  7. 51单片机 c语言 yl236,基于亚龙YL236单片机设备的矩阵键盘程序设计.doc

    基于亚龙YL236单片机设备的矩阵键盘程序设计.doc 基于亚龙YL236单片机设备的矩阵键盘程序设计 摘 要矩阵键盘在单片机技能大赛题目中基本是必备模块,连接贯穿整个题目的设计完成.本文介绍了基于亚 ...

  8. 基于51单片机的4乘4计算器设计

    具体实现功能 系统由STC89C52单片机+4乘4按键模块+LCD1602液晶显示屏+电源构成. 具体功能: 利用输入采用4×4矩阵键盘,可以进行加.减.乘.除等几种数字运算,并在LCD1602上显示 ...

  9. ...矩阵键盘计算器的C语言,单片机: 简易计算器的实现(键盘)

    利用矩阵键盘实现一个简易的计算器. 为了简化问题,我们假设只支持小于100的非负整数之间的加.减.乘的运算,并且支持连续运算(结果的数值可以再进行运算). 本程序中C为加号,D为减号,E为乘号,F为等 ...

最新文章

  1. SilverLight学习笔记--Silverlight中WebRequest通讯
  2. 如何让您的php也支持pthreads多线程
  3. python爬虫教程书-Python 爬虫:把廖雪峰教程转换成 PDF 电子书
  4. 语音数据采集-实时语音数据可视化
  5. python截取子串_python获得子串
  6. asio boost 异步错误处理_boost::asio::error的用法浅析
  7. Bypass WAF实战总结
  8. [2019CSP多校联赛普及组第五周] 调度CPU (贪心)
  9. Excel数据批量导入到数据库
  10. Linux 学习记录 二 (文件的打包压缩).
  11. JavaScript自定义事件
  12. 使软件可二次开发_九思软件:平台型OA系统为何要好于项目型OA系统?
  13. AlphaGo Zero 强化学习算法原理深度分析
  14. java 子网掩码 位数_java实现子网掩码转换为网络标识位
  15. Sentaurus入门(3):sde
  16. 微信公众号迁移公证书办理流程与条件
  17. 【BSP视频教程】STM32H7视频教程第4期:从启动到运行过程全解析,电源域,复位,时钟,软硬件启动流程到堆栈,map和htm文件分析(2022-01-26)
  18. 语音识别(ASR)论文优选:性能测试Wav2Vec2.0 on the Edge: Performance Evaluation
  19. 准备交赎金?当心Phobos勒索病毒二次加密!
  20. 达内python 资源_Python学习资源整理,优质Python学习资源推荐

热门文章

  1. 【iOS与EV3混合机器人编程系列之二】工欲善其事,必先利其器(准备篇)
  2. Oracle中创建,删除同义词 Synonym
  3. 【修真院pm小课堂】详谈用户体验五要素
  4. 利用Python turtle库实现六角形、无角正方形的绘制
  5. iphone6 适配和分辨率
  6. 自己给自己找一份工作
  7. 高等数学-微分方程思维导图
  8. javascript 倒计时
  9. Concept Whitening(for Interpretable Image Recognition)
  10. 8g内存和16g内存区别 mac_苹果电脑内存8g和16g的区别 电脑内存8G和16G的差别大吗...