![]() |
發布時間: 2021-12-26 13:38
正文摘要:一直卡在ADC轉換等待那里,屏沒顯示。把ADC_IN();注示掉就可以顯示000.這個中斷程序是抄stc規格書里的.應該不會錯呀。下面是原理圖 單片機源程序如下: //ADC基本操作(中斷方式) #include "ADC.H" ... |
wulin 發表于 2021-12-29 09:55 可能我描述的不清楚,這個壓力傳感器共4個腳,I+ I-為供電,有氣壓時O+和O-兩個腳會有0-60mV的壓差。問了一下單片機廠商,這種情況應該是用兩路ADC口分別檢測,結果相減,能不能在上面的中斷程序里同時選兩個通道,分時得結果,最好有例子。 |
zhth1979 發表于 2021-12-29 09:06 ADC不能采集處理負電壓信號。在量程范圍內使差分放大器的輸出電壓限制在0~AVCC范圍即可。 |
單端輸入,可以了,傳感器要是差分輸入,程序該如何修改? |
wulin 發表于 2021-12-27 08:36 明白了,謝謝了,我回去試試。不行再請教。 |
angmall 發表于 2021-12-27 08:33 謝謝,我試試。 |
void ADC_IN() { P1M1 = 0x01; P1M0 = 0x00; //設置 P1.0 為 ADC 輸入口 P_SW2|=0X80; //打開特殊功能寄存器 ADCTIM=0X3F; //設置ADC內部時序 P_SW2&=0X7F; //關閉特殊功能寄存器 ADCCFG=0X0F; //設置ADC結果左對齊+ADC時鐘為系統時鐘/2/16 ADC_CONTR=0X80; //使能ADC模塊(ADC電源打開并選擇ADC通道P1.0/ADC0) EADC=1; //使能ADC中斷 (ADC中斷打開) EA=1; //總開關打開 ADC_CONTR|=0X40;//啟動AD轉換 while(1);//不能這樣生搬硬套 } |
void ADC_IN() { P1M1 = 0x01; P1M0 = 0x00; //設置 P1.0 為 ADC 輸入口 P_SW2|=0X80; //打開特殊功能寄存器 ADCTIM=0X3F; //設置ADC內部時序 P_SW2&=0X7F; //關閉特殊功能寄存器 ADCCFG=0X0F; //設置ADC結果左對齊+ADC時鐘為系統時鐘/2/16 ADC_CONTR=0X80; //使能ADC模塊(ADC電源打開并選擇ADC通道P1.0/ADC0) EADC=1; //使能ADC中斷 (ADC中斷打開) EA=1; //總開關打開 ADC_CONTR|=0X40; //啟動AD轉換 //while(1); <-------- 這個不用加了 } |
頂一下 |