欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 數碼管怎么顯示小數點 [打印本頁]

作者: acolick    時間: 2017-10-9 16:34
標題: 數碼管怎么顯示小數點
我想做個計算器,然后就是在數據結果在數碼管顯示的時候不知道怎么顯示,好比說0.9*0.9, 0.89/189這樣,在不知道數據是幾位,小數點在第幾位的時候,我怎么檢測,然后在數碼管上顯示出結果。請大神解答,謝謝。

作者: cjjcjj1    時間: 2017-10-9 17:08
提示: 作者被禁止或刪除 內容自動屏蔽
作者: acolick    時間: 2017-10-10 09:36
cjjcjj1 發表于 2017-10-9 17:08
先不管小數計算,整數計算過程的程序寫好了嗎?
小數部分,加個標志位,記錄下小數的位數,然后
小數計算 ...

我寫的比較爛,能想到的都寫了,結果顯示還沒有寫
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code shumaguan[]={0x3f,0x06,0x5b,0x4f,     //0~3
0x66,0x6d,0x7d,0x07,    //4~7
0x7f,0x6f,0x00,0x00,    //8~b
0x00,0x00,0x00,0x00 }; //c-f

#define keychoice P1
#define keyoutput P0
u8 keyvalue;
u8 a=0;
int a;                 //第一個數字
int b;             //第二個數字
int c;             //結果
char flag;

void delay(u8 i)
{
while(i--);
}
void interrupt0()
{
   EA=1;
   INT0=1;
   EX0=1;
}
void dtdisplay()
{
u8 i;
for(i=1;i<9;i++)
{
  switch(result)
  {
   case(1):LSA=0;LSB=0;LSC=0;break;
   case(2):LSA=1;LSB=0;LSC=0;break;
   case(3):LSA=0;LSB=1;LSC=0;break;
   case(4):LSA=1;LSB=1;LSC=0;break;
   case(5):LSA=0;LSB=0;LSC=1;break;   
   case(6):LSA=1;LSB=0;LSC=1;break;
   case(7):LSA=0;LSB=1;LSC=1;break;
   case(8):LSA=1;LSB=1;LSC=1;break;
  }
  P0=shumaguan;
  delay(100);
  P0=0x00;
}
}
void keydown()
{
        keychoice=0x0f;
        if(keychoice!=0x0f)
        {
         delay(1000);
         if(keychoice!=0x0f)
         {
          keychoice=0x0f;
          switch(keychoice)
          {
           case(0x07):keyvalue=0;break;
           case(0x0b):keyvalue=1;break;
           case(0x0d):keyvalue=2;break;
           case(0x0e):keyvalue=3;break;
          }
          keychoice=0xf0;
          switch(keychoice)
          {
           case(0x70):keyvalue=keyvalue;break;
           case(0xb0):keyvalue=keyvalue+4;break;
           case(0xd0):keyvalue=keyvalue+8;break;
           case(0xe0):keyvalue=keyvalue+12;break;
          }
            //加法
          if(keyvalue==10)                  
          {
             keyvalue='+';
          }
                //減法
            if(keyvalue==11)                  
          {
            keyvalue='-';
          }
                //乘法
            if(keyvalue==12)                  
          {
            keyvalue='*';
      }
                 //除法
            if(keyvalue==13)
          {
             keyvalue='/';
          }
                    //小數點
           if(keyvalue==14)
          {
            keyvalue='.';
          }
           //等于
            if(keyvalue==15)
          {
            keyvalue='=';
          }

          while((a<50)&&(keychoice!=0xf0))
          {
          delay(1000);
          a++;
          }

         }
        }
}
void keydeal()
{
   
        if(keyvalue==10)
        {
         result=D_shu+E_shu;
        }
                  if(keyvalue==11)
        {
         result=D_shu-E_shu;
        }
                if(keyvalue==12)
        {
         result=D_shu*E_shu;
        }
                if(keyvalue==13)
        {
         result=D_shu/E_shu;
        }
        if(keyvalue==15)
        {
          interrupt0();
        }

}


void main()
{
LSA=0;
LSB=0;
LSC=0;
while(1)
{
  keydown();
  keyoutput=shumaguan[keyvalue];
}
   
}
void Int0() interrupt 0
{
  if(keyvalue==15)
  {
   delay(1000);
   
  }
}
作者: acolick    時間: 2017-10-10 09:38
cjjcjj1 發表于 2017-10-9 17:08
先不管小數計算,整數計算過程的程序寫好了嗎?
小數部分,加個標志位,記錄下小數的位數,然后
小數計算 ...

result 結果
D_shu 第一個數
E_shu 第二個數
作者: egang    時間: 2017-10-10 10:39

共陰極數碼管,只需將dp腳接高電平(mcu的io輸出高電平)就可以點亮了。

作者: yzwzfyz    時間: 2017-10-11 23:12
贊同沙發的說法
作者: whwhwh    時間: 2017-10-12 19:32
要知道數碼管引腳的順序,如共陰極數碼管只需將dp腳接高電平(mcu的io輸出高電平)就可以點亮了。
作者: asfdasdf    時間: 2017-10-12 23:47
數碼管有個DP,想要小數點,點亮它就行了
作者: sldx    時間: 2017-10-13 01:22
假設結果為a,整數部分為m=(int)a;然后你判斷m是幾位數就可以知道小數點在哪了……
作者: 老煙槍    時間: 2017-10-13 07:26
最后加標志位
作者: 老煙槍    時間: 2017-10-13 07:28
學習一下
作者: powerdruy    時間: 2017-10-13 08:54
樓主是不知道如何獲取小數點后位數的算法嗎
作者: asas    時間: 2017-10-13 09:11
數碼管分為7段,最后一個段就是小數點啊~
作者: acolick    時間: 2017-10-13 09:23
powerdruy 發表于 2017-10-13 08:54
樓主是不知道如何獲取小數點后位數的算法嗎

是啊 不知道小數點是在第幾位,怎么獲取知道是在第幾位
作者: acolick    時間: 2017-10-13 09:24
whwhwh 發表于 2017-10-12 19:32
要知道數碼管引腳的順序,如共陰極數碼管只需將dp腳接高電平(mcu的io輸出高電平)就可以點亮了。

但是我不知道是第幾位有小數點啊
作者: SIYEUPIN    時間: 2017-10-13 09:59
數碼管是8位的,其中1到7位用來顯示數字,第八位就是小數點了。比如在第三位,就是第三個數碼管的第八個燈
作者: lzmcode    時間: 2017-10-13 11:01
選中g這個段碼
作者: 1115892875    時間: 2017-10-13 11:16
小數點也屬于數碼管控制的一部分,你查下手冊就可以
作者: 春風十里吹    時間: 2019-2-25 03:26
數碼管有個DP,想要小數點,點亮它就行了
作者: 迷彩豬    時間: 2019-2-26 14:14
數碼管有個dp位,要讓他亮,就要改段碼
作者: zyx123    時間: 2019-2-26 14:18
數碼管有一個是DP,這個點亮就是小數點
作者: dxn396396396    時間: 2019-2-26 14:47
數碼管第八位就是小數點,只要控制導通就可以顯示了
作者: 傻呆    時間: 2019-12-12 10:34
這個數碼管秒上的小數點怎么讓他不亮,程序應該怎么改?求大神指點。

2019-12-12_10.32.16.jpg (1.33 MB, 下載次數: 82)

2019-12-12_10.32.16.jpg

2019-12-12_10.32.46.jpg (1.51 MB, 下載次數: 69)

2019-12-12_10.32.46.jpg





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1