1. 51單片機AD轉換不穩定
單片機一般的ADC是沒有問題的,
我覺得很有可能是下述原因之一:
1.是不是電平有跳動的不穩定,比如輸入電平抖動(干擾導致),你只是肉眼沒看出來而已,所以認為它是穩定的。這個解決方法如果輸入是穩定電壓(直流),那就在電壓之間加上個電容就完事了。
2.是不是輸入電壓的范圍超了?如果是范圍超了,加個分壓電路,然後在單片機程序裡面再按比例的增加就行了。
2. 51單片機c語言,ADC模數轉換的問題
對於這個,要這么看:
假設中斷A是優先順序高的中斷,中斷B是優先順序低的中斷
如果在正常執行的過程中,發生中斷A,那麼,中斷A執行完成後,會返回正常程序;
如果在正常執行過程中,發生中斷B,又在中斷B處理過程中發生中斷A,那麼,中斷A執行完成後,一定要返回的是中斷B,這是由硬體決定的,不是軟體決定的,所以,軟體沒有任何指令可以讓中斷A執行完成後直接跳過還沒有執行完的中斷B而直接回到主程序,因為這是硬體決定的,軟體做不到,即便你在高級中斷A中關閉了中斷B,但是因為你原來的中斷B還沒有執行完,所以,仍然要把沒執行完的部分執行下去,才能返回到正常程序.
對於ARM系列的可以,對於51來說,是不行的,因為51軟體指令不允許修改PC寄存器的值
3. 51單片機adc模塊的功能是
ADC模塊當然是實現模數轉換。
4. 怎樣用51單片機的四個帶ADC的I/O口來檢測四個電容觸摸按鍵的觸摸
怎樣用51單片機的四個帶ADC的I/O口來檢測四個電容觸摸按鍵的觸摸10分
相關說明: 只用I/O口,不要再額外加振盪電路電路。現在使用的是STC12c2052ad單片機
at的51本身就不帶ad
是無需外加電路,需要用到其pwm,還有電容
觸摸處理看一下杜洋的觸摸電子琴就差不多了,網站上面有開源
5. 為什麼51單片機中的ADC轉換。沒有輸入電壓。他也一直變動
只要啟動轉換了就會有AD轉換的結果,你沒加AD電壓,那麼輸出有值,說明電源電壓的地不太干凈,或者你的AD電路有寫問題。
6. 51單片機連電位器一定要adc嗎
一定。51單片機連電位器需要adc的,因為作AD用必須一個接電源一個接地,兩個電阻中間即VREF接單片機引腳或接一個1K的電阻再接單片機引腳。
7. 51單片機 C語言ADC程序怎麼寫
typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51.h"
#include "intrins.h"
/*Declare SFR associated with the ADC */
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60
//延時
void Delay(WORD n)
{
WORD x;
while (n--)
{
x = 5000;
while (x--);
}
}
//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}
//AD轉換
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;
return ADC_RES;
}
void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P2.0和P2.1強推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//轉換P1.0
if(temp>1)
P2|=0x03; //P1.0有電壓 P2.0和P2.1輸出高
else
P2&=0xFC; //P1.0無電壓 P2.0和P2.1輸出低
}
}
8. 51單片機的adc介面在哪
埠引腳P3.4至P3.7處。
51單片機的P1是輸入埠,P0是輸出埠。ADC的控制信號(INTR、WR、RD和CS)分別在埠引腳P3.4至P3.7處可用。
51單片機是對兼容英特爾8051指令系統的單片機的統稱。
9. 51單片機ad采樣可以採集什麼
51單片機有很多型號,普通的51單片機是沒有ADC的,需要外接ADC晶元,一般是ADC0832等等,網上很多,利用51單片機驅動AD晶元進行采樣就可以實現AD採集,利用定時器設置好采樣率就OK了,為了得到較高精度,你將除數乘以100,再除被除數。所以最好定義為int型。內存中肯定以十六進制形式(二進制)存儲的。
10. 用51單片機的ADC採集信號,定義通道#define Channel0 0x02後,Channel0的值在函數調用時發生改變為什麼
什麼晶元?是不是有擴展rom ram ,有擴展的話,你要在keil里選上使用擴展的rom ram