導航:首頁 > 操作系統 > 單片機ad採集程序

單片機ad採集程序

發布時間:2024-09-17 03:44:08

1. 單片機AD採集的C程序

AD0809的採集程序
//---A/D轉換---

//-----頭文件引用------
#include <Reg51.h>
#include <absacc.h>
#include <intrins.h>

typedef unsigned char BYTE; /*自定義位元組類型*/
#define Set_Bit(BIT) (BIT = 1) /*定義置1函數*/
#define Clear_Bit(BIT) (BIT = 0) /*定義清0函數*/
/************************************************************************************/
void Write_Hd7279(BYTE,BYTE); /*定義HD7279寫函數*/
BYTE Read_Hd7279(BYTE); /*定義HD7279讀函數*/
void Send_Byte(BYTE); /*定義HD7279發送位元組函數*/
BYTE Receive_Byte(void); /*定義HD7279接收位元組函數*/
void Short_Delay(void); /*定義短延時函數*/
void Long_Delay(void); /*定義長延時函數*/
void Mcu_Init(void); /*定義MCU初始化函數*/
void Delay_200_mS(void); /*定義200ms延時函數*/

sbit Hd7279_Clk=P1^6; /*定義HD7279時鍾硬體連接*/
sbit Hd7279_Data=P1^5; /*定義HD7279數據硬體連接*/
sbit cs=P1^7;
void Short_Delay(void) /*短延時函數*/
{
BYTE i;
for(i=0;i<0x08;i++);
}
/************************************************************************************/
void Long_Delay(void) /*長延時函數*/
{
BYTE i;
for(i=0;i<0x30;i++);
}

/************************************************************************************/
void Write_Hd7279(BYTE Command,BYTE Data) /*HD7279寫函數*/
{
Send_Byte(Command);
Send_Byte(Data);
}
/************************************************************************************/
void Send_Byte(BYTE Data_Out) /*HD7279發送位元組函數*/
{
BYTE i;
cs=0;
Long_Delay();
for(i=0;i<8;i++)
{
if(Data_Out&0x80) Set_Bit(Hd7279_Data);
else Clear_Bit(Hd7279_Data);
Set_Bit(Hd7279_Clk);
Short_Delay();
Clear_Bit(Hd7279_Clk);
Short_Delay();
Data_Out=Data_Out<<1;
}
Clear_Bit(Hd7279_Data);
}

//-----宏聲明-----
#define A_DPORT XBYTE[0xFef3]//0809通道0地址
#define uchar unsigned char

//-----變數定義-----
bit bdata bz=0;//定義標志
uchar val;

//-----初始化-----
void first(void)
{
P1=0xff;
P2=0xff;
P3=0xff;
P0=0xff;
Send_Byte(0xa4);
IT1=1;
EX1=1;
EA=1; //INT0 允許
}

//-----中斷-----
void int_0(void) interrupt 2
{
val=A_DPORT; //讀 A_D 數據
bz=1; //置讀數標志
}

//-----主程序-----
main()
{
first(); //初始化
while(1)
{
A_DPORT=val; //啟動 A_D
while(bz==0); //等待 A_D 轉換結束
// val=~A_DPORT;
//P1=val; //數據輸出

Write_Hd7279(0xc8,val&0x0f);
Write_Hd7279(0xc9,val>>4);
Write_Hd7279(0x92,0x00);
Write_Hd7279(0x93,0x00);
Write_Hd7279(0x94,0x00);
Write_Hd7279(0x95,0x00);
Write_Hd7279(0xce,0x0d);
Write_Hd7279(0xcf,0x0a);
bz=0; //清讀數標志
}
}

這就是C的程序

http://hi..com/dzkfw/blog/item/4a188216fd986b12c83d6d05.html
不平凡的單片機學習資料,很好的單片機教程,超好用,一個不佔內存的教程,有案例。

1、最新版單片機編程寶典下載地址,學習單片機編程必備手冊

2、單片機c語言運用例子

3、十天學會單片機c語言和單片機製作,最好的單片機資料

2. 自帶ad的單片機如何實現ad采樣的

初始化完後,啟動AD轉換就可以進行AD采樣了。

3. 如何用stc單片機內部ad採集多路交流信號

用stc單片機內部ad採集多路交流信號,有兩種辦法:
一、用兩個AD轉換晶元,兩路模擬量分別接一個。用單片機控制兩個AD晶元同時啟動轉換,這樣基本可以實現採集到同一時刻的兩路模擬量值。
二、用兩個采樣保持器(LF398),來暫時保存模擬量的瞬時值。兩個保持器後面接模擬多路轉換器,模擬多路轉換器後面接一個AD轉換器。過程是這樣的:要採集之前先給兩個采樣保持器一個保持信號,緊接著選擇多路開關通道,緊接著啟動AD轉換器。分別選擇多路開關的兩個通道,來取得兩路模擬量的值。因為有采樣保持器的存在,可以保證採集到的模擬量是同一時刻的。
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

4. 單片機A/D采樣

假設一個系統使用12位的ADC,每秒輸出一個溫度值(1Hz)。為了將測量解析度增加到16位,我們按下式計算過采樣頻率:

因此,如果我們以fs=256Hz的采樣頻率對溫度感測器進行過采樣,我們將在所要求的采樣周期內採集到足夠的樣本,對這些樣本求均值便可得到16位的輸出數據。為此,我們先累加(將256個連續樣本加在一起),然後將總和除以16(或將總和右移4位)。這樣的過程通常被稱為抽取。這樣得到的結果是16位的有用數據,所做的操作被稱為累加和抽取。一旦我們計算得到由256個樣本(對本例而言)所產生的結果,我們將對數據進行保存或處理,然後開始為下一個輸出字採集樣本。

註:用於累加過采樣數據和進行除法運算的存儲器單元所佔的位元組數必須足夠多,以免發生溢出或產生截斷錯誤。

5. 單片機的ad采樣電路

A/D轉換,顧名思義要從模擬信號輸入端採集信號(通常為電流),所以要加一個採集電阻,將電流信號轉換成電壓信號,送到單片機或者A/D轉換晶元的輸入口(這兩個器件只識別到電壓信號);至於保持電路就是跟A/D轉換晶元或者單片機的轉換採集頻率有關(它們轉換也需要時間),采樣信號的頻率越高,留給它們數字化處理的時間越短,所以保持電路的作用是將採集回來的信號保持一定時間直到轉換器轉換完成為止..................
第二個問題答案是:在模擬輸入端採集回來的是電壓值的話就可以不用采樣電路了,不過保持電路還是要,另外如果採集回來的電壓值是mV級的,就要另外加放大電路(通常是升壓穩壓電路或者是三極體放大電路),最後送到單片機端或者是AD端

6. 單片機的AD采樣的步驟,求解

設置好外部硬體連接,觸發AD開始轉換,等待AD轉換完畢,AD轉換完畢後讀取數據。

7. 單片機AD采樣如何采樣功率

那就是同時採集電流和電壓信號。然後像一二樓說的那樣根據P=UI計算。需要多個AD輸入。
採集電壓信號很簡單。
採集電流有兩種方法,如果知道電流在一定范圍內,可以用串聯一個阻值較小的電阻,讀它兩端的電壓差,所以最好用如AD0832之類的帶差動輸入的AD晶元讀這個值,然後根據電阻值可計算出流過電阻的電流。第二種采電流方法是用線性霍爾感測器,接一個I/V電路來採集線性霍爾感測器的信號,這個方法用的電流范圍廣一點。

補充:輸出功率也可以像輸入功率那樣計算。最好是用電流互感器或者用霍爾感測器來採集電流。

8. PIC單片機 16F883 AD采樣程序出現錯誤

設置好ADC通道,在啟動ADC轉換之前應該加採用延時。ADGODONE置1後應該會自動清零。但有些有問題的型號(比如有些晶元的早期版本)不會自動清零,需要軟體在延時一段時間之後用軟體去清零。具體你用的這個型號,可以去官網上查一下它的Errata,看看它的早期版本是否有這樣的問題。你的883晶元的正面有一個7位數字加字母的追蹤碼,前四位數字是生產的年份和周數,如果是比較早期的產品,可能是有這個BUG的。

閱讀全文

與單片機ad採集程序相關的資料

熱點內容
科沃斯用了app怎麼使用按鍵 瀏覽:660
爬蟲編譯器價格 瀏覽:883
支付寶視頻app會員自動扣費怎麼關 瀏覽:228
單片機和wifi模塊 瀏覽:722
python倒序二進制代碼 瀏覽:360
廣東程序員離職 瀏覽:583
golang核心編程 瀏覽:168
中小學計演算法則 瀏覽:85
無職轉生哪個app能看 瀏覽:580
夏夢迪在哪個app 瀏覽:107
c編譯軟體cl 瀏覽:933
逗比的程序員頭像 瀏覽:984
單片機原理作業答案 瀏覽:230
文件夾的東西怎麼能轉成文檔 瀏覽:968
linux下解壓iso 瀏覽:463
android常見解析度 瀏覽:386
文件解壓怎麼變成ps 瀏覽:177
python教程django編程 瀏覽:263
程序員放飛自己 瀏覽:395
基建伺服器有什麼用 瀏覽:354