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...