TLC5618驱动程序51
时间: 2023-08-23 19:08:09 浏览: 200
TLC5618是一款12位DAC芯片,可以输出模拟电压信号。在51单片机中,可以通过SPI协议与TLC5618进行通信,控制其输出电压。
以下是一个简单的TLC5618驱动程序,使用51的SPI接口与TLC5618进行通信,实现输出一个0~3V的正弦波:
```c
#include <reg52.h>
#define CS P1_4
#define SCLK P1_5
#define DIN P1_6
void sendByte(unsigned char dat)
{
unsigned char i;
for(i=0; i<8; i++)
{
SCLK = 0;
DIN = dat & 0x80;
dat <<= 1;
SCLK = 1;
}
}
void sendCmd(unsigned char cmd)
{
CS = 0;
SCLK = 0;
sendByte(cmd);
SCLK = 0;
CS = 1;
}
void setVoltage(float voltage)
{
unsigned int val = voltage * 4095 / 3.3;
unsigned char hi = val >> 8;
unsigned char lo = val & 0xff;
CS = 0;
SCLK = 0;
sendByte(0x30);
sendByte(hi);
sendByte(lo);
SCLK = 0;
CS = 1;
}
void main()
{
unsigned char i;
unsigned int val;
float voltage;
sendCmd(0x80); // power up
sendCmd(0x90); // internal reference on
sendCmd(0xa0); // output update on
while(1)
{
for(i=0; i<360; i++)
{
voltage = 1.5 + 1.5 * sin(i * 3.14 / 180);
setVoltage(voltage);
for(val=0; val<10000; val++); // delay
}
}
}
```
在此代码中,`sendByte()`函数用于向TLC5618发送一个字节,`sendCmd()`函数用于发送命令,`setVoltage()`函数用于设置输出电压。在`main()`函数中,通过不断更新输出电压,实现了一个正弦波输出的功能。需要注意的是,通过修改`setVoltage()`函数中的计算公式,可以实现输出任意电压。
阅读全文