久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
怎么利用內部電壓作為ADC輸入,實時獲取電池電量
[打印本頁]
作者:
1481509156
時間:
2024-7-10 10:46
標題:
怎么利用內部電壓作為ADC輸入,實時獲取電池電量
謝謝大家
作者:
chxelc
時間:
2024-7-10 20:01
#include "reg51.h"
#include "intrins.h"
#define FOSC 11059200UL
#define BRT (65536 - FOSC / 115200 / 4)
sfr AUXR = 0x8e;
sfr ADC_CONTR = 0xbc;
sfr ADC_RES = 0xbd;
sfr ADC_RESL = 0xbe;
sfr ADCCFG = 0xde;
sfr P_SW2 = 0xba;
#define ADCTIM (*(unsigned char volatile xdata *)0xfea8)
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xc9;
sfr P5M0 = 0xca;
int *BGV; //內部1.19V參考信號源值存放在idata中
//idata的EFH地址存放高字節
//idata的F0H地址存放低字節
//電壓單位為毫伏(mV)
bit busy;
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void ADCInit()
{
P_SW2 |= 0x80;
ADCTIM = 0x3f; //設置ADC內部時序
P_SW2 &= 0x7f;
ADCCFG = 0x2f; //設置ADC時鐘為系統時鐘/2/16
ADC_CONTR = 0x8f; //使能ADC模塊,并選擇第15通道
}
int ADCRead()
{
int res;
ADC_CONTR |= 0x40; //啟動AD轉換
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20)); //查詢ADC完成標志
ADC_CONTR &= ~0x20; //清完成標志
res = (ADC_RES << 8) | ADC_RESL; //讀取ADC結果
return res;
}
void main()
{
int res;
int vcc;
int i;
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
BGV = (int idata *)0xef;
ADCInit(); //ADC初始化
UartInit(); //串口初始化
ES = 1;
EA = 1;
// ADCRead();
// ADCRead(); //前兩個數據建議丟棄
res = 0;
for (i=0; i<8; i++)
{
res += ADCRead(); //讀取8次數據
}
res >>= 3; //取平均值
vcc = (int)(1024L * *BGV / res); //(10位ADC算法)計算VREF管腳電壓,即電池電壓
// vcc = (int)(4096L * *BGV / res); //(12位ADC算法)計算VREF管腳電壓,即電池電壓
//注意,此電壓的單位為毫伏(mV)
UartSend(vcc >> 8); //輸出電壓值到串口
UartSend(vcc);
while (1);
}
復制代碼
以上是STC8系列帶ADC功能的單片機利用內部ADC第15通道測量電源電壓的范例程序,供參考。
作者:
li1069136863
時間:
2024-7-12 14:52
看看手冊,或者百度對應的MCU型號再問,不同MCU的配置不一樣。一般32位的都是有個庫函數配置,8位單片機要自己配置寄存器了
作者:
coody_sz
時間:
2024-7-12 17:38
是不是STC的單片機?如果是STC8系列、STC32系列,讀15通道ADC就可以計算出AVREF的電壓,將AVREF與VCC連接計算的就是單片機的工作電壓。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
综合久久综合久久
|
国产精品免费一区二区三区四区
|
欧美一区二区成人
|
99国产精品久久久
|
亚洲国产伊人
|
欧美成人一级
|
中文久久
|
日本不卡一区二区
|
日韩播放
|
精品久久一区
|
欧洲精品视频一区
|
在线观看国产精品视频
|
亚洲日韩视频
|
日韩中文字幕一区二区
|
免费黄色av网站
|
激情国产
|
国产小视频在线
|
91久久久久久久久
|
一区二区视频在线观看
|
精品日韩一区二区
|
亚洲精品日日夜夜
|
性色av网站
|
免费a v网站
|
欧美成视频在线观看
|
亚洲一区在线免费观看
|
一区二区三区久久久
|
日本不卡免费新一二三区
|
www国产成人免费观看视频,深夜成人网
|
91精品无人区卡一卡二卡三
|
成人精品视频在线观看
|
一区在线播放
|
亚洲一区二区中文字幕在线观看
|
欧美另类视频在线
|
欧美在线小视频
|
日韩一二区
|
在线91
|
亚洲v区
|
国产一区二区三区在线
|
久久久久久综合
|
亚洲成人免费视频在线观看
|
久久国产免费看
|