液晶显示屏

MCU驱动和RGB驱动的液晶屏的区别

流过昼夜 提交于 2019-12-20 07:27:59
概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两种方式。RGB的刷新频率比MCU快很多。 1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。 RGB接口:在写LCD register setting时,和MCU接口没有区别。区别只在于图像的写入方式。 2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。 用RGB模式时就不同了,它没有内部RAM,HSYNC,VSYNC,ENABLE,CS,RESET,RS可以直接接在MEMORY的GPIO口上,用GPIO口来模拟波形. 3.MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。 RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。 MCU接口和RGB接口主要的区别是: MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。 RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。 MCU模式 因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。MCU

Linux LCD 驱动调色板原理

别说谁变了你拦得住时间么 提交于 2019-12-14 11:50:54
举例如下: /* 改变调色板为一种颜色 输入参数: color: 颜色值,格式为0xAARRGGBB / AA为透明度 / */ red = (color >> 19) & 0x1f; green = (color >> 10) & 0x3f; blue = (color >> 3) & 0x1f; color = (red << 11) | (green << 5) | blue; // 格式5:6:5 VD[0~23],我们开发板只用了16位。frambuffer内存大小为240 2 320 硬件时序学习: VCLK:每来一个时钟就向下移动一个像素。 VD0~VD23:数据宽度,但是我们只用了16位。 VLINE:(HYSNC,行同步型号,水平方向的,从上一行的行尾调到下一行的行首), VSYNC:(垂直同步信号,从最后一行行尾跳转到第一行的行首) VDEN:有效才打印颜色 每一个像素就是一个点,每个像素用多少位来表示颜色。像素深度是用多少位来表示颜色,如果是16bpp,那么像素深度就是16, 当使用像素深度是16bpp的时候,就只需要把颜色取出来组成16位就可以了,组成方法上面就4行代码所写的,32位的color第四字节代表透明度,第三字节代表红色,第二字节代表绿色,第一字节代表蓝色,我们取出红色的高五位,绿色的高六位,蓝色的高五位

2-0、2440驱动LCD驱动一

北城以北 提交于 2019-12-11 18:33:24
查看内核里的LCD驱动fbmem.c LCD驱动程序 假设: app: open("dev/fb0",...) 主设备号29,次设备号0 kernel: fb_open int fbidx = iminor(inode); struct fb_info *info = registered_fb[0]; app:read() kern 来源: CSDN 作者: poor_guy_liu 链接: https://blog.csdn.net/poor_guy_liu/article/details/103490775

OKI单片机开发-LCD显示

試著忘記壹切 提交于 2019-12-09 09:05:02
本章主要讲解如何利用OKI单片机驱动LCD,并且转换之后,显示到开发板屏幕之中,那么,在开发之前,我们上一章节讲解了点亮LED,因此总结LCD也不难,如下所示: Demo: https://download.csdn.net/download/qq_37523448/11179385 第一步:LCD寄存器 第二步:lcdshow.c 第三步:其次就是main主函数的相关引用LCD,如下: 第四步:所谓的最终main.c文件,调用这lcd的初始化以及配置lcd全屏显示0x02,以及p3,p4的初始化; 第五步:进行仿真调试(debug),可以看到LCD的数值都展示到了开发板之中,哈哈,相信对很多初学者,给予到了一定的帮助,如果觉得很赞,可以继续关注,还会后续发布更创造性的文章,不好之处,欢迎互相讨论,一起努力哦!~ Demo地址: https://download.csdn.net/download/qq_37523448/11179385 来源: CSDN 作者: Aftery的博客 链接: https://blog.csdn.net/qq_37523448/article/details/90232846#comments

项目EMC整改总结1

扶醉桌前 提交于 2019-12-06 07:03:00
7月27日测试 由于LCD CLK时钟线上磁珠使用普通 120ohm@100MHz 磁珠,造成在208MHz频段处超标 严重。 8月1日测试 由于LCD CLK时钟信号上电容47P产生水波纹,故而将其修改10p。此造成全体钧宝 版本(NEW)在168处超标,单工将电容改为33P后有明显好转。 个人小结: 1.此说明10p对于此频段滤波效果不理想; 2.使用顺络同规格 600ohm@100MHz 高速磁珠及 300ohm@100MHz 普通磁珠效果没有 钧宝测试效果好,特别是在208MHz频段处相差较大。 8月5日测试 主板使用顺络普通磁珠加钧宝高速磁珠,LCD板为顺络普通磁珠。 分成钧宝卡扣磁环及国产两个版本,从测试效果来看。由于两者除卡扣磁环不同 以外,其余都是一样,故而出现的问题也是一样。 两者在USB模式,低频段有多处超标。 个人小结: 1.卡扣磁环差异不大,可替换; 2.顺络普通磁珠对40MHz到50MHz滤波效果不是很好。 8月6日测试 主板和LCD使用钧宝磁珠,使用国产卡扣磁环。 分成卡扣和去除卡扣两种版本进行测试。 主板顺络普通磁珠加钧宝高速磁珠,LCD使用顺络普通磁珠,使用国产卡扣磁 环,及双头磁环。 使用国产卡扣可以达到我司要求,而去除磁环在165MHz处超标。 个人小结: 1.磁环对低频滤波效果较差,而对100MHz到200MHz频段有较好滤波效果; 2

mini2440_LCD_x35移植

為{幸葍}努か 提交于 2019-12-05 09:45:37
从linux 2.6起引入了新一套的驱动管理和注册机制:platform_device 和piatform_driver. (platform代表平台);设备用platform_device表示,驱动用piatform_driver进行注册。 Linuxplatformdriver机制和传统的devicedriver机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platformdevice提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性(这些标准接口是安全的)。 Platform机制的本身使用并不复杂,由两部分组成:platform_device和platfrom_driver。 通过Platform机制开发底层驱动的大致流程为:定义resoucre->定义platform_device->定义platform_driver->注册platform_driver。 内核里已经有很完善的lcd驱动了,我们只要根据所用的LCD进行简单的修改。 首先要确认的就是设备的资源信息,例如设备的地址,中断号等。 在2.6内核中platform设备用结构体platform_device来描述,该结构体定义在 kernel

手机开机后LCD显示黑屏

点点圈 提交于 2019-12-03 01:41:34
一、问题现象 合入厂商提供的LCD初始化序列后从按下Power键开机,preloader-》lk-》kernel-》normal mode手机全程LCD黑屏 LCD模组厂是BOYI,LCD IC为otm1289 二、问题分析 1. 怀疑厂商初始化序列有问题 2. 怀疑初始化序列里面的设备使能锁关闭太早导致 3. 从LCD初始化流程上来分析,看看哪一步出现了问题,首先是Rst管脚是否有信号输入 三、实际验证 1. 怀疑厂商初始化序列有问题 boyi IC厂商来现场支持后按照IC的datasheet查看了一下寄存器配置,没有什么问题,并且已经确认,在他们治具上是可以正常亮屏,排除了初始化Code的问题 2. 怀疑初始化序列里面的设备使能锁关闭太早导致 将初始化使能开关关闭的代码往后放,放到初始化最后: static u8 lcd_boyi_otm8019a_cmd_129[]={0x00,0x00}; static u8 lcd_boyi_otm8019a_cmd_130[]={0xFF,0xFF,0xFF,0xFF}; 测试验证无效,排除这个原因 3. 从LCD初始化流程上来分析,看看哪一步出现了问题,首先是Rst管脚是否有信号输入 开机过程中使用示波器测量reset管脚,reset管脚实现复位功能的高低高电平没有变化,即没有执行成功! 这次算是找到问题点了 解决方式:

RK平台LCD调试说明

匿名 (未验证) 提交于 2019-12-03 00:37:01
本篇博文使用Rockchip平台RK3288主控,向大家分享自己总结的Rockchip平台LCD调试的一些经验。 Platform : Rockchip Soc : RK3288 System : Android 5.1 RK3288的LCD调试,根据屏幕规格书对dts作相应的修改基本都可点亮,配置也较为简单,有几个概念容易混淆,单纯的点屏基本上不需要了解相关的LVDS,EDP协议等。本篇博客大致讲述RK平台LVDS、EDP屏的调试经验,协议部分不会涉及,MIPI屏部分暂时还未深入了解。 在fb驱动这块,大致分为了四部分,rk_screen首先会读取dts中screen信息,传给screen_type驱动(本例也就是rk32_lvds.c),这些信息最终都会被fb获取。详细的流程分析请参考博文: RK平台fb源码分析系列 贴一个LVDS屏参的实例,仅供参考: disp_timings: display-timings { native-mode = < &timing0 > ; timing0: timing0 { screen-type = < SCREEN_LVDS > ; lvds-format = < LVDS_8BIT_2 > ; out-face = < OUT_P888 > ; color-mode = < COLOR_RGB > ; clock-frequency

[51单片机]HC-SR04超声波模块与1602液晶显示

匿名 (未验证) 提交于 2019-12-03 00:14:01
  一,模块介绍 trig-使能引脚<输出超过10us高电平启动模块> echo-接收引脚<模块启动后在此脚发出8个40khz脉冲并产生高电平,高电平开始到结束的时间就是探测时间> vcc-电源 gnd-接地 二,使用 trig 与 echo 接单片机IO口; vcc 与 gnd 接单片机VCC,GND; 代码: #include<reg52.h> #include<intrins.h> void delay(unsigned char z)//延时 z 个毫秒 { unsigned char x,y; for(x=0;x<z;x++) { for(y=0;y<110;y--) { ; } } } /***********************LCD1602**************************/ sbit EN = P2^7; sbit RS = P2^6; //数据/命令选择 1/0 sbit RW = P2^5; //读/写选择 1/0 void lcd_bus() //检测忙 { unsigned char i; P0 = 0XFF; RS = 0; RW = 1; for(i=0;i<200;i++) { EN = 0; EN = 1; if(!(P0&0X80)) { break; } } EN = 0; } void lcd_date(unsigned

arm9_LCD

匿名 (未验证) 提交于 2019-12-03 00:05:01
其实LCD主要用途就是用来显示数据,那么数据的来源和其传输方式就是主要关注点了;做过一个项目是显示红外热像图,通过pico384获取原始图像数据,它会将数据通过一条串行线输出出来,然后通过串行转并行芯片把数据以14路并行GPIF设置好的时序传给cypress,此芯片再通过usb接口传给上位机显示,这只是大概的流程,中间还有很多细节,也不必详述;自定义的GPIF接口时序就是按照pico输出的时序,下图为其时序图: 下图为lcd的 时序图与pico的大同小异: 其他的也就是lcd控制器的描像素点的操作了,具体情况具体看,下面看一下Makefile: CC = arm - linux - gcc LD = arm - linux - ld AR = arm - linux - ar #将多个可重定位的目标模块归档为一个函数库文件 OBJCOPY = arm - linux - objcopy OBJDUMP = arm - linux - objdump INCLUDEDIR := $ ( shell pwd )/ include     #shell pwd代表在shell输入pwd命令中取得的路径 CFLAGS := - Wall - O2        #选项可以打印出编译时所有的错误或者警告信息。这个选项不该被遗忘 CPPFLAGS := - nostdinc - I$ (