|
|
|
| 怎么能让LCD1602的背光自动延时关闭? |
|
新闻出处:21ic 发布时间:2007-11-13
|
89cpu 发布于 2007-11-11 23:17:00 有个问题请教大家: 怎么能让LCD1602的背光自动延时关闭?
1.软件上通过定时器设定,检测按键动作有多久没有发生,然后关闭背光;
2.通过硬件连接;我记得在一本书上说过,可是忘记哪本书了,好像是通过电容充放电来控制的。
希望能做成像手机屏一样的效果: 在一个固定时间内,若没有按键动作,则会自动关闭背光;
谢谢!
89cpu 发布于 2007-11-12 10:24:00 ayb_ice,谢谢你的回复. 我想了好久,也没想到你的办法啊. 我总想用定时,但又可能影响到其它显示. 你所说的方法挺简洁的.我去试试了.
computer00 发布于 2007-11-12 11:09:00 如果有按键按下了,就给这个变量赋一个比较大的值.
当变量减到0时,就关闭LCD背光。
89cpu 发布于 2007-11-13 9:56:00 谢谢各位!
那么请问: 程序中有 JB K1,$ ;等待K1按下 这样的语句, 那怎么处理好呢?
gjg191 发布于 2007-11-13 10:38:00 这样等待别的事情很难干了.
89cpu 发布于 2007-11-13 11:49:00 那可以在等待的过程中减1?
*-*-*-*-*-*-*-*-*-*-*-*-*
JB K1,$ ;等待K1按下
可是此时它只认K1按下的动作, 别的什么都不理会的啊?
gjg191 发布于 2007-11-13 11:55:00 改下不就行了多加几句话 dd: 这里加背光判断 jb k1,dd
89cpu 发布于 2007-11-13 16:17:00 改下不就行了多加几句话 dd: 这里加背光判断 jb k1,dd
?
新好男孩 发布于 2007-11-13 16:31:00 /*---------------------------------------------------------*- * 函数名称: 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; // 点背光 就可以了.
|
| 【关闭】【打印】 |
|
|