新聞中心

        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;

        }
        }



        關鍵詞: 單片機動態數碼

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 黄大仙区| 宝山区| 大埔区| 定襄县| 蓬安县| 浦县| 大同市| 马关县| 饶河县| 山东省| 区。| 承德县| 正镶白旗| 马关县| 务川| 中卫市| 宜兰市| 措美县| 乐至县| 渝中区| 筠连县| 佛冈县| 万源市| 修水县| 西藏| 临夏县| 绵竹市| 义马市| 宁都县| 景东| 洪湖市| 搜索| 井研县| 隆尧县| 乐安县| 泾源县| 邹城市| 临桂县| 金沙县| 桃园市| 呼图壁县|