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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)+點(diǎn)陣8*8上、下、左、右移顯示C程序

          51單片機(jī)+點(diǎn)陣8*8上、下、左、右移顯示C程序

          作者: 時(shí)間:2012-07-10 來(lái)源:網(wǎng)絡(luò) 收藏

          二、下移

          #includereg52.h>
          #define uchar unsigned char
          #define uint unsigned int
          #define LINE P1//定義行線IO口,即74HC154控制端
          #define shudu 50//字移動(dòng)的速度
          sbit DATA=P3^5;//74HC595數(shù)據(jù)端
          sbit CLK=P3^7;//74HC595移位脈沖端
          sbit CLKR=P3^6;//74HC595數(shù)據(jù)鎖存端
          uchar f=24;//給一個(gè)初值以便下移
          uchar code table[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x08,0x08,0x7F,0x49,0x7F,0x08,0x08,0x08,//將字碼調(diào)換
          0x00,0x3C,0x00,0x18,0x00,0x7E,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
          };//字模數(shù)組
          void delay(uchar z)
          {
          uchar x,y;
          for(x=8;x>0;x--)
          for(y=z;y>0;y--);
          }
          /********************************/
          /**74HC595移位寄存器送數(shù)子函數(shù)***/
          /********************************/
          void song(uchar z)//帶參數(shù)函數(shù)
          {
          uchar num,hang;//定義變量
          hang=z;//將形參給變量
          for(num=0;num8;num++)//移動(dòng)8次將數(shù)據(jù)發(fā)送完畢
          {
          if(hang0x01==1)//將高7位屏蔽掉,保留最低位判斷
          DATA=1;//為1就將74HC595數(shù)據(jù)端置1
          else
          DATA=0;//否則給0
          CLK=0;//上升沿送走數(shù)據(jù)
          CLK=1;//高電平形成上升沿
          hang>>=1;//將數(shù)移走一位
          }
          }
          /********************************/
          /*將一行數(shù)據(jù)轉(zhuǎn)換出來(lái),然后顯示*/
          /********************************/
          void xian()
          {
          uint word;//字節(jié)變量
          uchar line,i;//字節(jié)變量
          for(i=0;ishudu;i++)//一字移動(dòng)的速度
          {
          word=f;//將字暫存器給計(jì)數(shù)器
          for(line=0;line8;line++)//掃描8次,即完成一個(gè)字的移動(dòng)
          {
          song(~table[word]);
          CLKR=1;//在74HC595處鎖存起來(lái)
          CLKR=0;
          CLKR=1;
          word++;//將計(jì)數(shù)器加1
          LINE=line;//打開行線,即行線端
          //P3=0xff;
          delay(10);
          }
          }
          f--;//顯示完一個(gè)字后減1形成下移
          if(f==0)
          {
          f=24;//移完后給值
          }
          }
          /********************************/
          /************主程序*************/
          /********************************/
          void main()
          {
          while(1)
          {
          xian();
          }
          }

          三、左移

          #includereg52.h>
          #define uchar unsigned char
          #define uint unsigned int
          #define LINE P1//定義行線IO口,即74HC154控制端
          #define shudu 120//字移動(dòng)的速度
          sbit DATA=P3^5;//74HC595數(shù)據(jù)端
          sbit CLK=P3^7;//74HC595移位脈沖端
          sbit CLKR=P3^6;//74HC595數(shù)據(jù)鎖存端
          uchar move;//移動(dòng)幾位變量
          uchar line;//行變量
          uint word;//字節(jié)變量
          uchar BUF[2];//2組緩存數(shù)組以便動(dòng)態(tài)更改數(shù)據(jù)
          uchar code table[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x3C,0x00,0x18,0x00,0x7E,0x00,0x00,
          0x08,0x08,0x7F,0x49,0x7F,0x08,0x08,0x08,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          };//字模數(shù)組
          /********************************/
          /**74HC595移位寄存器送數(shù)子函數(shù)***/
          /********************************/
          void song(uchar z)//帶參數(shù)函數(shù)
          {
          uchar num,hang;//定義變量
          hang=z;//將形參給變量
          for(num=0;num8;num++)//移動(dòng)8次將數(shù)據(jù)發(fā)送完畢
          {
          if(hang0x01==1)//將高7位屏蔽掉,保留最低位判斷
          DATA=1;//為1就將74HC595數(shù)據(jù)端置1
          else
          DATA=0;//否則給0
          CLK=0;//上升沿送走數(shù)據(jù)
          CLK=1;//高電平形成上升沿
          hang>>=1;//將數(shù)移走一位
          }
          }
          /********************************/
          /*裝一線數(shù)據(jù)子函數(shù)(即一行數(shù)據(jù))*/
          /********************************/
          void yixian()
          {
          BUF[0]=table[word+line];//第1個(gè)字代碼裝入緩存數(shù)組0,line表示行數(shù),word表示字?jǐn)?shù)
          BUF[1]=table[word+8+line];//第2個(gè)字代碼裝入緩存數(shù)組1
          }
          /********************************/
          /*將一行數(shù)據(jù)轉(zhuǎn)換出來(lái),然后顯示*/
          /********************************/
          void yipai()
          {
          uchar temp,yi;//定義兩個(gè)變量
          yi=move;//將要移多少位給變量yi
          temp=(BUF[0]yi)|(BUF[1]>>(8-yi));/*將第1個(gè)字即數(shù)組0左移yi(yi只是代號(hào),比如1位)位
          ,然后將第下一個(gè)字即數(shù)組1右移8-yi位,然后或一下,這樣就會(huì)得到要發(fā)送的數(shù)*/
          song(~temp);//發(fā)送給74HC595



          評(píng)論


          相關(guān)推薦

          技術(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); })();