📄 tlc5615.c
字号:
/****************************************************************************/
/* */
/* Copyright (c) 2005, 老树工作室 */
/* All rights reserved. */
/* */
/* Email:laoshu0902@163.com */
/* www.laoshu0902.bokee.com */
/* */
/****************************************************************************/
/****************************************************************************/
/* 文件名:tlc5615.c */
/* 版 本:Version 1.0 */
/* 描 述:10bit串行DA,TLC5615驱动代码 */
/* 作 者:spot */
/* 函 数: */
/* delay */
/* dac_5615 */
/* */
/* 历史记录: */
/* spot 2005-06-25 Creat Inital version. (Version 1.0) */
/****************************************************************************/
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
typedef unsigned char u_char;
typedef unsigned int u_int;
sbit CS = P1^1; /* DA片选信号 */
sbit SCLK = P3^7; /* DA时钟信号 */
sbit DIN = P3^6; /* 数字数据输入 */
sbit FUCT = P3^4;
void delay(u_int us); /* 延时子函数 */
void dac_5615(u_int data_in); /* 写入DAC的10bit输入数据 */
void delay(u_int us)
{
u_char i;
while(us--)
{
for (i=0; i<125; i++);
}
}
/* 写入DAC的10bit输入数据 */
void dac_5615(u_int data_in)
{
u_char i;
data_in <<= 6; /* 精度10位,所以左移6位 */
CS = 0;
SCLK = 0;
for (i=0;i<12;i++) /* 逐位传递12次,由于10位传完需要传送2位0 */
{
DIN = (bit)(data_in&0x8000);
SCLK = 1;
data_in <<= 1;
SCLK = 0;
}
CS = 1;
SCLK = 0;
_nop_();
}
main()
{
u_int i;
while(1)
{
FUCT = 1;
FUCT = 0;
FUCT = 1;
for (i=0; i<0x3ff; i+=4)
{
dac_5615(i);
delay(200);
}
delay(2000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -