久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6321|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

Arduino計(jì)算器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

  1. #include <Keypad.h>
  2. #include <LiquidCrystal.h>

  3. //d7--d4,12 11 10 9 e-8 rs-7 1234--A2--A5 5678--2354
  4. LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

  5. // 2. Keypad Pins
  6. const byte Rows = 4;
  7. const byte Cols = 4;
  8. char keys[Rows][Cols] =
  9. {
  10.   {'1', '2', '3', '+'},
  11.   {'4', '5', '6', '-'},
  12.   {'7', '8', '9', '*'},
  13.   {'C', '0', '=', '/'}
  14. };
  15. byte rowPins[Rows] = {A2, A3, A4, A5};
  16. byte colPins[Cols] = {2, 3, 4, 5};
  17. Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, Rows, Cols);

  18. // 3. Dot Button
  19. int dot = A0;
  20. int dotFlag = 0;
  21. int dotButton = 0;

  22. // 4. Calculator Operators
  23. float num1, num2, fraction;
  24. float total;
  25. char operation, button;

  26. // 5. Loading Setup
  27. char input[16];
  28. int n = 1750;

  29. void setup()
  30. {
  31.   // Initialize dot button as input to Arduino
  32.   pinMode(dot, INPUT);

  33.   // Initialize LCD Size
  34.   lcd.begin(16, 2);

  35.   // LCD Loading Setup Begin
  36.   lcd.clear();
  37.   lcd.setCursor(3, 0);
  38.   lcd.print("LOADING...");
  39.   for (int i = 0; i < 16; i++)
  40.   {
  41.         lcd.setCursor(i, 1);
  42.         lcd.write(255);
  43.         delay(50);
  44.   }
  45.   lcd.clear();
  46.   lcd.setCursor(1, 0);
  47.   lcd.print("Simple Arduino");
  48.   lcd.setCursor(3, 1);
  49.   lcd.print("Calculator");
  50.   delay(n);
  51.   lcd.clear();
  52.   lcd.setCursor(0, 0);
  53.   lcd.print("Done By Students");
  54.   lcd.setCursor(2, 1);
  55.   lcd.print("Meznan Bahri");
  56.   delay(n);
  57.   lcd.clear();
  58.   lcd.setCursor(1, 0);
  59.   lcd.print("Dareen Zamzami");
  60.   lcd.setCursor(2, 1);
  61.   lcd.print("Joud Mannaa");
  62.   delay(n);
  63.   lcd.clear();
  64.   lcd.setCursor(1, 0);
  65.   lcd.print("Samira Laihabi");
  66.   lcd.setCursor(2, 1);
  67.   lcd.print("& Rana Johar");
  68.   delay(n);
  69.   lcd.clear();
  70.   // LCD Loading Setup End
  71. }
  72. void loop()
  73. {
  74.   // First while loop for num1.
  75.   while (1)
  76.   {
  77.         dotButton = digitalRead(dot);
  78.         button = customKeypad.getKey();
  79.         if (button == 'C')
  80.         {
  81.           dotFlag = 0;
  82.           num1 = 0;
  83.           num2 = 0;
  84.           fraction = 0;
  85.           total = 0;
  86.           operation = 0;
  87.           lcd.clear();
  88.         }
  89.         else if (dotButton == LOW)
  90.         {
  91.           dotFlag = 1;
  92.         }
  93.         else if (button >= '0' && button <= '9')
  94.         {
  95.           if (dotFlag == 0)
  96.           {
  97.             num1 = num1 * 10 + (button - '0');
  98.             lcd.setCursor(0, 0);
  99.             lcd.print(num1);
  100.           }
  101.           else if (dotFlag == 1)
  102.           {
  103.             fraction = (button - '0');
  104.             num1 = num1 + (fraction / 10);
  105.             lcd.setCursor(0, 0);
  106.             lcd.print(num1);
  107.             dotFlag++;
  108.           }
  109.           else if (dotFlag == 2)
  110.           {
  111.             fraction = (button - '0');
  112.             num1 = num1 + (fraction / 100);
  113.             lcd.setCursor(0, 0);
  114.             lcd.print(num1);
  115.             dotFlag++;
  116.           }
  117.         }
  118.         else if (button == '-' || button == '+' || button == '*' || button == '/')
  119.         {
  120.           operation = button;
  121.           dotFlag = 0;
  122.           lcd.setCursor(0, 1);
  123.       lcd.print(operation);
  124.           break;
  125.         }
  126.   }
  127.   // Second while loop for num2.
  128.   while (1)
  129.   {
  130.         dotButton = digitalRead(dot);
  131.         button = customKeypad.getKey();
  132.         if (button == 'C')
  133.         {
  134.           dotFlag = 0;
  135.           num1 = 0;
  136.           num2 = 0;
  137.           fraction = 0;
  138.           total = 0;
  139.           operation = 0;
  140.           lcd.clear();
  141.           break;
  142.         }
  143.         else if (dotButton == LOW)
  144.         {
  145.           dotFlag = 1;
  146.         }
  147.         else if (button >= '0' && button <= '9')
  148.         {
  149.           if (dotFlag == 0)
  150.           {
  151.             num2 = num2 * 10 + (button - '0');
  152.             lcd.setCursor(1, 1);
  153.             lcd.print(num2);
  154.           }
  155.           else if (dotFlag == 1)
  156.           {
  157.             fraction = (button - '0');
  158.             num2 = num2 + (fraction / 10);
  159.             lcd.setCursor(1, 1);
  160.             lcd.print(num2);
  161.             dotFlag++;
  162.           }
  163.           else if (dotFlag == 2)
  164.           {
  165.             fraction = (button - '0');
  166.             num2 = num2 + (fraction / 100);
  167.             lcd.setCursor(1, 1);
  168.             lcd.print(num2);
  169.             dotFlag++;
  170.           }
  171.         }
  172.         if (button == '=')
  173.         {
  174.           domath();
  175.           break;
  176.         }
  177.   }
  178.   // Third while loop for ensuring C button is executed after while loop 2.
  179.   while (1)
  180.   {
  181.         button = customKeypad.getKey();
  182.         if (button == 'C')
  183.         {
  184.           dotFlag = 0;
  185.           num1 = 0;
  186.           num2 = 0;
  187.           fraction = 0;
  188.           total = 0;
  189.           operation = 0;
  190.           lcd.clear();
  191.           break;
  192.         }
  193.   }
  194. }
  195. void domath()
  196. {
  197.   switch (operation)
  198.   {
  199.         case '+':
  200.           total = num1 + num2;
  201.           break;
  202.         case '-':
  203.           total = num1 - num2;
  204.           break;
  205.         case '/':
  206.           total = num1 / num2;
  207.           break;
  208.         case '*':
  209.           total = num1 * num2;
  210.           break;
  211.   }
  212.   lcd.print('=');
  213.   if (operation == '/' && num2 == 0)
  214.   {
  215.         lcd.print("ERROR 0 DIV");
  216.   }
  217.   else
  218.   {
  219.         lcd.print(total);
  220.   }
  221. }

復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-1-19 02:00 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

板凳
ID:666465 發(fā)表于 2019-12-21 00:55 來自手機(jī) | 只看該作者
你好,我想問一下用Proteus仿真arduino328開發(fā)版實(shí)現(xiàn)6計(jì)算器功能的源碼有嗎,或者是你會(huì)做嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:1021009 發(fā)表于 2022-4-23 18:11 | 只看該作者
作者使用的keypad庫是下載的哪一個(gè),我用的是proteus 8仿真工具
回復(fù)

使用道具 舉報(bào)

5#
ID:138707 發(fā)表于 2023-7-29 18:25 | 只看該作者
作者使用的keypad庫是下載的哪一個(gè)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 毛片免费观看 | 亚洲一区精品在线 | 精品真实国产乱文在线 | 久久一区二区免费视频 | 免费看黄色片 | 九色国产| 日本亚洲一区 | 欧美日韩国产在线观看 | 欧美日韩在线免费观看 | 欧美h视频 | 国产在线精品一区二区三区 | 亚洲一区二区在线视频 | 精品福利av导航 | 一区二区在线 | 特级生活片 | 在线播放日韩 | 精品视频999 | 免费视频一区二区 | 国产成人免费视频网站高清观看视频 | 毛片久久久 | 中文字幕第二十页 | 亚洲www | 国产欧美一区二区三区久久 | 亚洲精品一区二三区不卡 | 欧产日产国产精品视频 | 国产精品久久久 | 欧美自拍网站 | 中文字幕韩在线第一页 | 亚洲欧美日本国产 | 国产成人免费视频网站高清观看视频 | 亚洲精品一区二区三区中文字幕 | 亚洲精品久久 | 欧美一区二| 久久久综合网 | 亚洲日本免费 | 国产一区二区三区 | 亚洲在线日韩 | 日本欧美国产在线观看 | 91精品在线观看入口 | 久色视频在线观看 | 人人九九精 |