pic16f883 c语言,PIC16F883和TLC5615(DA)数模转化实验,呼吸灯

今天上课做了数模转换的实验。感觉很好玩,在这里写下。

器材:PIC16F883控制芯片、TLC5615、LED灯一个、电阻一个(1K)、PICkit2下载器

实验说明,本实验采用I/O模拟方法实现数模转换,转换结果输出到LED引脚。LED呈现呼吸似的缓慢闪烁。

实验电路图:

3668855c4875650ae3b0259d90c8ac96.png

RC3连接SCLK、RC5连接Din、RC2连接CS。

输入DA的数字从0加到1024(DA为10位),再从1024减到0。中间最亮的时候做了一点儿延时。

LED灯接一个电阻到地,另一端接DA的模拟输出引脚。

实验中比较重要的时序图:

fa670cf4417e7f8a03e54f70a7e2c7a5.png

根据这个时序图,我周期性的给引脚的电位置1和置0。

代码如下:

#include

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值