新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 玩轉LED點陣之二:16X64單紅點陣左移

        玩轉LED點陣之二:16X64單紅點陣左移

        作者: 時間:2016-11-30 來源:網絡 收藏
        //單片機:STC89C52

        //晶振:22.1184M,下載選擇雙倍時鐘,否則會有閃爍!
        //顯示屏:HUB08接口16X64單紅點陣
        //顯示方式:左移
        //作者:振甬電子
        //QQ: 1766135164
        //網址:www.51hei.com
        //時間:2013-05-13

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

        #include
        #include"zimo.h"
        #define ucharunsigned char
        #define uintunsigned int
        #define SPEED5//定義速度與數字成反比 數字小,速度快
        #define NUMBER11//定義要移動顯示總16X16漢字個數,計算方法:NUMBER=漢字顯示個數+4個空格

        uchar word=0,col=0,col1=0,disrow=0,move=0;//wor為要顯字變量,col為位移變量,col1為字節偏移量,disrow為行變量
        uchar BUFF__UP[17];//緩沖字節數取值=[2*板點陣寬度/8]+1比較保險,即兩倍板的點陣字節數.
        uchar BUFF__UP0[12];//上半屏顯示緩沖

        sbit R1=P0^4;//紅色數據1
        sbit R2=P3^3;//紅色數據2
        sbit G1=P3^4;//綠色數據1
        sbit G2=P3^5;//綠色數據
        sbit CLK=P0^7; //595時鐘端口
        sbit STB=P0^6; //595鎖存端口
        sbit OE =P0^5;//74HC138使能:低有效

        //根據列指針由雙字節合并為單字節的子程序模塊
        //和點陣的取模方式有關:低位在前,高位在后,但是實際顯示,高位在前,低位在后!
        uchar Combine_2byte(uchar h1,uchar h2)
        {
        uchar T_date,tempcol;
        tempcol=col1;
        T_date=(h1>>tempcol)|(h2<<(8-tempcol));
        return T_date;
        }

        //分別裝屏點陣數據
        void Load_one_line(void)//多加4個16X16漢字的緩沖
        {
        BUFF__UP[0]=Table[word][disrow*2+0];//裝載點陣數據
        BUFF__UP[1]=Table[word][disrow*2+1];

        BUFF__UP[2]=Table[word+1][disrow*2+0];
        BUFF__UP[3]=Table[word+1][disrow*2+1];

        BUFF__UP[4]=Table[word+2][disrow*2+0];
        BUFF__UP[5]=Table[word+2][disrow*2+1];

        BUFF__UP[6]=Table[word+3][disrow*2+0];
        BUFF__UP[7]=Table[word+3][disrow*2+1];

        BUFF__UP[8]=Table[word+4][disrow*2+0];
        BUFF__UP[9]=Table[word+4][disrow*2+1];

        BUFF__UP[10]=Table[word+5][disrow*2+0];
        BUFF__UP[11]=Table[word+5][disrow*2+1];

        BUFF__UP[12]=Table[word+6][disrow*2+0];
        BUFF__UP[13]=Table[word+6][disrow*2+1];

        BUFF__UP[14]=Table[word+7][disrow*2+0];
        BUFF__UP[15]=Table[word+7][disrow*2+1];

        }

        //發送屏一線點陣數據
        void Send_one_line(void)
        {
        char s;
        uchar temp,i,inc;
        if(col<8)inc=0;
        if(8<=col&&col<16)inc=1;
        for(s=0+inc;s<=8+inc;s++)
        {
        temp=Combine_2byte(BUFF__UP[s],BUFF__UP[s+1]);
        for(i=0;i<8;i++)
        {
        R1=~(temp>>i)&0x01;//取出最低位
        R2=0xff;//不顯示
        G1=0xff;
        G2=0xff;
        CLK=0;
        CLK=1;//移位時鐘
        }
        }
        }


        //左移函數
        void LEFT_MOVE()
        {
        uchar i;
        for(col=0;col<16;col++)//循環16次,點亮并移動一個漢字,步進是一位
        {
        col1=col%8;//一個字節移動位數
        for(i=0;i
        {
        for(disrow=0;disrow<16;disrow++)//掃描16行
        {
        Load_one_line();//裝載一行點陣數據
        Send_one_line();//發送一行點陣數據
        OE=1;
        STB=1;// 輸出鎖存
        STB=0;
        P0=disrow;// 行掃描
        OE=0;
        }
        }
        }

        word=word+1;// 一個漢字移動后,指向下一個漢字
        if(word>=NUMBER)
        {
        word=0;//移動完NUMBER個漢字后重新開始
        }
        }


        //主函數入口
        void main(void)
        {
        R1=0;//數據初始化
        R2=0;
        G1=0;
        G2=0;
        while(1)
        {
        LEFT_MOVE(); //左移
        }
        }

        zimo.h

        unsigned char code Table[][32]=
        {
        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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 额尔古纳市| 图们市| 沾化县| 同仁县| 洪江市| 大港区| 平和县| 宁远县| 兴仁县| 商南县| 九龙城区| 当涂县| 昌邑市| 巩义市| 富锦市| 红安县| 南阳市| 铜鼓县| 绍兴县| 山阴县| 武平县| 呼玛县| 黔东| 天峨县| 临清市| 寻甸| 南澳县| 同江市| 湘潭县| 青阳县| 铜川市| 山东省| 电白县| 仁怀市| 长治县| 遂溪县| 广州市| 内乡县| 上林县| 博罗县| 胶州市|