新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機+MAX7219數碼管顯示C程序

        51單片機+MAX7219數碼管顯示C程序

        作者: 時間:2016-11-30 來源:網絡 收藏
        /**************************************************

        *程序名稱: MAX7219 C語言控制程序
        *程序功能: 3線串行控制8位共陰數碼管
        *3線定義:DIN 串行數據輸入
        * LOAD 數據鎖存
        * CLK 時鐘輸入
        ***************************************************/
        #include
        #include
        sbit pinDIN=P0^0; //串行數據輸入端
        sbit pinLOAD=P0^1; //數據鎖存端
        sbit pinCLK=P0^2; //時鐘輸入端
        #define uchar unsigned char
        uchar code LEDcode[]=
        {0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x00 /*0,1,2,3,4,5,6,7,8,9,全滅*/
        /* 0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff, */ }; /*A,B,C,D,E,F,P,U,全亮*/

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

        /**************************************************
        * 向MAX7219寫入字節(8位)函數 *
        ***************************************************/
        void sendbyte (uchar dat)
        {
        uchar i,temp;
        _nop_();
        for (i=0;i<8;i++)
        {
        temp=dat&0x80;
        dat=dat<<1;
        if(temp)
        pinDIN=1;
        else
        pinDIN=0;
        pinCLK=0;
        _nop_();
        pinCLK=1;
        }
        }
        /**************************************************
        * 向MAX7219寫入地址和控制字(16位) *
        ***************************************************/
        void sendword (uchar addr,uchar dat)
        {
        pinLOAD=0;
        _nop_();
        sendbyte (addr);
        _nop_();
        sendbyte (dat);
        _nop_();
        pinLOAD=1; //第16個上升沿之后,第17個上升沿之前必須把pinCLK置高,否則數據丟失
        }
        /**************************************************
        * MAX7219初始化 *
        ***************************************************/
        void init7219 (void)
        {
        sendword (0x0c,0x01); /* 設置電源工作模式 */
        sendword (0x0a,0x09); /* 設置亮度 19/32 */
        sendword (0x0b,0x03); /* 設置掃描界限 */
        sendword (0x09,0x00); /* 設置譯碼模式 */
        sendword (0x0f,0x00); /*顯示測試 00為正常工作狀態*/
        }
        /**************************************************
        * MAX7219清除顯示 *
        ***************************************************/
        void clear7219(void)
        {
        uchar i;
        for(i=8;i>0;i--)
        {
        sendword(i,0x00);
        }
        }
        /**************************************************
        * MAX7219主函數 *
        ***************************************************/
        /*void main(void)
        {
        init7219 ();
        //clear7219();
        while(1)
        {
        clear7219();
        sendword(0x01,LEDcode[11]);
        sendword(0x02,LEDcode[12]|0x80);
        sendword(0x03,LEDcode[13]);
        sendword(0x04,LEDcode[4]);
        sendword(0x05,LEDcode[5]);
        sendword(0x06,LEDcode[6]);
        sendword(0x07,LEDcode[7]);
        sendword(0x08,LEDcode[8]);

        }
        }*/



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 麦盖提县| 宝清县| 扶风县| 长泰县| 夏河县| 双牌县| 呼和浩特市| 万荣县| 利津县| 彭州市| 吉木乃县| 藁城市| 九江市| 临颍县| 会东县| 郁南县| 东丽区| 江达县| 高邑县| 子长县| 崇州市| 望城县| 茌平县| 阿鲁科尔沁旗| 凤冈县| 重庆市| 江口县| 舒城县| 镶黄旗| 西乡县| 临沭县| 健康| 新宁县| 吉林省| 仁布县| 元朗区| 阜城县| 奉贤区| 万源市| 麻江县| 阿合奇县|