LCD的基本原理
LCD(Liquid Crystal Display,液晶显示器)利用液晶材料的光电特性实现图像显示。液晶分子在电场作用下改变排列方向,从而调制背光源的透光率,通过彩色滤光片形成彩色图像。
主要结构组成
- 背光模块:提供均匀光源,常见为LED背光。
- 液晶层:由两片玻璃基板夹持,内含液晶分子。
- 偏光片:控制光线偏振方向,与液晶分子配合实现明暗变化。
- TFT阵列(薄膜晶体管):每个像素对应一个TFT,精确控制电压以驱动液晶。
- 彩色滤光片:生成红、绿、蓝三原色,组合成完整色彩。
工作特点
- 低功耗:仅需调节液晶分子方向,无需主动发光。
- 薄型化:结构紧凑,适用于便携设备。
- 依赖背光:对比度和视角受限,需通过技术改进(如IPS面板)优化。
技术分类
- TN(Twisted Nematic):响应快但视角窄,成本低。
- IPS(In-Plane Switching):视角广,色彩准确,用于高端显示器。
- VA(Vertical Alignment):高对比度,介于TN与IPS之间。
LCD广泛应用于电视、显示器、手机等设备,虽面临OLED竞争,但在成本与寿命上仍具优势。

我们模拟使用的电路图中LCD引脚同时关联着LED;因此两种功能同时使用会出现干扰;因为使用74HC573控制;因此我们可以通过控制74HC573使能端来关闭LED造成的干扰。!!!!

LCD初始化工程我们已经放在驱动文件;可以完成相关功能:如有需要乐意留言(只有F401RB和G4芯片)
1:现在我们先带大家添加相关工程:按照图片添加到相关位置

2:在生成的Keil中添加文件;找到文件存放的地方然后添加


在.c修改头文件名字和.h文件一样

使用LCD简述教程:
在主函数引用头文件;然后初始化;引入几个相关函数介绍:
LCD_Init(); LCD 初始化
LCD_Clear(Black); 以什么颜色清屏
LCD_SetBackColor(Black); 设置黑色背景
LCD_SetTextColor(White); 设置白色字体
打印内容在LCD位置
LCD_DisplayStringLine(Line0,(unsigned char *)" ");
可以自己选择颜色。
今日实验:
-
LCD初始化,正确添加初始化文件到目标工程;
-
在实验五的基础上完成该实验,当按键控制LED灯打开时,LCD显示屏第三行显示“LED ON”,当按键控制LED关闭时,LCD显示屏第四行显示“LED OFF”,当按键控制蜂鸣器打开时,LCD显示屏第五行显示“BUZZ ON”,当按键控制LED关闭时,LCD显示屏第六行显示“BUZZ OFF”;
这里我们只提供主函数代码;具体代码在代码仓:
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
LCD_DisplayStringLine(Line0,(unsigned char *)"********************");
LCD_DisplayStringLine(Line9,(unsigned char *)"********************");
if(KeyFlag==1)
{
KeyFlag=0;
if(KEY_Value==1)
{
if(Num<100)
{
LED1_ON;
LED_Close();
LCD_DisplayStringLine(Line3,(unsigned char *)"* LED1_ON *");
}
else
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
LCD_DisplayStringLine(Line3,(unsigned char *)"* LED2_ON *");
}
sprintf((char *)str," Value:%d ",Num);
LCD_DisplayStringLine(Line2,str);
}
else if(KEY_Value==2)
{
LED1_OFF;
LED_Close();
LCD_DisplayStringLine(Line4,(unsigned char *)"* LED1_OFF *");
}
else if(KEY_Value==3)
{
BUZZ_ON;
LCD_DisplayStringLine(Line5,(unsigned char *)"* BUZZ_ON *");
}
else if(KEY_Value==4)
{
BUZZ_OFF;
LCD_DisplayStringLine(Line6,(unsigned char *)"* BUZZ_OFF *");
}
}


8万+

被折叠的 条评论
为什么被折叠?



