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灯的亮灭速度。看起来就是呼吸的效果。

若是有任何问题,请您跟我联系!感谢您的光临!

相关文章
相关标签/搜索