找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21898|回复: 23
打印 上一主题 下一主题
收起左侧

数码管怎么显示小数点

  [复制链接]
跳转到指定楼层
#
我想做个计算器,然后就是在数据结果在数码管显示的时候不知道怎么显示,好比说0.9*0.9, 0.89/189这样,在不知道数据是几位,小数点在第几位的时候,我怎么检测,然后在数码管上显示出结果。请大神解答,谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

23#
ID:651428 发表于 2019-12-12 10:34 来自手机 | 只看该作者
这个数码管秒上的小数点怎么让他不亮,程序应该怎么改?求大神指点。

2019-12-12_10.32.16.jpg (1.33 MB, 下载次数: 49)

2019-12-12_10.32.16.jpg

2019-12-12_10.32.46.jpg (1.51 MB, 下载次数: 36)

2019-12-12_10.32.46.jpg
回复

使用道具 举报

22#
ID:476853 发表于 2019-2-26 14:47 来自手机 | 只看该作者
数码管第八位就是小数点,只要控制导通就可以显示了
回复

使用道具 举报

21#
ID:318489 发表于 2019-2-26 14:18 | 只看该作者
数码管有一个是DP,这个点亮就是小数点
回复

使用道具 举报

20#
ID:480098 发表于 2019-2-26 14:14 | 只看该作者
数码管有个dp位,要让他亮,就要改段码
回复

使用道具 举报

19#
ID:478073 发表于 2019-2-25 03:26 | 只看该作者
数码管有个DP,想要小数点,点亮它就行了
回复

使用道具 举报

18#
ID:239118 发表于 2017-10-13 11:16 | 只看该作者
小数点也属于数码管控制的一部分,你查下手册就可以
回复

使用道具 举报

17#
ID:239108 发表于 2017-10-13 11:01 | 只看该作者
选中g这个段码
回复

使用道具 举报

16#
ID:239085 发表于 2017-10-13 09:59 | 只看该作者
数码管是8位的,其中1到7位用来显示数字,第八位就是小数点了。比如在第三位,就是第三个数码管的第八个灯
回复

使用道具 举报

15#
ID:238042 发表于 2017-10-13 09:24 | 只看该作者
whwhwh 发表于 2017-10-12 19:32
要知道数码管引脚的顺序,如共阴极数码管只需将dp脚接高电平(mcu的io输出高电平)就可以点亮了。

但是我不知道是第几位有小数点啊
回复

使用道具 举报

14#
ID:238042 发表于 2017-10-13 09:23 | 只看该作者
powerdruy 发表于 2017-10-13 08:54
楼主是不知道如何获取小数点后位数的算法吗

是啊 不知道小数点是在第几位,怎么获取知道是在第几位
回复

使用道具 举报

13#
ID:194451 发表于 2017-10-13 09:11 | 只看该作者
数码管分为7段,最后一个段就是小数点啊~
回复

使用道具 举报

12#
ID:108361 发表于 2017-10-13 08:54 | 只看该作者
楼主是不知道如何获取小数点后位数的算法吗
回复

使用道具 举报

11#
ID:239056 发表于 2017-10-13 07:28 | 只看该作者
学习一下
回复

使用道具 举报

10#
ID:239056 发表于 2017-10-13 07:26 | 只看该作者
最后加标志位
回复

使用道具 举报

9#
ID:219796 发表于 2017-10-13 01:22 来自手机 | 只看该作者
假设结果为a,整数部分为m=(int)a;然后你判断m是几位数就可以知道小数点在哪了……
回复

使用道具 举报

8#
ID:239043 发表于 2017-10-12 23:47 | 只看该作者
数码管有个DP,想要小数点,点亮它就行了
回复

使用道具 举报

7#
ID:238946 发表于 2017-10-12 19:32 | 只看该作者
要知道数码管引脚的顺序,如共阴极数码管只需将dp脚接高电平(mcu的io输出高电平)就可以点亮了。
回复

使用道具 举报

6#
ID:123289 发表于 2017-10-11 23:12 | 只看该作者
赞同沙发的说法
回复

使用道具 举报

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

共阴极数码管,只需将dp脚接高电平(mcu的io输出高电平)就可以点亮了。
回复

使用道具 举报

地板
ID:238042 发表于 2017-10-10 09:38 | 只看该作者
cjjcjj1 发表于 2017-10-9 17:08
先不管小数计算,整数计算过程的程序写好了吗?
小数部分,加个标志位,记录下小数的位数,然后
小数计算 ...

result 结果
D_shu 第一个数
E_shu 第二个数
回复

使用道具 举报

板凳
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:82765 发表于 2017-10-9 17:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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