A. STC單片機自帶AD代碼問題
同學,你的問題有問題
你是想問STC系列單片機的AD問題還是串口問題
你上面這段程序是51單片機串口初始化程序而不是AD程序。
51單片機串口初始化為
void COM_Init(void)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFD;
ES=1;EA=1;
TR1 = 1;
TI = 1;
}
AD轉換程序
//定義與ADC有關的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit p20 =P2^0;
void STC90CxxAD_delay(int timer) //延時函數
{
while(timer--);
}
int Ad_Change(char channel) //AD轉換
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //將P1口置高,為A/D轉換作準備
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D轉換電源
P1M0 = 0x03; //0000,0011用於A/D轉換的P1.x口,先設為開漏
P1M1 = 0x03; //0000,0011P1.0--P1.1先設為開漏。斷開內部上拉電阻
STC90CxxAD_delay(20); //20
ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //設置當前通道號
STC90CxxAD_delay(1); //延時使輸入電壓達到穩定
ADC_DATA = 0; //清A/D轉換結果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,啟動轉換
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D轉換結束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D轉換
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD轉換的 結果
STC90CxxAD_delay(1); //
return AD_Result_Temp;
}
已調試通過,望對你有用
B. STC有沒有自帶AD/DA功能單片機我要處理來自感測器的模擬信號(電壓)
STC系列單片機 多數型號 都 帶有 AD 轉換功能,及 PWM ( 即加電容濾波後為 DA ) 功能,
上 STC 官網看看。
C. STC的51單片機自帶有AD轉換,和PCF8591T AD晶元相比的話,哪個更好一些
用STC的51單片機自帶有AD轉換肯定更方便,因為是單片機內部集成,沒有外圍器件,只需要一根信號線,而且AD轉換是10位的,精度更高,缺點就是佔用單片機資源較多
用PCF8591T
AD晶元,還需要搭建外圍檢測電路,而且IIC兩條線與單片機相連,因為有IIC協議,佔用單片機資源也不少,AD轉換是8位,精度較低
綜合對比,用STC的51單片機自帶有AD轉換更好一些,PCF8591T
AD晶元是針對像AT89C51這樣內部沒有AD轉換的單片機使用的
D. STC的單片機內部集成AD 但是沒有參考基準,參考基準是VDD ,如何確保AD的精度呢
沒有參考基準的情況下,要確保AD精度,最重要的是確保VDD的精度!最好能給VDD進行穩壓,然後進CPU。
計算公式:Vad = ADC_RES * VCC / 256;你的應該是VDD=VCC。
另外,注意以下幾點:
1、啟動A/D 轉換後,在A/D 轉換結束之前,不改變任何I/O 口的狀態,有利於高精度A/D 轉換!
2、啟動A/D轉換時,最好關閉板上其他高耗電、高頻率設備,減少干擾。
3、Vdd進入CPU前,一定要經過濾波,並且距離晶元越近越好!
E. 如何用stc單片機內部ad採集多路交流信號
用stc單片機內部ad採集多路交流信號,有兩種辦法:
一、用兩個AD轉換晶元,兩路模擬量分別接一個。用單片機控制兩個AD晶元同時啟動轉換,這樣基本可以實現採集到同一時刻的兩路模擬量值。
二、用兩個采樣保持器(LF398),來暫時保存模擬量的瞬時值。兩個保持器後面接模擬多路轉換器,模擬多路轉換器後面接一個AD轉換器。過程是這樣的:要採集之前先給兩個采樣保持器一個保持信號,緊接著選擇多路開關通道,緊接著啟動AD轉換器。分別選擇多路開關的兩個通道,來取得兩路模擬量的值。因為有采樣保持器的存在,可以保證採集到的模擬量是同一時刻的。
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。