LCD
<LCD硬件体系结构>
LCD控制器:位于ARM核内部,为LCD提供需要显示的数据,控制信息,控制时序
<LCD控制器结构>
REGBANKK : 寄存器组,总共有17个寄存器
LCDCDMA:LCD 中的DMA模块,该模块位于LCD的控制器中,在嵌入式系统中是内存中 有一个内存区域叫做帧缓存区,告诉DMA帧缓存区的起始地址,LCD控制器 的其他控制部件将该数据发给LCD驱动器。
TIMEGEN:用于产生时序信号
<液晶屏种类>
按照驱动类型可以分为:STN, GF,TFT,其中TFT最为常用
LCD驱动芯片:LCD驱动芯片位于液晶显示屏上,作用是为液晶分子提供偏转电压。
LCD显示与信号:
时序
VSYNC:一帧图像显示的时间
HSYNC:显示一行的时间
VCLK: 显示两个点之间的时间间隔
VD[23:0]:LCD像素输出端
VDEN:数据使能信号
LEND:行结束信号
《LCD初始化》
<引脚初始化>
将管脚配置成VD
控制字详情:
<时序初始化>
LCD控制寄存器1
作用分析:
用于设置CLKVAL
控制字详情:
LCD控制寄存器2
作用分析:
用于设置VBPD,LINEVAL,VFPD.VSPW
控制字详情:
控制寄存器3
作用分析:
用于设置HBPD,HOZVAL,HFPD,
控制字详情:
控制寄存器4
作用分析:
用于设置HSPW
控制字详情
各个时序信号的值:
VSPW和VBPD时序信号的计算方式:
用于初始化LINEVAL 和HOZVAL:
<帧缓冲初始化>
在内存中开辟一段空间用于存储一帧的数据,2440开发板中用16位数据表示一个像素点(16bpp),所以总共需要(480*272*2)个字节。
分配:
静态分配
LCD帧缓存地址数据寄存器:
作用分析:
用于存放帧缓存数据的起始地址。
控制字详情:
LCDBANK存放帧缓存地址的高30-22位
LCDBASEU存放帧缓存地址的低22-1位
LCD屏幕种类区分设置寄存器:
作用分析:
用于区分“dual-scan LCD”和“single scan LCD”
控制字详情:
如果屏幕使用 的是single-scan LCD,则该寄存器存放帧缓存地的尾地址的21-1位。
首尾像素点时间间隔控制/行宽度寄存器:
作用分析:
用于设置没行的最后一个像素点和下一行的低一个像素点之间是否有时间间隔。
控制字详情:
像素点时间间隔为0,行宽度取半字节,比如这里480个像素点,每个像素点是两个字节,所以取值为(480*2)/2
动态分配
告知:
将帧缓存数据地址值写入LCDADDR1中
<配置寄存器初始化>
LCD控制寄存器1
作用分析:
用于配置LCD种类,屏幕像素点的真彩色,和LCD控制器数据输出使能。
LCD控制寄存5
作用分析:
用于配置像素的分配,这里使用5:6:5(红绿蓝),和翻转极性控制
控制字详情:
像素真彩
转换极型
半字转换使能
临时调色板配置寄存器:
作用分析:
用于使能和配置临时调色板
使能临时调色板
GPG管脚控制器:
作用分析:
用于将相应管脚设置为LCD的电源
控制字详情:
LCD数据显示:
16bpp显示数据分配图
数据显示
http://www.114la.com/other/rgb.htm
单色显示
void LCD_line()
{
int x;
for(x=0;x<480;x++)
{
void point(x++,150,0xff0000)
}
}
LCD的更多相关文章
- STM32F429 LCD程序移植
STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...
- 分页型Memory LCD显存管理与emWin移植
上一篇随笔整理了一下逐行扫描型Memory LCD的显存管理与emWin移植,这篇就整理一下分页型Memory LCD显存管理与emWin移植. //此处以SSD1306作为实例 //OLED的显存/ ...
- 逐行扫描型Memory LCD显存管理与emWin移植
因为Memory LCD 的特性,不能设置像素坐标,只能用缓存整体刷新. 所以对于Memory LCD来说,emWin移植仅与打点函数有关,这里用Sharp Memory LCD(ls013b7dh0 ...
- Sharp Memory LCD (ls013b7dh03)驱动
网上找不到什么靠谱的资料,甚至我调好了夏普原厂和代理商还来找我要demo, 哎,苦逼的码农. lcd_main.c #include "ls013b7dh03.h" #inclu ...
- AM335x kernel4.4.12 LCD 时钟翻转设置记录
TI AM335x kernel 4.4.12 LCD display 时钟翻转记录 因为公司硬件上已经确定LCD 转LVDS 转换芯片上确认以上升沿时钟为基准,所以只能在软件上调整相关东西. 入口在 ...
- Arduino下LCD1602综合探究(上)——1602的两种驱动方式,如何使LCD的控制编程变得更简单
一.前言: LCD ( Liquid Crystal Display 的简称)液晶显示器,已经逐渐替代CRT成为主流的显示设备之一,因此也成为了单片机发烧友绕不过的话题之一:而LCD1602更是很多单 ...
- jquery模拟LCD 时钟
查看效果网址:http://keleyi.com/keleyi/phtml/jqtexiao/24.htm 以下是HTML文件源代码: <!DOCTYPE html PUBLIC "- ...
- 嵌入式Linux驱动学习之路(十八)LCD驱动
驱动代码: /************************************************************************* > File Name: lcd ...
- LCD接口(转载)
LCD接口分类 1. I8080接口,我觉得应该就是所谓的8080,通常会用在12864屏上面,且有内部sdram,不需要实时的刷新图片,速度有限制, 支持的数据宽度有8/9/16/18bit,接 ...
- LCD底层驱动分析
根据分析的框架,自己写一个LCD驱动程序 1分析LCD硬件原理图 Von和Voff接的是一个电源电路,通过LCD_POWER接的是GPG4来控制LCD电源,高电平表示开启LCD电源 VM接的是CPU的 ...
随机推荐
- Python的类变量和成员变量、类静态方法和类成员方法
先说明几个相关的术语:attribute.function.method. attribute:类对象的数据成员.我们经常会在Python代码出错时遇到:“AttributeError: 'My_Cl ...
- Mac 下 gzip 一个文件
gzip -k xxx.json -k 会保留源文件
- 编写shell脚本一键启动zookeeper集群!!
踩了一个多小时坑终于解决了: 这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!! 首先,这里采用ssh秘钥方式进行集群主机之间免密登录执行启动命令 这里简单说下原理: 通过ssh去另外一台 ...
- go 函数举例练习
1. 求1到100之内的所有质数,并打印到屏幕上 package main import "fmt" // 求1-100 内的质数 func justfy(i int) bool ...
- OpenFlow1.3协议wireshark抓包分析
OpenFlow v1.0 v1.0协议消息列表如下: 分为三类消息:Controller-to-switch,asynchronous和symmertric. v1.0(包含至少一个流表,每个流表包 ...
- APUE-文件和目录(八)文件时间
文件的时间 与文件相关的三个时间值: 访问时间:最后一次访问文件的时间.例如,cat命令会修改这个时间. 修改时间:文件内容最后一次被修改的时间. 状态更改时间:文件的i节点最后一次被修改的时间.例如 ...
- python 写入execl记录
记录代码中关于写execl的操作 # 创建execl workbook = xlwt.Workbook(encoding='utf8') # 创建样式实例 style = xlwt.XFStyle() ...
- fsevents npm install是报错
npm install 安装插件的时候,fsevents报错,这是node 8.x版本的问题,解决办法,把node 版本切换到6.x
- 排序与相关性(Sorting and Relevance)
本文翻译自Elasticsearch官方指南的Sorting and Relevance一章的第一节. 原文地址:http://www.elastic.co/guide/en/elasticsearc ...
- Spring框架的基本使用(IOC部分)
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. Spring的好处 1.方便解耦,简化开发: Spring就是一个大工厂,专门负责生成Bean,可以将所有对象创建和依赖关 ...