新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 【C51】源碼 2 -- 8 位共陰極數(shù)碼管的基本顯示

        【C51】源碼 2 -- 8 位共陰極數(shù)碼管的基本顯示

        作者: 時間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
        自學(xué)單片機(jī),買了一套開發(fā)板,進(jìn)入學(xué)習(xí)的第 3 階段:8 位共陰極數(shù)碼管。剛剛接觸了鎖存器的用法,寫在這兒用于備份……

        程序就是利用鎖存器,動態(tài)顯示數(shù)字,使 8 位數(shù)碼管看起來同時顯示不同的字樣……

        本文引用地址:http://www.104case.com/article/201611/315358.htm

        附上源碼:(初出茅廬,難免有寫的不好的地方,僅作備份之用,歡迎指點,噴子退散……)

        #include

        #defineDATA P1 // 定義 P1 為數(shù)據(jù)輸入

        sbitSEG = P0^0;// 定義 段鎖存器
        sbitBIT = P0^2;// 定義 位鎖存器

        unsigned char codeSEG_CODE[ ] = {0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f};// 段碼 1-8
        unsigned char codeBIT_CODE[ ] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};

        // 位碼 從 0 位至 7 位

        voidDelay(unsigned intt);

        voidmain (void)
        {
        unsigned chari = 0;

        while(1) {

        SEG = 1; // 關(guān)段鎖存
        DATA = SEG_CODE[i];// 送段碼
        SEG = 0;// 開段鎖存,指定了某位具體顯示什么數(shù)字

        BIT = 1;// 關(guān)位鎖存
        DATA = BIT_CODE[i];// 送位碼
        BIT = 0;// 開位鎖存,指定了哪一位顯示

        Delay(200); // 經(jīng)測試:200 為佳,過小出現(xiàn)重影,過大出現(xiàn)閃爍
        // 20 重影,300 數(shù)字抖動,2000 掃描閃爍
        i++;
        if(i==8) i = 0;// 循環(huán)顯示
        }
        }

        voidDelay(unsigned intt)
        {
        while(t--);
        }

        補(bǔ)充一個技巧:

        突然某一位想顯示小數(shù)點了,怎么辦?

        假如你正在使用temp[i]代表某一個顯示字符,突然想顯示小數(shù)點,可以使用temp[i] | 0x80,通過“或”運算實現(xiàn)加上小數(shù)點……



        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 闽清县| 任丘市| 日土县| 诸城市| 郯城县| 桐庐县| 华亭县| 农安县| 天门市| 鄂伦春自治旗| 尼木县| 万全县| 荃湾区| 长阳| 黄陵县| 陕西省| 沅陵县| 郸城县| 平阴县| 东辽县| 页游| 图片| 玉山县| 洛南县| 余干县| 泽普县| 红河县| 临颍县| 和政县| 长岛县| 昭通市| 晋中市| 浦北县| 左贡县| 东乌| 大同县| 乌海市| 淮北市| 婺源县| 泰宁县| 新乡县|