新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機控制點陣LED一秒刷新顯示I心形U

        單片機控制點陣LED一秒刷新顯示I心形U

        作者: 時間:2016-12-02 來源:網絡 收藏
        本程序所用的原理圖下載:點這里,單片機芯片使用的stc89c52;找到點陣部分的原理圖即可.這是一整個單片機開發板的電路圖其他的忽略

        下面是程序源碼:
        /******點陣LED刷新顯示I LVOE U**************/
        /**
        *功能:點陣LED一秒刷新顯示I 心形 U(I LOVE YOU)
        *作者:徐冉
        *日期:2013-06-14-22:44
        *備注:程序已調試成功
        **/
        /*************AT89C52-RC MCU*******************/
        /**************51hei開發板********************/
        #include
        typedef unsigned int uint;
        typedef unsigned char uchar;
        sbit din = P2^0;
        sbit cs = P2^1;
        sbit clk = P2^2;
        uchar code table[5][8] = {
        {0x00,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00}, //I
        {0x00,0x66,0xFF,0xFF,0xFF,0x7E,0x3C,0x18}, //心
        {0x00,0x66,0x66,0x66,0x66,0x7E,0x3C,0x00}, //U
        };
        uchar i, j;
        uint counter;
        //寫字節
        void write_byte(uchar date)
        {
        uchar i;
        cs = 0;
        for(i = 0; i < 8; i++)
        {
        clk = 0;
        din = date & 0x80;
        date <<= 1;
        clk = 1;
        }
        }
        //寫MAX7219
        void write_max7219(uchar add, uchar date)
        {
        cs = 0;
        write_byte(add);
        write_byte(date);
        cs = 1;
        }
        //MAX7219初始化
        void max7219_init()
        {
        write_max7219(0x0c, 0x01);//正常模式
        write_max7219(0x09, 0x00);//譯碼模式
        write_max7219(0x0a, 0x08);//亮度控制
        write_max7219(0x0b, 0x07);//掃描模式
        write_max7219(0x0f, 0x00);//顯示檢測
        }
        //定時器T0初始化
        void timer0_init()
        {
        TMOD = 0x01;
        TH0 = 0x94; //定時30ms
        TL0 = 0x00;
        TR0 = 1;
        EA = 1;
        ET0 = 1;
        }
        //主程序
        void main(void)
        {
        max7219_init();
        timer0_init();
        while(1)
        {
        if(i >= 8)
        {
        i = 0;
        }
        if(counter == 40)
        {
        counter = 0;
        j++;
        if(j >= 3)
        {
        j = 0;
        }
        }
        write_max7219(i+1, table[j][i]);
        }
        }
        //中斷服務程序
        void timer0_int() interrupt 1
        {
        TH0 = 0x94;
        TL0 = 0x00;
        i++;
        counter++;
        }

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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 安多县| 恩施市| 双鸭山市| 三亚市| 大渡口区| 海盐县| 桃园市| 湛江市| 台湾省| 朝阳县| 郁南县| 手游| 桐乡市| 平舆县| 马山县| 兴山县| 孟州市| 阳朔县| 高安市| 泰州市| 报价| 格尔木市| 琼结县| 麻城市| 铁岭县| 文山县| 涡阳县| 冀州市| 沅陵县| 铜陵市| 林芝县| 岳西县| 黑水县| 庄河市| 德江县| 盐池县| 西丰县| 嘉荫县| 长垣县| 武隆县| 三台县|