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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 975|回復: 1
打印 上一主題 下一主題
收起左側

LCD1602顯示實驗數值顯示有什么好方法

[復制鏈接]
跳轉到指定樓層
樓主
用LCD1602和16個按鍵實現十進制數的加減乘除四則運算
c是運算結果(即等號后面的數值)有沒有比較好的方法顯示
兩個輸入數的范圍是0~32767,也就是運算結果范圍也很大
從高到低或從低到高提取數字都行
但是要像下圖那樣在第二行的左邊用的C語言

屏幕截圖 2021-12-21 225856.png (88.4 KB, 下載次數: 36)

屏幕截圖 2021-12-21 225856.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:944932 發表于 2021-12-21 23:21 | 只看該作者
#include "r_lcd1602drv.h"
#include "r_matrixKeypad.h"
u8 keyValueTab[][2]={
                    {0xee,'1'},{0xed,'2'},{0xeb,'3'},{0xe7,'+'},
                    {0xde,'4'},{0xdd,'5'},{0xdb,'6'},{0xd7,'-'},
                    {0xbe,'7'},{0xbd,'8'},{0xbb,'9'},{0xb7,'*'},
                    {0x7e,'.'},{0x7d,'0'},{0x7b,'='},{0x77,'/'}
                    };
u8 GetKeyValue(u32 scanCode)
{
    int i;
    for(i=0;i<16;i++)
        if(scanCode==keyValueTab[i][0])
            return keyValueTab[i][1];
    return 0;
}

int main()
{
    r_lcd1602drv lcd;
    r_matrixKeypad keypad;
   
   
    uchar buf[20];
    u32 scanCode;
   
    float f=0,f1=0;

    u8  datBuf[20];
    u8  datBuf1[20];
    u8  datBufIdx=0;
    u8  datBufIdx1=0;
  
    u8 keyValue;
    u8 isPoint=0;
    u8 isadd=0;
    u8 isde=0;

   
    u32 pins[]={Pin3,Pin4,Pin5,Pin6,Pin7,Pin8,Pin9,Pin10};
    u32 rowPins[]={Pin5,Pin6,Pin7,Pin8};
    u32 colPins[]={Pin1,Pin2,Pin3,Pin4};
    InitSystem();
    lcd.SetRsPin(GPIOB,Pin0);
    lcd.SetRwPin(GPIOB,Pin1);
    lcd.SetEnPin(GPIOB,Pin2);
    lcd.SetDataPins(GPIOB,pins,8);
    lcd.Init();
    keypad.SetRowPort(GPIOA,rowPins,4);
    keypad.SetColPort(GPIOA,colPins,4);
   
    while(1)
    {
    scanCode=keypad.GetScanCode();
      
        if(scanCode!=0)
        {  
         
          if(isde==1)
          {
            isde=0;
            datBufIdx=0;
            datBufIdx1=0;
            lcd.Init();
            lcd.SetRowCol(0,0);
            for(u8 i=0;i<20;i++)
            {
               datBuf[i]=0;
               datBuf1[i]=0;
               
            }
          }
         
          if((isadd=='+')|(isadd=='-')|(isadd=='*')|(isadd=='/'))
          {
           keyValue=GetKeyValue(scanCode);
            if(keyValue>='0'&&keyValue<='9')
            {
                datBuf1[datBufIdx1++]=keyValue;
                lcd.DispChar(keyValue);
            }
            if(keyValue=='.')
            {
                if(isPoint==0)
                {
                    datBuf1[datBufIdx1++]=keyValue;
                    lcd.DispChar(keyValue);
                    isPoint=1;
                }
            }
         
          }
         
          if(isadd==0)
          {
           keyValue=GetKeyValue(scanCode);
            if(keyValue>='0'&&keyValue<='9')
            {
                datBuf[datBufIdx++]=keyValue;
                lcd.DispChar(keyValue);
            }
            if(keyValue=='.')
            {
                if(isPoint==0)
                {
                    datBuf[datBufIdx++]=keyValue;
                    lcd.DispChar(keyValue);
                    isPoint=1;
                }
            }
            if((keyValue=='+')|(keyValue=='-')|(keyValue=='*')|(keyValue=='/'))
            {            
              isadd=keyValue;
              isPoint=0;
              lcd.DispChar(keyValue);            
            }
         
          }
   
            if(keyValue=='=')
            {
               sscanf((char *)datBuf,"%f",&f);
               sscanf((char *)datBuf1,"%f",&f1);              
              switch(isadd)     
              {
              case '+':f=f1+f;break;
              case '-':f=f-f1;break;
              case '*':f=f*f1;break;
              case '/':f=f/f1;break;
              }
               lcd.SetRowCol(1,0);
               sprintf((char *)buf,"%.2f",f);
               lcd.DispString(buf);
               isPoint=0;
               datBufIdx=0;
               datBufIdx1=0;
               isde=1;
               isadd=0;
            }
           
        }
    }
    }
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品视频一区二区三区 | 国产精品视频网站 | 国产美女一区 | 亚洲福利在线视频 | 日韩视频免费看 | 欧美亚洲国产一区二区三区 | 在线观看免费高清av | 午夜激情视频在线 | 国产精品亚洲一区二区三区在线 | 国产精品中文字幕在线 | 成人午夜视频在线观看 | 欧美一级视频免费看 | 九九热这里 | 96国产精品久久久久aⅴ四区 | 午夜精品一区二区三区在线观看 | 免费精品视频在线观看 | 亚洲欧美中文日韩在线v日本 | 精品国偷自产在线 | a级性视频| 一级片毛片| 91天堂| 国产高清视频 | 特黄av| 国产精品一区久久久 | 婷婷综合五月天 | 国产一区二区三区免费视频 | 国产视频久久 | 亚洲一区国产 | 欧美二区在线 | 本道综合精品 | 亚洲啊v| 精品一区二区三区四区视频 | 亚洲福利av | 欧美国产亚洲一区二区 | 波多野结衣精品 | 国产成人精品久久二区二区91 | 日韩视频精品 | 日韩欧美国产不卡 | 欧美午夜精品久久久久久浪潮 | 日韩一三区 | 精品九九 |