tlc6983例程 keil5
时间: 2023-09-24 11:05:37 浏览: 76
以下是使用Keil5编写的TLC6983例程:
```c
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit SCK=P3^4; //模拟SPI接口
sbit SDI=P3^5;
sbit CS=P3^6;
uchar code TLV[] = {0x80,0x01,0x00,0x00,0x00,0x00,0x00}; //TLV命令
void Delay1ms(uint cnt) //延时函数
{
uint i;
while(cnt--)
{
for(i=0;i<120;i++);
}
}
void SendByte(uchar dat) //模拟SPI发送一个字节
{
uchar i;
for(i=0;i<8;i++)
{
SCK=0;
SDI=dat&0x80;
dat<<=1;
SCK=1;
}
}
void WriteTLC(uchar reg,uchar dat) //写TLC6983寄存器
{
CS=0;
SendByte(reg);
SendByte(dat);
CS=1;
}
void InitTLC() //TLC6983初始化函数
{
WriteTLC(0x01,0x00); //软件复位
Delay1ms(10);
WriteTLC(0x01,0x01); //使能输出
WriteTLC(0x02,0x00); //设置MCLK时钟分频系数为1
WriteTLC(0x03,0x0A); //设置PWM分辨率为10bit
WriteTLC(0x04,0x08); //设置时钟分频系数为8
WriteTLC(0x05,0x00); //设置时钟频率为50Hz
}
void main()
{
uchar i;
InitTLC(); //初始化TLC6983
while(1)
{
for(i=0;i<7;i++) //循环发送TLV命令
{
WriteTLC(0x10+i,TLV[i]);
}
Delay1ms(1000); //延时1s
}
}
```
该例程主要是通过模拟SPI接口来与TLC6983进行通讯,实现对TLC6983的控制。其中,使用了TLC6983的软件复位、使能输出、设置MCLK时钟分频系数、设置PWM分辨率、设置时钟分频系数和设置时钟频率等寄存器。在主函数中,通过循环发送TLV命令来控制TLC6983的输出。
阅读全文