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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

數碼管怎么顯示小數點

  [復制鏈接]
跳轉到指定樓層
樓主
我想做個計算器,然后就是在數據結果在數碼管顯示的時候不知道怎么顯示,好比說0.9*0.9, 0.89/189這樣,在不知道數據是幾位,小數點在第幾位的時候,我怎么檢測,然后在數碼管上顯示出結果。請大神解答,謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:82765 發表于 2017-10-9 17:08 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

板凳
ID:238042 發表于 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);
   
  }
}
回復

使用道具 舉報

地板
ID:238042 發表于 2017-10-10 09:38 | 只看該作者
cjjcjj1 發表于 2017-10-9 17:08
先不管小數計算,整數計算過程的程序寫好了嗎?
小數部分,加個標志位,記錄下小數的位數,然后
小數計算 ...

result 結果
D_shu 第一個數
E_shu 第二個數
回復

使用道具 舉報

5#
ID:238216 發表于 2017-10-10 10:39 | 只看該作者

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

使用道具 舉報

6#
ID:123289 發表于 2017-10-11 23:12 | 只看該作者
贊同沙發的說法
回復

使用道具 舉報

7#
ID:238946 發表于 2017-10-12 19:32 | 只看該作者
要知道數碼管引腳的順序,如共陰極數碼管只需將dp腳接高電平(mcu的io輸出高電平)就可以點亮了。
回復

使用道具 舉報

8#
ID:239043 發表于 2017-10-12 23:47 | 只看該作者
數碼管有個DP,想要小數點,點亮它就行了
回復

使用道具 舉報

9#
ID:219796 發表于 2017-10-13 01:22 來自觸屏版 | 只看該作者
假設結果為a,整數部分為m=(int)a;然后你判斷m是幾位數就可以知道小數點在哪了……
回復

使用道具 舉報

10#
ID:239056 發表于 2017-10-13 07:26 | 只看該作者
最后加標志位
回復

使用道具 舉報

11#
ID:239056 發表于 2017-10-13 07:28 | 只看該作者
學習一下
回復

使用道具 舉報

12#
ID:108361 發表于 2017-10-13 08:54 | 只看該作者
樓主是不知道如何獲取小數點后位數的算法嗎
回復

使用道具 舉報

13#
ID:194451 發表于 2017-10-13 09:11 | 只看該作者
數碼管分為7段,最后一個段就是小數點啊~
回復

使用道具 舉報

14#
ID:238042 發表于 2017-10-13 09:23 | 只看該作者
powerdruy 發表于 2017-10-13 08:54
樓主是不知道如何獲取小數點后位數的算法嗎

是啊 不知道小數點是在第幾位,怎么獲取知道是在第幾位
回復

使用道具 舉報

15#
ID:238042 發表于 2017-10-13 09:24 | 只看該作者
whwhwh 發表于 2017-10-12 19:32
要知道數碼管引腳的順序,如共陰極數碼管只需將dp腳接高電平(mcu的io輸出高電平)就可以點亮了。

但是我不知道是第幾位有小數點啊
回復

使用道具 舉報

16#
ID:239085 發表于 2017-10-13 09:59 | 只看該作者
數碼管是8位的,其中1到7位用來顯示數字,第八位就是小數點了。比如在第三位,就是第三個數碼管的第八個燈
回復

使用道具 舉報

17#
ID:239108 發表于 2017-10-13 11:01 | 只看該作者
選中g這個段碼
回復

使用道具 舉報

18#
ID:239118 發表于 2017-10-13 11:16 | 只看該作者
小數點也屬于數碼管控制的一部分,你查下手冊就可以
回復

使用道具 舉報

19#
ID:478073 發表于 2019-2-25 03:26 | 只看該作者
數碼管有個DP,想要小數點,點亮它就行了
回復

使用道具 舉報

20#
ID:480098 發表于 2019-2-26 14:14 | 只看該作者
數碼管有個dp位,要讓他亮,就要改段碼
回復

使用道具 舉報

21#
ID:318489 發表于 2019-2-26 14:18 | 只看該作者
數碼管有一個是DP,這個點亮就是小數點
回復

使用道具 舉報

22#
ID:476853 發表于 2019-2-26 14:47 來自觸屏版 | 只看該作者
數碼管第八位就是小數點,只要控制導通就可以顯示了
回復

使用道具 舉報

23#
ID:651428 發表于 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
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表