STC12C5A60S2 AD 轉換詳解

2021-07-25 08:59:48 字數 1806 閱讀 4640

stc系列微控制器中的stc89le516ad/x2提供了8路8位精度的高速a/d轉換器,位於p1口上,從而省去了片外adc的麻煩。這8路adc為電壓輸入型,可做按鍵掃瞄,電池電壓檢測,頻譜檢測等。adc轉換過程需要17個機器週期。通過對相關功能暫存器的適當配置,就可以控制其工作。下面就對相關功能暫存器進行介紹。

a/d轉換暫存器總表:

(1)       p1_adc_en:特殊功能暫存器

p1.x作為a/d轉換輸入通道來用允許特殊功能暫存器。相應位為「1」時,對應的p1.x口作為a/d轉換使用,內部上拉電阻自動斷開。

adc_start是模擬/數字轉換(adc)啟動控制位,設定為1時,開始轉換。

adc_flag是模擬/數字轉換結束標誌位,當a/d轉換完成後,adc_flag=1。

(3)       adc_data: a/d轉換結果特殊功能暫存器

模擬/數字轉換結果計算公式為 結果=256×vin/vcc

vin是模擬輸入通道輸入電壓,vcc為微控制器實際工作電壓,用微控制器工作電壓作為模擬參考電壓。

內建adc的使用例程:

stc_adc.h:

sfrp1_adc_en=0x97;

sfr adc_contr=0xc5;

sfr adc_data=0xc6;

int getad(unsigned char channel)//channel為要取的通道號(0~7)

unsigned char ad_finished=0;

adc_data=0;

adc_contr=channel;

adc_contr|=0x08;

while(!ad_finished)

ad_finished=(adc_contr&0x10);

adc_contr&=0xf7;

return (adc_data);

void ad_init(unsigned char adin)// adc 初始化,adin為八位2進製數,分別對應ad7~0,置1代表開啟此路

p1=p1|adin;//要設定為a/d轉換的p1.x口,先設為高

p1_adc_en=adin; 

_main.c:

#include

#include adc.h>

此程式用以說明stc微控制器adc的使用方法

void delay(unsigned time)

while(time--);

void main()

ad_init(0x63);//0110,0011,要設定為a/d轉換的p1.x口,先設定為高

//0110,0011,p1的p1.0,p1.1,p1.5,p1.6設定為a/d轉換輸入腳

//斷開p1.0,p1.1,p1.5,p1.6內部上拉電阻

while(1)

p2=getad(0);

delay(10000);

p2=getad(1);

delay(10000);

p2=getad(5);

delay(10000);

p2=getad(6);

delay(10000);



STC12C5A60S2筆記5(省電模式)

1.基本特性 stc12c5a60s2系列微控制器可執行三種省電模式以降低功能,stc正常工作電流是2ma 7ma,而掉電模式下 0.1ua,空閒模式下 0.1ma。1 空閒模式 由電源控制暫存器pcon控制,進入空閒 idle 模式後,cpu無時鐘停止工作,但外部中斷 外部低壓檢測 定時器 ad轉...

STC12C5A60S2筆記1(管腳定義)

stc12c5a60s2管腳定義 管腳1 標準io口p1.0 adc0 模數轉換通道0 clkout2 波特率發生器的時鐘輸出 管腳2 標準io口p1.1 adc1 模數轉換通道1 管腳3 標準io口p1.2 adc2 模數轉換通道2 eci pca計數器的外部脈衝輸入 管腳4 標準io口p1.3 ...

STC15F2K60S2實現A D轉換

以中斷方式進行a d轉換,取10位精度,並送p3和p2口led燈顯示 低電平驅動 p3口顯示最高2位,p2口顯示第8位。include stc15f2k60s2.h unsigned char data adc datah 定義儲存ad轉換結果的絕對位址 unsigned char data adc...