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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14060|回復: 4
收起左側

C語言編程:如何分離一個多位數數字

[復制鏈接]
ID:117358 發表于 2016-5-12 04:41 | 顯示全部樓層 |閱讀模式
摘要: 數碼管是電子設計之中最常用的顯示元器件,但是數碼管一次只能顯示一個數字,如果要顯示多位數字只能使用多個數碼管并且要把數字拆分開,一位一位的送到數碼管中才能顯示,今天就介紹把一個多位數字拆分的方法。 ... ...




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

把一個多位數拆分要用到兩個運算符“/”除法運算符和“%”取余運算符:

/:得到的運算結果是整數,68/10=6;
%:得到的運算結果是余數,68%10=8;

是不是有點意思。

比如要顯示524這個三位數,下面講解這個數字的拆分算法。

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

通過這個例子是不是找出規律來了?簡寫入下:

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

再舉一個四位數的例子,拆分6893如下:

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

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

以上分離方法只是眾多分離方法中的一種,在使用的時候可以在紙上簡單算一下,結果就很容易出來了。想要了解數碼管是如何工作的,請點擊這里




回復

使用道具 舉報

ID:692711 發表于 2020-2-27 08:43 來自觸屏版 | 顯示全部樓層
接著在往下寫點吧謝謝您   我在回來看  我咋回來我是路癡
回復

使用道具 舉報

ID:535242 發表于 2020-2-27 21:31 | 顯示全部樓層
怎么感覺公式每總結出來
回復

使用道具 舉報

ID:407089 發表于 2020-2-28 09:33 | 顯示全部樓層
提供一個正整數的數碼管解決方案,供參考。
  1. /*
  2.   本程序是在數碼管上顯示正整數的例程,顯示數字長度不超過8位(需要定義無符號長整型變量)
  3. */

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

  8. typedef unsigned char uint8;        //8位無符號型
  9. typedef unsigned char uchar;        //8位無符號型
  10. typedef unsigned int uint16;
  11. typedef unsigned long uint32;

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

  17. //共陰極數碼管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. //將要被顯示的數字(只要不是大于8位的正整數均可)
  21. uint32 birthday = 508;

  22. //用于保存數字對應數碼管編碼的數組
  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. //拆分整數到num_code數組
  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位數碼管顯示函數
  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.                 //顯數
  58.                 seg_sel = 1;
  59.                 DATA = num_code[j];
  60.                 delay(1);
  61.                
  62.                 //消影(共陽極則為0xff,就是讓所有數碼管暫時不亮)
  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. }
復制代碼



回復

使用道具 舉報

ID:476527 發表于 2020-2-28 13:48 | 顯示全部樓層
分離個位只需要直接%10就行了,為何還要先%100再%10?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久精品国产免费一区 | 午夜影院网站 | 欧美黄色一区 | 乳色吐息在线观看 | 91视频免费在观看 | 国产一区二区三区视频 | 国产福利91精品 | 91xx在线观看| 欧美日韩亚洲在线 | 四虎最新地址 | 请别相信他免费喜剧电影在线观看 | 福利片在线观看 | 国产乱码久久久 | 日韩电影一区 | 午夜电影福利 | 伊人免费在线 | 91偷拍精品一区二区三区 | 国产欧美精品一区二区三区 | 日韩在线视频一区 | 国产成人小视频 | 国产精品免费播放 | 成人不卡 | 久久人体视频 | 美女福利网站 | 亚洲国产第一页 | 天天天插| 日韩精品 电影一区 亚洲 | 亚洲综合在 | 久草视频在线看 | 免费精品 | 国产成人精品一区二 | 99pao成人国产永久免费视频 | 日本一二区视频 | 国产69精品久久99不卡免费版 | 成人免费在线小视频 | 丁香一区二区 | 一区在线视频 | 欧美日韩一区二区三区四区 | 在线欧美一区 | 九九国产在线观看 | 国产一区二区三区四区在线观看 |