• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 點(diǎn)陣16*32綜合C程序

    點(diǎn)陣16*32綜合C程序

    作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏

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

    for(move=0;move<16;move++)//要移多少位?
    {
    for(i=0;i<2;i++)//一字移動(dòng)的速度
    {
    zou3();//調(diào)用顯示子程序
    }
    }
    ii++;//將變量加1
    if((ii%2)==0)//移完兩個(gè)字才停下來
    {
    for(k=0;k<150;k++)//停下來時(shí)間
    zou3();//一行顯示子程序
    }
    word=word+32;//一個(gè)字顯示完了,就顯示下一個(gè)字
    }
    i=0;//標(biāo)志位清0
    }
    /*************************************************************************/
    /*******************************右拉子程序*********************************/
    /*************************************************************************/
    /*將一行數(shù)據(jù)轉(zhuǎn)換出來,然后顯示*/
    /********************************/
    void yipai5()
    {
    uchar temp,yi;
    if(move<8)//處理移動(dòng)次數(shù)小于8次的部分
    {
    yi=move;
    temp=(BUF[0]<<(8-yi))|(BUF[1]>>yi);
    song(~temp);//發(fā)送給74HC595
    temp=(BUF[3]<<(8-yi))|(BUF[0]>>yi);
    song(~temp);//發(fā)送給74HC595
    temp=(BUF[2]<<(8-yi))|(BUF[3]>>yi);
    song(~temp);//發(fā)送給74HC595
    temp=(BUF[5]<<(8-yi))|(BUF[2]>>yi);
    song(~temp);//發(fā)送給74HC595
    }
    else//處理移動(dòng)次數(shù)小于8次以外的部分
    {
    yi=move-8;
    temp=(BUF[3]<<(8-yi))|(BUF[0]>>yi);
    song(~temp);//發(fā)送給74HC595
    temp=(BUF[2]<<(8-yi))|(BUF[3]>>yi);
    song(~temp);//發(fā)送給74HC595
    temp=(BUF[5]<<(8-yi))|(BUF[2]>>yi);
    song(~temp);//發(fā)送給74HC595
    temp=(BUF[4]<<(8-yi))|(BUF[5]>>yi);
    song(~temp);//發(fā)送給74HC595
    }
    }
    void yihang()
    {
    for(line=0;line<16;line++)//掃描16次,即完成一個(gè)字的移動(dòng)
    {
    yixian();//調(diào)用一線子程序
    yipai5();//調(diào)用數(shù)據(jù)轉(zhuǎn)換子程序
    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++)//一字移動(dòng)的速度
    {
    yihang();
    }

    }
    i++;
    if(i%2==0)
    {
    for(j=0;j<150;j++)
    yihang();
    }
    word=word+32;//一個(gè)字顯示完了,就顯示下一個(gè)字
    }
    }
    /********************************/
    /************主程序*************/
    /********************************/
    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 下一頁

    關(guān)鍵詞: 點(diǎn)陣16*3

    評論


    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 平陆县| 泽州县| 武陟县| 重庆市| 天长市| 桂东县| 大竹县| 来凤县| 宕昌县| 广宗县| 津南区| 东莞市| 奉节县| 界首市| 宝应县| 隆德县| 申扎县| 五莲县| 巢湖市| 皋兰县| 逊克县| 大关县| 娄烦县| 三明市| 田阳县| 吐鲁番市| 长武县| 房产| 常州市| 阳东县| 滕州市| 平罗县| 贵阳市| 宁安市| 山阳县| 宜州市| 马边| 清丰县| 祁门县| 井冈山市| 齐河县|