久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

STC12C5201AD芯片AD應(yīng)用總結(jié)

作者:劉佳喝   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年03月16日   【字體:

STC12C5201AD芯片應(yīng)用總結(jié)

1、  內(nèi)部含有8路AD轉(zhuǎn)換

2、  首先聲明與AD轉(zhuǎn)換有關(guān)的寄存器

Sfr  ADC_CONTR =0XBC;//AD轉(zhuǎn)換控制寄存器的地址

Sfr  ADC_RES=0XBD;//AD轉(zhuǎn)換結(jié)果存放寄存器

Sfr  P1ASF=0x9d;//P1口模擬功能控制寄存器

                //哪個(gè)位置1,P1.0-P1.7就設(shè)定為AD轉(zhuǎn)換功能

3、  為了使程序的更具靈活性,可以單獨(dú)設(shè)定ADC_CONTR的每一位。

#define    ADC_POWER   0X80;//所有ADC電源控制為,第7位

#define    ADC_FLAG     0X10;//AD轉(zhuǎn)換完成標(biāo)志位,第4位,

#define    ADC_START    0X08;//AD轉(zhuǎn)換開始標(biāo)志位,第3位,

#define    ADC_SPEEDLL  0X00;//AD轉(zhuǎn)換速度控制位,第5、6位

                               //420 clocks

#define    ADC_SPEEDL   0x20;//280 clocks

#define    ADC_SPEEDH  0x40;//140 clocks

#define    ADC_SPEEDHH  0x60;//70 clocks

4、  初始化ADC

Void initADC(void)

{

 P1ASF=0X01;//設(shè)置哪個(gè)P1口進(jìn)行ADC

             //0X01  P1.0

             //0X02  P1.1

             //0X03  P1.0和P1.1

             //0XFF  全部8個(gè)口

 ADC_RES=0;//結(jié)果寄存器清零

 ADC_CONTR=ADC_POWER|ADC_SPEEDLL//打開ADC電源并設(shè)置轉(zhuǎn)換速率

 Delay(2);//軟件延時(shí)2ms

}

5、  讀取ADC的結(jié)果

Uchar getADCresult(uchar ch)//ch為要讀取的通道的值,0-7

{

ADC_CONTR=ADC_POWER|ADC_SPEEDLL |ADC_START|ch;

             //設(shè)置ADC控制寄存器,打開電源,設(shè)置轉(zhuǎn)換速率、打開開始,設(shè)置轉(zhuǎn)//換通道

 _nop_();//設(shè)置ADC_CONTR控制寄存器的語句執(zhí)行后,要經(jīng)過4個(gè)CPU時(shí)鐘的延時(shí),

        //其值才能夠保證設(shè)置進(jìn)ADC_CONTR控制寄存器

 _nop_();

 _nop_();

 _nop_();

 while(!(ADC_CONTR & ADC_FLAG));//wait complete flag

 

 ADC_CONTR&=~ADC_FLAG;//close ADC

 

 return ADC_RES;//return ADC result

}

AD轉(zhuǎn)換的結(jié)果為8位數(shù)據(jù),就存儲(chǔ)在ADC_RES寄存器中,

其值為:ADC_RES[0:7]=256  X  Vin/Vcc

為了方便利用轉(zhuǎn)換的值編制其他的控制程序及調(diào)試,可以將轉(zhuǎn)換后的數(shù)據(jù)通過串口發(fā)送出來,然后利用串口調(diào)試工具進(jìn)行監(jiān)控。這就涉及到串口通信程序的編制。

串口通信程序的編制(只發(fā)不收):

1、  為提高程序的適應(yīng)性可以先對(duì)通信的波特率和晶振頻率進(jìn)行宏定義。

#define BAUD  9600//9600的波特率

#define FOSC   11059200L  //11.0592M的晶振

2、  串口初始化

Void initUART()

{

 SCON=0X5A;//8位數(shù)據(jù),無校驗(yàn)位

 TMOD=0X20;//設(shè)置定時(shí)器1工作在8位自動(dòng)重裝的模式

 TH1=TL1=-(FOSC/12/32/BAUD);//T1裝初值

 TR1=1;//開定時(shí)器1

}

當(dāng)然這段程序也可以使用STC提供的波特率計(jì)算器來自動(dòng)生成,如下:

void UartInit(void)         //9600bps@11.0592MHz

{

PCON &= 0x7f;            //波特率不倍速

SCON = 0x50;              //8位數(shù)據(jù),可變波特率

AUXR &= 0xbf;           //定時(shí)器1時(shí)鐘為Fosc/12,即12T

AUXR &= 0xfe;           //串口1選擇定時(shí)器1為波特率發(fā)生器

TMOD &= 0x0f;           //清除定時(shí)器1模式位

TMOD |= 0x20;            //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式

TL1 = 0xFD;         //設(shè)定定時(shí)初值

TH1 = 0xFD;         //設(shè)定定時(shí)器重裝值

ET1 = 0;        //禁止定時(shí)器1中斷

TR1 = 1;        //啟動(dòng)定時(shí)器1

}

但要注意聲明特殊輔助寄存器AUXR

Sfr AUXR=0X8E;

3、  發(fā)送數(shù)據(jù)

Void senddata(uchar dat)

{

 While(!TI);//等待前面的數(shù)據(jù)發(fā)送完畢

 TI=0;//TI標(biāo)志清零

 SBUF=dat;//發(fā)送當(dāng)前的數(shù)據(jù)

}

這樣只要調(diào)用發(fā)送數(shù)據(jù)函數(shù)就可以在串口調(diào)試軟件中看到數(shù)據(jù)了。

當(dāng)然你也可以利用74HC595和數(shù)碼管做一個(gè)顯示電路來監(jiān)控,這個(gè)電路以后再總結(jié)。

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 99精品久久久久久久 | 中文字幕在线一区二区三区 | 亚洲一区二区三区四区五区午夜 | 亚洲免费精品 | 色狠狠桃花综合 | 色婷婷av一区二区三区软件 | 午夜av电影 | 精品无码久久久久国产 | 91av在线影院| 伊人久久免费 | 国产精品久久久久久久久久 | 一级毛片播放 | 亚洲国产精品一区二区第一页 | 91精品国产综合久久久久蜜臀 | 久久中文字幕av | 免费不卡视频 | 欧美亚洲视频在线观看 | 三级视频国产 | 日韩视频区| 精品国产乱码久久久久久蜜柚 | 四虎最新 | 毛片一级电影 | 欧美日韩一区二区在线观看 | 男女羞羞视频在线观看 | 污片在线观看 | 午夜爱爱毛片xxxx视频免费看 | 中文字幕 欧美 日韩 | 日本一区二区高清不卡 | 亚洲一区二区视频在线播放 | 在线观看毛片网站 | 日韩免费在线观看视频 | 国产精品久久久久久久久久久久冷 | 亚洲 精品 综合 精品 自拍 | 亚洲一二三在线观看 | 国产精品久久久 | 黑人巨大精品欧美一区二区免费 | 成人福利网 | 欧美成人性生活 | 欧美电影免费观看 | 日韩在线视频免费观看 | 四虎永久免费影院 |