版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
模數(shù)轉(zhuǎn)換應(yīng)用2實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量目錄1實(shí)現(xiàn)外部電壓AVDD的測(cè)量任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量一、任務(wù)描述編寫程序?qū)崿F(xiàn)實(shí)驗(yàn)板測(cè)定芯片外部光敏傳感器的電壓,通過串口發(fā)送電壓值。實(shí)驗(yàn)板上安裝光敏傳感器,經(jīng)ADC轉(zhuǎn)換以后通過串口將電壓值發(fā)送給PC,可以通過串口調(diào)試軟件讀取電壓值。具體工作方式如下:①通電后,LED1熄滅。②UART0串口初始化。③設(shè)置ADC。④LED點(diǎn)亮。⑤開啟單通道ADC。⑥ADC對(duì)通道0進(jìn)行模數(shù)轉(zhuǎn)換測(cè)量電壓。⑦發(fā)送字符串測(cè)量電壓值。⑧LED熄滅。⑨延時(shí)一段時(shí)間。⑩返回步驟④循環(huán)執(zhí)行。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量二、任務(wù)目標(biāo)1.訓(xùn)練目標(biāo)①檢驗(yàn)CC2530單片機(jī)設(shè)置ADC模塊寄存器技能。②檢驗(yàn)學(xué)生掌握CC2530單片機(jī)對(duì)測(cè)量的電壓進(jìn)行轉(zhuǎn)換和設(shè)定轉(zhuǎn)換精度的技能。③檢驗(yàn)學(xué)生掌握PC機(jī)通串口通信發(fā)送傳感器相關(guān)參數(shù)的技能。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量二、任務(wù)目標(biāo)2.素養(yǎng)目標(biāo)①培養(yǎng)學(xué)生在工作現(xiàn)場(chǎng)的6S意識(shí)和用電安全意識(shí)。②愛惜工具,注重場(chǎng)地整潔。③具備積極、主動(dòng)的探索精神。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)模擬/數(shù)字轉(zhuǎn)換(AnalogtoDigitalConverter,簡稱ADC)是將輸入的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。各種被測(cè)控的物理量(如:速度、壓力、溫度、光照強(qiáng)度、磁場(chǎng)等)是一些連續(xù)變化的物理量,傳感器將這些物理量轉(zhuǎn)換成與之相對(duì)應(yīng)的電壓和電流就是模擬信號(hào)。單片機(jī)只能接收數(shù)字信號(hào),要處理這些信號(hào)就必須轉(zhuǎn)換成數(shù)字信號(hào),模擬/數(shù)字轉(zhuǎn)換是數(shù)字測(cè)控系統(tǒng)中必須的信號(hào)轉(zhuǎn)換。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)1.電信號(hào)的形式與轉(zhuǎn)換從電信號(hào)的表現(xiàn)形式上,可以分為模擬信號(hào)和數(shù)字信號(hào)。(1)模擬信號(hào)模擬信號(hào)是指用連續(xù)變化的物理量所表達(dá)的信息,如溫度、濕度、壓力、長度、電流、電壓等等,我們通常又把模擬信號(hào)稱為連續(xù)信號(hào),它在一定的時(shí)間范圍內(nèi)可以有無限多個(gè)不同的取值。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)1.電信號(hào)的形式與轉(zhuǎn)換從電信號(hào)的表現(xiàn)形式上,可以分為模擬信號(hào)和數(shù)字信號(hào)。(2)數(shù)字信號(hào)在數(shù)字電路中,由于數(shù)字信號(hào)只有0、1兩個(gè)狀態(tài),它的值是通過中央值來判斷的,在中央值以下規(guī)定為0,以上規(guī)定為1,所以即使混入了其他干擾信號(hào),只要干擾信號(hào)的值不超過閥值范圍,就可以再現(xiàn)出原來的信號(hào)。即使因干擾信號(hào)的值超過閥值范圍而出現(xiàn)了誤碼,只要采用一定的編碼技術(shù),也很容易將出錯(cuò)的信號(hào)檢測(cè)出來并加以糾正因此,與模擬信號(hào)相比,數(shù)字信號(hào)在傳輸過程中具有更高的抗干擾能力,更遠(yuǎn)的傳輸距離,且失真幅度小。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)2.CC2530的ADC模塊CC2530的ADC模塊支持最高14位二進(jìn)制的模擬數(shù)字轉(zhuǎn)換,具有12位的有效數(shù)據(jù)位。它包括一個(gè)輸入多路切換器,具有8個(gè)各自可配置的通道;以及一個(gè)參考電壓發(fā)生器。轉(zhuǎn)換結(jié)果通過DMA寫入存儲(chǔ)器,還具有多種運(yùn)行模式。ADC模塊結(jié)構(gòu)如圖6.1所示。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)2.CC2530的ADC模塊圖6.1ADC框圖任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(1)ADC模塊的輸入對(duì)于CC2530的ADC模塊,端口P0引腳可以配置為ADC輸入端,依次為AIN0~AIN7??梢园演斎肱渲脼閱味嘶虿罘州斎搿T谶x擇差分輸入的情況下,差分輸入包括輸入對(duì)AIN0-AIN1、AIN2-AIN3、AIN4-AIN5和AIN6-AIN7。除了輸入引腳AIN0-AIN7,片上溫度傳感器的輸出也可以選擇作為ADC的輸入用于溫度測(cè)量;還可以輸入一個(gè)對(duì)應(yīng)AVDD5/3的電壓作為一個(gè)ADC輸入,在應(yīng)用中這個(gè)輸入可以實(shí)現(xiàn)一個(gè)電池電壓監(jiān)測(cè)器的功能。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(1)ADC模塊的輸入特別提醒:負(fù)電壓和大于VDD(未調(diào)節(jié)電壓)的電壓都不能用于這些引腳。它們之間的轉(zhuǎn)換結(jié)果是在差分模式下每對(duì)輸入端之間的電壓差值。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(1)ADC模塊的輸入8位模擬量輸入來自I/O引腳,不必通過編程將這些引腳變?yōu)槟M輸入。但是,當(dāng)相應(yīng)的模擬輸入端在APCFG寄存器中被禁用時(shí),此通道將被跳過。當(dāng)使用差分輸入時(shí),相應(yīng)的兩個(gè)引腳都必須在APCFG寄存器中設(shè)置為模擬輸入引腳。APCFG寄存器描述如表6.1所示。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量表6.1APCFG寄存器的描述位位名稱復(fù)位值操作描述7:0APCFG[7:0]0R/W模擬外設(shè)I/O配置。APCFG[7:0]選擇P0.7~P0.0作為模擬輸入。0:模擬I/O禁用。1:模擬I/O使用。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(1)ADC模塊的輸入單端電壓輸入AIN0~AIN7以通道號(hào)碼0~7表示。通道號(hào)碼8到11表示差分輸入,它們分別是AIN0-AIN1、AIN2-AIN3、AIN4-AIN5和AIN6-AIN7組成。通道號(hào)碼12到15分別用于GND(12)、預(yù)留通道(13)、溫度傳感器(14)和AVDD5/3(15)。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(2)序列ADC轉(zhuǎn)換與單通道ADC轉(zhuǎn)換CC2530的ADC模塊可以按序列進(jìn)行多通道的ADC轉(zhuǎn)換,并把結(jié)果通過DMA傳送到存儲(chǔ)器,而不需要CPU參與。轉(zhuǎn)換序列可以由APCFG寄存器設(shè)置,八位模擬輸入來自I/O引腳,不必經(jīng)過編程變?yōu)槟M輸入。如果一個(gè)通道是模擬I/O輸入,它就是序列的一個(gè)通道,如果相應(yīng)的模擬輸入在APCFG中禁用,那么此I/O通道將被跳過。當(dāng)使用差分輸入,處于差分對(duì)的兩個(gè)引腳都必須在APCFG寄存器中設(shè)置為模擬輸入引腳。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(2)序列ADC轉(zhuǎn)換與單通道ADC轉(zhuǎn)換寄存器位ADCCON2.SCH用于定義一個(gè)ADC轉(zhuǎn)換序列,如果ADCCON2.SCH設(shè)置為一個(gè)小于8的值,ADC轉(zhuǎn)換序列包括從0通道開始,直到并包括所設(shè)置的通道號(hào)碼。當(dāng)ADCCON2.SCH設(shè)置為一個(gè)8和12之間的值,轉(zhuǎn)換序列包括從通道8開始差分輸入,到ADCCON2.SCH所設(shè)置的通道號(hào)碼結(jié)束。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)3.ADC的工作模式(2)序列ADC轉(zhuǎn)換與單通道ADC轉(zhuǎn)換除可以設(shè)置為按序列進(jìn)行ADC轉(zhuǎn)換之外,CC2530的ADC模塊可以編程實(shí)現(xiàn)任何單個(gè)通道執(zhí)行一個(gè)轉(zhuǎn)換,包括溫度傳感器(14)和AVDD5/3(15)兩個(gè)通道。單通道ADC轉(zhuǎn)換通過寫ADCCON3寄存器觸發(fā),轉(zhuǎn)換立即開始。除非一個(gè)轉(zhuǎn)換序列已經(jīng)正在進(jìn)行,在這種情況下序列一完成,單個(gè)通道的ADC轉(zhuǎn)換就會(huì)被執(zhí)行。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)4.ADC的相關(guān)寄存器ADC有兩個(gè)數(shù)據(jù)寄存器:ADCL(0xBA)-ADC數(shù)據(jù)低位寄存器、ADCH(0xBB)-ADC數(shù)據(jù)高位寄存器,如表6.2和6.3所示。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量表6.2ADCL(0xBA)-ADC數(shù)據(jù)低位寄存器的描述位位名稱復(fù)位值操作描述7:2ADC[5:0]000000RADC轉(zhuǎn)換結(jié)果的低位部分。1:000R0沒有使用。讀出來一直是0。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量表6.3ADCL(0xBB)-ADC數(shù)據(jù)高位寄存器的描述位位名稱復(fù)位值操作描述7:0ADC[13:6]00RADC轉(zhuǎn)換結(jié)果的高位部分。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)4.ADC的相關(guān)寄存器ADC有三個(gè)寄存器:ADCCON1、ADCCON2和ADCCON3,如表6.4、6.5和6.6所示。這些寄存器用來配置ADC,并返回轉(zhuǎn)換結(jié)果。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量表6.4ADCCON1—ADC控制高位寄存器的描述位位名稱復(fù)位值操作描述7
EOC0R/H0轉(zhuǎn)換結(jié)束。當(dāng)ADCH被讀取的時(shí)候清除。如果已經(jīng)讀取前一數(shù)據(jù)之前,完成一個(gè)新的轉(zhuǎn)換,EOC位仍然為高。0:轉(zhuǎn)換沒有完成。1:轉(zhuǎn)換完成。6ST0開始轉(zhuǎn)換。讀為1,直到轉(zhuǎn)換完成。0:沒有轉(zhuǎn)換正在進(jìn)行。1:如果并且沒有序列正在運(yùn)行就啟動(dòng)動(dòng)一個(gè)轉(zhuǎn)換序列。5:4STSEL[1:0]11R/W1啟動(dòng)選擇。選擇該事件,將啟動(dòng)一個(gè)新的轉(zhuǎn)換序列。00:P2.0引腳的外部觸發(fā)。01:全速,不等待觸發(fā)器。10:定時(shí)器1通道0比較事件。11:ADCCON1.ST=1。3:2RCTRL[1:0]00R/W控制16位隨機(jī)發(fā)生器。當(dāng)寫01時(shí),當(dāng)操作完成時(shí)設(shè)置將自動(dòng)返回到00。00:正常運(yùn)行。(13X型展開)。01:LFSR的時(shí)鐘一次(沒有展開)。10:保留。11:停止,關(guān)閉隨機(jī)數(shù)發(fā)生器。1:011R/W保留,一直設(shè)為11。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量表6.5ADCCON2—ADC控制寄存器的描述位位名稱復(fù)位值操作描述7:6
SREF[1:0]00R/W選擇用于序列轉(zhuǎn)換的參考電壓。00:內(nèi)部參考電壓。01:AIN7引腳上的外部參考電壓。10:AVDD5引腳。11:AIN6—AIN7差分輸入外部參考電壓。5:4SDIV[1:0]01R/W設(shè)置轉(zhuǎn)換序列通道的抽取率。抽取率也決定完成轉(zhuǎn)換需要的時(shí)間和分辨率。00:64位抽取率(7位ENOB)。01:128位抽取率(9位ENOB)。10:256位抽取率(10位ENOB)。11:512位抽取率(12位ENOB)。3:0SCH[3:0]0000R/W1序列通道選擇。當(dāng)讀取的時(shí)候,這些位將代表有轉(zhuǎn)換進(jìn)行的通道號(hào)碼。0000:AIN0。0001:AIN1。0010:AIN2。0011:AIN3。0100:AIN4。0101:AIN5。0110:AIN6。0111:AIN7。1000:AIN0-AIN1。1001:AIN2-AIN3。1010:AIN4-AIN5。1011:AIN6-AIN7。1100:GND。1110:溫度傳感器。1111:VDD/3。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量表6.6ADCCON3—ADC控制寄存器的描述位位名稱復(fù)位值操作描述7:6
SREF[1:0]00R/W選擇用于序列轉(zhuǎn)換的參考電壓。00:內(nèi)部參考電壓。01:AIN7引腳上的外部參考電壓。10:AVDD5引腳。11:AIN6—AIN7差分輸入外部參考電壓。5:4SDIV[1:0]01R/W設(shè)置單通道ADC轉(zhuǎn)換設(shè)置的抽取率。抽取率也決定完成轉(zhuǎn)換需要的時(shí)間和分辨率。00:64位抽取率(7位ENOB)。01:128位抽取率(9位ENOB)。10:256位抽取率(10位ENOB)。11:512位抽取率(12位ENOB)。3:0SCH[3:0]0000R/W1單個(gè)通道選擇。選擇寫ADCCON3觸發(fā)的單個(gè)通道轉(zhuǎn)換所在的通道號(hào)碼。當(dāng)單個(gè)轉(zhuǎn)換完成,該位自動(dòng)清零。0000:AIN0。0001:AIN1。0010:AIN2。0011:AIN3。0100:AIN4。0101:AIN5。0110:AIN6。0111:AIN7。1000:AIN0-AIN1。1001:AIN2-AIN3。1010:AIN4-AIN5。1011:AIN6-AIN7。1100:GND。1110:溫度傳感器。1111:VDD/3。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)5.ADC的配置和應(yīng)用ADC有ADCCON1、ADCCON2和ADCCON33種控制寄存器。這些寄存器用于配置ADC,以及讀取ADC轉(zhuǎn)換的狀態(tài)。ADCCON1.EOC是一個(gè)狀態(tài)位,當(dāng)一個(gè)轉(zhuǎn)換結(jié)束時(shí),設(shè)置為高電平;當(dāng)讀取ADCH時(shí),它就被清除。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)5.ADC的配置和應(yīng)用ADCCON1.ST用于啟動(dòng)一個(gè)轉(zhuǎn)換序列。當(dāng)沒有轉(zhuǎn)換正在運(yùn)行時(shí)這個(gè)位設(shè)置為高電平,ADCCON1.STSEL是11,就啟動(dòng)一個(gè)序列。當(dāng)這個(gè)序列轉(zhuǎn)換完成,ADCCON1.ST就被自動(dòng)清零。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)5.ADC的配置和應(yīng)用ADCCON1.STSEL位選擇哪個(gè)事件將啟動(dòng)一個(gè)新的轉(zhuǎn)換序列。該選項(xiàng)可以選擇為外部引腳P2.0上升沿或外部引腳事件,之前序列的結(jié)束事件,定時(shí)器1的通道0比較事件或ADCCON1.ST是1。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)5.ADC的配置和應(yīng)用ADCCON2寄存器設(shè)置轉(zhuǎn)換序列的執(zhí)行方式。ADCCON2.SREF用于選擇參考電壓。ADCCON2.SDIV位用來選擇抽取率,抽取率的設(shè)置決定分辨率和完成一個(gè)轉(zhuǎn)換所需要的時(shí)間。ADCCON2.SCH設(shè)置轉(zhuǎn)換序列的最后一個(gè)通道數(shù)。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量三、相關(guān)知識(shí)5.ADC的配置和應(yīng)用ADCCON3寄存器控制單個(gè)轉(zhuǎn)換的通道號(hào)碼、參考電壓和抽取率。該寄存器位的設(shè)置選項(xiàng)和ADCCON2是完全一樣的。單通道轉(zhuǎn)換在寄存器ADCCON3定入后將立即發(fā)生,如果一個(gè)轉(zhuǎn)換序列正在進(jìn)行,該序列結(jié)束之后立即啟動(dòng)ADC轉(zhuǎn)換。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施1.電路分析將光敏電阻傳感器模塊安裝在節(jié)點(diǎn)電路板上,光敏電阻的阻值大小會(huì)按照環(huán)境光線的變化而變化,經(jīng)串聯(lián)的電阻R16分壓后連接在CC2530的19腳。第19腳是CC2530的片內(nèi)ADC模塊的0通道輸入端,通過測(cè)量電壓輸入的電壓來感知環(huán)境光照的強(qiáng)弱。電路連接情況,如圖6.2所示。圖5.2CC2530與PC通信電平轉(zhuǎn)換方案任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量圖5.2CC2530與PC通信電平轉(zhuǎn)換方案圖6.2測(cè)量光敏電阻傳感器輸出電壓任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(1)建立工程在項(xiàng)目中添加名為“ADC_GZ.c”的代碼文件。(2)編寫代碼根據(jù)任務(wù)要求,實(shí)現(xiàn)外部電壓值的測(cè)量用流程圖進(jìn)行表示,如圖6.3所示。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)圖6.3實(shí)現(xiàn)外部電壓值的測(cè)量流程開始LED初始化串口通信初始化ADC轉(zhuǎn)換通道0初始化否是ADC轉(zhuǎn)換完成嗎?串口發(fā)送電壓值任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(1)編寫基本代碼在代碼中引用“ioCC2530.h”頭文件。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(2)AD初始化函數(shù)函數(shù)功能:將AD轉(zhuǎn)換源設(shè)為電源電壓,ADC結(jié)果分辨率設(shè)為14位,AD模式為單次轉(zhuǎn)換,啟動(dòng)ADC轉(zhuǎn)換。本任務(wù)設(shè)置ADCCON3=0xbd。即參考電壓選擇模擬電源電壓(3.3V),轉(zhuǎn)化精度仍是14位不變。代入公式計(jì)算得到轉(zhuǎn)換電壓值。voidInitialAD(void){ADCH&=0X00;//清EOC標(biāo)志
ADCCFG|=0X80;ADCCON3=0xbd;//單次轉(zhuǎn)換,參考電壓為電源電壓//14位分辨率
ADCCON1=0X30; //停止A/DADCCON1|=0X40; //啟動(dòng)A/D}任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(3)ADC初始化函數(shù)ADC轉(zhuǎn)換會(huì)在寫入ADCCON2或ADCCON3時(shí)啟動(dòng)。ADC測(cè)量芯片外部電壓的初始化主要是模擬量輸入端口的設(shè)置。本項(xiàng)目測(cè)量通道0的芯片外部電壓,ADC初始化函數(shù)代碼如下。voidadc_Init(void){ APCFG|=1; P0SEL|=(1<<(0)); P0DIR&=~(1<<(0)); }任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(4)讀取ADC轉(zhuǎn)換電壓值函數(shù)單通道的ADC轉(zhuǎn)換,只需將控制字寫入ADCCON3即可。采用基準(zhǔn)電壓avdd5:3.3V,通道0,對(duì)應(yīng)的控制字代碼如下。 ADCCON3=(0x80|0x10|0x00);ADCCON3控制寄存器一旦寫入控制字,ADC轉(zhuǎn)換就會(huì)啟動(dòng),使用while()語句查詢ADC中斷標(biāo)志位ADCIF,等待轉(zhuǎn)換結(jié)束,代碼如下:while(!ADCIF) {;//等待AD轉(zhuǎn)化結(jié)束}ADC轉(zhuǎn)換結(jié)束,讀取ADCH、ADCL并進(jìn)行電壓值的計(jì)算。采用基準(zhǔn)電壓3.3V,測(cè)得電壓值value與ADCH、ADCL的計(jì)算關(guān)系是:Value=(ADCH*256+ADCL)*3.3/32768任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(4)讀取ADC轉(zhuǎn)換電壓值函數(shù)電壓值計(jì)算的實(shí)現(xiàn)代碼如下:value=ADCH;value=value<<8;value|=ADCL;value=(value*330);//電壓值=(value*3.3)/32768(V)value=value>>15;//除以32768任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(4)讀取ADC轉(zhuǎn)換電壓值函數(shù)通過ADC獲取外部0通道電壓的函數(shù)get_adc()完整代碼如下。uint16get_adc(void){uint32value;ADCIF=0;//清ADC中斷標(biāo)志
ADCCON3=(0x80|0x10|0x00);while(!ADCIF);//等待AD轉(zhuǎn)化結(jié)束
value=ADCH;value=value<<8;value|=ADCL;value=(value*330);value=value>>15;//除以32768 //返回分辨率為0.01V的電壓值return(uint16)value;}任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量四、任務(wù)實(shí)施2.代碼設(shè)計(jì)(5)主程序代碼voidmain(void){ P1DIR|=0x03;chartemp[2];uintadc;floatnum;initUART();//初始化串口
InitialAD();//初始化ADCLED1=0;//黃燈亮表示系統(tǒng)開始工作
LED2=1;//紅燈用于指示轉(zhuǎn)換情況
while(1){if(ADCCON1&0x80){LED1=1; //轉(zhuǎn)換完畢指示
temp[1]=ADCL;temp[0]=ADCH;InitialAD();ADCCON1|=0x40; //開始下一轉(zhuǎn)換
adc|=(uint)temp[1];adc|=((uint)temp[0])<<8;if(adc&0x8000)adc=0;adc>>=2;num=adc*3.3/8192;//定參考電壓為3.3V。14位分辨率
adcdata[1]=(char)(num)%10+48;adcdata[3]=(char)(num*10)%10+48;UartTX_Send_String(adcdata,6); //串口送數(shù)
delay(30000);LED2=1;//完成數(shù)據(jù)處理
delay(30000); }}}任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量五、任務(wù)小結(jié)ADCCON3決定了ADC輸入源的選擇。電壓計(jì)算公式=ADC/精度*參考電壓。Value=(ADCH*256+ADCL)*3.3/8192。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量五、任務(wù)小結(jié)ADC:把AD轉(zhuǎn)換后得到的ADCL、ADCH做處理,將ADCL(低6位)放在低字節(jié),ADCH(高8位)放在高字節(jié)。將一個(gè)uint16右移兩位(最后兩位沒有用),即得到14位ADC。精度:根據(jù)所選位數(shù),例如本任務(wù)位數(shù)選14位,精度=2^13=8192。參考電壓:可選內(nèi)部或者外部。對(duì)于不同廠家的ADC轉(zhuǎn)換,主要修改APCFG和ADCCON3的值,實(shí)現(xiàn)程序代碼的移植性和通用性。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量五、任務(wù)小結(jié)ADC轉(zhuǎn)換步驟為:設(shè)置為外設(shè)IO口(P0SEL|=0x01)—設(shè)置為輸入I/O(P0DIR&=~0x01)—設(shè)置為模擬I/O(APCFG|=0x01;)—清ADC中斷標(biāo)志(ADCIF=0;)—設(shè)置參考電壓(ADCCON3|=0x80(采用AVDD5引腳,即3.3V))—選取抽取率(ADCCON3|=0x10(采用9位采樣))—選擇工作通道并啟動(dòng)ADCCON3|=0x00(選擇0通道啟動(dòng),共16個(gè)通道)—等待轉(zhuǎn)換完成(while(!ADCIF))—保存數(shù)據(jù)signedshortvalue;(value=ADCL>>2;value|=((int)ADCH<<6;)。任務(wù)一實(shí)現(xiàn)外部電壓值A(chǔ)VDD的測(cè)量六、啟發(fā)與思考注意:ADC數(shù)據(jù)采集只能利用P0口實(shí)現(xiàn)。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量一、任務(wù)描述編寫程序?qū)崿F(xiàn)實(shí)驗(yàn)板測(cè)定芯片外部光敏傳感器的電壓,通過串口發(fā)送電壓值。實(shí)驗(yàn)板上安裝光敏傳感器,光線的強(qiáng)弱轉(zhuǎn)換成電壓的高低,經(jīng)ADC轉(zhuǎn)換以后通過串口將電壓值發(fā)送給PC,可以通過串口調(diào)試軟件讀取電壓值。每次開始ADC轉(zhuǎn)換一次,LED1點(diǎn)亮。轉(zhuǎn)換完成后LED1熄滅。發(fā)送一次電壓值的字符串消息,LED2點(diǎn)亮一次。具體工作方式如下。①通電后,LED1和LED2熄滅。②UART0串口初始化。③設(shè)置ADC。④LED1點(diǎn)亮。⑤開啟單通道ADC。⑥ADC對(duì)通道0進(jìn)行模數(shù)轉(zhuǎn)換測(cè)量電壓。⑦發(fā)送字符串測(cè)量電壓值。⑧LED1熄滅,LED2點(diǎn)亮。⑨延時(shí)一段時(shí)間。⑩返回步驟④循環(huán)執(zhí)行。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量二、任務(wù)目標(biāo)①檢驗(yàn)CC2530單片機(jī)設(shè)置ADC模塊寄存器技能。②檢驗(yàn)學(xué)生掌握CC2530單片機(jī)對(duì)測(cè)量的電壓進(jìn)行轉(zhuǎn)換和設(shè)定轉(zhuǎn)換精度的技能。③檢驗(yàn)學(xué)生掌握PC機(jī)通串口通信發(fā)送傳感器相關(guān)參數(shù)的技能。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量二、任務(wù)目標(biāo)2.素養(yǎng)目標(biāo)①培養(yǎng)學(xué)生在工作現(xiàn)場(chǎng)的6S意識(shí)和用電安全意識(shí)。②愛惜工具,注重場(chǎng)地整潔。③具備積極、主動(dòng)的探索精神。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量三、相關(guān)知識(shí)1.參考電壓的選擇本任務(wù)與上任務(wù)主要區(qū)別僅僅在于對(duì)ADC初始化的設(shè)置。上任務(wù)設(shè)置ADCCON3=0xbd,即參考電壓模擬電源電壓(3.3V),轉(zhuǎn)換精度14位。本任務(wù)設(shè)置ADCCON3=0xbf,即參考電壓模擬電源電壓(1.1V),轉(zhuǎn)換精度14位。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量三、相關(guān)知識(shí)1.參考電壓的選擇ADCCON1主要用于ADC通用控制,包括轉(zhuǎn)換結(jié)束標(biāo)志、ADC觸發(fā)方式、隨機(jī)數(shù)發(fā)生器等。ADCCON2主要用于連續(xù)ADC轉(zhuǎn)換的配置。ADCCON3用于單次ADC轉(zhuǎn)換的配置,包括選擇參考電壓、分辨率、轉(zhuǎn)換源。ADCH[7:0]ADC轉(zhuǎn)換結(jié)果的高位,即ADC[13:6]。ADCL[7:2]ADC轉(zhuǎn)換結(jié)果的低位,即ADC[5:0]。注意ADCCON3決定了ADC輸入源的選擇。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量三、相關(guān)知識(shí)2.檢測(cè)引腳的選擇ADCCON3.SCH表明AD轉(zhuǎn)換時(shí)的順序,其中0~7指單端信號(hào)(AIN0~AIN7),8~11指差分信號(hào),12是地,13是內(nèi)部參考源,14是內(nèi)部溫度傳感器,15是AVDD/3。任務(wù)二實(shí)現(xiàn)電壓值A(chǔ)VDD/3的測(cè)量三、相關(guān)知識(shí)2.檢測(cè)引腳的選擇ADC轉(zhuǎn)換步驟為:設(shè)置參考電壓(ADCCON3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025貴州民航低空經(jīng)濟(jì)發(fā)展有限公司旗下企業(yè)招聘模擬筆試試題及答案解析
- 2025年合肥市第四十六中學(xué)招聘體育教師備考筆試題庫及答案解析
- 廣東江門臺(tái)山市林業(yè)局招聘2人參考筆試題庫附答案解析
- 2025南平市延平區(qū)國有資產(chǎn)投資經(jīng)營有限公司招聘綜合部業(yè)務(wù)員1人參考考試試題及答案解析
- 2025江蘇省體育科學(xué)研究所招聘專業(yè)技術(shù)人員3人參考考試試題及答案解析
- 2025年12月廣西玉林市陸川縣城鎮(zhèn)公益性崗位人員招聘1人備考筆試試題及答案解析
- 2025內(nèi)蒙古呼倫貝爾市大學(xué)生鄉(xiāng)村醫(yī)生專項(xiàng)計(jì)劃招聘3人模擬筆試試題及答案解析
- 2025華鈦科技招聘99人考試備考題庫及答案解析
- 2025河北興冀人才資源開發(fā)有限公司招聘護(hù)理助理90人參考考試題庫及答案解析
- 深度解析(2026)《GBT 25674-2010螺釘槽銑刀》(2026年)深度解析
- 計(jì)算思維與人工智能 課件 第8章 智能圖像處理
- 探索絲綢之路課件
- 2025秋季國開《經(jīng)濟(jì)學(xué)(本)》期末考試題庫及答案
- (新教材)2026年人教版八年級(jí)下冊(cè)數(shù)學(xué) 24.3 數(shù)據(jù)的四分位數(shù) 課件
- 2025年甘肅省武威市涼州區(qū)大柳鎮(zhèn)選聘專業(yè)化管理大學(xué)生村文書筆試考試備考試題及答案解析
- 戥秤的課件教學(xué)課件
- 2025內(nèi)蒙古潤蒙能源有限公司招聘22人考試筆試備考試題及答案解析
- 虛擬現(xiàn)實(shí)行業(yè) VR 全景拍攝師崗位招聘考試試卷及答案
- 供應(yīng)鏈金融業(yè)務(wù)操作與風(fēng)險(xiǎn)管理
- 2025年廣西學(xué)法用法考試試題及答案
- 2025全球包裝材料標(biāo)準(zhǔn)BRCGS第7版內(nèi)部審核全套記錄
評(píng)論
0/150
提交評(píng)論