野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13308|回复: 4

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

[复制链接]
发表于 2019-5-2 21:11:23 | 显示全部楼层 |阅读模式
本帖最后由 embediot 于 2019-5-2 21:12 编辑

i.MX6UL LCD背光调节程序

目标:了解i.MX6UL如何调节显示屏的背光亮度。
功能:点击触摸屏对应的亮度按钮,实现不同的亮度设置,同时获取和显示当前的亮度值。

在进行应用软件开发前,先看一下TQ-i.MX6ULLCD硬件接口原理图,如下所示:
图片1.png
图片2.png
从硬件原理图可以看出,TQ-i.MX6ULLCD支持背光调节,通过核心板的GPIO1_IO08引脚,连接到LCDBacklight接口。
应用程序可以通过系统提供的接口,对LCD的背光亮度进行调节。TQ-i.MX6UL支持8级背光亮度调节。

对于TQ-i.MX6UL平台,内核已经封装好背光系统的驱动,并对外提供了系统接口,关于背光系统对外的接口,在以下目录:/sys/devices/platform/backlight/backlight/backlight
图片3.png
这里,我们关注三个节点:actual_brightness, brightness, max_brightness
actual_brightness:这个节点只读,可以通过读取这个节点,获取LCD实际的亮度值。
brightness:这个节点可读可写,向这个节点写入不同值(0-7),可调节LCD亮度。
max_brightness:这个节点只读,通过读取此节点,获取可以设置的最大亮度级别。
对于合法的亮度设置值,可以查看驱动的设备树文件:arch/arm/boot/dts/tq-imx6ul.dts
图片4.png
由上图可知,背光驱动支持8级调节,因此,三个节点actual_brightness, brightness, max_brightness 对应的可调值范围为 0 - 7

1、 先用Qt Creator构建一个工程,命名为:003_backlight_pwm,关于如何构建工程,请参考“第一个嵌入式QT应用程序”的具体内容。

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

3、 对于设置背光值和获取背光值,可以封装一个类Backlight_Ctrl,这个类包含了设置背光和获取背光这两个方法,类的具体内容如下图所示:
[mw_shl_code=cpp,true]class Backlight_Ctrl : public QWidget
{
    Q_OBJECT

public:
    Backlight_Ctrl();
    ~Backlight_Ctrl();

    void set_brightness(char *level);
    char get_brightness(void);

private slots:

private:
};[/mw_shl_code]
4、 set_brightness() get_brightness() 这两个方法的具体实现如下图所示:
[mw_shl_code=cpp,true]void Backlight_Ctrl::set_brightness(char* level)
{
    QFile brightness_file(BACKLIGHT_BRIGHTNESS);

    brightness_file.open(QIODevice::ReadWrite);

    if(brightness_file.isOpen())
    {
        brightness_file.write(level);
    }

    brightness_file.close();
}

char Backlight_Ctrl::get_brightness(void)
{
    char backlight_level;

    QFile brightness_file(BACKLIGHT_ACTUAL_BRIGHTNESS);

    brightness_file.open(QIODevice::ReadOnly);

    if(brightness_file.isOpen())
    {
        brightness_file.read(&backlight_level,sizeof(backlight_level));
    }

    brightness_file.close();

    return backlight_level;
}
[/mw_shl_code]
5、 在构建Widget对象的时候,我们可以同步构建一个backlight_ctrl对象,这样,就可以通过这个对象,调用里面的方法进行设置背光和背光获取,如下图所示。
[mw_shl_code=cpp,true]Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    backlight_ctrl = new Backlight_Ctrl();

    ui->pushButton_backlight_3->click();

    timer = new QTimer();
    connect( timer, SIGNAL(timeout()), this, SLOT(timer_timeout_handler()));
}[/mw_shl_code]
6、需要注意的是,由于我们设置了背光亮度为0后,显示屏背光关闭,导致看不到显示的按钮。
因此,我们通过一个定时器,3秒后恢复到指定的亮度。定时器设置为单次触发的方式,3秒后触发。如下图所示。
图片10.png

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



回复

使用道具 举报

发表于 2019-5-5 19:06:53 | 显示全部楼层
1
回复

使用道具 举报

 楼主| 发表于 2019-5-5 20:35:11 | 显示全部楼层

帖子很快就被删了,且回且珍惜吧
回复 支持 反对

使用道具 举报

发表于 2019-5-21 10:17:53 | 显示全部楼层
大度能容!只要兄弟你保持克制,你发的帖子学习成分大于宣传,他没必要删你的帖子的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-21 15:59:11 | 显示全部楼层
hann 发表于 2019-5-21 10:17
大度能容!只要兄弟你保持克制,你发的帖子学习成分大于宣传,他没必要删你的帖子的!

感谢关注,帖子统一更新于以下博客:点击这里
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-13 07:41 , Processed in 0.030334 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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