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.數 模轉換器和模 數轉換器輸入訊號和輸...