專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

我的STC12C5410AD的AD轉(zhuǎn)換程序

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年06月14日   【字體:
#include"STC12C5410AD.h"
#define uchar unsigned char
unsigned char  aa,bb;
void delay(uchar dd)
{
int x,y;
for(x=dd;x>0;x--)
for(y=100;y>0;y--);
}
unsigned char Read_ADC(unsigned char adcvcc)
{
//將P1.0--P1.1設(shè)置成適合AD轉(zhuǎn)換的模式
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D轉(zhuǎn)換電源
delay(20); //20ms
ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR&0xf8|adcvcc; //設(shè)置當(dāng)前通道號
delay(10); //延時(shí)使輸入電壓達(dá)到穩(wěn)定
ADC_DATA = 0; //清A/D轉(zhuǎn)換結(jié)果寄存器
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,啟動轉(zhuǎn)換
do { ; } while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D轉(zhuǎn)換結(jié)束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG和ADC_START位,停止A/D轉(zhuǎn)換
return ADC_DATA;
}
void main()
{
//里要加上設(shè)置ADC的端口,如)1.0,P1.1設(shè)為ADC口的話:
    P1M0 = 0x03; //0000,0011用于A/D轉(zhuǎn)換的P1.x口,先設(shè)為開漏
P1M1 = 0xC3; //0000,0011P1.0--P1.1先設(shè)為開漏。斷開內(nèi)部上拉電阻
bb=0x01;
while(1)
{
  aa=Read_ADC(1); //第一路A/D轉(zhuǎn)換;如要改別的路,只要把代入通道改一下.
  P3=aa;  //這是讓A/D的數(shù)據(jù)顯示在P3口的LED上.
}
} 
關(guān)閉窗口

相關(guān)文章