新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機驅動點陣16*16綜合C程序-包含各種效果

        單片機驅動點陣16*16綜合C程序-包含各種效果

        作者: 時間:2016-11-29 來源:網絡 收藏
        一、硬件簡介: 經過努力,終于完成了我以前一直的夢想,點陣各種模式能獨立原創出點陣屏各種模式:間斷、上移、下移、左移、右移、上拉幕、下拉幕、左拉幕、右拉幕、左覆蓋、右覆蓋等等模式,我認為點陣只要是上移、左移會了,基本其它的都會了!一定要理解了,才算喲,太高興了,現在和大家分享下了,我的硬件是:行是譯碼器74HC154+S8550,列是74HC595移位寄存器.


        祥細視頻如下http://www.tudou.com/programs/view/D0SCJyO4RBQ/ 
        完整的程序源代碼下載:http://www.51hei.com/f/dz854.rar

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

        二、具體原理圖見

        電路介紹:http://www.51hei.com/mcu/1523.html

        三、具體程序代碼如下:

        #include

        #define uchar unsigned char

        #define uint unsigned int

        #define LINE P0//定義行線IO口,即74HC154控制端

        #define shudu 12//字移動的速度

        sbit DATA=P1^4;//74HC595數據端

        sbit CLK=P1^5;//74HC595移位脈沖端

        sbit CLKR=P1^6;//74HC595數據鎖存端

        uchar move;//移動幾位變量

        uchar line;//行變量

        uint word;//字節變量

        uchar ji,gai;//字節變量

        uchar BUF[4];//4組緩存數組以便左移右移等功能動態更改數據

        /************************************************************/

        /**********上移上拉左移左拉左覆蓋數組************************/

        /************************************************************/

        uchar code table[]={

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0x10,0x3F,0xF8,0x04,0x10,0x04,0x14,0xFF,0xFE,0x04,0x10,0x04,0x10,

        0x3F,0xF0,0x04,0x10,0x04,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,

        0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x10,

        0x1F,0xF8,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x50,0x10,0x20,

        0x01,0x10,0xFF,0x90,0x14,0x50,0x14,0x7C,0x7F,0x50,0x55,0x90,0x55,0x10,0x57,0xFE,

        0x61,0x04,0x41,0x7E,0x41,0x44,0x7F,0x44,0x41,0x44,0x41,0x44,0x7F,0x7C,0x41,0x44,

        0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,

        0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08,

        0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x08,0x7C,0x09,0x44,0x7F,0xC4,0x08,0x7C,

        0x0A,0x44,0x3F,0x44,0x22,0x7C,0x22,0x44,0x22,0x44,0x3E,0x44,0x22,0x94,0x01,0x08,

        0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,0x01,0x08,0x3F,0xFC,0x20,0x08,0x20,0x08,

        0x3F,0xF8,0x20,0x08,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00,

        0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x20,0x10,0x20,0x22,0x44,0x7E,0xFC,0x04,0x08,

        0x08,0x10,0x10,0x20,0x20,0x40,0x7E,0xFC,0x00,0x00,0x00,0x04,0xFF,0xFE,0x00,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

        };

        /************************************************************/

        /**********************下拉、下移數組************************/

        /************************************************************/

        uchar code table1[]={

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x20,0x10,0x20,0x22,0x44,0x7E,0xFC,0x04,0x08,

        0x08,0x10,0x10,0x20,0x20,0x40,0x7E,0xFC,0x00,0x00,0x00,0x04,0xFF,0xFE,0x00,0x00,

        0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,0x01,0x08,0x3F,0xFC,0x20,0x08,0x20,0x08,

        0x3F,0xF8,0x20,0x08,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00,

        0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x08,0x7C,0x09,0x44,0x7F,0xC4,0x08,0x7C,

        0x0A,0x44,0x3F,0x44,0x22,0x7C,0x22,0x44,0x22,0x44,0x3E,0x44,0x22,0x94,0x01,0x08,

        0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,

        0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08,

        0x01,0x10,0xFF,0x90,0x14,0x50,0x14,0x7C,0x7F,0x50,0x55,0x90,0x55,0x10,0x57,0xFE,

        0x61,0x04,0x41,0x7E,0x41,0x44,0x7F,0x44,0x41,0x44,0x41,0x44,0x7F,0x7C,0x41,0x44,

        0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x10,

        0x1F,0xF8,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x50,0x10,0x20,

        0x00,0x00,0x00,0x10,0x3F,0xF8,0x04,0x10,0x04,0x14,0xFF,0xFE,0x04,0x10,0x04,0x10,

        0x3F,0xF0,0x04,0x10,0x04,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

        };

        /************************************************************/

        /*************************右覆蓋數組************************/

        /************************************************************/

        uchar code table2[]={

        0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

        0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00

        };

        /************************************************************/

        /*************************左覆蓋數組************************/

        /************************************************************/

        uchar code table3[]={

        0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,

        0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00

        };

        /*****************************************/

        /*****************延時子程序*************/

        /***************************************/

        void delay(uchar z)

        {

        uchar x,y;

        for(x=2;x>0;x--)

        for(y=z;y>0;y--);

        }

        /*****************************************/

        /**************74HC595送數子程序********/

        /***************************************/

        void song(uchar z)//帶參數函數

        {

        uchar num,hang;//定義變量

        hang=z;//將形參給變量

        for(num=0;num<8;num++)//移動8次將數據發送完畢

        {

        if(hang&0x01==1)//將高7位屏蔽掉,保留最低位判斷

        DATA=1;//為1就將74HC595數據端置1

        else

        DATA=0;//否則給0

        CLK=0;//上升沿送走數據

        CLK=1;//高電平形成上升沿

        hang>>=1;//將數移走一位

        }

        }

        /************************************************************/

        /************************************************************/

        /**************************間斷顯示***************************/

        /************************************************************/

        /************************************************************/

        void jian()

        {

        while(word<128)//要顯示多少字?

        {

        for(move=150;move>0;move--)//字間斷顯示的速度

        {

        ji=word;

        for(line=0;line<16;line++)

        {

        song(~table[ji*2+1]);//先右半屏

        song(~table[ji*2]);//再左半屏

        ji++;//下一行

        CLKR=1;//在74HC595處鎖存起來

        CLKR=0;

        CLKR=1;

        LINE=line;//打開列

        delay(17);

        }

        }

        word=ji;

        }

        }

        /************************************************************/

        /************************************************************/

        /**************************上移顯示***************************/

        /************************************************************/

        /************************************************************/

        void shang()

        {

        while(word<128)

        {

        for(move=20;move>0;move--)

        {

        ji=word;//將變量存起來

        for(line=0;line<16;line++)

        {

        song(~table[ji*2+1]);

        song(~table[ji*2]);

        ji++;

        CLKR=1;//在74HC595處鎖存起來

        CLKR=0;

        CLKR=1;

        LINE=line;

        delay(5);

        }

        }

        word+=1;//數組數增加一行,形成上移

        }

        }

        /************************************************************/

        /************************************************************/

        /**************************下移顯示***************************/

        /************************************************************/

        /************************************************************/

        void xia()

        {

        while(word>1)

        {

        for(move=20;move>0;move--)

        {

        ji=word;//給倒數第2個字位置地址碼給ji變量

        for(line=0;line<16;line++)

        {

        song(~table1[ji*2+1]);//發右半屏數 注意這是數組1的代碼

        song(~table1[ji*2]);//發左半屏數

        ji++;

        CLKR=1;//在74HC595處鎖存起來

        CLKR=0;

        CLKR=1;

        LINE=line;

        delay(5);

        }

        }

        word-=1;//數組數減1一行,形成下移

        }

        }


        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 崇左市| 宁乡县| 新巴尔虎左旗| 吴川市| 宜昌市| 芦溪县| 沧源| 驻马店市| 车险| 澜沧| 高邑县| 黄石市| 万安县| 邻水| 曲麻莱县| 黄骅市| 兰西县| 天门市| 达州市| 浮梁县| 陈巴尔虎旗| 金华市| 章丘市| 廊坊市| 元谋县| 永州市| 大庆市| 循化| 图木舒克市| 伊宁市| 台江县| 上蔡县| 阜平县| 余干县| 玛沁县| 泰兴市| 醴陵市| 江口县| 苏尼特右旗| 盐池县| 尼勒克县|