新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 點陣16*32綜合C程序

        點陣16*32綜合C程序

        作者: 時間:2016-11-29 來源:網絡 收藏

        /*************************************************************************/
        /*******************************左拉子程序*********************************/
        /*************************************************************************/
        /*將一行數據轉換出來,然后顯示*/
        /********************************/
        void yipai3()
        {
        uchar temp,yi;
        if(move<8)//處理移動次數小于8次的部分
        {
        yi=move;
        temp=(BUF[3]<>(8-yi));/*將第2個字的右半屏數左移yi次,
        然后或上第3個字左半屏的8-yi次數,注此句是處理第2個字右半屏的數*/
        song(~temp);//發送給74HC595
        temp=(BUF[2]<>(8-yi));/*將第2個字的左半屏數左移yi次,
        然后或上第2個字右半屏的8-yi次數,注此句是處理第2個字左半屏的數*/
        song(~temp);//發送給74HC595
        temp=(BUF[1]<>(8-yi));/*將第1個字的右半屏數左移yi次,
        然后或上第2個字左半屏的8-yi次數,注此句是處理第1個字右半屏的數*/
        song(~temp);//發送給74HC595
        temp=(BUF[0]<>(8-yi));/*將第1個字的左半屏數左移yi次,
        然后或上第1個字右半屏的8-yi次數,注此句是處理第1個字左半屏的數*/
        song(~temp);//發送給74HC595
        }
        else//處理移動次數小于8次以外的部分
        {
        yi=move-8;
        temp=(BUF[4]<>(8-yi));/*將第3個字的左半屏數左移yi次,
        然后或上第3個字右半屏的8-yi次數,注此句是處理第2個字右半屏的數*/
        song(~temp);//發送給74HC595
        temp=(BUF[3]<>(8-yi));/*將第2個字的右半屏數左移yi次,
        然后或上第3個字左半屏的8-yi次數,注此句是處理第2個字左半屏的數*/
        song(~temp);//發送給74HC595
        temp=(BUF[2]<>(8-yi));/*將第2個字的左半屏數左移yi次,
        然后或上第2個字右半屏的8-yi次數,注此句是處理第1個字右半屏的數*/
        song(~temp);//發送給74HC595
        temp=(BUF[1]<>(8-yi));/*將第1個字的右半屏數左移yi次,
        然后或上第2個字左半屏的8-yi次數,注此句是處理第1個字左半屏的數*/
        song(~temp);//發送給74HC595
        }
        }
        /********************************/
        /*******將一行數據顯示出來*******/
        /********************************/
        void zou3()
        {
        for(line=0;line<16;line++)//掃描16次,即完成一個字的移動
        {
        yixian();//調用一線子程序
        yipai3();//調用數據轉換子程序
        LINE=line;//打開行線,即174HC154行線端
        CLKR=1;//在74HC595處鎖存起來
        CLKR=0;
        CLKR=1;
        }
        }
        /********************************/
        /*************左拉顯示***********/
        /********************************/
        void zoula()
        {
        uchar i,ii,k;
        while(word<320)//5個字*64=320
        {

        for(move=0;move<16;move++)//要移多少位?
        {
        for(i=0;i<2;i++)//一字移動的速度
        {
        zou3();//調用顯示子程序
        }
        }
        ii++;//將變量加1
        if((ii%2)==0)//移完兩個字才停下來
        {
        for(k=0;k<150;k++)//停下來時間
        zou3();//一行顯示子程序
        }
        word=word+32;//一個字顯示完了,就顯示下一個字
        }
        i=0;//標志位清0
        }
        /*************************************************************************/
        /*******************************右拉子程序*********************************/
        /*************************************************************************/
        /*將一行數據轉換出來,然后顯示*/
        /********************************/
        void yipai5()
        {
        uchar temp,yi;
        if(move<8)//處理移動次數小于8次的部分
        {
        yi=move;
        temp=(BUF[0]<<(8-yi))|(BUF[1]>>yi);
        song(~temp);//發送給74HC595
        temp=(BUF[3]<<(8-yi))|(BUF[0]>>yi);
        song(~temp);//發送給74HC595
        temp=(BUF[2]<<(8-yi))|(BUF[3]>>yi);
        song(~temp);//發送給74HC595
        temp=(BUF[5]<<(8-yi))|(BUF[2]>>yi);
        song(~temp);//發送給74HC595
        }
        else//處理移動次數小于8次以外的部分
        {
        yi=move-8;
        temp=(BUF[3]<<(8-yi))|(BUF[0]>>yi);
        song(~temp);//發送給74HC595
        temp=(BUF[2]<<(8-yi))|(BUF[3]>>yi);
        song(~temp);//發送給74HC595
        temp=(BUF[5]<<(8-yi))|(BUF[2]>>yi);
        song(~temp);//發送給74HC595
        temp=(BUF[4]<<(8-yi))|(BUF[5]>>yi);
        song(~temp);//發送給74HC595
        }
        }
        void yihang()
        {
        for(line=0;line<16;line++)//掃描16次,即完成一個字的移動
        {
        yixian();//調用一線子程序
        yipai5();//調用數據轉換子程序
        LINE=line;//打開行線,即174HC154行線端
        CLKR=1;//在74HC595處鎖存起來
        CLKR=0;
        CLKR=1;
        }
        }
        void youla()
        {
        uchar i,j,ii;
        while(word<320)
        {
        for(move=0;move<16;move++)//要移多少位?
        {

        for(ii=0;ii<2;ii++)//一字移動的速度
        {
        yihang();
        }

        }
        i++;
        if(i%2==0)
        {
        for(j=0;j<150;j++)
        yihang();
        }
        word=word+32;//一個字顯示完了,就顯示下一個字
        }
        }
        /********************************/
        /************主程序*************/
        /********************************/
        void main()
        {

        while(1)
        {
        word=0;
        jian();//間斷
        word=0;
        shang();//上移
        word=80;
        xia();//下移
        word=0;
        zou();//左移
        word=0;
        you();//右移
        word=0;
        zoula();//左拉
        word=0;
        youla();//右拉
        }
        }


        上一頁 1 2 3 下一頁

        關鍵詞: 點陣16*3

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 元氏县| 积石山| 鄂尔多斯市| 桐城市| 通山县| 东莞市| 台前县| 清河县| 开平市| 西吉县| 穆棱市| 邵阳市| 花莲市| 三江| 安西县| 永吉县| 偏关县| 靖江市| 南通市| 长宁区| 张家川| 板桥市| 大渡口区| 师宗县| 章丘市| 绥中县| 南投市| 田东县| 奉新县| 泾川县| 龙井市| 屯门区| 洛阳市| 敦煌市| 磐石市| 进贤县| 芦山县| 威信县| 馆陶县| 肇源县| 遂昌县|