LCD控制实验—于青林

班级:计算机应用技术1班   姓名:于青林   学号:0906041017

一、利用for循环改变像素的值使色带向右移动

#include

#include

#include

#include       // open() close()

#include      // read() write()

#define DEVICE_NAME "/dev/fb0"

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

void showversion(void)

{

        printf("********************************************* ");

        printf("  %s ", VERSION);

        printf("********************************************* ");

 

}

 

int main(void)

{

    int fd;

       int ret;

       int i,j,p=0;

       int row=480,colu=200;

       unsigned short buf[480][800];

       showversion();

   printf(" start test_lcd test ");

 

   fd = open(DEVICE_NAME, O_RDWR);

      

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

  if (fd == -1)

        {

               printf("open device %s error ",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

   实验结果:显示四个色带,且每次向右移二十个像素,移到最右侧超出屏幕的部分将在最左侧显示,使之成为一个循环显示

 

二、每个色带所在像素值固定,每次通过数组改变颜色的值使每个色带变色。

  把上面程序中的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);

       }

       实验结果:显示四个色带,且其中的颜色按数组所定义的颜色循环改变。

 

三、根据(一)中的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) |
给主人留下些什么吧!~~
评论热议
原文地址:https://www.cnblogs.com/ztguang/p/12647407.html