📄 tlc5615.c
字号:
/*******************************************************************************
* 标题: 蓝海微芯LJD-SY-5200单片机开发系统演示程序 *
* 文件: TLC5615.C *
* 日期: 2006-8-11 *
* 版本: 1.0 *
* 作者: 蓝海微芯 *
* 网站: http://www.ljd-2008.com *
********************************************************************************
* 描述: *
* D/A TLC5615转换程序 *
* *
* *
********************************************************************************
* 【版权】 Copyright(C)微芯科技 http://www.bluemcu.com All Rights Reserved *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
*******************************************************************************/
#include<reg51.h>
#include <absacc.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit CS = P1^7; /* DA片选信号 */
sbit SCLK = P1^6; /* DA时钟信号 */
sbit DIN = P1^5; /* 数字数据输入 */
void delay(uint us); /* 延时子函数 */
void dac_5615(uint data_in); /* 写入DAC的10bit输入数据 */
void delay(uint us)
{
uchar i;
while(us--)
{
for (i=0; i<125; i++);
}
}
/********************************************************************
函 数 名:dac_5615()
功 能:写入DAC的10bit输入数据
说 明:
调 用:
入口参数:
出口参数:
***********************************************************************/
void dac_5615(uint data_in)
{
uchar 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()
{
uint i;
while(1)
{
for (i=0; i<0x3ff; i+=40)
{
dac_5615(i);
LCD_write_char(1,0,ASCII[dispbuf[i]&0xf]);
LCD_write_char(1,1,ASCII[dispbuf[i]>>4&0xf]);
LCD_write_char(1,2,ASCII[dispbuf[i]>>4&0xf]);
LCD_write_char(1,3,ASCII[dispbuf[i]>>4&0xf]);
delay(50);
}
delay(2000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -