搜索
bottom↓
回复: 9

嵌入式Linux应用程序开发-(3)i.MX6UL LCD背光调节程序

[复制链接]

出0入0汤圆

发表于 2019-4-5 15:17:18 | 显示全部楼层 |阅读模式
i.MX6UL LCD背光调节程序
目标:了解 i.MX6UL 如何调节显示屏的背光亮度。
功能:点击触摸屏对应的亮度按钮,实现不同的亮度设置,同时获取和显示当前的亮度值。

在进行应用软件开发前,先看一下 TQ-i.MX6UL 的 LCD 硬件接口原理图,如下所示:


从硬件原理图可以看出,TQ-i.MX6UL 的LCD支持背光调节,通过核心板的 GPIO1_IO08 引脚,连接到LCD的 Backlight 接口。
应用程序可以通过系统提供的接口,对LCD的背光亮度进行调节。TQ-i.MX6UL 支持8级背光亮度调节。

对于TQ-i.MX6UL平台,内核已经封装好背光系统的驱动,并对外提供了系统接口,关于背光系统对外的接口,在以下目录:/sys/devices/platform/backlight/backlight/backlight

这里,我们关注三个节点:actual_brightness, brightness, max_brightness
actual_brightness:这个节点只读,可以通过读取这个节点,获取LCD实际的亮度值。
brightness:这个节点可读可写,向这个节点写入不同值(0-7),可调节LCD亮度。
max_brightness:这个节点只读,通过读取此节点,获取可以设置的最大亮度级别。

对于合法的亮度设置值,可以查看驱动的设备树文件:arch/arm/boot/dts/tq-imx6ul.dts

由上图可知,背光支持8级调节,因此,三个节点actual_brightness, brightness, max_brightness 对应的可调值范围为 0 - 7。

1、先用Qt Creator构建一个工程,命名为:003_backlight_pwm,关于如何构建工程,请参考嵌入式Linux应用程序开发-(1)第一个嵌入式QT应用程序

2、双击打开“widget.ui”文件,构建界面,构建后的界面如下图所示:


3、对于设置背光值和获取背光值,可以封装一个类Backlight_Ctrl,这个类包含了设置背光和获取背光这两个方法,类的具体内容如下所示:
  1. #define BACKLIGHT_BRIGHTNESS    "/sys/devices/platform/backlight/backlight/backlight/brightness"
  2. #define BACKLIGHT_ACTUAL_BRIGHTNESS    "/sys/devices/platform/backlight/backlight/backlight/actual_brightness"

  3. class Backlight_Ctrl : public QWidget
  4. {
  5.     Q_OBJECT

  6. public:
  7.     Backlight_Ctrl();
  8.     ~Backlight_Ctrl();

  9.     void set_brightness(char *level);
  10.     char get_brightness(void);

  11. private slots:

  12. private:
  13. };
复制代码


4、set_brightness() 和 get_brightness() 这两个方法的具体实现如下所示:
  1. void Backlight_Ctrl::set_brightness(char* level)
  2. {
  3.     QFile brightness_file(BACKLIGHT_BRIGHTNESS);

  4.     brightness_file.open(QIODevice::ReadWrite);

  5.     if(brightness_file.isOpen())
  6.     {
  7.         brightness_file.write(level);
  8.     }

  9.     brightness_file.close();
  10. }

  11. char Backlight_Ctrl::get_brightness(void)
  12. {
  13.     char backlight_level;

  14.     QFile brightness_file(BACKLIGHT_ACTUAL_BRIGHTNESS);

  15.     brightness_file.open(QIODevice::ReadOnly);

  16.     if(brightness_file.isOpen())
  17.     {
  18.         brightness_file.read(&backlight_level,sizeof(backlight_level));
  19.     }

  20.     brightness_file.close();

  21.     return backlight_level;
  22. }
复制代码


5、在构建Widget对象的时候,我们可以同步构建一个backlight_ctrl对象,这样,就可以通过这个对象,调用里面的方法进行设置背光和背光获取,代码如下。
  1. Widget::Widget(QWidget *parent) :
  2.     QWidget(parent),
  3.     ui(new Ui::Widget)
  4. {
  5.     ui->setupUi(this);

  6.     backlight_ctrl = new Backlight_Ctrl();     //定义一个backlight_ctrl对象

  7.     ui->pushButton_backlight_3->click();   //默认以第4级亮度显示

  8.     timer = new QTimer();         //定义一个定时器,用来进行亮度0的超时
  9.     connect( timer, SIGNAL(timeout()), this, SLOT(timer_timeout_handler()));
  10. }
复制代码


6、需要注意的是,由于我们设置了背光亮度为0后,显示屏背光关闭,导致看不到显示的按钮。因此,我们通过一个定时器,3秒后恢复到指定的亮度。定时器设置为单次触发的方式,3秒后触发。如下图所示。


7、至此,所有代码编写完成,下载到TQ-i.MX6UL,运行应用程序,可以看到如下效果。


点击这里,下载工程源码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入4汤圆

发表于 2019-4-5 16:17:06 | 显示全部楼层
嵌入式Linux应用程序开发-(3)i.MX6UL LCD背光调节程序
赞!

出0入0汤圆

发表于 2019-4-7 18:36:21 | 显示全部楼层
会更新到什么程度呢

出0入0汤圆

 楼主| 发表于 2019-4-7 19:26:53 | 显示全部楼层
jamess555 发表于 2019-4-7 18:36
会更新到什么程度呢

还未知,我也是一边学习一边总结

出0入0汤圆

发表于 2019-4-8 20:22:02 | 显示全部楼层
广轻电气091 发表于 2019-4-7 19:26
还未知,我也是一边学习一边总结

期待你的更新

出0入0汤圆

发表于 2019-4-8 23:22:12 | 显示全部楼层
期待你的更新

出0入0汤圆

 楼主| 发表于 2019-4-9 08:32:04 | 显示全部楼层

感谢您的支持

出0入0汤圆

 楼主| 发表于 2019-4-9 08:32:30 | 显示全部楼层

感谢您的支持

出0入0汤圆

 楼主| 发表于 2019-4-9 13:53:54 | 显示全部楼层
本章节pdf下载:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2019-4-29 13:56:52 | 显示全部楼层
源码下载路径已更改:点击这里
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-17 05:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表