📄 tlc5620.c
字号:
//本文件为TLC5620 8位串行DA转换的程序模块,实现DA转换,调节声音的大小输出
//提供 TLC5620(vol) 声音转换接口
/*
存在问题:
1、程序中_nop_()会不会少点???,程序中没有LDAC的操作,
根据电路图,第一次的转换能进行吗?
2、这个函数要在程序中不断的运行
3.查看PCB图,看原理图跟PCB图是不是一样的!!!????????????
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit DATA=P1^2; //数据串行输入端
sbit CLK=P1^1; //串行输入时钟
sbit LOAD=P1^0; //数据进入第一级锁存控制位
void TLC5620(float vol) //vol数值范围:0----99
{
float volval;
uchar i;
uchar vollast; //定义此变量以取0---255的百分比
LOAD=1;
CLK=1;
DATA=0;
_nop_();
CLK=0; //下降沿送入第一个数A1
_nop_(); //
CLK=1;
DATA=0;
_nop_();
CLK=0; //下降沿送入第二个数A0
_nop_(); //
CLK=1;
DATA=0; //RNG=1使输出位两倍参考输入的输出
_nop_();
CLK=0; //下降沿送入第三个数RNG
_nop_(); //
volval=vol; //
vollast=(volval/100)*255; //
for(i=0;i<8;i++) //循环送入8位数字码,从高位开始送入
{
CLK=1;
DATA=vollast&0x80;
vollast=vollast<<1;
_nop_(); //加吗????????????
CLK=0;
_nop_(); //
}
_nop_(); //
LOAD=0; //开始转换。
_nop_();
_nop_();
LOAD=1; //
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -