PIC16F883和TLC5615(DA)數模轉化實驗,呼吸燈

今天上課作了數模轉換的實驗。感受很好玩,在這裏寫下。 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燈的亮滅速度。看起來就是呼吸的效果。

若是有任何問題,請您跟我聯繫!感謝您的光臨!

相關文章
相關標籤/搜索