久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7980|回復: 6
打印 上一主題 下一主題
收起左側

1.5V無線鼠標改造為鋰電池

[復制鏈接]
跳轉到指定樓層
樓主



鼠標有點老,是用一節5號電池,10天左右就沒電,所以改造為鋰電池.

//無線鼠標電源管理
//單片機:stc15w204s
//頻率:6M
//單片機工作時管理2.5V穩壓輸出,鼠標5分鐘無動作關閉2.5V輸出,單片機進入掉電模式
//單片機工作時電池電壓低于3.6V時,進入掉電模式
//按鼠標左鍵可喚醒單片機
//掉電模式工作電流: <20uA    工作電流: <10mA   鋰電池容量:1300mAH  型號:14500

無線鼠標電源管理-15w204.rar (95.87 KB, 下載次數: 24)

下面是部分程序預覽:
  1. //無線鼠標電源管理
  2. //單片機:stc15w204s
  3. //頻率:6M
  4. //單片機工作時管理2.5V穩壓輸出,鼠標5分鐘無動作關閉2.5V輸出,單片機進入掉電模式
  5. //單片機工作時電源電壓低于3.6V時,進入掉電模式
  6. //按鼠標左鍵可喚醒單片機
  7. //掉電模式工作電流: <20uA           工作電流: <10mA                電池容量:1300mAH  型號:14500
  8. #include "stc15w204s.h"
  9. #include <intrins.h>                 
  10. typedef unsigned int u16;  //16位無符號整型數
  11. typedef unsigned char u8;  //8位無符號整型數

  12. /*************        本地常量聲明        **************/

  13. //CMPCR1
  14. #define        CMPEN        0x80        //1: 允許比較器, 0: 禁止,關閉比較器電源
  15. //#define        CMPIF        0x40        //比較器中斷標志, 包括上升沿或下降沿中斷, 軟件清0
  16. //#define        PIE                0x20        //1: 比較結果由0變1, 產生上升沿中斷
  17. //#define        NIE                0x10        //1: 比較結果由1變0, 產生下降沿中斷
  18. //#define        PIS                0x08        //輸入正極性選擇, 0: 選擇內部P5.5做正輸入,           1: 由ADCIS[2:0]所選擇的ADC輸入端做正輸入.
  19. //#define        NIS                0x04        //輸入負極性選擇, 0: 選擇內部BandGap電壓BGv做負輸入, 1: 選擇外部P5.4做輸入.
  20. //#define        CMPOE        0x02        //1: 允許比較結果輸出到P1.2, 0: 禁止.
  21. #define        CMPRES        0x01        //比較結果, 1: CMP+電平高于CMP-,  0: CMP+電平低于CMP-,  只讀

  22. //CMPCR2
  23. //#define        INVCMPO        0x80        //1: 比較器輸出取反,  0: 不取反
  24. //#define        DISFLT        0x40        //1: 關閉0.1uF濾波,   0: 允許
  25. //#define        LCDTY        0x00        //0~63, 比較結果變化延時周期數


  26. #define        Pin0                0x01        //IO引腳 Px.0
  27. #define        Pin1                0x02        //IO引腳 Px.1
  28. #define        Pin2                0x04        //IO引腳 Px.2
  29. #define        Pin3                0x08        //IO引腳 Px.3
  30. #define        Pin4                0x10        //IO引腳 Px.4
  31. #define        Pin5                0x20        //IO引腳 Px.5
  32. #define        Pin6                0x40        //IO引腳 Px.6
  33. #define        Pin7                0x80        //IO引腳 Px.7
  34. //#define        PinAll                0xFF        //IO所有引腳

  35. sbit KongZi = P3^2;
  36. u8  i ;
  37. bit DianYa=0;
  38. void ConfigTimer2(u8 s);

  39. void main()
  40. {       
  41.     //IO口初始化
  42.         P3M1 |= Pin3;       
  43.         P5M1 |= Pin4+Pin5;          //P3.3 P5.4 P5.5設置為高阻輸入
  44.         //比較器初始化
  45.         CMPCR1 = 0;
  46.         CMPCR2 = 5;                //比較結果變化延時周期數, 0~63
  47.         CMPCR1 |= CMPEN;        //允許比較器                ENABLE,DISABLE
  48.     //        CMPCR1 |= PIE;                //允許上升沿中斷        ENABLE,DISABLE
  49.     //        CMPCR1 |= NIE;                //允許下降沿中斷        ENABLE,DISABLE
  50.     //        CMPCR1 |= PIS;                //輸入正極性選擇, 0: 選擇內部P5.5做正輸入,           1: 由ADCIS[2:0]所選擇的ADC輸入端做正輸入.
  51.         //  CMPCR1 |= NIS;                //輸入負極性選擇, 0: 選擇內部BandGap電壓BGv做負輸入, 1: 選擇外部P5.4做輸入
  52.     //        CMPCR1 |= CMPOE;        //允許比較結果輸出到P1.2,   ENABLE,DISABLE
  53.     //        CMPCR2 |= INVCMPO;        //比較器輸出取反,         ENABLE,DISABLE
  54.         //  CMPCR2 |= DISFLT;        //內部0.1uF濾波,          ENABLE,DISABLE


  55.     CLK_DIV=0x07;         //低速模式128分頻
  56.         WDT_CONTR=0x37;             //喂狗  20S
  57.         //IT1=0;                         //設置INT1中斷類型上沿和下沿均可喚醒
  58.         IT1=1;                         //設置INT1中斷類型下沿可喚醒
  59.         EX1=1;                         //使能INT1中斷
  60.         EA=1;
  61.         KongZi=0;
  62.     ConfigTimer2(10);   //配置T2定時 0-16s
  63.     while (1);
  64.    
  65. }

  66. /* 配置并啟動T2,s-T2定時時間 */
  67. void ConfigTimer2(u8 s)
  68. {
  69.     unsigned long tmp;  //臨時變量
  70.    
  71.     tmp = 6000000 / 12 / 128 ;      //定時器計數頻率
  72.     tmp = tmp * s ;  //計算所需的計數值
  73.     tmp = 65536 - tmp;        //計算定時器重載值
  74.     T2H = (u8)(tmp>>8);  //定時器重載值拆分為高低字節
  75.     T2L = (u8)tmp;
  76.           
  77.         AUXR &= 0xEF;  // 啟動T2定時器  方式 :16位重裝模式計數器
  78.         AUXR |= 0x10;  // 啟動T2定時器
  79.            IE2 &= 0xFB;  // 使能T2中斷
  80.         IE2 |= 0x04;  // 使能T2中斷
  81.           
  82.     //ET2 = 1;        //使能T2中斷
  83.     //T2R = 1;        //啟動T2定時器
  84. }
  85. /* 外部中斷服務函數 , P3.3下降沿觸發*/
  86. void exint1()interrupt 2
  87. {     CMPCR1 |= CMPEN;  //開啟比較器
  88.           if(DianYa==1)
  89.           {             DianYa=0;
  90.                  if((CMPCR1 & CMPRES) == 0)         //低電壓檢測
  91.                      {        
  92.                             CMPCR1 = 0;         //關閉比較器
  93.                                 DianYa=1;         //掉電記錄
  94.                                 KongZi=1;         //控制端 1:2.5V沒輸出 0:2.5V輸出
  95.                             PCON=0x02;  //進入掉電模式
  96.                                  _nop_();
  97.                                 _nop_();
  98.                                 return;
  99.                      }
  100.           }
  101.           i=0;
  102.           KongZi=0;         //控制端 1:2.5V沒輸出 0:2.5V輸出
  103. }

  104. /* T2中斷服務函數 */
  105. void InterruptTimer2() interrupt 12
  106. {       
  107.     WDT_CONTR=0x37;             //喂狗  20S
  108.         if((CMPCR1 & CMPRES) == 0)        //低電壓檢測
  109.     {        
  110.             CMPCR1 = 0;          //關閉比較器
  111.                 DianYa=1;          //掉電記錄
  112.                 KongZi=1;          //控制端 1:2.5V沒輸出 0:2.5V輸出
  113.             PCON=0x02;   //進入掉電模式
  114.                  _nop_();
  115.                 _nop_();
  116.                 return;
  117.      }

  118.     i++;
  119.     if(i>=30)                 //空閑5分鐘進入掉電模式
  120.         {   i=0        ;
  121.                 CMPCR1 = 0;         //關閉比較器
  122.             KongZi=1;         //控制端 1:2.5V沒輸出 0:2.5V輸出
  123.                 PCON=0x02;  //進入掉電模式
  124.                  _nop_();
  125.                 _nop_();
  126.        
  127.         }       

  128. }
復制代碼


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:57657 發表于 2016-9-21 07:07 | 只看該作者
電路圖上有個錯誤,+4.2v和-4.2v之間的電壓是8.4v,而且-4.2v與gnd發生了短路,2.5v的輸出也一樣。
回復

使用道具 舉報

板凳
ID:134239 發表于 2016-9-21 19:20 | 只看該作者
本帖最后由 0o000000 于 2016-9-21 19:24 編輯
npn 發表于 2016-9-21 07:07
電路圖上有個錯誤,+4.2v和-4.2v之間的電壓是8.4v,而且-4.2v與gnd發生了短路,2.5v的輸出也一樣。


標注錯誤而已,修改一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人午夜在线 | 91久久精品一区二区二区 | 精品中文字幕视频 | 天堂色网 | 久久99精品国产麻豆婷婷 | 自拍偷拍第一页 | 国产成人精品一区二区三区在线观看 | av免费网址| 中文字幕免费观看 | 国产精品日韩欧美 | 美女天堂 | 91精品久久久久久久久 | 久久的色| 日韩午夜在线播放 | 在线免费观看黄网 | 日韩精品一区二区三区在线观看 | 成人免费视频在线观看 | 在线毛片网 | 欧美激情国产精品 | 国产午夜精品一区二区 | 日本不卡免费新一二三区 | 久久99国产精一区二区三区 | 亚洲国产成人精品女人 | 一区二区三区欧美 | 中文字幕在线观看第一页 | 九九伦理电影 | 日韩精品久久一区 | 精品久久一区 | 亚洲成人av | 国产成人精品综合 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 91精品国产综合久久香蕉麻豆 | 日韩视频一级 | 欧美精品成人一区二区三区四区 | 51ⅴ精品国产91久久久久久 | 中文字幕国产 | 最近日韩中文字幕 | 黑人巨大精品欧美一区二区免费 | 最新国产精品视频 | 天天看片天天干 | 超碰精品在线 |