概述
應(yīng)廣PMS171B單片機(jī)有很實(shí)用的功能,對于PMS171B-S08,有3個ADC輸入管腳,8bit的ADC,分別是AD8、AD9、AD10。本文使用AD10作為ADC檢測口,并配合端口輸出高低電平來進(jìn)行檢驗。
在這里插入圖片描述
PMS171B配置ADC
在這里插入圖片描述
adcrgc寄存器是ADC調(diào)節(jié)控制寄存器,本文使用VDD為參考電壓,需配置7位為0,adcrgc配置如下所示:
adcrgc=0b000_0_00_00
在這里插入圖片描述
adcc寄存器是ADC控制寄存器,如果需要知道ADC是否轉(zhuǎn)換完成,讀取第6位;本文使用PA0作為ADC輸入口,adcc配置如下所示:
adcc= 1_0_1010_00;
PMS171B為8bit的ADC,所以檢測3V時,對應(yīng)的ADC值為3V/5V*255 = 153。
PA0檢測3V代碼
#include "extern.h"//是程序的頭文件。
BIT LED : PA.7;
/**********adc*****************/
Word AdcSum;
BIT THR : PA.0;
void GetAdc(void) //ADC采樣處理
{
BYTE i;
$ ADCC Enable, THR ;// ADCC = 1_0_1010_00;
//8次采樣做平均/
i=8;
//初始化
AdcSum=0;
while ( i-- )
{
AD_Start=1;//讀取 ADCC第六位;
.wait1 AD_Done;
//adc 采樣值,PMS171B為8bit
AdcSum +=ADCRH;
}
//取平均值輸出
AdcSum=AdcSum>>3; //temp除以8
}
void FPPA0 (void)//相當(dāng)于程序的 main() 函數(shù)。
{
/*單片機(jī)內(nèi)部RC震動時鐘為 IHRC默認(rèn)為16M,因此,IHRC/4=4M,系統(tǒng)時鐘為4M*/
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
/*端口設(shè)置為輸出 低*/
pa.7=0;
pac.7=1;/*輸入*/
paph.7=0;/*上拉*/
$ THR in;//設(shè)置PA0為輸入
/*bit config start
b7:5@001=2V參考;000=VDD;
b4@0f通道選擇器
b3:2@f通道band-gap參考電壓選擇
b1:0@00=rsv
bit config end*/
adcrgc=0b000_0_00_00;
while (1)
{
GetAdc();
if(AdcSum>153)//檢測3V
{
LED = 1;
}
else
LED = 0;
.delay 4000*500;
}
}
演示效果
在這里插入圖片描述
在這里插入圖片描述
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6023文章
44376瀏覽量
628408 -
adc
+關(guān)注
關(guān)注
97文章
6300瀏覽量
542454 -
PMS171B
+關(guān)注
關(guān)注
1文章
7瀏覽量
2396
發(fā)布評論請先 登錄
相關(guān)推薦
評論