• 大小: 711KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签:

资源简介

设计16键盘简易计算器,实现以下功能。 1、4*4键盘输入,用按键输入数和运算符号。 1 2 3 + 4 5 6 - 7 8 9 * C 0 = ∕ 2、数码管显示运算过程和结果(十进制数),负号用一个LED灯显示。 3、具有清零和复位功能。 4、具有连续运算功能。 5、具有简易报错和提示功能。

资源截图

代码片段和文件信息

/******************************************************
*
*项目名称:简易计算器
*
*函    数:cal.c
*
*作    用:按键处理,主函数
*
*有待改进:本程序还可以进一步的完善,其一就有如按下1+2,
*    再按下+号的时候,就直接计算出结果并显示。
*    希望有兴趣的朋友能够加以改进。
*
*制 作 人:沐雨青林
*
*******************************************************/

#include “led_8.h“

#define uchar unsigned char
#define usint unsigned  short int
#define uint unsigned  int

extern void Led8_disp(int num);
extern const uchar key_source_code[];
extern void init_key(void);

#define key_add ‘+‘
#define key_de ‘-‘
#define key_mul ‘*‘
#define key_mol ‘/‘
#define key_canal ‘C‘
#define key_means ‘=‘



const uchar key_code[] ={ 1 2 3 key_add // +
  4 5 6 key_de // -
  7 8 9 key_mul // *
  key_canal 0x00 key_means key_mol};// /
int firstnum=0;//存放第1个数
int secondnum=0;//存放第2个数
uchar operation=‘\0‘;//运算符号
uchar mean_sign=0;//等号标志位 1为开,0位关
uint optimes=0;//运算符号计数位

//以运算符+、-、*、/为标志,当这些标志出现后,则输入的数字存放到
//secondnum中

//变量初始化
void init_clear(void)
{
firstnum = 0;
secondnum = 0;
operation = ‘\0‘;
optimes = 0;
LED_CS4 = 0xff;
Led8_disp(0);
return;
}

//计算多位数,num为新输入的一位数
//算好的多位数存放在snumsnum为原来存放有数的变量
int duoweishu(int snum int num)
{
snum = num + snum*10;
return snum;
}


//直入式键盘处理
void op_disdir(usint key_d)
{
uint i;
for(i=0; i<4; i++)
{
if(key_d == key_source_code[i])
{
if(i == 3)// ‘+’ 按键处理
{
LED_CS4 = 0x7f;
optimes++;
operation = key_code[i];//operation 为‘+’
}
else
{
//在没有按下运算符的时候,把按键对应的键值存到firstnum
if(operation == ‘\0‘)
{
firstnum = duoweishu(firstnumkey_code[i]);
Led8_disp(firstnum);
}
else//按下运算符的时候,把按键对应的键值存到secondnum
{
if(mean_sign == 1)//等号标志位
{
secondnum = 0;
mean_sign = 0;//清等号标志位
}

if(operation == ‘-‘ && optimes == 1)//负数输入
{
firstnum = duoweishu(firstnum-key_code[i]);
Led8_disp(firstnum);
}
else
{
secondnum = duoweishu(secondnum key_code[i]);
Led8_disp(secondnum);
}
}
}
}
}
}
//矩阵键盘处理
void op_dismatrix(usint key_d)
{
uint i;
for(i=4; i<16; i++)
{
if(key_d == key_source_code[i])
{
if(i == 7) // ‘-’ 键处理
{
LED_CS4 = 0xbf;
if(operation == ‘\0‘ && firstnum == 0)
optimes = 1;
else
optimes += 2;

operation = key_code[i];
}
else if(i == 11) // ‘*’ 键处理
{
LED_CS4 = 0xdf;
optimes++;
operation = key_code[i];
}
else if(i == 12) // ‘C’ 键处理
{
init_clear();//变量初始化
break;
}
else if(i == 14) // ‘=’ 键处理
{
mean_sign=1;//等号标志位
if(operation == ‘+‘)
firstnum = firstnum + secondnum;
else if(operation == ‘-‘)
firstnum = firstnum - secondnum;
else if(operation == ‘*‘)
firstnum = firstnum * secondnum;
else if(operation == ‘/‘)
{
if(secondnum == 0)//被除数为0,结果为无穷大

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3203  2010-06-17 20:04  程序\boot.s

     文件       4383  2010-06-23 19:39  程序\cal.c

     文件     199862  2010-06-23 20:50  程序\cal_key\cal_key.mcp

     文件       3450  2010-06-23 20:50  程序\cal_key\cal_key_Data\CWSettingsWindows.stg

     文件      55100  2010-06-23 20:50  程序\cal_key\cal_key_Data\Debug\TargetDataWindows.tdt

     文件      24972  2010-06-23 19:42  程序\cal_key\cal_key_Data\DebugRel\cal_key.axf

     文件       6032  2010-06-23 19:42  程序\cal_key\cal_key_Data\DebugRel\cal_key.bin

     文件       2424  2010-06-23 19:42  程序\cal_key\cal_key_Data\DebugRel\objectCode\boot.o

     文件      10192  2010-06-23 19:42  程序\cal_key\cal_key_Data\DebugRel\objectCode\cal.o

     文件       7688  2010-06-23 19:42  程序\cal_key\cal_key_Data\DebugRel\objectCode\key.o

     文件       6688  2010-06-23 19:42  程序\cal_key\cal_key_Data\DebugRel\objectCode\led_8.o

     文件      59664  2010-06-23 20:50  程序\cal_key\cal_key_Data\DebugRel\TargetDataWindows.tdt

     文件      53714  2010-06-23 20:50  程序\cal_key\cal_key_Data\Release\TargetDataWindows.tdt

     文件       3932  2010-06-23 19:41  程序\key.c

     文件       1559  2010-06-23 19:39  程序\led_8.c

     文件        600  2010-06-23 19:42  程序\led_8.h

     文件      71333  2010-06-23 10:53  1.1.JPG

     文件      63152  2010-06-23 12:30  2.1.JPG

     文件     105625  2010-06-23 12:35  2.2.JPG

     文件     653824  2010-06-24 18:35  实训报告.doc

     目录          0  2010-06-23 19:26  程序\cal_key\cal_key_Data\DebugRel\objectCode

     目录          0  2010-06-23 20:50  程序\cal_key\cal_key_Data\Debug

     目录          0  2010-06-23 20:50  程序\cal_key\cal_key_Data\DebugRel

     目录          0  2010-06-23 20:50  程序\cal_key\cal_key_Data\Release

     目录          0  2010-06-23 19:26  程序\cal_key\cal_key_Data

     目录          0  2010-06-23 20:50  程序\cal_key

     目录          0  2010-06-23 20:50  程序

----------- ---------  ---------- -----  ----

              1337397                    27



............此处省略0个文件信息

评论

共有 条评论

相关资源