zoukankan      html  css  js  c++  java
  • S5PV210 LCD显示

    第一节 S5PV210 LCD控制器
    要使一块LCD正常显示文字或图像,不仅需要LCD驱动器,还需要相应的LCD控制器。
    LCD控制器的主要作用是将在系统存储器中的显示缓冲区中的LCD图像数据传送到外部LCD驱动器,
    并产生必要的控制信号,例如VSYNC、HSYSNC、VCLK。S5PV210内部集成了LCD控制器,它结构图如下:

    image

    主要有VSFR,VDMA,VPRCS,VTIME和视频时钟产生器几个模块组成:
    1) VSFR由121个可编程寄存器组,一套gamma LUT寄存器组(包括64个寄存器),一套i80命令寄存器组(包括12个寄存器)和5块256*32的调色板存储器组成,主要用于lcd控制器的配置;
    2) VDMA是LCD专用的DMA传输通道,可以自动从系统总线上获取视频数据传输到VPRCS,无需CPU干涉;
    3) VPRCS收到数据后组成特定的格式(如16bpp或24bpp),然后通过数据接口传送到外部LCD;
    4) VTIME模块又可编程逻辑组成,负责不同的LCD驱动器的接口时序控制需求,VTIME模块产生VSYNC、HSYNC、VCLK等信号;
    S5PV210的LCD控制器的主要特性如下:
    1) 支持3种接口:RGB/i80/YUV;
    2) 支持可编程的DMA;
    3) 5个256*32 bit调色板
    4) 虚拟屏最大可达16MB
    5) 支持透明叠加(overlay)
    6) 支持多种规格和分辨率的LCD

    第二节 程序详细讲解
    完整代码见目录详细代码下载链接。
    1. main.c
    共3个步骤:
    第一步: 初始化串口;
    第二步: 调用lcd_init()初始化LCD;
    第三步: 调用lcd_draw_bmp()在LCD上描绘图片。图片的数据保存在一个数组中,我们只需要把数组中的值一个个的读出来并写到FrameBuffer中即可;
    第四步: 画字符,具体是调用了printf()打印“FriendlyARM”。因为我们在printf()里不仅调用了putc(),还调用了字符描绘函数lcd_draw_char(),所以打印信息即会显示在串口终端也会显示在LCD上。
    2. lcd.c
    函数lcd_draw_char()用于描绘字符,其主要步骤如下:
    第一步 获得字模。以传进来的参数为下标,从字模数组fontdata_8x16里取出对应的字模,数组fontdata_8x16的定义位于font_8x16.c中,这个文件时从linux内核中抽出来的;
    第二步 检查是否需要回车换行。当遇到’ ’时表示换行,当遇到’ ’表示回车;
    第三步 在8x16个像素里描绘一个字符。font_8x16.c里定义的每一个字模都是由8x16bit组成,每1bit对应一个像素,如果某bit为1则调用lcd_draw_pixel()将该像素描蓝,为0则不描;
    第四步 光标移动到下一个8x16像素的位置;
    函数lcd_draw_bmp()用于描绘图片,其主要步骤如下:
    第一步: 从数组中获取像素的颜色值;
    第二步: 调用lcd_draw_pixel()将数组中的值一个个地在LCD上描绘出来,最后组成一张图片;
    第三节 实验现象
    LCD上会显示绚丽的图片,并且会有“FriendlyARM”的字样,效果如下:

    image

    详细代码下载链接:http://download.csdn.net/detail/klcf0220/6045023

  • 相关阅读:
    Codeforces 1045C Hyperspace Highways (看题解) 圆方树
    Codeforces 316E3 线段树 + 斐波那切数列 (看题解)
    Codeforces 803G Periodic RMQ Problem 线段树
    Codeforces 420D Cup Trick 平衡树
    Codeforces 295E Yaroslav and Points 线段树
    Codeforces 196E Opening Portals MST (看题解)
    Codeforces 653F Paper task SA
    Codeforces 542A Place Your Ad Here
    python基础 异常与返回
    mongodb 删除
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3208788.html
Copyright © 2011-2022 走看看