中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 玩轉LED點陣之三:16X64單紅點陣上移

        玩轉LED點陣之三:16X64單紅點陣上移

        作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
        //單片機:STC12C5A60S2
        //晶振:22.1184M
        //顯示屏:HUB08接口16X64單紅點陣
        //顯示方式:左移和上移
        //作者:振甬電子
        //QQ: 1766135164
        //網(wǎng)址:www.51hei.com
        //時間:2013-05-13
        #include
        #include"zimo.h"
        #define uchar unsigned char
        #define uint unsigned int
        #define SPEED 5 //定義速度與數(shù)字成反比 數(shù)字小,速度快
        #define SPEED2 80
        #define LIGHT 10 //定義亮度:取值范圍0--10
        #define hang 3 //需要顯示的行數(shù)+1空白行
        #define NUMBER 11 //定義要移動顯示總16X16漢字個數(shù),計算方法:NUMBER=漢字顯示個數(shù)+4個空格
        #define NUMBER2 4
        uchar word=0,col=0,col1=0,disrow=0,move=0;//wor為要顯字變量,col為位移變量,col1為字節(jié)偏移量,disrow為行變量
        uchar BUFF__UP[17]; //顯示緩沖 上下緩沖字節(jié)數(shù)取值=[2*板點陣寬度/8]+1比較保險,即兩倍板的點陣字節(jié)數(shù).
        uchar BUFF__UP0[12]; //顯示緩沖
        sbit R1=P0^4;//紅色數(shù)據(jù)1
        sbit R2=P3^3;//紅色數(shù)據(jù)2
        sbit G1=P3^4;//綠色數(shù)據(jù)1
        sbit G2=P3^5;//綠色數(shù)據(jù)
        sbit CLK=P0^7;//595時鐘
        sbit STB=P0^6;//595鎖存
        sbit OE =P0^5;//74HC138使能:低有效
        //根據(jù)列指針由雙字節(jié)合并為單字節(jié)的子程序模塊
        uchar Combine_2byte(uchar h1,uchar h2) // 和點陣的取模方式有關,低位在前,高位在后,但是實際顯示,高位在前,低位在后
        {
        uchar T_date,tempcol;
        tempcol=col1;
        T_date=(h1>>tempcol)|(h2<<(8-tempcol));
        return T_date;
        }
        //分別裝屏點陣數(shù)據(jù)
        void Load_one_line(void) //多加4個16X16漢字的緩沖
        {
        BUFF__UP[0]=Table[word][disrow*2+0];//裝載上半屏一線點陣數(shù)據(jù)
        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];
        }
        //發(fā)送屏一線點陣數(shù)據(jù)
        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; //移位時鐘
        }
        }
        }
        //左移函數(shù)
        void LEFT_MOVE()
        {
        uchar i;
        for(col=0;col<16;col++)//循環(huán)16次,點亮并移動一個漢字,步進是一位
        {
        col1=col%8;//一個字節(jié)移動位數(shù)
        for(i=0;i{
        for(disrow=0;disrow<16;disrow++)//掃描16行
        {
        Load_one_line();//裝載一行點陣數(shù)據(jù)
        Send_one_line();//發(fā)送一行點陣數(shù)據(jù)
        OE=1;
        STB=1; // 輸出鎖存
        STB=0;
        P0=disrow; // 行掃描
        OE=0;
        }
        }
        }
        word=word+1;// 一個漢字移動后,指向下一個漢字
        if(word>=NUMBER)
        {
        word=0;//移動完NUMBER個漢字后重新開始
        }
        }
        //分別裝載上、下半屏點陣數(shù)據(jù)
        void Load_one_line_up()
        {
        BUFF__UP0[0]=Table2[0*hang][disrow*2+0+move*2];//裝載上半屏一線點陣數(shù)據(jù)
        BUFF__UP0[1]=Table2[0*hang][disrow*2+1+move*2];
        BUFF__UP0[2]=Table2[1*hang][disrow*2+0+move*2];
        BUFF__UP0[3]=Table2[1*hang][disrow*2+1+move*2];
        BUFF__UP0[4]=Table2[2*hang][disrow*2+0+move*2];
        BUFF__UP0[5]=Table2[2*hang][disrow*2+1+move*2];
        BUFF__UP0[6]=Table2[3*hang][disrow*2+0+move*2];
        BUFF__UP0[7]=Table2[3*hang][disrow*2+1+move*2];
        }

        //74HC595串行數(shù)據(jù)輸入
        void Send_one_line_up()
        {
        uchar i,j;
        uchar DataR1,DataR2,DataG1,DataG2;
        for(j=0;j<8;j++)
        {
        DataR1=~BUFF__UP0[j];
        DataG1=0xff;
        DataR2=0xff;
        DataG2=0xff;
        for(i=0;i<8;i++)
        {
        R1=DataR1 & 0x01;
        G1=DataG1 & 0x01;
        R2=DataR2 & 0x01;
        G2=DataG2 & 0x01;
        CLK = 0;
        CLK = 1;
        DataR1 >>= 1;
        DataG1 >>= 1;
        DataR2 >>= 1;
        DataG2 >>= 1;
        }
        }
        }
        //上移函數(shù)
        上一頁 1 2 3 下一頁

        評論


        技術專區(qū)

        關閉