凡是官网购买产品,均可以获得积分,(积分可以用来下载技术资料)还可以获得精致技术支持。澳门开元棋牌色情_澳门开元棋牌官网_开元棋牌输了25万实验室可提供全套电子方案定制服务,了解详情请咨询客服。???????????
查看: 332|回复: 1
打印 上一主题 下一主题

澳门开元棋牌色情_澳门开元棋牌官网_开元棋牌输了25万开源小项目-lcd1602和4*4键盘做一个简单的计算器

[复制链接]

18

主题

26

帖子

90

活跃值

注册会员

Rank: 2

活跃值
90
跳转到指定楼层
楼主
发表于 2019-7-27 17:28:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 赵勇 于 2019-10-19 10:04 编辑

本实验是通过利用澳门开元棋牌色情_澳门开元棋牌官网_开元棋牌输了25万标准板,使用 LCD与4*4键盘制作简单的计算器
一、 工具原料
二、硬件连接


三、软件代码

[C++] 纯文本查看 复制代码
#include "Keypad.h"
#include 
#include 

const byte ROWS = 4;
const byte COLS = 4;
char mainkeys[ROWS][COLS] = {
  {'C', '0', '=', '/'},
  {'7', '8', '9', '*'},
  {'4', '5', '6', '-'},
  {'1', '2', '3', '+'}
};//设定键盘中对应的数据

byte rowPins[ROWS] = {1, 2, 3, 4}; //四行横向的引脚
byte colPins[COLS] = {5, 6, 9, 10};//四列引脚

Keypad computerpad = Keypad(makeKeymap(mainkeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x3F, 16, 2);

boolean firstNumState = true;
String firstNum = "";//设置一个字符串变量
String secondNum = "";//设置一个字符串变量
float result = 0.0;//设置结果为浮点型
char process = ' ';//设置一个字符变量

void setup() {
  lcd.init();//初始化LCD
  lcd.backlight();//打开LCD背光
  lcd.setCursor(0, 0);//控制光标到目标位置
  lcd.print("WELCOME TO");//打印
  lcd.setCursor(0, 1);//控制光标到目标位置
  lcd.print("Lingzhilab");
  delay(5000);//设定延迟
 
  clr();
}

void loop() {
  char kingKey = computerpad.getKey();//首先得到按键的字符
  if (kingKey != NO_KEY && (kingKey == '1' || kingKey == '2' || kingKey == '3' || kingKey == '4' || kingKey == '5' || kingKey == '6' || kingKey == '7' || kingKey == '8' || kingKey == '9' || kingKey == '0')) 
          {

    if (firstNumState == true)
                {
      firstNum = firstNum + kingKey;//得到的数据赋值给firstNum

      lcd.print(kingKey);//LCD打印按键对应的数据
    }
    else {
      secondNum = secondNum + kingKey;//得到第二个数字

      lcd.print(kingKey);
    }
  }
  if (kingKey != NO_KEY && (kingKey == '+' || kingKey == '-' || kingKey == '*' || kingKey == '/')) //判断运算符号
          {
    if (firstNumState == true)
                {
      process = kingKey;//按键得到的数据赋值给定义的process
      firstNumState = false;
      lcd.setCursor(13, 0);
      lcd.print(process);
      lcd.setCursor(5, 1);
                        }//在LCD上显示process
  }

  if (kingKey != NO_KEY && kingKey == '=') 
          {
    if (process == '+') 
                {
      result = firstNum.toFloat() + secondNum.toFloat();
    }

    if (process == '-')
                {
      result = firstNum.toFloat() - secondNum.toFloat();
    }

    if (process == '*') 
                {
      result = firstNum.toFloat() * secondNum.toFloat();
    }

    if (process == '/')
                {
      result = firstNum.toFloat() / secondNum.toFloat();
    }
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(firstNum);
    lcd.print(process);
    lcd.print(secondNum);
    lcd.setCursor(0, 1);
    lcd.print("=");
    lcd.print(result);
    firstNumState = true;
  }//判断运算法则,并且在LCD显示运算过程及数据

  if (kingKey != NO_KEY && kingKey == 'C') {
    clr();
  }//设置归零
}

void clr() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("NUM1  ");
  lcd.setCursor(12, 0);
  lcd.print(" ");
  lcd.setCursor(0, 1);
  lcd.print("NUM2 ");
  lcd.setCursor(5, 0);
  firstNum = "";
  secondNum = "";
  result = 0;
  process = ' ';
}


四、测试验证

上述代码上传到澳门开元棋牌色情_澳门开元棋牌官网_开元棋牌输了25万标准板上,即可查看测试结果。


完整工程:
计算器.rar (8.99 KB, 下载次数: 1)


18

主题

26

帖子

90

活跃值

注册会员

Rank: 2

活跃值
90
沙发
?楼主| 发表于 2019-7-30 09:54:09 | 只看该作者
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver| 手机版| 小黑屋| 澳门开元棋牌色情_澳门开元棋牌官网_开元棋牌输了25万实验室 ( 粤ICP备17040594号-3 )

GMT+8, 2019-10-20 16:10 , Processed in 0.331624 second(s), 22 queries .

快速回复 返回顶部 返回列表