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的 ...
随机推荐
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:Frequent Subsets Problem (状态压缩)
题目链接 题目翻译: 给出一个数n,和一个浮点数a,数n代表全集U = {1,2,...,n},然后给出 M个U的子集,如果一个集合B(是U的子集),M个集合中有至少M*a个集合包含B, 则B这个集合 ...
- JavaScript基本运算
JavaScript基本运算 JavaScript:其实它的基本运算和我们数学的基本运算类似的. --------------------------------------------------- ...
- linux查看及设置别名,权限,生成ssh秘钥
1.alias :查看系统中所有的命令别名 2.设定别名 alias 别名='原命令' 3.删除别名 unalias 别名 4.使别名永久生效 vi ~/.bashrc 写入这个文件中即可永 ...
- 【译】第五篇 Replication:事务复制-How it works
本篇文章是SQL Server Replication系列的第五篇,详细内容请参考原文. 这一系列包含SQL Server事务复制和合并复制的详细内容,从理解基本术语和设置复制的方法,到描述它是如何工 ...
- Hibernate5笔记5--关联关系映射
关联关系映射: 关联关系,是使用最多的一种关系,非常重要.在内存中反映为实体关系,映射到DB中为主外键关系.实体间的关联,即对外键的维护.关联关系的发生,即对外键数据的改变. 外键:外面的主键,即,使 ...
- linux nginx大量TIME_WAIT的解决办法--转
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 8535 CLOSE_WAIT 5 FIN ...
- 通过PDB文件实现非嵌入式的c++反射
上一篇blog我阐述了一种实现非嵌入式的反射的基本思路.相比于通过宏和模板实现,这种非嵌入的反射的优点是不需要写额外的代码来记录meta信息. 首先,为了在c++中实现反射系统,我认为需要解决以下两个 ...
- linux服务器登录时慢出现卡顿
使用SSH远程登录Linux在输入用户名之后在过了好几秒之后才会出现输入密码.严重影响工作效率.登录很慢,登录上去后速度正常,这种情况的主要原因为: DNS反向解析的问题 SSH在登录的时候一般我们输 ...
- python3 切换工作文件夹
python3 默认的工作文件夹在Python安装路径下.如下为查看工作文件夹路径: >>> import os >>> os.getcwd() 'D:\\Work ...
- Tomcat实现多域名之间session共享
最近启用二级域名后,面临一个主域名与二级域名之间 session 不能共享的问题,带来的麻烦就是用户在主域名登陆,但由于二级域名 session 不能共享 ,因此无法进行登陆的操作,对一些功能有一些影 ...