大學做過的一小設計,那會沒事就弄這些AD\DA\MCU以及功能性的IC.
後來一老師要求做的這個,設計一多路數據採集系統,當時資料大多都是0809,0832之類的ADDA,網上找了部分資料。因為手上剛好有幾片TLC2543。後來就用的它,完全滿足題目要求吧。配上PTORUES仿真最後顯示出來了。記得當時給老師看的時候用電阻做的10路模擬數據,然後用螺絲刀旋轉電位器給被人看。
沒有什麼額外特別的功能,相當於做了個AD+顯示,也稱得上是最小的一個系統了。
技術要求:
1、設計一種多路模擬信號採集模塊,從多個通道輪流採集數據一次,並將採集的結果存放在數組中。要求進行電路仿真實驗,並使用C語言進行程序的開發。
簡易框架如下。
最後用的PROTUES搭建的電路圖。為了實現高速高精度多路數據採集。新片是需要串行輸入數據的12 位 66kSPS ADC ,可編程 MSB/LSB 優先,可編程斷電/輸出數據長度,11 通道的TLC2543。用的多路電位器模擬多路輸入。軟件分別測量電壓。作為探測點。
程序的流程就是利用不斷的循環查找有沒有變化,再顯示。這裡不多說,可以看附件程序。
讀取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);
}
閱讀更多 玩轉電子技術設計 的文章