新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 數碼顯示數字

        51單片機 數碼顯示數字

        作者: 時間:2016-11-25 來源:網絡 收藏
        數碼管顯示在51單片機里面也是很經典的歷程。因為IO口有限,所以數碼管的數據端口與選通端口使用了同樣的IO端口,防止數據與選通信號混亂,這里使用了兩個鎖存器,用于區分選通信號與數據信號。在實際工程開發中,IO復用的情況還是很常見的,所以掌握復用IO的控制過程就顯得很重要了。

        原理圖:

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





        代碼如下:詳細說明見注釋。

        //在6個數碼管上面顯示數字0-6,時間間隔是1s。數碼管1顯示1,1S關閉,數碼管2顯示2,1S關閉~~~~~~~~~~
        #include //頭文件
        #define uint unsigned int //定義宏--無符號整型
        #define uchar unsigned char //定義宏--無符號字符型
        sbit duanxuan=P2^6; //聲明P2.6端口為段選端
        sbit pianxuan=P2^7; //聲明P2.7端口為片(位)選端
        void delay_1s(uint); //聲明延時函數--延時一秒
        uint xs; //延時函數用

        uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71}; //C語言編碼定義

        void main() //主函數入口
        {
        xs=20; //參數越小,就可以實現6個數碼管一起顯示數字
        while(1)
        {
        pianxuan=1; //打開片選鎖存器
        P0=0xfe; //執行片選,選擇第1個數碼管
        pianxuan=0; //關閉鎖存器,鎖存器輸出端保持不變
        P0=0x00;
        duanxuan=1; //打開段選端
        P0=table[1]; //顯示數字1
        duanxuan=0; //關閉段選端,數字保持
        delay_1s(xs); //延時xS


        pianxuan=1;
        P0=0xfd; //選擇第2個數碼管
        pianxuan=0;
        P0=0x00;
        duanxuan=1;
        P0=table[2]; //顯示數字2
        duanxuan=0;
        delay_1s(xs);

        pianxuan=1;
        P0=0xfb; //選擇第3個數碼管
        pianxuan=0;
        P0=0x00;
        duanxuan=1;
        P0=table[3]; //顯示數字3
        duanxuan=0;
        delay_1s(xs);


        pianxuan=1;
        P0=0xf7; //選擇第4個數碼管
        pianxuan=0;
        P0=0x00;
        duanxuan=1;
        P0=table[4]; //顯示數字5
        duanxuan=0;
        delay_1s(xs);


        pianxuan=1;
        P0=0xef; //選擇第5個數碼管
        pianxuan=0;
        P0=0x00;
        duanxuan=1;
        P0=table[5]; //顯示數字5
        duanxuan=0;
        delay_1s(xs);

        pianxuan=1;
        P0=0xdf; //選擇第6個數碼管
        pianxuan=0;
        P0=0x00;
        delay_1s(xs);
        duanxuan=1;
        P0=table[6]; //顯示數字6
        duanxuan=0;
        delay_1s(xs);
        }
        }
        void delay_1s(uint xs) //延時函數主體
        {
        uint i,j;
        for(i=xs;i>0;i--)
        {
        for(j=10;j>0;j--)
        {
        }
        }
        }
        以上,數碼管顯示結束。



        關鍵詞: 51單片機數碼顯

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鹤峰县| 肥东县| 洱源县| 临海市| 司法| 普格县| 三明市| 贞丰县| 额济纳旗| 肃北| 东港市| 古丈县| 罗定市| 淮安市| 句容市| 应城市| 瑞金市| 益阳市| 蓬莱市| 安乡县| 绥中县| 扬中市| 板桥市| 盐边县| 济源市| 凤阳县| 屯留县| 千阳县| 宣恩县| 东光县| 翁源县| 乐都县| 南漳县| 康马县| 宿州市| 许昌县| 安岳县| 三原县| 务川| 娱乐| 富锦市|