arduino 44键盘制作简易计算器

#include<Keypad.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,A3,A2,A1,A0); //定义lcd液晶屏456引脚
unsigned int data_t=0; //对按键进行计数,确定光标位置
char num2=‘b’; //对第二个数的第一个数字进行标记,如果标记不改变,则按键数字为第一个数字
//数字的算法不同,第一个输入的就是直接赋值,后面输入的都是前面的数字10再加按键值
int num1,num22,num; //定义数一数二以及计算结果,int有取值范围,注意!
char count =‘0’; //对运算符号进行标记,第一次出现运算符后标记改变
char count1=‘0’;
const byte ROWS = 4; //44按键
const byte COLS = 4;
char keys[ROWS][COLS] = //键盘内容
{
{‘1’, ‘2’, ‘3’, ‘+’},
{‘4’, ‘5’, ‘6’, ‘-’},
{‘7’, ‘8’, ‘9’, '
’},
{‘C’, ‘0’, ‘=’, ‘/’}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //键盘占用引脚
byte colPins[COLS] = {5, 4, 3, 2};
//Created instances
Keypad myKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); //定义

void setup()
{
lcd.begin(16,2); //lcd定义
lcd.home(); //lcd初始化
//各变量再次赋值,用来重置
data_t=0;
num1=0;
num=0;
num2=‘a’;
num22=0;
count=‘0’;
}

void loop()
{
char Key=myKeypad.getKey();
if(Key)
{
data_t++;
lcd.setCursor(data_t-1,0);
if(Key==‘C’) setup();
else{
if(data_t1&&Key’0’||Key==‘1’||Key==‘2’||Key==‘3’||Key==‘4’||Key==‘5’||Key==‘6’||Key==‘7’||Key==‘8’||Key==‘9’))
{num1=Key-‘0’;
lcd.print(Key);
delay(50);}
if(data_t>1&&(Key==‘0’||Key==‘1’||Key==‘2’||Key==‘3’||Key==‘4’||Key==‘5’||Key==‘6’||Key==‘7’||Key==‘8’||Key==‘9’)&&count==‘0’)
{num1=num110+(Key-‘0’);
lcd.print(Key);
delay(50);}
if(data_t>1&&(Key==’+’||Key==’-’||Key==’
’||Key==’/’))
{if(count==‘0’)
{count=Key;
lcd.print(Key);
delay(50);}
else setup();
}
if(data_t>1&&(Key==‘0’||Key==‘1’||Key==‘2’||Key==‘3’||Key==‘4’||Key==‘5’||Key==‘6’||Key==‘7’||Key==‘8’||Key==‘9’)&&count!=‘0’)
{
if(num2==‘b’){num22=Key-‘0’;lcd.print(Key);}
else {num22=num2210+(Key-‘0’);lcd.print(Key);}
}
if(data_t<17&&Key==’=’)
{if(count1==‘0’&&count!=‘0’&&num1!=0&&num2!=‘b’){
lcd.setCursor(0,1);
if(count==’+’) {num=num1+num22;lcd.print(num);}
if(count==’-’) {num=num1-num22;lcd.print(num);}
if(count==’
’) {num=num1*num22;lcd.print(num);}
if(count==’/’) {num=num1/num22;lcd.print(num);}}
else setup();
}
else
{
lcd.home();
}
}
}
}在这里插入图片描述

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏秋东椿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值