<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 玩轉(zhuǎn)LED點(diǎn)陣之三:16X64單紅點(diǎn)陣上移

          玩轉(zhuǎn)LED點(diǎn)陣之三:16X64單紅點(diǎn)陣上移

          作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          //單片機(jī):STC12C5A60S2
          //晶振:22.1184M
          //顯示屏:HUB08接口16X64單紅點(diǎn)陣
          //顯示方式:左移和上移
          //作者:振甬電子
          //QQ: 1766135164
          //網(wǎng)址:www.51hei.com
          //時(shí)間: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 //定義要移動(dòng)顯示總16X16漢字個(gè)數(shù),計(jì)算方法:NUMBER=漢字顯示個(gè)數(shù)+4個(gè)空格
          #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*板點(diǎn)陣寬度/8]+1比較保險(xiǎn),即兩倍板的點(diǎn)陣字節(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時(shí)鐘
          sbit STB=P0^6;//595鎖存
          sbit OE =P0^5;//74HC138使能:低有效
          //根據(jù)列指針由雙字節(jié)合并為單字節(jié)的子程序模塊
          uchar Combine_2byte(uchar h1,uchar h2) // 和點(diǎn)陣的取模方式有關(guān),低位在前,高位在后,但是實(shí)際顯示,高位在前,低位在后
          {
          uchar T_date,tempcol;
          tempcol=col1;
          T_date=(h1>>tempcol)|(h2<<(8-tempcol));
          return T_date;
          }
          //分別裝屏點(diǎn)陣數(shù)據(jù)
          void Load_one_line(void) //多加4個(gè)16X16漢字的緩沖
          {
          BUFF__UP[0]=Table[word][disrow*2+0];//裝載上半屏一線點(diǎn)陣數(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ā)送屏一線點(diǎn)陣數(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í)鐘
          }
          }
          }
          //左移函數(shù)
          void LEFT_MOVE()
          {
          uchar i;
          for(col=0;col<16;col++)//循環(huán)16次,點(diǎn)亮并移動(dòng)一個(gè)漢字,步進(jìn)是一位
          {
          col1=col%8;//一個(gè)字節(jié)移動(dòng)位數(shù)
          for(i=0;i{
          for(disrow=0;disrow<16;disrow++)//掃描16行
          {
          Load_one_line();//裝載一行點(diǎn)陣數(shù)據(jù)
          Send_one_line();//發(fā)送一行點(diǎn)陣數(shù)據(jù)
          OE=1;
          STB=1; // 輸出鎖存
          STB=0;
          P0=disrow; // 行掃描
          OE=0;
          }
          }
          }
          word=word+1;// 一個(gè)漢字移動(dòng)后,指向下一個(gè)漢字
          if(word>=NUMBER)
          {
          word=0;//移動(dòng)完NUMBER個(gè)漢字后重新開始
          }
          }
          //分別裝載上、下半屏點(diǎn)陣數(shù)據(jù)
          void Load_one_line_up()
          {
          BUFF__UP0[0]=Table2[0*hang][disrow*2+0+move*2];//裝載上半屏一線點(diǎn)陣數(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 下一頁

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();