打印

怎么能让LCD1602的背光自动延时关闭?

[复制链接]
6138|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
89cpu|  楼主 | 2007-11-11 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个问题请教大家: 怎么能让LCD1602的背光自动延时关闭?

1.软件上通过定时器设定,检测按键动作有多久没有发生,然后关闭背光;

2.通过硬件连接;我记得在一本书上说过,可是忘记哪本书了,好像是通过电容充放电来控制的。

希望能做成像手机屏一样的效果:
在一个固定时间内,若没有按键动作,则会自动关闭背光;

谢谢!

相关帖子

沙发
ayb_ice| | 2007-11-12 08:49 | 只看该作者

有按键给某个变量赋值,然后间隔减1,到0关闭

使用特权

评论回复
板凳
89cpu|  楼主 | 2007-11-12 10:24 | 只看该作者

ayb_ice,谢谢你的回复.

ayb_ice,谢谢你的回复.
 
我想了好久,也没想到你的办法啊. 
我总想用定时,但又可能影响到其它显示.
你所说的方法挺简洁的.我去试试了. 

使用特权

评论回复
地板
computer00| | 2007-11-12 11:09 | 只看该作者

搞个变量,如果不为0,就每隔一段时间减1

如果有按键按下了,就给这个变量赋一个比较大的值.

当变量减到0时,就关闭LCD背光。

使用特权

评论回复
5
89cpu|  楼主 | 2007-11-13 09:56 | 只看该作者

程序中有JB K1,$等待按键按下的语句怎么处理好呢?

谢谢各位! 

那么请问:
程序中有  JB K1,$      ;等待K1按下 
这样的语句, 那怎么处理好呢?

使用特权

评论回复
6
computer00| | 2007-11-13 10:09 | 只看该作者

那可以在等待的过程中减1.

使用特权

评论回复
7
gjg191| | 2007-11-13 10:38 | 只看该作者

dd

这样等待别的事情很难干了.

使用特权

评论回复
8
89cpu|  楼主 | 2007-11-13 11:49 | 只看该作者

那可以在等待的过程中减1?

那可以在等待的过程中减1?

*-*-*-*-*-*-*-*-*-*-*-*-*

JB K1,$    ;等待K1按下

可是此时它只认K1按下的动作, 别的什么都不理会的啊? 

使用特权

评论回复
9
gjg191| | 2007-11-13 11:55 | 只看该作者

dd

改下不就行了多加几句话
dd:
    这里加背光判断
    jb k1,dd




    

使用特权

评论回复
10
89cpu|  楼主 | 2007-11-13 16:17 | 只看该作者

不会那么简单吧?

改下不就行了多加几句话
dd:
    这里加背光判断
    jb k1,dd

?

使用特权

评论回复
11
新好男孩| | 2007-11-13 16:31 | 只看该作者

给个例子看看,不知可行吗?

/*---------------------------------------------------------*-
 * 函数名称: SystemTick()
 * 函数功能: 系统时标.任何任务执行时间都不能大于系统时标.
 * 说     明: T0的低位计数器为自动加载.    (系统时标为15mS)     
 * 当前版本: 1.0                 * 取代版本:
 * 作     者: WSL                 * 原作者  : 
 * 完成日期: 2007-07-31             * 完成日期:
-*---------------------------------------------------------*/
void SystemTick(void) interrupt 1 using 1
{
    TH0 = PRELOAD_mS_H;
    KeyPad();
    
    
    // LCD背光控制,点亮15S
    if (++BLK_timer >= 40*15)
    {
        BLK_timer = 40*15;
        BLK_CNT = 0;    // 关背光
    }
    
    LcdDispEn++;    

    if ( TimerEn )
    {
        NewTime.millisecond++;
        if (NewTime.millisecond >= 40)
        {
            NewTime.millisecond = 0;    // 1s
            NewTime.second++;
            if (NewTime.second >= 60)
            {
                NewTime.second = 0;        // 1m
                NewTime.minuter++;

                BLK_CNT = 1;
                if (NewTime.minuter >= 60)
                {
                    NewTime.minuter = 0;    // 1h
                    NewTime.hour++;
                    if (NewTime.hour > 24)
                    {
                        NewTime.hour = 0; // one day
                    }
                }
            }
        }
    }
}


在程序的其它地方运行
BLK_timer = 0;    // 点背光
就可以了.

使用特权

评论回复
12
89cpu|  楼主 | 2007-11-15 11:09 | 只看该作者

......可是又怕影响了LCD的显示.

想用定时器,一有按键, 就启动定时.可是又怕影响了LCD的显示.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

184

帖子

0

粉丝