標(biāo)題: 51單片機(jī)學(xué)習(xí)筆記(1)-數(shù)字分離 [打印本頁]

作者: liuqq    時(shí)間: 2015-5-20 14:54
標(biāo)題: 51單片機(jī)學(xué)習(xí)筆記(1)-數(shù)字分離
數(shù)字分離 比如把123456這個(gè)整數(shù)進(jìn)行分離,方便按位顯示在數(shù)碼管上

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

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

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

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







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1