找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

C語(yǔ)言編程:如何分離一個(gè)多位數(shù)數(shù)字

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
摘要: 數(shù)碼管是電子設(shè)計(jì)之中最常用的顯示元器件,但是數(shù)碼管一次只能顯示一個(gè)數(shù)字,如果要顯示多位數(shù)字只能使用多個(gè)數(shù)碼管并且要把數(shù)字拆分開,一位一位的送到數(shù)碼管中才能顯示,今天就介紹把一個(gè)多位數(shù)字拆分的方法。 ... ...




數(shù)碼管是電子設(shè)計(jì)之中最常用的顯示元器件,但是數(shù)碼管一次只能顯示一個(gè)數(shù)字,如果要顯示多位數(shù)字只能使用多個(gè)數(shù)碼管并且要把數(shù)字拆分開,一位一位的送到數(shù)碼管中才能顯示,今天就介紹把一個(gè)多位數(shù)字拆分的方法。

把一個(gè)多位數(shù)拆分要用到兩個(gè)運(yùn)算符“/”除法運(yùn)算符和“%”取余運(yùn)算符:

/:得到的運(yùn)算結(jié)果是整數(shù),68/10=6;
%:得到的運(yùn)算結(jié)果是余數(shù),68%10=8;

是不是有點(diǎn)意思。

比如要顯示524這個(gè)三位數(shù),下面講解這個(gè)數(shù)字的拆分算法。

百位:524/100 = 5;
十位:524%100=24;24/10=2;
各位:524%100=24;24%10=4;

通過這個(gè)例子是不是找出規(guī)律來了?簡(jiǎn)寫入下:

百位:524/100 = 5;
十位:524%100/10=2;
各位:524%100%10=4;

再舉一個(gè)四位數(shù)的例子,拆分6893如下:

千位:6893/1000=6;
百位:6893%1000/100 = 8;
十位:6893%1000%100/10 = 9;
各位:6893%1000%100%10 = 3;

是不是分離出來了?這時(shí)候就可以把數(shù)據(jù)送到數(shù)碼管顯示了。

以上分離方法只是眾多分離方法中的一種,在使用的時(shí)候可以在紙上簡(jiǎn)單算一下,結(jié)果就很容易出來了。想要了解數(shù)碼管是如何工作的,請(qǐng)點(diǎn)擊這里。




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

地板
ID:476527 發(fā)表于 2020-2-28 13:48 | 只看該作者
分離個(gè)位只需要直接%10就行了,為何還要先%100再%10?
回復(fù)

使用道具 舉報(bào)

板凳
ID:407089 發(fā)表于 2020-2-28 09:33 | 只看該作者
提供一個(gè)正整數(shù)的數(shù)碼管解決方案,供參考。
  1. /*
  2.   本程序是在數(shù)碼管上顯示正整數(shù)的例程,顯示數(shù)字長(zhǎng)度不超過8位(需要定義無(wú)符號(hào)長(zhǎng)整型變量)
  3. */

  4. #include <reg52.h>
  5. #include <math.h>
  6. #include <stdlib.h>
  7. #include <stdio.h>

  8. typedef unsigned char uint8;        //8位無(wú)符號(hào)型
  9. typedef unsigned char uchar;        //8位無(wú)符號(hào)型
  10. typedef unsigned int uint16;
  11. typedef unsigned long uint32;

  12. #define DATA P0
  13. sbit KEY_S2 = P3^0;                //S2獨(dú)立按鍵
  14. sbit KEY_S3 = P3^1;                //S3獨(dú)立按鍵
  15. sbit seg_sel = P2^6;
  16. sbit bit_sel = P2^7;

  17. //共陰極數(shù)碼管0-9編碼
  18. uchar code seg_tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  19. uchar code bit_tab[] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

  20. //將要被顯示的數(shù)字(只要不是大于8位的正整數(shù)均可)
  21. uint32 birthday = 508;

  22. //用于保存數(shù)字對(duì)應(yīng)數(shù)碼管編碼的數(shù)組
  23. uchar num_code[8] = {0};

  24. void delay(uint16 num)
  25. {
  26.         uint16 x,y;
  27.         for(x=num; x>0; x--) for(y=110; y>0; y--){}
  28. }

  29. //拆分整數(shù)到num_code數(shù)組
  30. void int2code(uint32 inum)
  31. {
  32.         uint8 i=0, n;
  33.         uint32 tmp = inum;

  34.         for(i=0; i<8; i++)
  35.         {
  36.                
  37.                 if(tmp>0)
  38.                 {       
  39.                         n = tmp % 10;
  40.                         tmp = (tmp-n) / 10;
  41.                         num_code[7-i] = seg_tab[n];
  42.                 }else{
  43.                         num_code[i] = 0x00;
  44.                 }                                    
  45.         }
  46. }

  47. //8位數(shù)碼管顯示函數(shù)
  48. void display(void)
  49. {
  50.         uint8 j = 0;
  51.         for (j=0; j<8; j++)
  52.         {
  53.                 //移位
  54.                 bit_sel = 1;
  55.                 DATA = bit_tab[j];
  56.                 bit_sel = 0;

  57.                 //顯數(shù)
  58.                 seg_sel = 1;
  59.                 DATA = num_code[j];
  60.                 delay(1);
  61.                
  62.                 //消影(共陽(yáng)極則為0xff,就是讓所有數(shù)碼管暫時(shí)不亮)
  63.                 DATA = 0x00;
  64.                 seg_sel = 0;
  65.         }
  66. }

  67. void main(void)
  68. {

  69.         while(1)
  70.         {
  71.                 int2code(birthday);
  72.                
  73.                 display();
  74.                
  75.                 if (KEY_S2==0)
  76.                 {
  77.                         delay(10);
  78.                         if (KEY_S2==0){
  79.                                 birthday++;
  80.                         }
  81.                         while(!KEY_S2);
  82.                 }
  83.         }
  84. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:535242 發(fā)表于 2020-2-27 21:31 | 只看該作者
怎么感覺公式每總結(jié)出來
回復(fù)

使用道具 舉報(bào)

樓主
ID:692711 發(fā)表于 2020-2-27 08:43 來自手機(jī) | 只看該作者
接著在往下寫點(diǎn)吧謝謝您   我在回來看  我咋回來我是路癡
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表