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的 ...
随机推荐
- transform动画效果
transform动画效果 transform :移动,旋转.倾斜.缩放. transform:translate(0,300px); x代表的是水平的偏移距离,y代表垂直的. t ...
- fonts.googleapis.com 字体报错问题解决。
更多内容推荐微信公众号,欢迎关注: 无法加载这些字体是因为,google的网站在国内无法访问造成的.在AdminLTE.css 和AdminLte.less中有如下内容: @import url(ht ...
- CSS3 transition过渡
transition 属性是一个简写属性,用于设置四个过渡属性: transition: property duration timing-function delay; transition-pro ...
- [MySQL FAQ]系列 — EXPLAIN结果中哪些信息要引起关注
我们使用EXPLAIN解析SQL执行计划时,如果有下面几种情况,就需要特别关注下了: 首先看下 type 这列的结果,如果有类型是 ALL 时,表示预计会进行全表扫描(full table scan) ...
- 一步一步搭建11gR2 rac+dg之DG 机器配置(七)【转】
DG 机器配置 转自: 一步一步搭建11gR2 rac+dg之DG 机器配置(七)-lhrbest-ITPUB博客http://blog.itpub.net/26736162/viewspace-12 ...
- SQL语句帮助大全
--删除约束 Status:字段名 alter table Table_1 drop constraint Status; --添加约束 --Status :字段名 t_Pay_Order:表名 默认 ...
- .net 下的集合
集合的操作在编码的时候很常见.但是由于经常使用几种集合.而忽略了一些不常用的集合.在这里我整理下. 首先先了解下接口: 1.IEnumerable,返回一个循环访问集合的枚举器. 2.IEnumera ...
- 使用postman做接口测试(二)
参考大神总结:https://www.cnblogs.com/Skyyj/p/6856728.html 二,下边的东西工作中实际要用到了 1, postman安装 chrome浏览器打开chrome: ...
- SSD固态硬盘检测工具AS SSD参数
一. 使用AS SSD Benchmark进行查看 包括了4个方面的测试(顺序读写.4K随机读写.64线程4K读写.寻道时间) AS SSD的主要测试,也是网上最常见得到测试成绩的,是它主界面上持续. ...
- [转载]如何在C++03中模拟C++11的右值引用std::move特性
本文摘自: http://adamcavendish.is-programmer.com/posts/38190.htm 引言 众所周知,C++11 的新特性中有一个非常重要的特性,那就是 rvalu ...