色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)實(shí)習(xí)報(bào)告——點(diǎn)陣的動(dòng)態(tài)顯示

          單片機(jī)實(shí)習(xí)報(bào)告——點(diǎn)陣的動(dòng)態(tài)顯示

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

          void adjust_moveleft(uchar x,uchar *dat) //第i個(gè)字符逐列左移
          {
          uchar j,k;
          for(j=0;j<8;j++)
          {
          k=*dat;
          k<<=x;
          temp[j]=k;
          dat++;
          }
          }
          void adjust_moveright(uchar x,uchar *dat) //第i個(gè)字符顯示出x列后存儲(chǔ)在temp數(shù)組中
          {
          uchar j,k;
          for(j=0;j<8;j++)
          {
          k=*dat;
          k>>=x;
          temp[j]=k;
          dat++;
          }
          }
          void disp_moveleft(uchar *dat)
          {
          uchar i,t;
          for(i=8;i>0;i--) //逐列顯示出字符
          {
          adjust_moveright(i,dat);
          t=time;
          disp_dat(t);
          }
          for(i=0;i<=8;i++) //字符顯示完全后,逐列左移直到全部移出
          {
          adjust_moveleft(i,dat);
          t=time;
          disp_dat(t);
          }
          }
          void adjust_jingtai(uchar *dat)
          {
          uchar i;
          for(i=0;i<8;i++)
          {
          temp[i]=*dat;
          dat++;
          }
          }
          void disp_moveup(uchar *dat)
          {
          uchar i,j,t;
          for(i=0;i<6;i++)
          {
          for(j=0;j<8;j++)
          {
          dat++;
          adjust_jingtai(dat);
          t=time;
          disp_dat(t);
          }
          disp_dat(30);
          }
          }
          void main()
          {
          while(1)
          {
          uchar j;
          for(j=0;j<8;j++)
          temp[j]=smile[2][j];
          disp_dat(30);
          if(key1==0)
          {
          bee=0;
          delayms(1);
          bee=1;
          delayms(1);
          if(key1==0) //向左滾動(dòng)
          {
          uchar i;
          for(i=1;i<6;i++)
          {
          disp_moveleft(&sz[i][0]);
          }
          }
          while(key1==0);
          }
          if(key2==0)
          {
          bee=0;
          delayms(1);
          bee=1;
          delayms(1);
          if(key2==0) //向上滾動(dòng)
          {
          disp_moveup(&sz[0][0]);
          }
          while(key2==0);
          }
          if(key3==0)
          {
          delayms(1);
          if(key3==0) //減速
          {
          time=time+1;
          }
          while(key3==0);
          bee=0;
          delayms(1);
          bee=1;
          }
          if(key4==0)
          {
          delayms(1);
          if(key4==0) //加速
          {
          if(time!=1)
          time=time-1;
          }
          while(key4==0);
          bee=0;
          delayms(1);
          bee=1;
          }
          }
          }

          四、誤差分析及改進(jìn)

          該實(shí)例是控制點(diǎn)陣顯示的程序,不涉及時(shí)間,也就沒有時(shí)間的誤差。但是主程序中用的是掃描法檢測(cè)是否有鍵盤控制輸入,而且掃描過程中還插入了顯示動(dòng)態(tài)笑臉界面的程序段,掃描程序顯得稍有冗長(zhǎng),所以短暫的按鍵可能沒有被程序掃描到。

          為了解決這個(gè)問題,可以讓掃描程序變得簡(jiǎn)短清晰些,所以,將動(dòng)態(tài)笑臉改為了靜態(tài)的笑臉。對(duì)鍵盤的操作時(shí)間(即按鍵的時(shí)間)要適當(dāng)長(zhǎng)些,以便被程序捕捉。為了便于控制時(shí)間的長(zhǎng)短,在程序中利用了蜂鳴器的功能,一旦按鍵操作被程序掃描到,蜂鳴器蜂鳴,以提示操作者鍵盤操作有效。

          程序不足之處是:
          1.鍵盤的操作不夠靈敏。
          2.只能在一次滾動(dòng)結(jié)束后,即再次出現(xiàn)一個(gè)靜態(tài)笑臉時(shí)才能夠操作鍵盤。

          如果改為中斷法響應(yīng)鍵盤,或許會(huì)更靈敏些。這需要四個(gè)中斷服務(wù)程序處理按鍵事件。并且把實(shí)現(xiàn)不同方向滾動(dòng)的程序段放在終端服務(wù)程序之外,可以解決第二個(gè)不足之處,即可以在滾動(dòng)過程中,響應(yīng)不同的按鍵。




          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


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

          關(guān)閉