AD轉換測試試驗

2022-12-28 20:39:02 字數 3783 閱讀 1131

stc12c5410ad系列微控制器ad轉換測試程式

摘自該微控制器pdf 文件

led_mcu_start equ p3.7

adc_contr equ 0c5h ;ad轉換暫存器

adc_data equ 0c6h ;ad轉換結果暫存器,為10位ad轉換結果的高8位

;adc_low2 equ 0beh ;ad轉換結果暫存器,低2位有效,為10位ad轉換

結果的低2位

如果不用adc_low2的低2位,只用adc_data的8位,

則為8位ad轉換

p1m0 equ 91h ; p1口模式選擇暫存器0

p1m1 equ 92h ; p1口模式選擇暫存器1

adc_power_on_speed_channel_0 equ11100000b ;p1.0作為ad輸入

adc_power_on_speed_channel_1 equ11100001b ;p1.1作為ad輸入

adc_power_on_speed_channel_2 equ11100010b ;p1.2作為ad輸入

adc_power_on_speed_channel_3 equ11100011b ;p1.3作為ad輸入

adc_power_on_speed_channel_4 equ11100100b ;p1.4作為ad輸入

adc_power_on_speed_channel_5 equ11100101b ;p1.5作為ad輸入

adc_power_on_speed_channel_6 equ11100110b ;p1.6作為ad輸入

adc_power_on_speed_channel_7 equ11100111b ;p1.7作為ad輸入

;定義變數

adc_channel_0_result equ 30h ;0通道ad轉換結果

adc_channel_1_result equ 31h ;1通道ad轉換結果

adc_channel_2_result equ 32h ;2通道ad轉換結果

adc_channel_3_result equ 33h ;3通道ad轉換結果

adc_channel_4_result equ 34h ;4通道ad轉換結果

adc_channel_5_result equ 35h ;5通道ad轉換結果

adc_channel_6_result equ 36h ;6通道ad轉換結果

adc_channel_7_result equ 37h ;7通道ad轉換結果

org 0000h

ljmp main

org 0050h

main: clr led_mcu_start ; mcu工作指示燈

mov sp,#7fh ; 設定堆疊

acallinitiate_rs232 ;初始化串列埠

acalladc_power_on ;開adc 電源,第一次使用時要開啟內部模擬電源

開adc電源,可適當加延時,1ms 以內就足夠了

acallset_p12_open_drain ;設定p1.2口為開漏

acallset_adc_channel_2 ;設定p1.2作為ad轉換通道

acallget_ad_result ;測量電壓並且取ad轉換結果

acallsend_ad_result ;傳送轉換結果到pc機

acallset_p12_normal_io ;設定p1.2為普通io

mov a,adc_channel_2_result;用p1口顯示ad轉換結果

cpl a

mov p1,a

wait_loop:

sjmp wait_loop ;停機

initiate_rs232: ;串列埠初始化

clr es ;禁止串列埠中斷

mov tmod,#20h ;設定ti為波特率發生器

mov scon,#50h ;0101,0000 8位資料位,無奇偶校驗

mov th1,#0fbh ;18.432mhz晶振,波特率=9600

mov tl1,#0fbh

setb tr1 ;啟動ti

retsend_byte:

clr ti

mov sbuf,a

send_byte_wait_finish:

jnb ti,send_byte_wait_finish

clr ti

retadc_power_on:

push acc

orl adc_contr,#80h

mov a,#20h

acalldelay

pop acc

ret;設定p1.2,設定ad通道所在的io 為開漏模式

set_p12_open_drain:

push acc

mov a,#00000100b

orl p1m0,a

orl p1m1,a

pop acc

ret;設定p1.2為普通io

set_p12_normal_io:

push acc

mov a,#11111011b

anl p1m0,a

anl p1m0,a

pop acc

retset_adc_channel_2:

mov adc_contr,#adc_power_on_speed_channel_2

選擇p1.2作為ad轉換通道

mov a,#05h ;更換ad轉換通道後要適當延時,使輸入電壓穩定

以後如果不更換ad轉換通道的話,不需要加延時

acalldelay ;切換ad轉換通道,加延時20us~200us就可以了,與輸入電壓源的內阻有關

如果輸入電壓訊號源的內阻在10k以下,可以不加延時

retsend_ad_result:

push acc

mov a,adc_channel_2_result ;取ad 轉換結果

acallsend_byte ;傳送轉換結果到pc機

pop acc

retget_ad_result:

push acc ;入棧保護

mov adc_data,#0

orl adc_contr,#00001000b ;啟動ad轉換

wait_ad_finishe:

mov a,#0001000b ;判斷ad轉換是否

anl a,adc_contr

jz wait_ad_finishe ;ad轉換尚未完成,繼續等待

anl adc_contr,#11100111b ;清0 adc_flag, adc_start 位,停止ad 轉換

mov a,adc_data

mov adc_channel_2_result,a ;儲存ad 轉換結果

pop acc

retdelay:

push 02

push 03

push 04

mov r4,a

delay_loop0:

mov r3,#200

delay_loop1:

mov r2,#249

delay_loop:

djnz r2,delay_loop

djnz r3,delay_loop1

djnz r4,delay_loop0

pop 04

pop 03

pop 02

retend

AD轉換實驗

西安交通大學 文少軒一 實驗目的 1.學習掌握模 數訊號轉換的基本原理 2.掌握adc0809晶元的使用方法。二 實驗裝置 ibm pc 微型計算機一台 td pitc實驗系統一套三 實驗要求 1.複習adc0809的功能和使用方法 2.事先編寫好實驗中的程式。四 實驗內容及資料記錄 1.編寫實驗程...

實驗 一 AD轉換

一 實驗目的 1 掌握a d轉換與微控制器的介面方法。2 了解a d晶元pcf8591轉換效能及程式設計方法。3 通過實驗了解微控制器如何進行資料採集。二 實驗內容 利用實驗儀上的pcf8591做a d轉換實驗,實驗儀上的w4電位器提供模擬量輸入。編制程式,將模擬量轉換成數字量,通過數碼管顯示。三 ...

漸進型AD轉換器

電子課程設計 題目 逐次漸近型a d轉化器 系別 專業 姓名 學號 指導教師 成績評定 一 指導教師評語 根據學生設計報告質量 答辯情況及其平時表現綜合評定 課程設計成績評定 一 設計目的 1.了解數 模和模 數轉換的概念,數 模轉換器和模 數轉換器的用途。2.數 模轉換器和模 數轉換器輸入訊號和輸...