專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

十六進(jìn)制數(shù)轉(zhuǎn)BCD碼顯示

作者:圓點(diǎn)博士   來(lái)源:圓點(diǎn)博士   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月16日   【字體:

 在計(jì)算機(jī)中,數(shù)據(jù)是以0和1的二進(jìn)制方式來(lái)表示的。比如一個(gè)8位的二進(jìn)制數(shù),就表示為 0001 0001,由于二進(jìn)制數(shù)用起來(lái)比較不方便,所以人們通常以16進(jìn)制的方式來(lái)表達(dá),比如上述的00010001的16進(jìn)制表示為0x11。

 
我們知道16進(jìn)制的0x11, 如果用十進(jìn)制來(lái)表示的話,代表的數(shù)是16。
 
 
 
由于十進(jìn)制數(shù)是人們?cè)谌粘I钪谐S玫臄?shù)據(jù)表示方式。所以,當(dāng)我們想要顯示某個(gè)數(shù)的話,一般會(huì)轉(zhuǎn)化為十進(jìn)制里顯示。下面我們來(lái)看看如果把一個(gè)4位的十進(jìn)制數(shù)以BCD碼的形式顯示出來(lái)。
 
 
 
void BS004_COM1_Send_4bits_BCD_Num(int number)  //圓點(diǎn)博士:發(fā)送一個(gè)字符
{
 unsigned int num;
 unsigned char num_th[4];
 unsigned char i,bcd_code_len;
 //
 num=fabs(number);
 if(number<0) BS004_COM1_Send_Char('-');    //圓點(diǎn)博士:發(fā)送字符-
 if(num>9999) num=9999;
 if(num>999) bcd_code_len=4;
 else if(num>99) bcd_code_len=3;
 else if(num>9) bcd_code_len=2;  
 else bcd_code_len=1;
 //
 if(num>999) {num_th[3]=num/1000; num-=num_th[3]*1000;}
 if(num>99)  {num_th[2]=num/100;  num-=num_th[2]*100; }
 if(num>9)   {num_th[1]=num/10;   num-=num_th[1]*10; } 
 num_th[0]=num;
 //
 for(i=0;i
 
 
 
代碼首次判別數(shù)據(jù)是否是負(fù)數(shù) ,如果是的話,顯示符號(hào)-。
 
然后我們看到,轉(zhuǎn)換是以除法和減法的方式來(lái)實(shí)現(xiàn)的。
關(guān)閉窗口

相關(guān)文章