切换到宽版
  • 3951阅读
  • 26回复

[C51]大家好,数码管显示学习,现在正常显示13356  ,想显示带点数的改哪里例如显示133.56 [复制链接]

上一主题 下一主题
离线ygwpl
 

发帖
48
M币
39
专家
1
粉丝
6
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-04-13

#include  <REG51.H>    
#include  <math.h>    //Keil library  
#include  <stdio.h>   //Keil library    
#include  <INTRINS.H>
#define   uchar unsigned char
#define   uint unsigned int    


sbit      sck=P2^1;          
sbit      rck=P2^2;      
sbit      dio=P2^0;  
sbit      d1=P1^0;


typedef   unsigned char BYTE;
typedef   unsigned short WORD;

BYTE m;

static unsigned char second,minute,hour;

unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};
unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char  disbuf[8]={0,0,0,0,0,0,0,0};
      
uchar   ge,shi,bai,qian,wan;            //显示变量
int     dis_data;                       //变量


void conversion(uint temp_data);



//-----------------------------------

//*********************************************************
void conversion(uint temp_data)  //  数据转换出 个,十,百,千,万
{  
    wan=temp_data/10000 ;
    temp_data=temp_data%10000;   //取余运算
    qian=temp_data/1000 ;
    temp_data=temp_data%1000;    //取余运算
    bai=temp_data/100   ;
    temp_data=temp_data%100;     //取余运算
    shi=temp_data/10    ;
    temp_data=temp_data%10;      //取余运算
    ge=temp_data;    
}




//数据传输//
void sdataw(void)
{
     unsigned char b,c,num;
                                  //2.5sck  2.7 DIO  2.6 RCK
     if(b==0)
    {    
      b++;
    num=segbit[m];
      for(c=0;c<8;c++)
          {sck=0;
           dio=num&0x80;
           num<<=1;
           sck=1;
       }
    
    }

    if(b==1)

    {  
        b--;
      
       {num=fseg[disbuf[m]];}

         for(c=0;c<8;c++)
           {  sck=0;
             dio=num&0x80;
             num<<=1;
             sck=1;
           }
    
    }
         m++;
         if(m==8)
         {m=0;
             }
}

//数据传输//

//延时0.1ms个单位//

void delay (unsigned char h)
  {    while(h--);
  }
  //延时0.1ms个单位//


//数据输出//
void out(void)
{rck=0;
  delay(50);
  rck=1;
}
//数据输出//


    



//*********************************************************
//主程序********
//*********************************************************
void main()
{  
  

  while(1)              //循环
  {

    conversion(13356);    //现在正常显示13356  ,想显示带点数的改哪里例如显示133.56
    disbuf[4]=wan;                
    disbuf[3]=qian;
    disbuf[2]=bai;
    disbuf[1]=shi;
    disbuf[0]=ge;
    
    sdataw();
    out();
    
            
  }
}


本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线ygwpl

发帖
48
M币
39
专家
1
粉丝
6
只看该作者 1楼 发表于: 2018-04-13
请登录后查看
离线夕阳飞雪

发帖
1085
M币
1599
专家
8
粉丝
44
只看该作者 2楼 发表于: 2018-04-13
Re:大家好,数码管显示学习,现在正常显示13356  ,想显示带点数的改哪里例如显示1 ..
请登录后查看
离线ygwpl

发帖
48
M币
39
专家
1
粉丝
6
只看该作者 3楼 发表于: 2018-04-13
回 夕阳飞雪 的帖子
请登录后查看
离线夕阳飞雪

发帖
1085
M币
1599
专家
8
粉丝
44
只看该作者 4楼 发表于: 2018-04-13
Re:大家好,数码管显示学习,现在正常显示13356  ,想显示带点数的改哪里例如显示1 ..
请登录后查看
离线ygwpl

发帖
48
M币
39
专家
1
粉丝
6
只看该作者 5楼 发表于: 2018-04-13
回 夕阳飞雪 的帖子
请登录后查看
离线夕阳飞雪

发帖
1085
M币
1599
专家
8
粉丝
44
只看该作者 6楼 发表于: 2018-04-13
回 ygwpl 的帖子
请登录后查看
离线lisingch

发帖
30351
M币
23511
专家
9
粉丝
72
只看该作者 7楼 发表于: 2018-04-13
Re:大家好,数码管显示学习,现在正常显示13356  ,想显示带点数的改哪里例如显示1 ..
请登录后查看
本帖最近打赏记录:共1条打赏 ,专家+1
發騷友 专家 +1 歡迎探討 2018-04-17
离线ygwpl

发帖
48
M币
39
专家
1
粉丝
6
只看该作者 8楼 发表于: 2018-04-13
回 lisingch 的帖子
请登录后查看
离线lisingch

发帖
30351
M币
23511
专家
9
粉丝
72
只看该作者 9楼 发表于: 2018-04-13
回 ygwpl 的帖子
请登录后查看
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个