Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6651287
  • 博文数量: 1159
  • 博客积分: 12444
  • 博客等级: 上将
  • 技术积分: 12570
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 21:34
文章分类

全部博文(1159)

文章存档

2016年(126)

2015年(350)

2014年(56)

2013年(91)

2012年(182)

2011年(193)

2010年(138)

2009年(23)

分类: 嵌入式

2011-10-19 23:08:17

班级:计算机应用技术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("*********************************************\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

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

 

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

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

               
阅读(1625) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~