TLC5620 51单片机 c语言 测试通过
#include
#include
#define uchar unsigned char
//定义I/O端口
sbit CLK=P3^0; //串行数据
sbit DAT=P3^1; //串行时钟,下降沿有效 sbit LOAD=P3^2; //串行数据装载,下降沿有效 sbit LDAC =P3^3; //DAC更新锁存控制,下降沿有效 /*******************************************************************************
*******************
函数:Dac()
功能:发送数据至TLC5620串行DAC
参数:
addr:DAC通道地址,取值0,3,对应通道A,D
rng:附加的范围位,rng=0时,Vo不会超过Vref,rng=1时,Vo变为2倍
dat:8位DAC数据
公式:
rng=0时,Vo=Vref*(dat/256)
rng=1时,Vo=Vref*(dat/256)*2 ********************************************************************************
****************** / void Dac(unsigned char addr, bit rng, unsigned char dat)
{
unsigned char n; //发送通道地址
n = 2;
do
{
DAT = (bit)(addr & 0x02);
addr <<= 1;
CLK = 0;
CLK = 1;
} while ( --n != 0 ); //发送RNG位
DAT = rng;
CLK = 0;
CLK = 1;
//发送8位DAC数据
n = 8;
do
{
DAT = (bit)(dat & 0x80);
dat <<= 1;
CLK = 0;
CLK = 1;
} while ( --n != 0 );
//装载数据
LOAD = 0;
LOAD = 1;
//数据锁存到DAC转换器
LDAC = 0;
LDAC = 1;
}
/*
函数:Delay()
功能:延时1ms,256ms
参数:
t>0时,延时(t)ms
t=0时,延时256ms
*/
void delayms(uchar ms) {
uchar i;
while(ms--)
{
for(i=0;i<250;i++)
_nop_();
_nop_();
_nop_();
_nop_();
}
}
/*
函数:SinWave()
功能:利用TLC5620串行DAC在通道B产生正弦波 说明:请用示波器观察SmartSOPC实验箱D5区的DACB通道
*/
void SinWave()
{
code unsigned char SinTab[] =
{
128,147,167,185,202,218,231,241,249,253,
255,253,249,241,231,218,202,185,167,147,
127,108,88,70,53,37,24,14,6,2,
0,2,6,14,24,37,53,70,88,108 //数字设置多少,可调节正弦波
平滑度
};
unsigned char n;
while(1)
{
for ( n=0; n<40; n++ )
{
Dac(1,0,SinTab[n]);
delayms( ); //调节正弦
}
}
}
void Init_TLC5620() //初始化TLC5620 {
DAT = 1;
CLK = 1;
LDAC = 1;
LOAD = 1;
}
void main()
{
Init_TLC5620();
SinWave();
}
本文档为【TLC5620 51单片机 c语言 测试通过】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。