基於AD轉換模塊的單片機仿真和C語言開發設計

大學做過的一小設計,那會沒事就弄這些AD\DA\MCU以及功能性的IC.

後來一老師要求做的這個,設計一多路數據採集系統,當時資料大多都是0809,0832之類的ADDA,網上找了部分資料。因為手上剛好有幾片TLC2543。後來就用的它,完全滿足題目要求吧。配上PTORUES仿真最後顯示出來了。記得當時給老師看的時候用電阻做的10路模擬數據,然後用螺絲刀旋轉電位器給被人看。

沒有什麼額外特別的功能,相當於做了個AD+顯示,也稱得上是最小的一個系統了。

技術要求:

1、設計一種多路模擬信號採集模塊,從多個通道輪流採集數據一次,並將採集的結果存放在數組中。要求進行電路仿真實驗,並使用C語言進行程序的開發。

簡易框架如下。

基於AD轉換模塊的單片機仿真和C語言開發設計

最後用的PROTUES搭建的電路圖。為了實現高速高精度多路數據採集。新片是需要串行輸入數據的12 位 66kSPS ADC ,可編程 MSB/LSB 優先,可編程斷電/輸出數據長度,11 通道的TLC2543。用的多路電位器模擬多路輸入。軟件分別測量電壓。作為探測點。

基於AD轉換模塊的單片機仿真和C語言開發設計

程序的流程就是利用不斷的循環查找有沒有變化,再顯示。這裡不多說,可以看附件程序。

基於AD轉換模塊的單片機仿真和C語言開發設計

讀取AD程序時序如下(或者見附錄):

/*啟動A/D轉換,並讀取上次轉換結果*/

uint read2543(CHN)

{

uchar i,temp;

uint read_ad_data = 0;

CHN=CHN<<4;

AD_IOCLK=0;

AD_CS=1;

AD_CS=0;

temp=CHN;

for(i=0;i<12;i++)

{

read_ad_data=read_ad_data<<1;

if((temp&0x80)!=0){AD_DATIN=1;}

else{AD_DATIN=0;}

if(AD_DATOUT){read_ad_data=read_ad_data+1;}

AD_IOCLK =1;

_nop_();_nop_();_nop_();_nop_();

AD_IOCLK =0;

_nop_();_nop_();_nop_();_nop_();

temp=temp<<1;

}

AD_CS=1;

read_ad_data=read_ad_data&0x0fff;

return(read_ad_data);

}


分享到:


相關文章: