如果说51单片机是通用型的单片机,那么应广单片是实用型的,适用于玩具,消费电子等产品开发.单片机内部集成了1.2V的band-gap参考电压,同时集成了比较器,这对于一些电池供电的产品,更具实用意义.

下面我就贴上比较器应用的简单案例,如果电池未低压,那么指示灯亮.如果电池低压,那么指示灯闪烁.设置1.2V为比较器负输入.PA.4为比较器正输入.PA4需要分压电阻分压.如果使用锂电池,假如3.4V为低压,那么分压电阻接电源端选择22K,接地端设置为12K.不多说,上图,上代码

这个代码适用于外部电阻测电压.内部电阻测电压的,请听下回分解.


#define DISABLE 0
#define ENABLE 1#define EMPTY 0
#define FULL 1#define ON 1
#define OFF 0BIT     LED        :       PB.5;BIT     POW_DET     :       PA.4;#define RED_LED_ON  LED=0
#define RED_LED_OFF  LED=1
#define RED_LED_FLASH  {if(LED){LED=0;}else{ LED=1;}}/*定时时间是否到了cinit*/
bit     FLAG_NMS;
/*计数值cinit*/
byte    count;
/*定时器初始化cinit*/
word    T16COUNTER;word usSystick;/*取得状态aint*/
word usPowEmpLoCnt;
word usPowEmpHiCnt;/*ainit*/
byte ubPowEmp;
byte ubPowFul;
byte ubPowFulBak;/*计数值Cinit*/
byte ucFlashTmrCnt;/*比较器初始化*/
void InitCompare(void)
{/*b7@1=开启比较器b6@0=负输入大于正输入b5@0=比较器不用tm2_ck采样b4@0=比较结果没有极性相反b3:1@ 010=内部Band-gap电压b0@1=PA4输入*/gpcc=0b1_0_0_0_010_1;/*关闭数字输入*/$ padier   0b111_0_100_1;
}/*冷启动初始*/
void ColdResetMem ( void )
{count=0;/*定时时间未到*/FLAG_NMS=0;ucFlashTmrCnt=0;}/***************************************/
void    TIME16_Init(void)
{/*计数值清零*/T16COUNTER    =488;/*ms标记reset*/FLAG_NMS =0;/*使能定时器*/$  INTEN   T16;/*关中断*/INTRQ        =  0;/*停止定时器*/T16M.5       =0;               STT16 T16COUNTER;/*计算方法16M/*/$   T16M    IHRC,/1,BIT11;
}/*工作时电源状态*/
void ResetPowStCnt(void)
{/*正输入PA4大于band-gap1.2V*/if(gpcc.6){/*如果为0就低压*/usPowEmpLoCnt=200;}/*band-gap电压大于pa4*/else{/*如果为0就非低压*/usPowEmpHiCnt=200;}
}void GetPowSt(void)
{if(ubPowFulBak!=ubPowFul){ubPowFulBak=ubPowFul;if(ubPowFul==EMPTY){ubPowEmp=ON;}else{ubPowEmp=OFF;RED_LED_ON;}}}void AppInit(void)
{/*正输入PA4大于band-gap1.2V*/if(gpcc.6){ubPowFul=FULL;/*如果为0就低压*/usPowEmpLoCnt=200;}/*band-gap电压大于pa4*/else{ubPowFul=EMPTY;usPowEmpHiCnt=200;}}
/*更新时间*/
void UpdateLedTmr(void)
{/*取得工作电源状态*/ResetPowStCnt();/*更新led时钟*/if(FLAG_NMS){if(ucFlashTmrCnt){ucFlashTmrCnt--;if(!ucFlashTmrCnt){/*在电池电量低状态下*/if(ubPowEmp){/*闪灯*/RED_LED_FLASH;}}}else{ucFlashTmrCnt=250;}FLAG_NMS=0;}
}void   FPPA0 (void)
{.ADJUST_IC SYSCLK=IHRC/8,IHRC=16MHz, VDD=3.6V;$ CLKMD IHRC/8,En_IHRC,En_ILRC,En_WatchDog;byte ucTmp;/*检测输入*/$ POW_DET        in; $ LED  out high;ColdResetMem();/*比较器初始*/InitCompare();/*定时器初始化*/TIME16_Init();ucTmp=200;while(ucTmp--){.delay 2000;wdreset;}/*应用初始化*/AppInit();engint;while (1){/*更新led时间*/UpdateLedTmr();GetPowSt();wdreset;}
}void   Interrupt ( void )
{pushaf;if ( Intrq.T16 )  {Intrq.T16    =  0;STT16 T16COUNTER;if ( count>0 ){count--;}else{count   =   9;/*1ms*/FLAG_NMS=   1;  /*电平为高计数*/if(usPowEmpHiCnt){usPowEmpHiCnt--;if(!usPowEmpHiCnt){ubPowFul=FULL;}}if(usPowEmpLoCnt){usPowEmpLoCnt--;if(!usPowEmpLoCnt){ubPowFul=EMPTY;}}}usSystick++;}popaf;
}

有问题可以联系QQ:85547259,欢迎探讨应广单片机开发技巧!谢谢!

应广单片机比较器检测电池欠压相关推荐

  1. 深圳PMS132B应广单片机比较器测供电电源VDD电压

    应广单片机有很实用的功能,就是可以用内部的分压电阻,内部1.2v参考电压,和比较器一起,测试单片机VDD电压.厉害吧,不使用任何外部器件,测试供电的电源电压.!当电池低压的时候可以做相应的动作.比如休 ...

  2. 应广单片机 PMS150G、FPC161 基础例子【GPIO设置】

    应广单片机 PMS150G.FPC161 基础例子[GPIO设置] 调试方式:仿真器5S-I-S02B 编译软件:FPPA IDE 编译语言:mini C 电脑系统:win10 软件功能:设置GPIO ...

  3. 应广单片机PMS152

    今天我们来讲讲应广单片机PMS152.PMS152系列是一款IO类型,完全静态以OTP为程序基础的CMOS  8bit 微处理器.它运用RISC的架构并且所有的指令架构的执行周期都是一个指令周期,只有 ...

  4. PMS150C应广单片机开发案例

    PMS150C应广单片机开发案例 应广单片机价格美丽,性价比高,mini-c好用,适用于消费电子开发.但是案例demo太少了,为了方便大家能够快速入门.这里贴出了一份经典PMS150C的点灯程序代码. ...

  5. 应广单片机休眠和按键唤醒

    对应电池供电的产品,在不使用的时候,单片机和外设都应该进入休眠状态,用于减少对电池电量消耗.在使用的时候又能够通过按键,或是其他信号唤醒系统,然后进入正常工作状态.在电压V3.3V的情况下,应广单片机 ...

  6. 应广单片机PMS134

    前面我们讲了几个应广常用型号的数据,我们今天来看一下应广单片机另外一个常规型号PMS134.当然我们公司作为应广单片机的代理,拥有应广全系列的产品,同时我们也可以提供技术支持,价格美丽,欢迎垂询. 言 ...

  7. 应广单片机芯片PMS132B -SOP8/SOP14/SOP16

    应广单片机芯片PMS132B -SOP8/SOP14/SOP16

  8. 电脑长期未用或深度放电,电池欠压充不上电(充电指示灯不亮)

    笔记本在背包里深度放电48小时后,电池欠压保护了,经过了更换原厂充电线,拆机,暖气片烘烤电池后,最后居然是戳一下小孔就解决了. 解决办法:细针戳一下RESET小孔                    ...

  9. 应广单片机adc_应广单片机adc和pwm例程

    应广单片机Otp单核系列主要有以下几个系列,15x系列为纯iO,13x系列为带12bit的adc,17x系列为带8bit的adc,现在我用pms132B写个adc/pwm例程,方便大家快速上手.不多说 ...

最新文章

  1. 2021年大数据基础(四):​​​​​​​​​​​​​​​​​​​​​大数据业务分析基本步骤
  2. [转] 程序员写简历的注意事项
  3. python基本语法的有关知识
  4. 9个数 横竖和相等 php,[境遇之数]横竖都是伤,不如一起扛(Ep9-12集剧评)
  5. html _ 提取html片段内的纯文本
  6. gulp自动添加版本号
  7. JDK源码系列(5)-StringBuffer
  8. 计算机组成原理试题 一,计算机组成原理试题库(含答案)
  9. 搭建Nexus3(maven私服搭建)
  10. oracle 数据库备份脚本
  11. iai控制器服务器ON信号,IAI控制器型号说明的.pdf
  12. 解决IP被封的问题几种方法
  13. lookup基础用法
  14. C++[Error] expected primary-expression before ‘]‘ token
  15. 51单片机用1602液晶屏实现可调时钟
  16. 华为云sql工程师评测答题[青铜+白银]
  17. java.lang.IllegalAccessException 没有访问权限
  18. 使用Python将PDF转换为WORD
  19. 世界各国 省市县 省份 城市 三级数据库表 mysql
  20. ARM安装python模块

热门文章

  1. camera raw 预设_RAW照片色彩深度越高画质就越好?
  2. Java基础测试题 - 核心类库(一)
  3. 技术选型的一点个人思考
  4. 壮实学数据技术05:数据调度
  5. linux根据端口查询PID
  6. python验证码生成_Python 生成验证码示例
  7. PANS:视觉暴露增强了初级视皮层的刺激编码和保持
  8. dlib中的人脸识别原理
  9. 如何提升淘宝搜索流量?
  10. java死锁_Java死锁原理,手写死锁,解决死锁