zoukankan      html  css  js  c++  java
  • 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) |
    给主人留下些什么吧!~~
    评论热议
  • 相关阅读:
    js json与字符串相互转换
    Web 加入favicon
    JS 深拷贝
    C# 读取配置文件
    设计模式之抽象工厂模式
    设计模式之工厂方法的隐藏
    设计模式之工厂方法的重载
    设计模式之工厂方法配置文件与反射
    C#设计模式之工厂方法模式
    jq解析json文件
  • 原文地址:https://www.cnblogs.com/ztguang/p/12647407.html
Copyright © 2011-2022 走看看