发一个用51单片机做的简单计算器的程序.
/**********************按键处理*******************/
void KeyDeal(unsigned char Key)
{ //unsigned char n,p;
if(Key!=0) //判断 有无按键按下。
{
switch(Key)
{ //以下定义0~9的数字键。
case 0x11: K=0; break;
case 0x21: K=1; break;
case 0x41: K=2; break;
case 0x81: K=3; break;
case 0x12: K=4; break;
case 0x22: K=5; break;
case 0x42: K=6; break;
case 0x82: K=7; break;
case 0x14: K=8; break;
case 0x24: K=9; break;
//以下+。-,*,/ 键
case 0x44: K=10; break; //加
case 0x84: K=11; break; //减
case 0x18: K=12; break; //乘
case 0x28: K=13; break; //除
case 0x48: K=14; break; //等于
case 0x88: K=15; break; //清除
default: break;
}
if(K<10) //数字键
{
d[2]=d[1];
d[1]=d[0];
d[0]=K;
c[2]=c[1];
c[1]=c[0];
c[0]=b[K];
//以上数组数据赋值是保证数字按键入顺序移位。
}
if(K==10) //加
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=1;
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0; }
if(K==11)//减
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=2;
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;}
if(K==12)//乘
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=3;
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;}
if(K==13)//除
{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=4;
c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;}
if(K==14) //此处是按 =键
{ n=d[2]*100+d[1]*10+d[0];
if (p==1) shu=m+n;
if (p==2) shu=m-n;
if (p==3) shu=m*n;
if (p==4) shu=m/n;
c[4]=b[shu/10000];
c[3]=b[shu%10000/1000];
c[2]=b[shu%1000/100];
c[1]=b[shu%100/10];
c[0]=b[shu%10]; //C[]存的是 计算结果 。
}
if(K==15) // 此处是按 清除键
{d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;
shu=0;
c[4]=b[shu/10000];
c[3]=b[shu%10000/1000];
c[2]=b[shu%1000/100];
c[1]=b[shu%100/10];
c[0]=b[shu%10]; }
}
}
void main()
{
while(1)
{
Key = Keycan();//键盘扫描获取一次按键的编码0x11-0x88
KeyDeal(Key); //对扫描到的键盘编码进行转换处理,变成数据键盘0-
display();
}
关键字:单片机 计算器 源程序
引用地址:
用单片机制作简单计算器的源程序
推荐阅读最新更新时间:2024-03-16 13:10
电源转换应用中数字反馈回路的益处
市场因素正在推动智能电源的发展,包括电源的外部控制和生产中的软件配置。实现上述目标的方法之一就是在电源转换回路中采用数字反馈控制。电源设计人员已经在智能电源中采用了单片机 MCU 来实现通信、监视、控制和诸如上电时序、软启动和拓扑控制等确定性功能。但是,就在不久前,由于没有合适的兼具成本效率的技术,对电源转换回路进行完全的数字控制仍不可能。包含专用外设的数字信号控制器(DSC)的出现才使得完全的数字控制成为可能。 DSC 使能数字反馈回路 设计人员常常会问,有这么多廉价的专用模拟脉宽调制(PWM)控制器,为什么要选择使用DSC来进行数字反馈控制呢?DSC提供新的控制方法和电源转换拓扑,而这些方法和拓扑是采用传统的模拟电源
[电源管理]
基于MSP430单片机的CCD相机调光电控系统设计
1.引言 自我国研制出第一台大型经纬仪以来,摄影一直是电影经纬仪用于对飞行器(导弹,火箭,宇宙飞船)的主要测量记录手段。摄影胶片记录的内容在判读时能否被发现,与目标相对背景的对比度有极重要的关系。调光的目的在于使胶片的曝光量保持在胶片感光特性曲线的直线段所规定的范围之内: (r为底片反差系数),而不受外界背景亮度变化的影响。以前经纬仪传统的摄影调光是采用变换平衡电桥参数的方法来控制像面照度,检测元件为光敏电阻。为了适应胶片感光度、摄影频率和天空背景亮度等各种摄影条件。就要由操作人员来装定数种不同,并按一定关系排列的背景照度值。每次摄影时,预先用照度计测出天空背景照度值,还要查曝光列表,选择合适的电阻装定在检
[单片机]
基于Atmega128单片机无人车控制系统电路设计
该方案可广泛应用于短途货运客运、应急救援、恶劣环境下自动作业等领域。智能无人车是一种履带式移动机器人,目前市场上的无人车大多采用单片机对其进行控制,其优点是体积小,成本低,结构简单,但仅仅依靠单片机远不能使无人车在复杂多变的工作环境中进行及时调整,并且极大地限制了其功能的扩展。基于此不足,本设计主要利用PC机与无人车的无线通信,使无人车在PC机无线指令下完成前进、后退、转弯、打击、生命值显示、调速和自动行驶等功能,并通过车载摄像头实时获取无人车所处环境信息,实现了远程监控。在执行任务时,如遭遇敌方车辆干扰通信,无人车在抵御干扰信号同时进行敌我识别,适时作出反击。 无人车系统工作原理为:打开教学无人车电源时,Atmega128单
[单片机]
发挥ARM Cortex-M3和M4微控制器最大作用的要诀
引言 许多嵌入式开发人员对ARM Cortex处理器 架构颇为熟悉,但很少有人能够对这种流行架构了如指掌,从而可以充分发挥它独特的特性和性能。新型ARM Cortex-M4处理器尤为如此,它拥有引以为豪的增强架构、天生的数字信号处理(DSP)能力和可选的浮点加速器,使精于此道的程序设计人员或硬件工程师可以充分发挥它的优势。本文接下来将就Cortex-M3/M4微控制器(MCU)的一些更有趣的(但经常遭到忽视的)特性展开详细的论述。 大部分采用Cortex-M3/M4 MCU的目标应用是便携式的,并且供电电源来自电池或能源收集系统,因此我们所探讨的大部分概念涉及如何减少系统整体能耗的技术。然而,在许多情况下,这些节能技术也是
[单片机]
电子电路初学者必看
单片机高手密决 1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来再参考别人的提示,你就知道自己和别人思路的差异。 2.别小家子气,买本书几十块都舍不得,你还学个P。为了省钱看电子书,浪费的时间绝对超过书的价值。当然如果查资料,只能看PDF。 3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件,什么都不懂,就盲目的问东问西,让人看起来很幼稚。 4.不要蜻蜓点水,得过且过,细微之处往往体现实力。 5.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。 6.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。 .别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。
[单片机]
单片机电源模块的设计分析
引言 特种单片 开关电源 有两种设计方案:第一种是采用通用单片开关电源集成电路(例如TOPSwitch-Ⅱ、TOPSwitch-FX、 TOPSwitch-GX等系列),再配上电压控制环、电流控制环等外围电路设计而成的,其特点是输出功率较大,但外围电路复杂;第二种是采用最近问世的 LinkSwitch系列高效率恒压/恒流式三端单片开关电源芯片,或选用LinkSwitch-TN系列、DPA-Switch系列单片开关电源专用 IC,这样可大大简化电路,降低成本,适合构成中、小功率的特种开关电源。 1 2.5W恒压/恒流式充电器模块 下面介绍一种由LNK500构成的2.5W恒压/恒流式充电器模块。它适用于手机电池充电器、
[电源管理]
增量式pid控制 单片机源程序
单片机源程序如下: #include reg51.h #include intrins.h #include absacc.h #include define.h #include delay.h #include da0832.h #include DS18B20_5.h #include lcd1602.h #include zlg.h #define PMAX 100 #define PMIN 0 typedef struct { char kp,ki,kd; int e2,e1,e0; long pa,vpa; }mypid; mypid p1; int final_tem,cur
[单片机]
单片机控制的简易定时报警器电路设计(含电路图和程序)
设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管闪烁“00”(以1Hz闪烁),按键功能如下: (1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此键无效。 (2)增一键:在设置状态时,每按一次递增键,初始值的数字增1。 (3)递一键:在设置状态时,每按一次递减键,初始值的数字减1。 (4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数字。如果已经处于计时状态则此键无效。 3.1.2 模块1:系统设计 (1)任务分析与整体设计思路 根据题目的要求,需要实现如下几个方面的功能。 计时功能:要实现计时功能则需要使用
[工业控制]