PIC微控制器A D轉換問題 25

2024-12-25 14:45:06 字數 3418 閱讀 5923

pic微控制器a/d轉換問題

1樓:網友

pic18f452微控制器,picc18編譯器。程式只是例子,提供思路,具體編寫還要靠自己。

#include ""

*ad初始化函式***

入口: 無。

出口: 無。

佔用資源: adcon0、adcon1

void ad_initial(void)

uint8 tmpadchn; /迴圈控制。

adcon0=0x81; /轉換時鐘fosc/32,選擇通道0,暫不啟動ad,開啟ad

adcon1=0x83; /轉換時鐘fosc/32,右對齊,an0,an1,an2,an4為模擬其餘為數字。

adif=0; /清0ad轉換標誌。

adie=0; /禁止ad中斷。

tr_an0=1; /ad通道設為輸入。

tr_an1=1;

tr_an2=1;

tr_an3=1;

ad轉換數目清0

for(tmpadchn=0;tmpadchn=conadwaitpluse)

return 0;

adif=0; /清0ad轉換標誌。

adconvresult=adresl+(adresh<<8);

return(adconvresult);

*採集各通道ad值***

入口:無。出口:無。

佔用資源:結構體adchnre

採集各通道的ad轉換結果,取樣點達到規定數目conadnum時,計算。

均值,存入陣列中。

void mainadconv(void)

uint8 nowadchn; /當前ad通道。

取樣各通道ad值。

for(nowadchn=0;nowadchn;;if(for(nowadchn=0;nowadchn; /計算均值。

ad緩衝區清0

if((《若開始取樣,並採到最小值。

ad取樣最小值。

如何將乙個電阻訊號用微控制器進行a/d轉換處理

2樓:網友

問題問得不明確額。電阻訊號指的是啥訊號?是不是通過電阻分壓分流後輸出的電壓型訊號,和電流型訊號。給個最基本的pic16的ad轉換程式你吧。

# include

union adres

adresult; //定義乙個共用體,用於存放a/d轉換的結果。

unsigned char i;

unsigned int j;

系統各i/o口初始化子程式。

void initial()

a/d轉化初始化子程式。

void adinitial()

延時子程式。

void delay()

報警子程式。

void alarm()

中斷服務程式。

void interrupt adint(void)else portd=0xf0 ; //如果輸入的模擬量小於,則與d口相連的。

8個發光二極體的低4個發亮,表示系統正常adgo=1; //啟動下一次a/d轉換} //主程式。

main()

等待中斷,在中斷中迴圈檢測外部電壓}

3樓:趙祥珍

你好,請問你解決這個問題了嗎,我目前也遇到這個問題,不會。

4樓:網友

最簡單的辦法,分壓嘛!

5樓:網友

什麼樣的電阻訊號啊?

pic微控制器12位a/d轉換結果不對!

6樓:羅門大佬

1全部看了一下,大概沒問題,因為你的是12位的ad,所以是4096分度的,所以輸入應該是2048,但是要必須保證pic輸入的是5v穩壓,照這樣看來,你得到的2200多就是輸入的5v並不準確。

7樓:呵呵

ad_data_low=adresl;

ad_data_high=adresh;

ad_data_high=ad_data_high<<4;

為什麼你的高位左移4位而低位不移。這裡搞錯了吧。

stc微控制器的a/d轉換值應該如何計算

8樓:小姐內涵了

只是乙個公式,把ad的值取出來 比如ad=ad*500./255; 就是電壓值。

9樓:網友

5v參考電壓,8bitad

0-5v 對應 0-255

乙個單位對應的電壓 5/255(解像度)。所以轉換成實際電壓 = ad取樣值 * 5/255)

你最大的取樣值也就是 255,這取樣值不需要計算。

你的公式 應該這樣吧 5v * 255/5) 得出 5v對應的取樣值。明瞭?

10樓:網友

是超出了,這樣算是有一定誤差的嘛。

因為你用256對應5v,微控制器裡面是用255對應5v的,所以會產生乙個量化誤差。

但這個問題不嚴重,你知道了這個原因後,自己進行軟體的修正就行了。或者不修正,算出來的結果滿足你的精度要求就行了。

5v時,微控制器裡面的最大值是255,那麼通過直接計算,可知 5/(2^8)*255=,說明有的誤差,你能接受就行了。不能的話,你在計算時這樣算: 5/(2^8-1)*255=5,嘿嘿!

51微控制器a/d轉換問題,麻煩大哥給解釋一下,謝謝

11樓:網友

int result;

result=adc_data*4+adc_low2;

這個不是轉換成10進位,是將兩個位元組的轉換結果拼成乙個整型變數。並且adc不是12位的,是10位的。

adc_data*4是空出低兩位,+adc_low2;是把低兩位合併到result。

result=adc_data*4+adc_low2;相當於:

result=(adc_data<<2) |adc_low2;這樣更直觀。

51微控制器的d/a轉換問題

12樓:匿名使用者

吳鑑鷹著有《吳鑑鷹微控制器專案實戰精講》,這可不是抄來的,可以看出確實是微控制器高手,講解通俗易懂,示例程式都可以上機驗證,同時分享了很多實際專案經驗,例程結構清晰,註釋也很詳細。這些都是初學者需要的。

他的開發板**不高,做工也好,結構合理,適合做很多實驗。配套例程較多,涉及各種外設使用,不但可以讓初學者入門,更是可以讓入門者成為乙個成熟的微控制器開發者。

你可以買一塊開發板,利用配套資料學起來事半功倍。

用pic微控制器做a/d轉換怎麼畫原理圖

13樓:網友

畫個最小系統,然後adc引腳接入要讀取的外部電路。

PIC微控制器復位問題,PIC微控制器宕機復位問題

一開始我很奇怪你的現象,微控制器掉電後再起程式應該是從0000h開始重新執行的,而不是從掉線點。後來看了你的補充才知道原來你的電容等同於一個電池給它供著電,雖然電壓下降,但可能尚未到掉電的電壓 pic12f508的最小輸供電電壓應該是2.0v 而你看手冊上說的掉電後在上電,這個過程上是針對微控制器來...

PIC微控制器PIC16F877能控制舵機嗎

pic內部不是有個ccp模組嗎?它與timer2暫存器配合就可產生pwm啊,不過由於pr2暫存器是8位的,因此使用ccp模組產生不了週期超過4ms的pwm,這種情況下一般要使用軟體產生,例如用timer1定時器產生xms高電平,20 x ms低電平 給你提供個簡單頻率為4000hz的佔空比為20 的...

微控制器中斷問題,微控制器中斷退出問題

org 0000h ajmp main org 0003h 外部0中斷入口地址 ajmp zd0 org 000bh 定時器t0中斷入口地址ajmp zd1 org 0013h 外部1中斷入口地址 ajmp zd2 org 0030h 主程式入口地址 main mov p1,00h mov ie,8...