Proteus仿真圖:
微信截圖_20180927223434.png (180.69 KB, 下載次數: 34)
下載附件
2018-9-27 22:35 上傳
ADC分壓原理:
分壓.png (7.94 KB, 下載次數: 32)
下載附件
2018-9-27 22:43 上傳
單片機源碼:- /*******************************************************************************
- * 標題: ADC0832檢測電壓 *
- * 時間 2018年9月27日22:36:36 *
- * *
- * 實驗說明:采用ADC0832進行電壓外部電壓測量,可在此基礎上開發其他模塊,例如
- GSM通信,智能開鎖、溫度檢測等。本原理圖中ADC0832的參考電壓為5V,外部輸入電壓為5V,
- 改變熱敏電阻的值可以改變輸出電壓 *
- ********************************************************************************
- * 實驗心得:ADC0832進行AD轉化的時候,需要研究下時序圖,在進行數據檢測的時候需要
- 進行兩次檢測,如果前后兩次數據相等,那么再返回得到的值,減少了測量誤差 *
- ********************************************************************************/
- #include <reg51.h>
- #include "lcd.h"
- #include "define.h"
- #include "ADC0832.h"
- //全局函數
- void Vol_True();
- void Vol_TrueDisply();
- //全局變量
- unsigned char i = 0;
- unsigned char Vo[] = "Voltage:"; //LCD1602上顯示電壓
- unsigned char Voltage_bit;
- unsigned char V_H, V_d, V_ld, V_lld; //分別是個位、第一位小數位、第二位小數位
- float Voltage;
- unsigned int Change_Voltage;
- void main()
- {
- LcdInit(); //初始化LCD1602
- while(1)
- {
- Vol_True();
- LcdWriteCom(0x80);
- for(i=0; i<9; i++)
- {
- LcdWriteData(Vo[i]);
- }
- Vol_TrueDisply();
- }
- }
- void Vol_True()
- {
- Voltage_bit = ADC0832(0); //從ADC轉化通道0進入,模數轉化后的值為Voltage_bit;
- Voltage = ((float)Voltage_bit/256)*5; //Voltage為實際電壓的值,5v為ADC0832的參考電壓
- Change_Voltage = (Voltage+0.137)*1000; //+0.137是進行誤差校準
- V_H = Change_Voltage/1000+'0';
- V_d = (Change_Voltage%1000)/100+'0';
- V_ld = (Change_Voltage%100)/10+'0';
- V_lld = Change_Voltage%10+'0';
- }
- void Vol_TrueDisply()
- {
- LcdWriteCom(0x89);
- LcdWriteData(V_H);
- LcdWriteData('.');
- LcdWriteData(V_d);
- LcdWriteData(V_ld);
- LcdWriteData(V_lld);
- LcdWriteCom(0x8e);
- LcdWriteData('V');
- }
復制代碼
0.png (48.35 KB, 下載次數: 28)
下載附件
2018-9-28 00:54 上傳
全部資料51hei下載地址:
充電自動提醒.rar
(84.9 KB, 下載次數: 83)
2018-9-27 22:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|