如果说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. 运营书籍:新媒体运营实战笔记
  2. ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决
  3. node中怎样将css导入到html,CSS无法使用Node.js加载到我的HTML代码中
  4. python【数据结构与算法】A - How Many Tables
  5. CentOS查看CPU信息、位数、多核信息
  6. Python属性访问拦截器的用法
  7. 【免费报名】与阿里云一同探索视频云的新技术与新场景
  8. 直击“上云”痛点的 MSP 新生意
  9. tmc4361 闭环_TMC4361A-LA
  10. MATLAB读取文件夹中所有图像
  11. centos7切换root为mysql_Linux(centos 7)系统下mysql8及以上版本修改root账户密码
  12. 算法学习:蝙蝠算法简介
  13. ios 图像坐标系_[译] iOS 开源图形库 Core Plot 使用教程
  14. iphone和android系统,iPhone上安装Android系统详细步骤。
  15. 鸿蒙os适配平板,华为新平板搭载高通4G芯片,鸿蒙OS已适配完成,友商随时可用...
  16. 模糊控制在matlab中常见的疑难问题及模糊逻辑工具箱的使用
  17. 身为iOS开发,你是愿意在大公司做凤尾,还是在小公司做鸡头?
  18. c# 实现两个窗体来回跳转
  19. [文摘20070509]管仲
  20. 微信公众号项目开发笔记 一

热门文章

  1. shell脚本-更改服务器IP地址
  2. 虫洞java_人类可穿越虫洞?物理学家新研究:虫洞旅行理论上并非不可能
  3. 2022年全球市场电视遥控器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  4. CrossLight.ApSys.v2003.12.
  5. RabbitMQ安装 win
  6. 造船重型机械厂流水线作车间用无机硅酸锌防腐漆 漆膜硬度高
  7. TaxoNN:基于分层微生物组数据的集成神经网络用于疾病预测
  8. 嵌入式linux initramfs,linux的initrd机制和initramfs机制之initramfs
  9. 基于Jenkins+git+gradle+pgyer的android持续集成
  10. [翻译] ogre 2.0 移植手册 - 2 改变:对象、场景和节点