当前位置:首页 > 单片机 > 单片机
[导读]LCD-liquidcrystal display的简称,液晶显示器按驱动方式分为1.静态驱动、2.简单矩阵驱动及3.主动矩阵驱动。其中,简单矩阵又可分为1.扭转向列型(TN)和超转向列型(STN)两种,而主动矩阵驱动则以TFT为主。TN与STN

LCD-liquidcrystal display的简称,液晶显示器按驱动方式分为1.静态驱动、2.简单矩阵驱动及3.主动矩阵驱动。

其中,简单矩阵又可分为1.扭转向列型(TN)和超转向列型(STN)两种,而主动矩阵驱动则以TFT为主。

TN与STN都采用场电压驱动方式,如果显示尺寸加大,中心部分对电机变化的反应时间就会变长,显示器的速度跟不上。为解决这个问题,主动矩阵驱动TFT被提出,他通过晶体管显示信号开启过关闭液晶分子的电压,从而避免了显示器对电场效应的依靠。

LCD一块屏显示图像不但需要LCD驱动器,还需要LCD控制器。很多主芯片cpu集成了LCD控制器。

依据显示原理:作为帧同步信号的vsync,每发出一个脉冲,都意味着新的一幅图像数据开始传送。而作为行同步信号的hsync,没发出一个脉冲,都表明新的一行图像资料开始发送。

LCD时序图

所有LCD显示图像的原理都是从上到下,从左到右的。一幅图像可以看做是一个矩形,由很多排列整齐的像素点一行一行组成,这些点称为像素。

VCLK:像素时钟信号

没发出一个脉冲信号,表示新的一个点图像数据开始传送。

LEND:行结束信号

帧缓冲

FrameBuffer从本质上讲是图形设备的硬件抽象。对开发者而言,FrameBuffer是一块显示缓存,往显示缓存中写入特定格式的数据就意味着向屏幕输出内容。通过不断的向framebuffer中写入数据,显示控制器就自动的从frame buffer中取数据并显示出来。

嵌入式中从内存中分一部分出来作为显存;所以frame buffer的实质就是显存;

帧缓冲设备

帧缓冲设备时非常典型的字符设备。帧缓冲设备对应的设备文件为/dev/fb*,如果系统有多个显示卡,Linux下还可支持多个帧缓冲设备,最多可达32个,分别为/dev/fb0到/dev/fb31,而/dev/fb0则为当前缺省的帧缓冲设备,通常指向/dev/fb0。帧缓冲设备为标准字符设备,主设备号为29,次设备号则从0到31.

实验内容:

1.清除LCD

使用命令:ddif=/dev/zero of=/dev/fb0 bs=240 count=320

(dd是用来拷贝文件的if(infile)of(outfile) bs :block size count:)

Bs=240即,一个块为240个字节;count=320有320个块

2.运行应用程序,画图

./LCD

3.清除LCD

使用命令:ddif=/dev/zero of=/dev/fb0 bs=240 count=320

1.显示图片

2.catxx.bmp > /dev/fb0

总结:通过frame buffer我们可以去操作LCD的显示图像,即LCD显示图像来源于frame buffer,而/dev/fb0又是frame buffer的设备文件,所以操作/dev/fb0即是操作frame buffer

平台设备分类方法是:总线;

字符设备分类方法:功能


#include

#include

#include

#include

#include

intmain(){

intfp=0;

structfb_var_screeninfovinfo;

structfb_fix_screeninfofinfo;

longscreensize=0;

char*fbp=0;

intx=0,y=0;

longlocation=0;

fp=open("/dev/fb0",O_RDWR);//打开framebuffer设备文件

if(fp<0){

printf("Error:Cannotopenframebufferdevicen");

exit(1);

}

if(ioctl(fp,FBIOGET_FSCREENINFO,&finfo)){//获取LCD的一些配置参数

printf("Errorreadingfixedinformationn");

exit(2);

}

if(ioctl(fp,FBIOGET_VSCREENINFO,&vinfo)){

printf("Errorreadingvariableinformationn");

exit(3);

}

screensize=vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8;//单帧画面空间

/*这就是把fp所指的文件中从开始到screensize大小的内容给映射出来,得到一个指向这块空间的指针*/

fbp=(char*)mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fp,0);//把显存映射到进程空间中来,fbp为映射地址

if((int)fbp==-1)

{

printf("Error:failedtomapframebufferdevicetomemory.n");

exit(4);

}

/*这是你想画的点的位置坐标,(0,0)点在屏幕左上角*/

//画矩形

for(x=100;x<150;x++)

{

for(y=100;y<150;y++)

{

location=x*(vinfo.bits_per_pixel/8)+y*finfo.line_length;

*(fbp+location)=255;/*蓝色的色深*//*直接赋值来改变屏幕上某点的颜色*/

*(fbp+location+1)=0;/*绿色的色深*//*注明:这几个赋值是针对每像素四字节来设置的,如果针对每像素2字节,*/

*(fbp+location+2)=0;/*红色的色深*//*比如RGB565,则需要进行转化*/

*(fbp+location+3)=0;/*是否透明*/

}

}

munmap(fbp,screensize);/*解除映射*/

close(fp);/*关闭文件*/

return0;

}



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

March 13, 2026 ---- 根据TrendForce集邦咨询最新面板产业研究,由于技术世代更替与生产成本竞争压力提升,以及8.6代线新产能陆续开出,近年台系面板厂逐步关闭小世代产线,并积极发展新兴事业。另一方...

关键字: LCD 面板 笔电

Feb. 11, 2026 ---- Sharp(夏普)于2月10日公告,将执行日本龟山K2工厂(Gen8 2160mmx2460mm)停产计划,后续并将寻找买家接手。TrendForce集邦咨询表示,K2工厂生产的面板...

关键字: IT面板 电子纸 LCD

上海2026年1月8日 /美通社/ -- 近日,MPS芯源系统(NASDAQ: MPWR)发布车规级薄膜晶体管液晶显示器(TFT LCD)偏压驱动器 —— MPQ5613D-...

关键字: LCD TFT 驱动IC 车载显示屏

Jan. 6, 2026 ---- 根据TrendForce集邦咨询最新调查,由于中国农历春节将于二月来临,BOE(京东方)、TCL CSOT(华星)和HKC(惠科)等三大LCD电视面板厂均规划针对后端模组厂实施五至十天...

关键字: LCD 电视面板

在嵌入式系统、智能设备及消费电子领域,LCD显示屏作为人机交互的核心部件,其接口技术直接影响显示性能与系统设计复杂度。其中,RGB接口与MCU接口作为两种主流连接方式,在硬件架构、数据传输机制及适用场景上存在显著差异。

关键字: LCD RGB MCU

【2025年12月19日,中国深圳讯】全彩胆甾相液晶(ChLCD)电子纸技术领导企业——虹彩光电,于本周参与在深圳举办的第16届中国(国际)商用显示系统产业领袖高峰会,并获颁2025年度商显行业「ICDA华显奖-创新应用...

关键字: LCD 太阳能 电子纸

系统通过AHT21传感器连续测量周围环境的温度和湿度。STM32不使用内置库,而是通过定制软件I²C(位敲击)驱动程序与传感器通信,从而完全控制时序和数据传输。

关键字: STM32 AHT21传感器 LCD

没有标记就很难知道齐纳二极管的电压。如果齐纳二极管上的标记被抹去,没有测试电路和适当的设备,我们无法判断齐纳二极管的额定值。因此,今天我们将制作一个齐纳测试仪来获得齐纳二极管的额定电压。一个简单而精确的仪表,然后我们就会...

关键字: 齐纳二极管 Arduino LCD

我的第一个版本是匆忙制作的,我留下了一些重要的东西,比如从microSD卡中检索俳句文本,集成bmp帧,字体管理,开/关开关和一个更好看的3D打印外壳。

关键字: MKRZero 3D打印 LCD

11月10日消息,韩国显示面板巨头LG旗下的LGD日前发布消息,得益于转型OLED业务,该公司四年来将首次盈利。

关键字: LCD LG
关闭