今天上課作了數模轉換的實驗。感受很好玩,在這裏寫下。 ui
器材:PIC16F883控制芯片、TLC561五、LED燈一個、電阻一個(1K)、PICkit2下載器 spa
實驗說明,本實驗採用I/O模擬方法實現數模轉換,轉換結果輸出到LED引腳。LED呈現呼吸似的緩慢閃爍。 code
實驗電路圖: it
RC3鏈接SCLK、RC5鏈接Din、RC2鏈接CS。 class
輸入DA的數字從0加到1024(DA爲10位),再從1024減到0。中間最亮的時候作了一點兒延時。 下載
LED燈接一個電阻到地,另外一端接DA的模擬輸出引腳。 方法
實驗中比較重要的時序圖: im
根據這個時序圖,我週期性的給引腳的電位置1和置0。 數據
代碼以下: img
#include<htc.h> #define uchar unsigned char #define uint unsigned int #define CLK RC3 #define DATA_IN RC5 #define CS RC2 void delay(uint x) { uint a,b; while(x--) { b = 0x00ff; while(b--) { a = 0x00ff; while(a--); } } } void main() { uint i,temp,k=0,kp; TRISC=0x00; void delay(uint x); while(1) { i = 12; CS = 0; CLK = 0; kp = k; kp<<=4; while(i--) { temp=kp&0x8000; if(temp!=0) { DATA_IN = 1; } else { DATA_IN = 0; } CLK = 1; kp<< = 1; CLK = 0; } CS = 1; CLK = 0; k++; if(k==0x0fff) { delay(1); while(k--) { i = 12; CS = 0; CLK = 0; kp = k; kp<<=4; while(i--) { temp = kp&0x8000; if(temp!=0) { DATA_IN = 1; } else { DATA_IN = 0; } CLK = 1; kp<< = 1; CLK = 0; } CS = 1; CLK = 0; } k = 0; } } }
能夠在每完成一個數據的輸入後嘴一個延時來減慢LED燈的亮滅速度。看起來就是呼吸的效果。
若是有任何問題,請您跟我聯繫!感謝您的光臨!