欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3705|回復: 0
收起左側

51單片機學習筆記(1)-數字分離

[復制鏈接]
ID:80436 發表于 2015-5-20 14:54 | 顯示全部樓層 |閱讀模式
數字分離 比如把123456這個整數進行分離,方便按位顯示在數碼管上

思路:1、把這個數對10取模   123456%10  結果是 6    就把第一位分離出來了
      2、把這個數除10后再進行對10取模  123456/10 結果12345 再12345%10 結果是5  就把第二位分離出來了
      3、進行這樣的循環 這個數是6位就循環6次,把結果存放在一組變量中,這樣就把這個數的各位都進行分離出來了
      4、數字首位為0,數碼管不顯示0,數字當中或末尾是0則顯示0
      5、經過循環語句后,就把數字每位的數據儲存在了數字顯示緩存數字Ledbuff[]中了
程序:
void ShowNumber(unsigned long num)  //顯示數字函數,參數是1個長整形的數字num
{
        signed char i;              //定義變量i用于循環數的位數
        unsigned char buf[6];       //定義一個數組用于保存分離出來各位的數據

        for(i=0; i<6; i++)
        {
                buf[i] = num % 10;   
                num = num / 10;
        }                            //上面2個語句就是循環6次,把1個6位數進行按位分離后存放在數組buf中

        for(i=5; i>=1; i--)         //進行首位是零,不顯示
        {
                if(buf[i] == 0)     //如果首位是零,則把數碼管顯示緩存數據為0XFF,由于是共陽極數碼管,如果數據是0xff 則數碼管不顯示
                {
                        LedBuff[i] = 0xFF;
                }
                else               //如果首位不是零,則跳出循環
                        break;
        }
       
        for(; i>=0; i--)           //i繼承了上面語句的數值,把該位的數字通過Ledchar[buf[i]]數組,進行轉換為該數字的顯示數據并賦值給數碼管顯示緩存
        {
                LedBuff[i] = LedChar[buf[i]];       
        }

}
unsigned char code LedChar[]={          //0-F在數碼管上顯示的數據表用數組存放
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
        0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
        };
unsigned char LedBuff[6] = {      //每位數字顯示的數據儲存數組緩存,設置初始值是0xff
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
        };


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表