1. 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;
}
已調試通過,望對你有用
2. STC單片機內部AD轉換的問題
STC是10位AD轉換,結果存在高八位和低兩位兩個寄存器里
ADC_RES : 0BDH ;ADC高八位轉換結果
ADC_LOW2 : 0BEH ;ADC低二位轉換結果
低兩位就2位最大就3(11)其餘位都是無效的,所以處理時需要做如下處理。
unsigned int res_ad;
res_ad=ADC_RES<<8+ADC_LOW2&0x03;
3. 如何用stc單片機內部ad採集多路交流信號
用stc單片機內部ad採集多路交流信號,有兩種辦法:
一、用兩個AD轉換晶元,兩路模擬量分別接一個。用單片機控制兩個AD晶元同時啟動轉換,這樣基本可以實現採集到同一時刻的兩路模擬量值。
二、用兩個采樣保持器(LF398),來暫時保存模擬量的瞬時值。兩個保持器後面接模擬多路轉換器,模擬多路轉換器後面接一個AD轉換器。過程是這樣的:要採集之前先給兩個采樣保持器一個保持信號,緊接著選擇多路開關通道,緊接著啟動AD轉換器。分別選擇多路開關的兩個通道,來取得兩路模擬量的值。因為有采樣保持器的存在,可以保證採集到的模擬量是同一時刻的。
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
4. 請教:關於STC單片機AD外圍電路
呵呵
為你解答
單片機幾種常見的外圍電路及作用:
1鍵盤顯示介面電路:
用於下達用戶命令和傳送、修改單片機內部的數據、參數,同時可以將運算結果送顯示器上顯示。
可用
8279或74LS164晶元進行鍵盤、顯示電路的擴展。
2模擬量輸入通道:
數據採集和測量,將工業現場的非電量轉換成電量(如電壓、電流),再經過模數轉換器轉換為數字量送給單片機。
一般由感測器、運算放大器、多路開關、模數轉換器等組成。
3模擬量輸出通道:
將計算的結果數字量經數模轉換器轉換成模擬量(電壓、電流)反過來去控制工業的現場設備。
4
單片機與電腦的通訊介面電路:
完成單片機與電腦之間的連接,採用串口通訊,進行單片機與電腦之間的數據信息傳送。
5
繼電器驅動電路:
完成對繼電器線圈的控制,驅動繼電器動作。
還有一些
就不再一一例舉了
如滿意
請選擇:滿意回答
5. 關於STC單片機AD轉換和顯示程序。
重點不在演算法,重點是會AD_init() 和AD_get(channel);
會初始化和啟動AD轉換並讀取轉換結果
至於換算是根據自己電路情況確定的,由於計算時採用過多的浮點型變數會佔用較多內存,造成內存不足,因此有除法時常採用整形變數進行計算,運算時為了保持尾數不丟失,需把被除數擴大100倍或1000倍,如整數123/100=1,小數部分丟失了,為得到1.23這個結果,需把123擴大100倍,變成12300,12300/100=123.0,然後將小數點向左移2位(縮小100倍),即得1.23這就是定(小數)點計算
LedCtrl = LedCtrl & 0xdf大概就是一次選通一個數碼管,7f df ef bf每次只有一位是0
6. STC單片機AD基準電壓問題
這是一種聰明的解決辦法,對於一些不提供基準輸入引腳,只能以電源電壓為基準的CPU。該方法消除了電源電壓帶來的誤差。
具體是在多路AD的某一路連接一個高精度電壓基準(例如1.25V)。測量時,先測量(用AD)該基準,得到該基準電壓的對應測量值。例如0xc8,十進制是200。再去測量被測電壓,比如得到0x190,十進制是400。則實際電壓應該是1.25*400/200=2.5V。
7. STC12C5A60S2單片機的AD能檢測到最小電壓是多少
STC12C5A60S2單片機的AD是十位的,最大數是1023,對應的電壓是最高電壓5V,那每一檔數對應的電壓是5/1023=0.004888V,這就是能檢測到的最小電壓了。
8. 求助stc單片機ad不穩定
這並不是stc單片機ad不穩定。任何一款A/D轉換器晶元工作時都 是一樣的。
在顯示轉換結果時,最低的2位數,或一位數顯示都是不穩定,這是非常正常的事,如果不變化了,反倒是不對了,說明A/D轉換精度低。主要是因為模擬電壓本身不可能是絕對穩定的,導致轉換結果不可能是絕對不變的。加之,轉換精度高,所以,才出現這種情況的。
除去最低2位數,其餘高位顯示應該是穩定的,就行。對於最低位可以忽略,或採用多次轉換,然後計算平均值。
9. STC單片機晶元哪個型號自帶8位AD
STC帶AD的一般都是10位的
比如
stc12c5410AD(28腳)
STC89LE516
AD(40腳)
你可以到
宏晶科技
官方網址看一下
希望對你能有幫助