找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4837|回复: 1
收起左侧

单片机ADC0832电压检测程序(充电自动提醒)

[复制链接]
ID:372961 发表于 2018-9-27 22:46 | 显示全部楼层 |阅读模式
Proteus仿真图: 微信截图_20180927223434.png

ADC分压原理:
分压.png

单片机源码:
  1. /*******************************************************************************
  2. *  标题:                        ADC0832检测电压                                *
  3. *  时间                      2018年9月27日22:36:36                                                   *
  4. *                                                                                                                                                           *
  5. *  实验说明:采用ADC0832进行电压外部电压测量,可在此基础上开发其他模块,例如
  6. GSM通信,智能开锁、温度检测等。本原理图中ADC0832的参考电压为5V,外部输入电压为5V,
  7. 改变热敏电阻的值可以改变输出电压                                                                                                *
  8. ********************************************************************************
  9. * 实验心得:ADC0832进行AD转化的时候,需要研究下时序图,在进行数据检测的时候需要
  10. 进行两次检测,如果前后两次数据相等,那么再返回得到的值,减少了测量误差         *
  11. ********************************************************************************/
  12. #include <reg51.h>
  13. #include "lcd.h"
  14. #include "define.h"
  15. #include "ADC0832.h"               

  16. //全局函数
  17. void Vol_True();
  18. void Vol_TrueDisply();
  19. //全局变量
  20. unsigned char i = 0;
  21. unsigned char Vo[] = "Voltage:";           //LCD1602上显示电压
  22. unsigned char Voltage_bit;
  23. unsigned char V_H, V_d, V_ld, V_lld;            //分别是个位、第一位小数位、第二位小数位
  24. float Voltage;
  25. unsigned int Change_Voltage;

  26. void main()
  27. {
  28.         LcdInit();                         //初始化LCD1602
  29.         while(1)
  30.         {
  31.                    Vol_True();
  32.                 LcdWriteCom(0x80);
  33.                 for(i=0; i<9; i++)
  34.                 {
  35.                         LcdWriteData(Vo[i]);
  36.                 }
  37.                 Vol_TrueDisply();        
  38.         }
  39. }

  40. void Vol_True()
  41. {
  42.         Voltage_bit = ADC0832(0);                        //从ADC转化通道0进入,模数转化后的值为Voltage_bit;
  43.         Voltage = ((float)Voltage_bit/256)*5;        //Voltage为实际电压的值,5v为ADC0832的参考电压
  44.         Change_Voltage = (Voltage+0.137)*1000;         //+0.137是进行误差校准
  45.         V_H = Change_Voltage/1000+'0';                                 
  46.         V_d = (Change_Voltage%1000)/100+'0';
  47.         V_ld = (Change_Voltage%100)/10+'0';
  48.         V_lld = Change_Voltage%10+'0';        
  49. }

  50. void Vol_TrueDisply()
  51. {
  52.         LcdWriteCom(0x89);
  53.         LcdWriteData(V_H);
  54.         LcdWriteData('.');
  55.         LcdWriteData(V_d);
  56.         LcdWriteData(V_ld);
  57.         LcdWriteData(V_lld);
  58.         LcdWriteCom(0x8e);
  59.         LcdWriteData('V');        
  60. }
复制代码

0.png

全部资料51hei下载地址:
充电自动提醒.rar (84.9 KB, 下载次数: 83)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:501764 发表于 2019-4-23 20:54 来自手机 | 显示全部楼层
感谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表