<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

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

        作者:寒竹子   來源:本站原創   點擊數:  更新時間:2014年03月21日   【字體:

        本程序所用的原理圖下載: 點這里 ,單片機芯片使用的stc89c52;找到點陣部分的原理圖即可.這是一整個單片機開發板的電路圖其他的忽略

        下面是程序源碼:
        /******點陣LED刷新顯示I LVOE U**************/
        /**
        *功能:點陣LED一秒刷新顯示I 心形 U(I LOVE YOU)
        *作者:徐冉
        *日期:2013-06-14-22:44
        *備注:程序已調試成功
        **/
        /*************AT89C52-RC MCU*******************/
        /**************51hei開發板********************/
        #include <reg52.h>
        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++;
        }
         

         

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮