• 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

  • 相关阅读:
    Log4net日志记录、详细配置(自己使用>)
    C#中的委托
    关于asp.net假分页的删除操作的随笔
    XML完成小程序
    SQLServer理解copyonly备份操作
    c# 解析JSON的几种办法
    SQL删除重复数据方法
    Jquery 操作Html 控件 CheckBox、Radio、Select 控件
    关于SQL语句中SUM函数返回NULL的解决办法
    数据库里面DataTime时间类型字段,如果为null时
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3208788.html
Copyright © 2020-2023  润新知