找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 24842|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

STC15F2K60S2單片機(jī)內(nèi)部自帶AD轉(zhuǎn)換實(shí)驗(yàn)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:329974 發(fā)表于 2018-7-5 10:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
實(shí)驗(yàn)  AD轉(zhuǎn)換

一、實(shí)驗(yàn)?zāi)康?/strong>

了解STC單片機(jī)ADC的結(jié)構(gòu);

掌握STC單片機(jī)ADC的使用。

二、實(shí)驗(yàn)原理

STC15F2K60S2單片機(jī)內(nèi)含8路10位高速AD轉(zhuǎn)換器,速度可達(dá)30萬(wàn)次/秒。單片機(jī)P1口既可作為普通I/O口,也可作為AD轉(zhuǎn)換器模擬電壓輸入口。AD轉(zhuǎn)換器相關(guān)的寄存器如表1所示。

表1  ADC轉(zhuǎn)換相關(guān)寄存器

P1ASF

P17ASF

P16ASF

P15ASF

P14ASF

P13ASF

P12ASF

P11ASF

P10ASF

ADC_CONTR

ADC_POWER

SPEED1

SPEED0

ADC_FLAG

ADC_START

CHS2

CHS1

CHS0

ADC_RES









ADC_RESL









CLK_DIV

PCON2

MCKO_S1

MCKO_S0

ADRJ

Tx_Rx

Tx2_Rx2

CLKS2

CLKS1

CLKS0

IE

EA

ELVD

EADC

ES

ET1

EX1

ET0

EX0

IP

PPCA

PLVD

PADC

PS

PT1

PX1

PT0

PX0


①P1口控制寄存器P1ASF

P1ASF某一位為“1”,P1口對(duì)應(yīng)的引腳設(shè)為模擬功能。某一位為“0”,對(duì)應(yīng)的引腳設(shè)為普通I/O。

②ADC控制寄存器ADC_CONTR

              ADC_POWER=1,打開(kāi)AD轉(zhuǎn)換器電源(關(guān)閉電源可降低功耗,ADC初次上電需適當(dāng)延時(shí),再啟動(dòng)AD轉(zhuǎn)換)。

              SPEED1、SPEED0選擇AD轉(zhuǎn)換速度。            

SPEED1

SPEED0

AD轉(zhuǎn)換時(shí)間

1

1

90個(gè)時(shí)鐘周期

1

0

180個(gè)時(shí)鐘周期

0

1

360個(gè)時(shí)鐘周期

0

0

540個(gè)時(shí)鐘周期


              ADC_FLAG:AD轉(zhuǎn)換結(jié)束標(biāo)志,需由軟件清0。

              ADC_START:AD轉(zhuǎn)換啟動(dòng)控制。

              CHS2、CHS1、CHS0:選擇模擬輸入通道P1.0~P1.7。

轉(zhuǎn)換結(jié)果存放在ADC_RES和ADC_RESL寄存器中,當(dāng)CLK_DIV.5/ADRJ=0時(shí),ADC_RES為結(jié)果的高8位,ADC_RESL為結(jié)果的低2位(如表2所示)。當(dāng)CLK_DIV.5/ADRJ=1時(shí),ADC_RES為結(jié)果的高2位,ADC_RESL為結(jié)果的低8位(如表3所示)。

表2  ADRJ=0時(shí)ADC轉(zhuǎn)換結(jié)果寄存器格式

ADC_RES

RES9

RES8

RES7

RES6

RES5

RES4

RES3

RES2

ADC_RESL

-

-

-

-

-

-

RES1

RES0


表3  ADRJ=1時(shí)ADC轉(zhuǎn)換結(jié)果寄存器格式

ADC_RES







RES9

RES8

ADC_RESL

RES7

RES6

RES5

RES4

RES3

RES2

RES1

RES0


STC15F2K60S2的AD轉(zhuǎn)換器以Vcc為參考電壓,當(dāng)ADRJ=0時(shí),10位轉(zhuǎn)換結(jié)果與輸入模擬電壓的關(guān)系由式(1)計(jì)算:

…………...……………………(1)

如果只取高8位,則由式(2)計(jì)算:

……………………………………...…………………(2)

當(dāng)ADRJ=1時(shí),10位轉(zhuǎn)換結(jié)果與輸入模擬電壓的關(guān)系由式(3)計(jì)算:

…………………………………(3)

如果單片機(jī)Vcc電壓不穩(wěn),會(huì)引起AD轉(zhuǎn)換誤差,在實(shí)際應(yīng)用中,可用一路AD采樣外部的基準(zhǔn)電壓(如用TL431基準(zhǔn)電源),另一路AD采樣被測(cè)電壓,按式(4)計(jì)算:

………………………………..…………………..(4)

三、實(shí)驗(yàn)環(huán)境

Windows XP;

Keil μ Vision 4;

STC-ISP-6.28。

四、實(shí)驗(yàn)內(nèi)容

1.實(shí)驗(yàn)連線

分別用兩根8芯杜邦線將單片機(jī)P2口與J61、單片機(jī)P0口與J62連接起來(lái),P0口用于數(shù)碼管的位選擇,P2口輸出數(shù)碼管的顯示碼。用跳線帽短接JP8、JP9,模擬輸入經(jīng)過(guò)RC濾波(如圖1所示)。用杜邦線連接連接J35和P1.3,單片機(jī)通道3采樣模擬輸入電壓。

圖1  ADC模擬輸入濾波電路

2.程序設(shè)計(jì)

Keil匯編或C語(yǔ)言頭文件REG51.H不包含STC單片機(jī)ADC寄存器定義,而編程時(shí)需要用到ADC_CONTR、ADC_RES等特殊功能寄存器,STC-ISP軟件提供各種STC單片機(jī)的寄存器定義頭文件。在STC-ISP軟件界面,選擇頭文件選項(xiàng)卡,選擇好單片機(jī)系列,該系列的寄存定義出現(xiàn)在文本框中,可以復(fù)制頭文件內(nèi)容,也可以保存頭文件(如圖8-2所示)。本實(shí)驗(yàn)可以將頭文件命名為STC15F2K.H,保存到\Keil\C51\INC文件夾中,以后編程時(shí)直接用該頭文件替換REG51.H。

AD轉(zhuǎn)換可以用中斷的方式,也可以用查詢的方式。每次轉(zhuǎn)換結(jié)束,將ADC_RES寄存器和ADC_RESL寄存器內(nèi)容存入整型變量result。當(dāng)ADRJ=0時(shí):

int  result;

    result=(ADC_RES<<2)|(ADC_RESL&3);

    vin=result*Vcc/1024;              //Vcc單位為毫伏

圖9-2  STC15F2K系列頭文件

3.程序設(shè)計(jì)

程序經(jīng)編譯生成HEX文件,再利用STC-ISP軟件將代碼下載到單片機(jī)中,調(diào)節(jié)多圈電位器W3,觀察數(shù)碼管顯示值的變化。用數(shù)字萬(wàn)用表核對(duì)J35的輸入電壓與數(shù)碼管顯示的電壓是否一致。

五、思考題

1. ADC通道2對(duì)2.45V基準(zhǔn)電壓(J41)采樣,通道3對(duì)模擬輸入電壓采樣,根據(jù)(4)式計(jì)算并顯示被測(cè)電壓。

2.如何實(shí)現(xiàn)多路電壓檢測(cè)并輪流顯示?



以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁(yè)上的一模一樣,方便保存):

實(shí)驗(yàn) AD轉(zhuǎn)換.docx (104.09 KB, 下載次數(shù): 228)



評(píng)分

參與人數(shù) 1黑幣 +11 收起 理由
李春雨 + 11 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:371957 發(fā)表于 2018-8-18 17:16 | 只看該作者
分析的很好
回復(fù)

使用道具 舉報(bào)

板凳
ID:396581 發(fā)表于 2018-9-26 13:52 | 只看該作者
雞肋,食之無(wú)味,棄之可惜
回復(fù)

使用道具 舉報(bào)

地板
ID:408797 發(fā)表于 2018-10-12 22:07 來(lái)自觸屏版 | 只看該作者
#include "ad_12c.h"unsigned char ch=0;unsigned int  AD_value[10]={0};unsigned int  AD_data[3]={0};void init_AD(){                P1ASF=0X07;                ADC_RES=0;          ADC_RESL=0;          ADC_CONTR=(ADC_POWER|ADC_SPEEDLL|ADC_START)&(~ADC_FLAG)|ch;          EA=1;          EADC=1;}void AD_areg(){        unsigned char i=0;        unsigned int sum=0;        for(i=0;i<10;i++)        {                sum=sum+AD_value[i];        }        AD_data[ch]=sum/10;        }void ADC_inter()interrupt 5{        static unsigned char i=0;                 ADC_CONTR&=~ADC_FLAG;        AD_value[i]=ADC_RES;        AD_value[i]=(AD_value[i]<<2)+(ADC_RESL&3);  ADC_CONTR=(ADC_POWER|ADC_SPEEDLL|ADC_START)|ch;          i++;        if(i>9)        {                i=0;                AD_areg();                ch++;                if(ch==3)ch=0;        }               
回復(fù)

使用道具 舉報(bào)

5#
ID:420186 發(fā)表于 2019-12-25 10:39 | 只看該作者
出來(lái)的數(shù)據(jù)為什么不對(duì)
回復(fù)

使用道具 舉報(bào)

6#
ID:960285 發(fā)表于 2021-8-13 09:31 | 只看該作者
這個(gè)咋仿真
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表