找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 13636|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

【小技巧】利用LCD1602的背光控制端,實(shí)現(xiàn)呼吸效果

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:62033 發(fā)表于 2015-5-18 10:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 jjbboox 于 2015-5-18 10:19 編輯

LCD1602是大家DIY的時(shí)候比較常用的顯示器件。
使用方便,編程簡(jiǎn)單。
1602有16個(gè)引腳,具體每個(gè)引腳的功能我也就不多說(shuō)了。
本帖只討論背光控制接口A和K(也有叫做BL+,BL-的)。
為了方便實(shí)現(xiàn),我只用K來(lái)控制背光的開(kāi)啟和關(guān)閉。A只要接電源正極即可。
何為呼吸效果,或者通俗一點(diǎn)叫做漸暗,漸亮功能。
個(gè)人定義如下       呼:慢慢由亮變暗至關(guān)閉,吸:慢慢由暗變亮至打開(kāi)
實(shí)現(xiàn)方法就是用簡(jiǎn)單的PWM輸出,不斷調(diào)節(jié)控制端口的低電平占空比來(lái)實(shí)現(xiàn)。
下面這段代碼中包含一個(gè)函數(shù)來(lái)實(shí)現(xiàn)呼和吸。
代碼應(yīng)該很容易看懂,就不多解釋。
有需要的可以拷貝到自己的代碼中使用。
  1. #include        <AT89X52.h>
  2. #include        <Intrins.h>

  3. //端口定義
  4. #define        LED_K        P2_4        //LCD1602背光控制位        0:點(diǎn)亮        1:關(guān)閉

  5. //LCD1602背光控制
  6. #define        LCD1602_LED_ON                0                        //點(diǎn)亮背光
  7. #define        LCD1602_LED_OFF                1                        //關(guān)閉背光

  8. //--------------------------------------
  9. //        函數(shù)名        :StepLedBackLight
  10. //        說(shuō)明        :PWM輸出點(diǎn)亮或者熄滅某個(gè)輸出口的LED
  11. //        參數(shù)        :
  12. //                         uchar        ucSteps        分段時(shí)長(zhǎng)(0-255)
  13. //                         char        cDirect        步進(jìn)方向(1呼,-1吸)
  14. //                         ulong        ulEdge        開(kāi)始前等待時(shí)長(zhǎng)
  15. //        返回        :無(wú)
  16. //--------------------------------------
  17. void StepLedBackLight(unsigned char ucSteps, char cDirect, unsigned long ulEdge){
  18.         unsigned long i;
  19.         unsigned char j;

  20.         //等待
  21.         for(i = 0; i < ulEdge; i++);

  22.         //呼吸
  23.         for(i=0; i < ucSteps; i++){
  24.                 for(j=0; j < ucSteps - i; j++){
  25.                         LED_K = cDirect==1?LCD1602_LED_ON:LCD1602_LED_OFF;
  26.                         _nop_();
  27.                         _nop_();
  28.                         _nop_();
  29.                         _nop_();
  30.                 }
  31.                 for(j=0; j < i; j++){
  32.                         LED_K = cDirect!=1?LCD1602_LED_ON:LCD1602_LED_OFF;
  33.                         _nop_();
  34.                         _nop_();
  35.                         _nop_();
  36.                         _nop_();
  37.                 }
  38.         }
  39. }

  40. //--------------------------------------
  41. //        函數(shù)名        :main
  42. //        說(shuō)明        :主函數(shù)
  43. //                        :1.初始化各控制變量
  44. //                        :2.初始化中斷
  45. //                        :3.初始化串口波特率
  46. //                        :4.循環(huán)檢查按鍵
  47. //        參數(shù)        :無(wú)
  48. //        返回        :無(wú)
  49. //--------------------------------------
  50. void        main()
  51. {
  52.         //呼
  53.         StepLedBackLight(150, 1, 25000);
  54.         //吸
  55.         StepLedBackLight(150, -1, 25000);

  56. }
復(fù)制代碼




評(píng)分

參與人數(shù) 2黑幣 +13 收起 理由
周超然 + 5 很給力!
stkh + 8 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:307643 發(fā)表于 2018-10-17 18:09 | 只看該作者
1602的背光太亮
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表