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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13062|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

數(shù)碼管如何顯示負(fù)數(shù)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:393625 發(fā)表于 2018-10-11 14:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
附上數(shù)碼管顯示代碼,請問如何修改代碼。另數(shù)碼管可以顯示負(fù)數(shù)。謝謝
void Displaycountupnum(unsigned int num)
{
  signed int units,tens,hundreds;
  
  units = num%10;
  tens = (num/10)%10;
  hundreds = num/100;
  
  Send3byte_595_2(countupseg[hundreds],countupseg[tens],countupseg[units]);
  Out_595_2();
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來自 10#
ID:408226 發(fā)表于 2018-10-11 18:46 | 只看該作者
這里面,只有顯示兩位數(shù)的程序,要想顯示“-”,必須再加一位。
如果是四位顯示器,可以先考慮把最左邊的當(dāng)做符號(hào)位。
用兩個(gè)數(shù)字相減,Cy=0時(shí),把符號(hào)位顯示空白。
Cy=1時(shí),把符號(hào)位顯示“-”,再把數(shù)字反減,再去顯示即可。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:386381 發(fā)表于 2018-10-11 14:48 來自觸屏版 | 只看該作者
建議說的再詳細(xì)一點(diǎn),把全部代碼上傳上來,只看到局部

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:408093 發(fā)表于 2018-10-11 15:50 | 只看該作者
數(shù)碼管中的g一直顯示
回復(fù)

使用道具 舉報(bào)

地板
ID:408110 發(fā)表于 2018-10-11 15:52 | 只看該作者
如果要顯示負(fù)數(shù),首先函數(shù)的傳參就不應(yīng)該是個(gè)無符號(hào)整形

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:393625 發(fā)表于 2018-10-11 16:18 | 只看該作者
/*===============================================================*/
/*                     ????鼶??74LS595_2?????????????         */
/*===============================================================*/
#ifndef _LS595_2driver_H_
#define _LS595_2driver_H_

unsigned char flag_fu=0;  //???????????λ

sbit RCK_595_2 = P0^4;        //????鼶??595???????????
sbit DS_595_2 = P0^3;         //????鼶??595??????
sbit CLK_595_2 = P0^5;        //????鼶??595??λ???????

unsigned char code countupseg[] =                                                                                                                                  //?????595?ж???0~9??????????
{// 0         1          2           3        4         5          6           7        8         9
        0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};
unsigned char code roundseg[6]={0x01,0x02,0x04,0x08,0x10,0x20}; //??????

char code_func[]={0x98,0xbd,0xbf,0xd8};//E,r,-,C

/*???????  1ms???λ*/
void Delay_ms(unsigned int t)           //???????,t/ms
{
  unsigned int a,b;
  for(a=0;a<t;a++)
  {  
    for(b=0;b<100;b++)
    {
       _nop_();
    }
  }
}

/* ??1??LS595_2д??1?????*/
void Send1byte_595_2(unsigned char dat)   
{
  unsigned char i;

  for(i=0;i<8;i++)
  {   
        if(dat&0x80)
        DS_595_2 = 1;
        else
        DS_595_2 = 0;
        dat <<=1;
        CLK_595_2 = 0;
        _nop_();
        CLK_595_2 = 1;       
  }

}

/* ??3??????LS595_2д??3?????*/
void Send3byte_595_2(unsigned char dat1,unsigned char dat2,unsigned char dat3)
{
  Send1byte_595_2(dat1);
  Send1byte_595_2(dat2);
  Send1byte_595_2(dat3);
}

/*?????LS595???????????*/
void Out_595_2()
{
  RCK_595_2 = 0;
  _nop_();
  RCK_595_2 = 1;
}

/*???????? 3λ*/
void Displaycountupnum(unsigned int num)
{
  signed int units,tens,hundreds;
  
  units = num%10;
  tens = (num/10)%10;
  hundreds = num/100;
  

  Send3byte_595_2(countupseg[hundreds],countupseg[tens],countupseg[units]);        //??????????????????λ
  Out_595_2();

}
/*????????*/
void Displayround()
{
  unsigned char j;
  for(j=0;j<5;j++)
  {
    Send3byte_595_2(roundseg[j],roundseg[j],roundseg[j]);
        Out_595_2();
        Delay_ms(800);
  }
  
}
#endif  
回復(fù)

使用道具 舉報(bào)

6#
ID:393625 發(fā)表于 2018-10-11 16:18 | 只看該作者
文鳳軒 發(fā)表于 2018-10-11 14:48
建議說的再詳細(xì)一點(diǎn),把全部代碼上傳上來,只看到局部

已經(jīng)發(fā)了,請看
回復(fù)

使用道具 舉報(bào)

7#
ID:393625 發(fā)表于 2018-10-11 16:19 | 只看該作者
willcome0 發(fā)表于 2018-10-11 15:52
如果要顯示負(fù)數(shù),首先函數(shù)的傳參就不應(yīng)該是個(gè)無符號(hào)整形

是的,是我忽略了,
回復(fù)

使用道具 舉報(bào)

8#
ID:408134 發(fā)表于 2018-10-11 16:31 | 只看該作者
可以預(yù)留一塊數(shù)碼管用來顯示符號(hào),當(dāng)數(shù)值為正數(shù)時(shí)正常顯示且不顯示符號(hào)位,為負(fù)數(shù)時(shí)取絕對值顯示并顯示符號(hào)位

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:408209 發(fā)表于 2018-10-11 18:18 | 只看該作者
,可以在你這個(gè)代碼里加個(gè)判斷,根據(jù)結(jié)果選擇是否點(diǎn)亮一個(gè)數(shù)碼管中間哪一橫,具體16進(jìn)制代碼看你自己用的是共陰極還是共陽極

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

11#
ID:213173 發(fā)表于 2018-10-11 18:57 | 只看該作者
這是用3位數(shù)碼管顯-30~150度緩存數(shù)組的設(shè)置,顯示程序段碼直接調(diào)用緩存數(shù)據(jù)
void temperature()     //AD采樣后的溫度處理函
{ //采集到電壓值與二維數(shù)組的電壓值進(jìn)行比較,從而獲得相對應(yīng)的溫度
        uchar i;  
        if((WDCY>table[11][1])||(WDCY<table[171][1]))//如果上下限溫度溢出
        {
                dis_buf[0]=14;//百位"E"
                dis_buf[1]=16;//十位"-"
                dis_buf[2]=16;//個(gè)位"-"
                dis_buf[3]=16;//-號(hào)位 "-"
                dis_buf[4]=16;//負(fù)1位"-"
                dis_buf[5]=14;//負(fù)2位"E"
        }
        else    //-30~150度正常溫度范圍顯示
        {
                for(i=181;i<182;i--)
                {
                        if((WDCY>=table[i][1])&&(WDCY<table[i-1][1]))
                        {
                                temp=(table[i][0]); //查表法直接獲取溫度值
                                if(temp<0)   //負(fù)溫值
                                {
                                        dis_buf[3]=16;                //-號(hào)
                                        dis_buf[4]=(temp/10)*(-1);//負(fù)1位
                                        dis_buf[5]=(temp%10)*(-1);//負(fù)2位
       
                                }
                                else          //正溫值
                                {
                                        dis_buf[0]=temp/100;//百位
                                        dis_buf[1]=temp%100/10;//十位
                                        dis_buf[2]=temp%10;//個(gè)位
                                }
                                break;
                        }
                }
        }
}

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

12#
ID:393625 發(fā)表于 2018-10-12 17:27 | 只看該作者
我愛8051 發(fā)表于 2018-10-11 16:31
可以預(yù)留一塊數(shù)碼管用來顯示符號(hào),當(dāng)數(shù)值為正數(shù)時(shí)正常顯示且不顯示符號(hào)位,為負(fù)數(shù)時(shí)取絕對值顯示并顯示符號(hào) ...

請問我這樣改可以嗎
void Displaycountupnum(signed int num)
{
  unsigned int units,tens,hundreds;

  if(num>=0){
  units = num%10;
  tens = (num/10)%10;
  hundreds = num/100;
  

  Send3byte_595_2(countupseg[hundreds],countupseg[tens],countupseg[units]);        //顯示倒計(jì)時(shí)的個(gè)、十、百位
  Out_595_2();
  }
if(num<0)
        {
                num=~num;
                num+=1;
                flag_fu=1;
        }
        else
        {
                flag_fu=0;
        }
    if(flag_fu==1)
                                {
//負(fù)溫度顯示
   units = num%10;
   tens = (num/10)%10;
  
        Send3byte_595_2(countupseg[code_func[2]],countupseg[tens],countupseg[units]);                                       
    Out_595_2();                       
                                }
}
回復(fù)

使用道具 舉報(bào)

13#
ID:408134 發(fā)表于 2018-10-18 12:32 | 只看該作者
zhong2463 發(fā)表于 2018-10-12 17:27
請問我這樣改可以嗎
void Displaycountupnum(signed int num)
{

//試試看行不行
void Displaycountupnum(signed int num)
{
    unsigned int units,tens,hundreds;

    bool falg_fu = false;//符號(hào)位false為正,true為負(fù)
    if (num < 0){
        falg_fu = true;
        num = num * (-1);//取絕對值
    }
    units = num % 10;//提取個(gè)位
    tens = (num / 10) % 10;//提取十位
    hundreds = num / 100;//提取百位
   
    //三塊數(shù)碼管,當(dāng)為負(fù)數(shù)時(shí),百位和符號(hào)位就會(huì)出現(xiàn)不可兼得的情況(當(dāng)測正常情況的溫度應(yīng)該不會(huì)出現(xiàn)零下百位)
    if (falg_fu) {
        Send3byte_595_2(countupseg[code_func[2]],countupseg[tens],countupseg[units]);        //顯示倒計(jì)時(shí)的個(gè)、十、符號(hào)位
        Out_595_2();
    }
    else {
        Send3byte_595_2(countupseg[hundreds],countupseg[tens],countupseg[units]);        //顯示倒計(jì)時(shí)的個(gè)、十、百位
        Out_595_2();
    }
}
回復(fù)

使用道具 舉報(bào)

14#
ID:413816 發(fā)表于 2018-10-23 10:32 | 只看該作者
只有顯示兩位數(shù)的程序,要想顯示“-”,必須再加一位。如果是四位顯示器,可以先考慮把最左邊的當(dāng)做符號(hào)位。用兩個(gè)數(shù)字相減,Cy=0時(shí),把符號(hào)位顯示空白。Cy=1時(shí),把符號(hào)位顯示“-”,再把數(shù)字反減,再去顯示即可。--符號(hào)位,應(yīng)該緊貼著數(shù)值位。所以,應(yīng)該判斷百位、十位為零否,再把“-”顯示在合適的位置上。
回復(fù)

使用道具 舉報(bào)

15#
ID:241273 發(fā)表于 2018-10-24 16:00 | 只看該作者
取數(shù)碼管中間一杠的斷碼,就是你想要的負(fù)號(hào),在做個(gè)標(biāo)志位判斷你要顯示的數(shù)是不是負(fù)數(shù)(只提供思想,程序全靠自己編,加油)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线不卡视频 | 免费成人高清在线视频 | 日韩中文字幕网 | 狠狠干天天干 | 日韩av在线中文字幕 | 亚洲精品视频在线看 | 在线一区视频 | 日韩欧美国产成人一区二区 | caoporon| 天堂中文在线观看 | 成人av一区 | 欧美成人激情视频 | 中文字字幕在线中文乱码范文 | 一区二区国产精品 | 男女激情网站免费 | 国产一区二区自拍 | 欧美日韩一区二区视频在线观看 | 人人看人人干 | 国产精品夜间视频香蕉 | 亚洲综合资源 | 欧美激情一区二区 | 午夜日韩视频 | 久久成人精品视频 | 国产精品特级毛片一区二区三区 | 久久av一区 | 精品日本中文字幕 | 一区在线播放 | 亚洲一区 中文字幕 | 国产亚洲一级 | 精品一区二区三区在线观看 | 午夜精品在线观看 | 日日摸日日爽 | 中文字幕视频网 | 国产免费一区二区 | 日韩欧美在线视频一区 | 91麻豆精品国产91久久久更新资源速度超快 | 天天干天天爽 | 国产精品色一区二区三区 | 精品一区二区久久久久久久网站 | 欧美成人猛片aaaaaaa | 精品国产欧美一区二区三区不卡 |