资源简介
stc89c51所制作的一个简易计算器包含原理图,使用51单片机制作的,利用矩阵键盘输入,实现数据的加减乘除,多位运算
代码片段和文件信息
/* 能够实现多位的二级运算
/*************
键盘格式
1 2 3 +
4 5 6 -
7 8 9 *
0 c = /
************/
#include “reg52.h“
#include
#include
#include
#include “intrins.h“
int counter(void);
void calculate1();
void show(int num);
long int sum=0;
uchar temp1=10;
uchar k=0z=0i=0tm=0n=0flag=0; //lay对k tran对zq对清屏 i对lay m对operator
int lay[18]; //储存键入字符
char operator[3];
long int tran[6];
//储存计算过程中运算符
void main()
{
UartInit();
init1602();
while(1)
{
temp1=matrixkeyscan(); //键盘扫描
if(temp1==‘c‘) //将各个数组相当于初始化; 将1602初始化一下 即清屏
{
init1602();
k=0z=0i=0tm=0n=0flag=0;
}
if((temp1!=10))
{
if((temp1!=‘=‘)&&(temp1!=‘c‘))
{
lay[i]=temp1;
i++;
if((temp1==‘+‘)||(temp1==‘-‘)||(temp1==‘*‘)||(temp1==‘/‘))
{
write_dat(temp1); //显示运算符
write_com(0x06);
}
}
}
if(temp1==‘=‘) // =在键盘扫描已经给显示了
{ lay[i]=temp1;
/******************将多位转化为每个数字存在另一个数组*************/
/********** 因为此处的限制 所以只能实现两个运算符*******/
for( k=0;(lay[k]>=0&&lay[k]<=9);k++) t=k+1; //将运算符找出 ,将t赋值,便于后面运算
if(k>=2) //将单位数字转化为一个数字
{
switch(k)
{
case 2: lay[k-1]=lay[k-1]+10*lay[k-2]; break;
case 3: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3] ; break;
case 4: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4] ; break;
case 5: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]+10000*lay[k-4] ; break;
}
}
tran[0]=lay[k-1];
tran[1]=lay[k];
for(t++;(lay[t]>=0&&lay[t]<=9);t++) z++ ; //将单位数字转化为一个数字 ,将运算符之间的数字个数
if(z>=2) //统计为z
{
switch(z)
{
case 2: lay[k+1]=10*lay[k+1]+lay[k+2]; break;
case 3: lay[k+1]=100*lay[k+1]+10*lay[k+2]+lay[k+3]; break;
case 4: lay[k+1]=1000*lay[k+1]+100*lay[k+2]+10*lay[k+3]+lay[k+4]; break;
case 5: lay[k+1]=10000*lay[k+1]+1000*lay[k+2]+100*lay[k+3]+10*lay[k+4]+lay[k+5]; break;
}
}
tran[2]=lay[k+1];
tran[3]=lay[t]; z=0;
for(t++;(lay[t]>=0&&lay[t]<=9);t++) z++ ; //将单位数字转化为一个数字 ,将运算符之间的数字个数
k=t;
if(z>=2) //统计为z
{
switch(z)
{
case 2: lay[k-1]=lay[k-1]+10*lay[k-2]; break;
case 3: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3] ; break;
case 4: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4] ; break;
case 5: lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]+10000*lay[k-4] ; break;
}
}
tran[4]=lay[k-1]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 829 2017-12-22 16:50 计算器\1602计算器\jisuan.H
文件 4144 2017-12-26 15:04 计算器\1602计算器\keyscan.h
文件 1155 2017-12-28 15:57 计算器\1602计算器\lcd1602.h
文件 5055 2017-12-30 15:30 计算器\1602计算器\main.c
文件 14969 2017-12-30 15:21 计算器\1602计算器\main.LST
文件 21563 2017-12-30 15:21 计算器\1602计算器\main.OBJ
文件 573 2018-06-18 17:46 计算器\1602计算器\usart.c
文件 196 2017-12-26 14:31 计算器\1602计算器\usart.h
文件 1815 2017-12-30 15:21 计算器\1602计算器\usart.LST
文件 2514 2017-12-30 15:21 计算器\1602计算器\usart.OBJ
文件 201728 2018-03-24 09:25 计算器\1602计算器\电路图\许相乐.SchDoc
文件 65311 2018-03-31 17:57 计算器\1602计算器\电路图\许相乐.SchDocPreview
文件 19606 2017-12-30 15:21 计算器\1602计算器\计算机
文件 706 2018-04-02 20:13 计算器\1602计算器\计算机.build_log.htm
文件 10703 2017-12-30 15:21 计算器\1602计算器\计算机.hex
文件 41 2017-12-30 15:21 计算器\1602计算器\计算机.lnp
文件 23855 2017-12-30 15:21 计算器\1602计算器\计算机.M51
文件 178 2017-12-30 15:30 计算器\1602计算器\计算机.plg
....... 90014 2018-10-22 21:08 计算器\1602计算器\计算机.uvgui.lenovo
文件 72773 2018-06-18 17:46 计算器\1602计算器\计算机.uvgui.xyt
文件 72166 2018-03-16 18:08 计算器\1602计算器\计算机.uvgui_xyt.bak
....... 6085 2018-10-22 21:08 计算器\1602计算器\计算机.uvopt
....... 14420 2018-10-22 21:08 计算器\1602计算器\计算机.uvproj
....... 5726 2018-03-09 16:28 计算器\1602计算器\计算机_uvopt.bak
....... 14007 2018-03-09 16:28 计算器\1602计算器\计算机_uvproj.bak
文件 3573 2017-12-12 09:09 计算器\1602计算器\键盘扫描及赋值.h
文件 149655 2019-03-30 12:29 计算器\计算器硬件\原理图.pdf
目录 0 2018-09-02 20:05 计算器\1602计算器\电路图
目录 0 2018-10-22 21:08 计算器\1602计算器
目录 0 2019-03-30 12:29 计算器\计算器硬件
............此处省略4个文件信息
- 上一篇:基于stc89c51的密码锁
- 下一篇:ftpscan扫描工具
相关资源
- 基于stc89c51的密码锁
- 单片机数码管显示温度
- 基于51单片机的只能台灯
- 基于c51可调数字钟闹钟(整点报时功
- 通过GPS卫星星历文件和观测文件计算
- AT89C52单片机学习开发板Proteus仿真图
- 51单片机 LCD12864程序显示文字或者图片
- 光纤色散计算
- linux计算器代码
- 木马查杀工具
- 51单片机mpu6050读取六轴原始数据并L
- labview计算器
- Quartus II 13.1 破解285186
- 体育水位计算0.rar
- DS2782 美信电量计芯片 IIC STM32/STM8/5
- 计算机二级高级办公软件题库
- 基于C51单片机的8×8-LED点阵屏汉字显示
- 冷库设备,空调、除湿机行业,R22毛
- 音乐频谱显示参考源代码.rar
- 红外温度测温成功mxl90614
- vs搭建OpenGL所需文件 & 简易天体运动源
- Qt5做的高仿计算器
- 高等数值计算大作业插值与龙格现象
- MCNP计算
- 408计算机网络真题
- 基于51单片机电子音乐门铃设计
- ADF4351寄存器写入
- 33节点潮流计算代码
- 舵机控制器PCA9685程序 51版本
- stc89c51通过modbus协议与上位机通信
评论
共有 条评论