新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機動態數碼管的設計

        單片機動態數碼管的設計

        作者: 時間:2016-11-26 來源:網絡 收藏
        一、數碼管動態顯示

        動態顯示

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

        LED數碼管動態顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為1~2ms,由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O端口,而且功耗更低。

        二、Proteus仿真實驗



        源程序:

        #include//C51頭文件
        #include//函數頭文件
        #define uchar unsigned char//宏定義uchar=unsigned char
        #define uint unsigned int//宏定義uint=unsigned int

        uchar duan_code[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f
        };//共陰極數碼管段碼0~9
        uchar wei_code[]={0xFE,0XFD}; //共陰極數碼管位碼

        void delay_ms(uint z)//ms級延遲函數,z表示形參,是幾就是幾ms延遲
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=99;y>0;y--)
        { _nop_();
        _nop_();
        }
        }

        void main(void)//主函數
        {
        uint i=23;//初始化數碼管顯示的值
        P0=0X00;//初始化P0口為低電平
        P2=0XFF;
        while(1)
        {
        P2=0XFE;//十位顯示
        P0=duan_code[i/10];//通過對i取整,求出十位顯示的數字
        delay_ms(5);//每次間隔2ms
        P2=0XFF;

        P2=0XFD;//個位顯示
        P0=duan_code[i];//通過對i取余,求出個位顯示的數字
        delay_ms(5);//每次間隔2ms
        P2=0XFF;

        }
        }



        關鍵詞: 單片機動態數碼

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 盐城市| 皋兰县| 乌兰浩特市| 盘锦市| 垦利县| 新乐市| 巫山县| 绥棱县| 利辛县| 叙永县| 南充市| 西青区| 大港区| 专栏| 乌什县| 盘锦市| 大宁县| 康乐县| 昭苏县| 大邑县| 隆回县| 舞钢市| 木兰县| 高雄县| 民和| 松潘县| 怀宁县| 小金县| 永康市| 江油市| 育儿| 十堰市| 红河县| 宁远县| 会宁县| 光山县| 苍梧县| 玛曲县| 托里县| 滦平县| 武平县|