LCD控制實驗—於青林

班級:計算機應用技術1班   姓名:於青林   學號:0906041017html

1、利用for循環改變像素的值使色帶向右移動java

#include linux

#include nginx

#include c++

#include       // open() close()shell

#include      // read() write()api

#define DEVICE_NAME "/dev/fb0"數組

#define VERSION         "PXA270RP-LCD-V1.00-090101"微信

void showversion(void)app

{

        printf("*********************************************\n");

        printf("\t %s \t\n", VERSION);

        printf("*********************************************\n\n");

 

}

 

int main(void)

{

    int fd;

       int ret;

       int i,j,p=0;

       int row=480,colu=200;

       unsigned short buf[480][800];

       showversion();

   printf("\nstart test_lcd test\n\n");

 

   fd = open(DEVICE_NAME, O_RDWR);

      

       printf("fd = %d\n",fd);

  if (fd == -1)

        {

               printf("open device %s error\n",DEVICE_NAME);

        }

        else

        {                                  

                 for(i=0;i<480;i++){                      

                        for(j=0;j<800;j++)

                        buf[i][j]=0x0001;

                        }                    

                     ret=write(fd,buf,sizeof(buf));

                     usleep(100000);

                     close(fd);

       }

             

              while(1){

                                  

                     fd = open(DEVICE_NAME, O_RDWR);

                     for(i=0;i

                            for(j=p;j

                                          buf[i][j%800]=0xf800;

                            for(j=colu+p;j<2*colu+p;j++)

                                          buf[i][j%800]=0x07ef;

                            for(j=2*colu+p;j<3*colu+p;j++)

                                          buf[i][j%800]=0x07ff;

                            for(j=3*colu+p;j<4*colu+p;j++)

                                          buf[i][j%800]=0xffe0;

                     }

                           

                     ret=write(fd,buf,sizeof(buf));                    

                     close(fd);

                     usleep(100000);

                     p=p+20;                    

              }

       if(getchar()>0){                   

           system("cat fb >/dev/fb0");

           system("cat apl_test/fb >/dev/fb0");

                                      }

           return 0;

} // end main

   實驗結果:顯示四個色帶,且每次向右移二十個像素,移到最右側超出屏幕的部分將在最左側顯示,使之成爲一個循環顯示

 

2、每一個色帶所在像素值固定,每次經過數組改變顏色的值使每一個色帶變色。

  把上面程序中的while(1)用如下的while(1)替換

int c=0;

int color[4]={0x07ef,0xffe0,0xf81f,0x1258};  //存放顏色的數組;

while(1){

       fd = open(DEVICE_NAME, O_RDWR);

       for(i=0;i<480;i++){

              for(j=0;j<800/4;j++)

                     buf[i][j]=color[c%4];

              for(j=800/4;j<800/2;j++)

                     buf[i][j]=color[(c+1)%4];

              for(j=800/2;j<800*3/4;j++)

                     buf[i][j]=color[(c+2)%4];

              for(j=800*3/4;j<800;j++)

                     buf[i][j]=color[(c+3)%4];

             

              }

              c++;

              ret=write(fd,buf,sizeof(buf));             

              close(fd);

              usleep(1000000);

       }

       實驗結果:顯示四個色帶,且其中的顏色按數組所定義的顏色循環改變。

 

3、根據(一)中的while循環改變,可實現色帶沿對角線的方向依次分佈。實際上是昨天作實驗,把p=p+1寫到了外層for循環中,結果出現了非預期的沿對角線分佈的結果。

                                    

                     fd = open(DEVICE_NAME, O_RDWR);

                     for(i=0;i

                            for(j=p;j

                                          buf[i][j%800]=0xf800;

                            for(j=colu+p;j<2*colu+p;j++)

                                          buf[i][j%800]=0x07ef;

                            for(j=2*colu+p;j<3*colu+p;j++)

                                          buf[i][j%800]=0x07ff;

                            for(j=3*colu+p;j<4*colu+p;j++)

                                          buf[i][j%800]=0xffe0;

                            p=p+1;

                     }

                    

                     ret=write(fd,buf,sizeof(buf));                    

                     close(fd);

                     usleep(100000);

               
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
閱讀(451) | 評論(0) | 轉發(0) |
給主人留下些什麼吧!~~
評論熱議
相關文章
相關標籤/搜索