『壹』 AD晶元與51單片機通訊
你直接用AD0804進行信號採集,將會得到8位數字輸出信號,將這八位用線連接到51單片機的8個輸入埠上就可以了。單路採集的話,AD0804就可以了,AD0809是8路採集的。
『貳』 51單片機,採用4路AD採集數據,AD採集完成後,這4個數據如何保存
AD小於等於16位精度;
unsigned int AD_vale[4];
AD_vale[0]=AD1; //第一路的ad值;
AD_vale[1]=AD2;
AD_vale[2]=AD3;
AD_vale[3]=AD4;
如果精度大於16位,就把unsigned int 改成unisgned long int
『叄』 51單片機如何做到准確采樣電壓
普通的51單片機不能採集電壓,帶AD功能的單 片機可採集電壓,但受解析度限制,採集電壓不是很准確。要想准確採集電壓,可以用專門的AD晶元,精度要12位以上,並且要保證基準電壓准確和穩定,做好輸入濾波,還可以多次採集求平均值。
『肆』 C51單片機的AD採集可以採用的子程序是中斷、延時、還有什麼是DMA嗎,不太清楚
用c51單片機做AD轉換,只要用一個簡單的延時就可以,沒必要動用定時器這么高級的東西,DMA就更別提了,我寫了很多程序,還真沒有人能用C51實現DMA,DMA一般在arm系列和FPGA等的高級嵌入式裡面才會用到的。
『伍』 51單片機AD採集
程序可以直接相除,但只保留整數部分,所以如果你要得到小數兩位,就先乘以100再除,顯示的時候知道最低兩位實際是小數點後兩位就行了。
『陸』 51單片機怎樣做AD電壓採集
總共才120個數據,就算是雙位元組的數據,才240個位元組!
在8052系列單片機的內部RAM空間,大小已經足夠,不必外接任何器件。
『柒』 請教stc自帶ad的51單片機的使用方法
STC單項片機說明文檔里有例子
下面是我的採集程序,采三次,求平均值:
void adchange()//AD採集程序,採集3路
{
uchar temp7,temp8,temp9,temp10,temp11,temp12;
uint tempa,tempb,tempc,tempd;
ADC_CONTR=ADC_CONTR|0X80; //10000000 開啟轉換電源
Delay1ms(1); //延時,等待內部電源穩定
//P1M0=P1M0|0X07; //設置p1.0 P1.1和 p1.3所在通道為開/漏模式
//P1M1=P1M1|0X07;
ADC_CONTR=0xe0; //11100000 開啟P1.0通道開始轉換
Delay25us(10); //延時一端時間,使輸入電壓達到穩定
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,開始轉換
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D轉換結束
temp7=ADC_DATA; //讀取轉換結果
temp8=ADC_LOW2;
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
ADC_CONTR=ADC_CONTR&0xe7; //將ADC_FLAG軟體清零
Delay25us(1);
ADC_CONTR |= 0x08; //ADC_START=1,開始轉換
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D轉換結束
temp9=ADC_DATA; //讀取轉換結果
temp10=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //將ADC_FLAG軟體清零
Delay25us(1);
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,開始轉換
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D轉換結束
temp11=ADC_DATA; //讀取轉換結果
temp12=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //將ADC_FLAG軟體清零
Delay25us(1);
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
tempa=(temp7*4+temp8);//真煩人,但必須這么算,一次算會出錯
tempb=(temp9*4+temp10);
tempc=(temp11*4+temp12);
tempd=tempa+tempb+tempc;
temp1=(tempd+1)/3;
。。。。。。其它兩路略
//P1M0=P1M0&0X00; //設置P1口為普通I/O模式,以便用P1口顯示數據。
//P1M1=P1M1&0X00;
}
『捌』 用51單片機控制AD採集正弦波信號,並把其頻率計算出來的程序。
51好久沒弄過了,給你個思路吧,因為51對浮點型運算較慢,不適合使用傅里葉變換,可以這樣
定義一個數組v[3]={0};
每次採集一個電壓放到數組的最後一位;然後判斷當v[0]<v[1]<v[2]時啟動計時器進行
計時,否則{v[0]=v[1];v[1]=v[2];}
重復這個過程。
當又一次v[0]<v[1]<v[2]時停止計時器,讀取時間差,這個時間就是周期T,頻率就是1/T。
可以多讀幾個周期T取平均值。
『玖』 需要用51單片機做一個數據採集系統,但是要求采樣頻率達到至少每秒2000次以上,請問51單片機可以做到么
肯定要速度快的單片機,比如帶ADC的STC12單片機,用定時器設置好每秒中斷2000次,每次啟動ADC轉換一次,這樣就得到數據了。
當然要存儲2000個數據還是問題,如果是8bit的結果,那需要2000位元組,12bit結果要4000位元組。所以要求單片機本身有很大的RAM或者要擴展RAM才行。但STC12內部才1024位元組的RAM,肯定不夠用,所以這時要用STC90C58AD了,4096位元組的RAM。
如果用C8051F單片機,那更簡單。比如C8051F的ADC0是100ksps,就是說連續轉換時每秒能采樣100000個數據,轉換2000個是小菜一碟,只要設置好定時器以0.5毫秒觸發一次ADC轉換,再設置好ADC中斷,這樣1秒採集2000個數據沒問題。