学习内容:外设篇-LCD

学习内容:外设篇-LCD

DCLK/HS/VS/DE信号介绍

学习时间:

2021.5.15 下午15:30

学习产出:

一:引脚定义
数据信号: 指RGB数据信号, 如R0-R7、G0-G7、B0-B7
时钟信号: 像素时钟信号(DCLK), 是传输数据和对数据信号进行读取的基准
控制信号: 包括数据有效信号(DE), 行同步信号(HSYNC)、场同步信号(VSYNC)
二:引脚作用
1-HS:行同步信号的作用是选择出液晶面板上有效行信号区间。
2-VS:场同步信号的作用是选择出液晶面板上有效场信号区间,行场同步信号的共同作用,可将选择出液晶面板上的有效视频信号区间。
NOTE
1:需要注意的是,液晶显示器中使用的同步信号是一个不包含消隐信号的两电平信号.
2: 在电路中,行同步信号常用HS或HSYNC表示,场同步信号常用VS或VSYNC表示

行场消隐信号,是针对老式显像管的成像扫描电路而言的。电子枪所发出的电子束从屏幕的左上角开始向右扫描(行正程),一行扫完需将电子束从右边移回到左边以便扫描第二行**(行逆程),电子束在不断的走‘之’字形,最终扫描完一帧图像的所有行(场正程)。电子束在逆程回扫时出现的回扫线将对正程所传送的图像起干扰作用。
在此期间就
必须有一个信号加到电路上,使得电子束不能发出,**这个阻止回扫线产生的信号就叫作行消隐信号。而场信号的消隐也是一个道理。在一场扫描完之后,电子束不是立即从屏幕下方直线返回到屏幕上方,而是一边扫出行扫描线,一边回到上方,这个过程是场的逆程。在场逆程中,行扫描的回扫时间有行消隐脉冲信号进行消隐,在屏幕上是不会出现的;而场逆程中的行扫描会扫出多条左低右高的斜线,严重干扰图像的显示,必须加上消隐信号,称之为场消隐信号。
https://blog.csdn.net/qwaszx523/article/details/51971732?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162106758316780265493121%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162106758316780265493121&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-51971732.first_rank_v2_pc_rank_v29&utm_term=LCD%E6%B6%88%E9%9A%90%E4%BF%A1%E5%8F%B7

3-DCLK
(1)指挥RGB信号按顺序传输。数字RGB信号在像素时钟信号的作用下,按照一定的顺序,由驱动板传输到液晶面板中,使各电路按照一定的节拍协调地工作。
(2)确保数据传输的正确性。无论是驱动板电路,还是液晶面板电路,在读取数字RGB信号时,都是在像素时钟的作用与控制下进行的,各电路只有在像素时钟的下降沿(或上升沿)到来时才对数字RGB数据进行读取,以确保读取数据的正确性。

图1 DCLK与RGB信号之间的时序
4-DE信号(有效数据选通信号)
有效数据选通信号也称数据使能信号,电路中其表示符号有多种,如DSP、DSPTMG、DEN、DE等。
4-1设立DE信号的意义
  在输入到液晶显示器的视频信号中,有效视频信号(有效RGB信号)只占信号周期中的一部分,而信号的行消隐和场消隐期间并不包含有效的视频数据。因此,必须将包含有效视频信号的区间和不包含有效视频信号的消隐区间区分开来。为了区分有效和无效视频信号,在液晶显示器电路中设置了DE信号。
4-2:DE信号与其他信号之间的关系
①:DE信号与行场同步信号之间、以及前肩后肩的概念
下边:上图是DE与行同步信号,下图是DE与场同步信号
在这里插大时代时代是多少入图片描述
②DE信号与RGB数据信号之间的关系
在这里插入图片描述
在这里插入图片描述③DE信号与数据读取之间的关系
图4所示为DE信号与在像素时钟DCLK的作用下读取RGB数据的示意图。从图中可以看出,只有当DE信号在高电平期间,且在像素时钟DCLK为下降沿时,相关电路才能对RGB数据进行读取,以确保读取数据的正确性。数据读取时DE信号高电平的条件实际上就是选取有效数据的含义。
在这里插入图片描述

小结:DE、HS、VS属于同步信号,DCLK属于时钟信号,RGB属于数据信号,它们一般都是同时出现的

5-:同步信号的方式
所有液晶面板都需要输入RGB数据和像素时钟DCLK,但其使用同步信号的方式却不同。
(1)仅用DE同步信号
这种方式不需要输入HS和信号VS,只需要输入DE作为同步信号即能正常工作。HS和信号VS端一般都需要接低电平,否则不能正常工作。
(2)同时使用DE/HS/VS同步信号才能正常工作。
(3) 待理解

三:LCD调光原理

为了让用户在不同光线条件下正常观看手机上的内容,屏幕需要相应地改变亮度。其中一种调节亮度的方式就叫“DC调光”。

1:DC调光的原理非常简单,就是通过提高或降低电路功率来改变屏幕的亮度。功率 = 电压 x 电流,所以改变电压或电流都能改变屏幕亮度。

2:PWM调光是另一种调节亮度的方式
在PWM调光屏幕上,调节亮度并不靠改变功率,而是靠屏幕的亮、灭交替。PWM调光屏幕点亮时并不是持续发光的,而是在不停地点亮、熄灭屏幕。当亮、灭交替够快时,肉眼就会认为手机一直在亮。
在屏幕亮、灭的过程中,灭屏状态持续时间越长,屏幕给肉眼的观感就是亮度越低。点亮的时间越长,灭屏时间就相应减少,屏幕就会变亮。
在这里插入图片描述
四:LCD显示原理

4.1 液晶显示器的分类
1、STN(超扭曲向列),它的特点是功耗低,但亮度不足,响应时间长;(1602那种类型的)
2、TFT(薄膜晶体管),它的特点是响应时间短,画面清晰,但功耗稍高,
3、LTPS(低温多晶硅),各方面性能优越,但技术要求高;
4、OLED(有机发光二极管),各方面性能优越,但技术要求高。

4.2 SoC如何控制LCD显示原理:
在这里插入图片描述
(1) LCD驱动器:LCD驱动器一般与LCD面板集成在一起,面板需要一定的模拟电信号来控制液晶分子,LCD驱动器芯片负责给面板提供控制液晶分子的模拟电信号,驱动器的控制信号(数字信号)来自于LCD控制器的提供的接口。
(2)LCD控制器:LCD控制器集成在SoC内部,LCD控制器受SoC控制,SoC会从内存中拿出像素数据给LCD控制器并最终传给LCD驱动器。
(3)显存:SoC在内存中选一段内存,用来存放颜色数据,然后通过配置将LCD控制器和这一段内存连接起来,构成一个映射关系,一旦这个关系建立以后,LCD控制器就会自动从显存中读取像素数据传给LCD驱动器,LCD驱动器会自动的控制每个像素点的液晶分子,以形成最终的图像,建立这个映射以后就不需要SoC在来参与任何行为了。

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是基于MSP430F149单片机的直流电压测试仪设计的源代码,可以参考一下: ```c #include <msp430.h> #include <stdio.h> #define LCD_EN BIT2 #define LCD_RS BIT3 #define LCD_D4 BIT4 #define LCD_D5 BIT5 #define LCD_D6 BIT6 #define LCD_D7 BIT7 #define LCD_PORT P2OUT #define LCD_DDR P2DIR void LCD_SendNibble(unsigned char nibble) { LCD_PORT &= ~(LCD_D4 + LCD_D5 + LCD_D6 + LCD_D7); LCD_PORT |= nibble << 4; LCD_PORT |= LCD_EN; __delay_cycles(1000); LCD_PORT &= ~LCD_EN; } void LCD_SendByte(unsigned char data, unsigned char rs) { if(rs) LCD_PORT |= LCD_RS; else LCD_PORT &= ~LCD_RS; LCD_SendNibble(data >> 4); LCD_SendNibble(data & 0x0F); } void LCD_Init() { LCD_DDR |= LCD_EN + LCD_RS + LCD_D4 + LCD_D5 + LCD_D6 + LCD_D7; __delay_cycles(15000); LCD_SendNibble(0x03); __delay_cycles(5000); LCD_SendNibble(0x03); __delay_cycles(100); LCD_SendNibble(0x03); LCD_SendNibble(0x02); LCD_SendByte(0x28, 0); // 4-bit, 2-line, 5x8 font LCD_SendByte(0x0C, 0); // display on, cursor off, blink off LCD_SendByte(0x06, 0); // cursor right, no shift LCD_SendByte(0x01, 0); // clear display } void LCD_Print(char *str) { while(*str) { LCD_SendByte(*str++, 1); } } void ADC_Init() { ADC12CTL0 = ADC12ON + ADC12SHT0_8 + ADC12MSC; // turn on ADC, set sample time, enable multiple sample and conversion ADC12CTL1 = ADC12SHP + ADC12CONSEQ_3; // sampling timer, repeat-sequence-of-channels mode ADC12CTL2 = ADC12RES_2; // 12-bit resolution ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_0; // Vref+ = VCC, Vref- = AVss, A0 channel ADC12MCTL1 = ADC12SREF_1 + ADC12INCH_1 + ADC12EOS; // Vref+ = VCC, Vref- = AVss, A1 channel, end of sequence ADC12IE = BIT1; // enable interrupt for channel 1 ADC12CTL0 |= ADC12ENC; // enable conversion __delay_cycles(100000); // delay for reference voltage settling } int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer BCSCTL1 = CALBC1_16MHZ; // set DCO to 16MHz DCOCTL = CALDCO_16MHZ; LCD_Init(); ADC_Init(); __enable_interrupt(); while(1) { ADC12CTL0 |= ADC12SC; // start conversion __bis_SR_register(LPM0_bits + GIE); // go to sleep mode and wait for interrupt } } #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR(void) { char buffer[16]; if(ADC12IFG & BIT1) // channel 1 interrupt { int result = ADC12MEM1; float voltage = (float) result / 4096 * 2.5; // convert to voltage sprintf(buffer, "%.2fV", voltage); // format voltage value with 2 decimal places LCD_SendByte(0x01, 0); // clear display LCD_Print(buffer); // display voltage value } ADC12IFG = 0; // clear interrupt flag __bic_SR_register_on_exit(LPM0_bits); // exit sleep mode } ``` 说明: 1. 引入头文件和定义一些常量和函数。 2. 定义LCD_SendNibble函数,用于发送4位数据到LCD。 3. 定义LCD_SendByte函数,用于发送一个字节的数据到LCD,rs参数指定数据还是命令。 4. 定义LCD_Init函数,用于初始化LCD。 5. 定义LCD_Print函数,用于在LCD上打印字符串。 6. 定义ADC_Init函数,用于初始化ADC。 7. 在main函数中初始化LCD和ADC,并启用中断。 8. 在while循环中启动ADC转换。 9. 定义ADC12ISR函数,用于处理ADC中断。获取测量结果并转换为电压值,然后在LCD上显示。 需要注意的是,为了使LCD正常工作,需要连接一个4.7k欧姆的电阻从VCC到LCD的RS和EN引脚。另外,为了获取更精确的电压值,可以增加采样次数,或者使用差分采样来消除偏置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值