【Proteus仿真】TLC5615输出1024点正弦波(振幅可调)

【Proteus仿真】TLC5615输出1024点正弦波(振幅可调)


  • Proteus仿真
    在这里插入图片描述
    在这里插入图片描述

通过可调电阻,调节参考引脚输入的电压值,从而改变输出振幅

相关工具

  • 正弦波数据生成器(最大4096点),使用该工具最好去8位精度的,不然在仿真的时候,在调节到高于2.5V电压时,正弦波正半周期峰值会被削掉的情况

该工具和程序资源和仿真文件打包在一个文件夹里面。

在这里插入图片描述

程序代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

TLC5615输出1024点正弦波
【注意事项】
2.TLC5615 DA模块本身必须使用5V电源,控制信号可以接受3.3V或者5V。
【IO配置】
DIN ---> P1.0
SCLK ---> P1.1
CS ---> P1.2
Dout ---> 空,未定义
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
#include<reg52.h> //包含51单片机寄存器定义的头文件
#include<intrins.h> //包含nop函数的头文件
#define uchar unsigned char //宏定义
#define uint unsigned int //宏定义
sbit DIN =P1^0; //IO定义
sbit SCLK =P1^1;
sbit CS =P1^2;

uint code sin1[1024]= //1024点12位数据的正弦波表
{
0x1FF,0x202,0x205,0x208,0x20C,0x20F,0x212,0x215,0x218,0x21B,0x21E,0x221,0x225,0x228,0x22B,0x22E
,0x231,0x234,0x237,0x23A,0x23E,0x241,0x244,0x247,0x24A,0x24D,0x250,0x253,0x256,0x25A,0x25D,0x260
,0x263,0x266,0x269,0x26C,0x26F,0x272,0x275,0x278,0x27B,0x27E,0x281,0x284,0x287,0x28A,0x28D,0x290
,0x293,0x296,0x299,0x29C,0x29F,0x2A2,0x2A5,0x2A8,0x2AB,0x2AE,0x2B1,0x2B4,0x2B7,0x2BA,0x2BD,0x2C0
,0x2C3,0x2C6,0x2C9,0x2CB,0x2CE,0x2D1,0x2D4,0x2D7,0x2DA,0x2DD,0x2DF,0x2E2,0x2E5,0x2E8,0x2EB,0x2ED
,0x2F0,0x2F3,0x2F6,0x2F8,0x2FB,0x2FE,0x301,0x303,0x306,0x309,0x30B,0x30E,0x311,0x313,0x316,0x319
,0x31B,0x31E,0x320,0x323,0x326,0x328,0x32B,0x32D,0x330,0x332,0x335,0x337,0x33A,0x33C,0x33F,0x341
,0x343,0x346,0x348,0x34B,0x34D,0x34F,0x352,0x354,0x357,0x359,0x35B,0x35D,0x360,0x362,0x364,0x366
,0x369,0x36B,0x36D,0x36F,0x371,0x374,0x376,0x378,0x37A,0x37C,0x37E,0x380,0x382,0x384,0x386,0x388
,0x38A,0x38C,0x38E,0x390,0x392,0x394,0x396,0x398,0x39A,0x39C,0x39E,0x39F,0x3A1,0x3A3,0x3A5,0x3A7
,0x3A8,0x3AA,0x3AC,0x3AD,0x3AF,0x3B1,0x3B2,0x3B4,0x3B6,0x3B7,0x3B9,0x3BA,0x3BC,0x3BE,0x3BF,0x3C1
,0x3C2,0x3C4,0x3C5,0x3C6,0x3C8,0x3C9,0x3CB,0x3CC,0x3CD,0x3CF,0x3D0,0x3D1,0x3D3,0x3D4,0x3D5,0x3D6
,0x3D8,0x3D9,0x3DA,0x3DB,0x3DC,0x3DD,0x3DE,0x3E0,0x3E1,0x3E2,0x3E3,0x3E4,0x3E5,0x3E6,0x3E7,0x3E8
,0x3E8,0x3E9,0x3EA,0x3EB,0x3EC,0x3ED,0x3EE,0x3EE,0x3EF,0x3F0,0x3F1,0x3F1,0x3F2,0x3F3,0x3F3,0x3F4
,0x3F5,0x3F5,0x3F6,0x3F6,0x3F7,0x3F7,0x3F8,0x3F8,0x3F9,0x3F9,0x3FA,0x3FA,0x3FB,0x3FB,0x3FB,0x3FC
,0x3FC,0x3FC,0x3FD,0x3FD,0x3FD,0x3FD,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE
,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FD,0x3FD,0x3FD,0x3FD,0x3FC
,0x3FC,0x3FC,0x3FB,0x3FB,0x3FB,0x3FA,0x3FA,0x3F9,0x3F9,0x3F8,0x3F8,0x3F7,0x3F7,0x3F6,0x3F6,0x3F5
,0x3F5,0x3F4,0x3F3,0x3F3,0x3F2,0x3F1,0x3F1,0x3F0,0x3EF,0x3EE,0x3EE,0x3ED,0x3EC,0x3EB,0x3EA,0x3E9
,0x3E8,0x3E8,0x3E7,0x3E6,0x3E5,0x3E4,0x3E3,0x3E2,0x3E1,0x3E0,0x3DE,0x3DD,0x3DC,0x3DB,0x3DA,0x3D9
,0x3D8,0x3D6,0x3D5,0x3D4,0x3D3,0x3D1,0x3D0,0x3CF,0x3CD,0x3CC,0x3CB,0x3C9,0x3C8,0x3C6,0x3C5,0x3C4
,0x3C2,0x3C1,0x3BF,0x3BE,0x3BC,0x3BA,0x3B9,0x3B7,0x3B6,0x3B4,0x3B2,0x3B1,0x3AF,0x3AD,0x3AC,0x3AA
,0x3A8,0x3A7,0x3A5,0x3A3,0x3A1,0x39F,0x39E,0x39C,0x39A,0x398,0x396,0x394,0x392,0x390,0x38E,0x38C
,0x38A,0x388,0x386,0x384,0x382,0x380,0x37E,0x37C,0x37A,0x378,0x376,0x374,0x371,0x36F,0x36D,0x36B
,0x369,0x366,0x364,0x362,0x360,0x35D,0x35B,0x359,0x357,0x354,0x352,0x34F,0x34D,0x34B,0x348,0x346
,0x343,0x341,0x33F,0x33C,0x33A,0x337,0x335,0x332,0x330,0x32D,0x32B,0x328,0x326,0x323,0x320,0x31E
,0x31B,0x319,0x316,0x313,0x311,0x30E,0x30B,0x309,0x306,0x303,0x301,0x2FE,0x2FB,0x2F8,0x2F6,0x2F3
,0x2F0,0x2ED,0x2EB,0x2E8,0x2E5,0x2E2,0x2DF,0x2DD,0x2DA,0x2D7,0x2D4,0x2D1,0x2CE,0x2CB,0x2C9,0x2C6
,0x2C3,0x2C0,0x2BD,0x2BA,0x2B7,0x2B4,0x2B1,0x2AE,0x2AB,0x2A8,0x2A5,0x2A2,0x29F,0x29C,0x299,0x296
,0x293,0x290,0x28D,0x28A,0x287,0x284,0x281,0x27E,0x27B,0x278,0x275,0x272,0x26F,0x26C,0x269,0x266
,0x263,0x260,0x25D,0x25A,0x256,0x253,0x250,0x24D,0x24A,0x247,0x244,0x241,0x23E,0x23A,0x237,0x234
,0x231,0x22E,0x22B,0x228,0x225,0x221,0x21E,0x21B,0x218,0x215,0x212,0x20F,0x20C,0x208,0x205,0x202
,0x1FF,0x1FC,0x1F9,0x1F6,0x1F2,0x1EF,0x1EC,0x1E9,0x1E6,0x1E3,0x1E0,0x1DC,0x1D9,0x1D6,0x1D3,0x1D0
,0x1CD,0x1CA,0x1C7,0x1C3,0x1C0,0x1BD,0x1BA,0x1B7,0x1B4,0x1B1,0x1AE,0x1AB,0x1A8,0x1A4,0x1A1,0x19E
,0x19B,0x198,0x195,0x192,0x18F,0x18C,0x189,0x186,0x183,0x180,0x17D,0x17A,0x177,0x174,0x171,0x16E
,0x16B,0x168,0x165,0x162,0x15F,0x15C,0x159,0x156,0x153,0x150,0x14D,0x14A,0x147,0x144,0x141,0x13E
,0x13B,0x138,0x135,0x133,0x130,0x12D,0x12A,0x127,0x124,0x121,0x11F,0x11C,0x119,0x116,0x113,0x111
,0x10E,0x10B,0x108,0x106,0x103,0x100,0x0FD,0x0FB,0x0F8,0x0F5,0x0F3,0x0F0,0x0ED,0x0EB,0x0E8,0x0E5
,0x0E3,0x0E0,0x0DE,0x0DB,0x0D8,0x0D6,0x0D3,0x0D1,0x0CE,0x0CC,0x0C9,0x0C7,0x0C4,0x0C2,0x0BF,0x0BD
,0x0BB,0x0B8,0x0B6,0x0B3,0x0B1,0x0AF,0x0AC,0x0AA,0x0A7,0x0A5,0x0A3,0x0A1,0x09E,0x09C,0x09A,0x098
,0x095,0x093,0x091,0x08F,0x08D,0x08A,0x088,0x086,0x084,0x082,0x080,0x07E,0x07C,0x07A,0x078,0x076
,0x074,0x072,0x070,0x06E,0x06C,0x06A,0x068,0x066,0x064,0x062,0x060,0x05F,0x05D,0x05B,0x059,0x057
,0x056,0x054,0x052,0x051,0x04F,0x04D,0x04C,0x04A,0x048,0x047,0x045,0x044,0x042,0x040,0x03F,0x03D
,0x03C,0x03A,0x039,0x038,0x036,0x035,0x033,0x032,0x031,0x02F,0x02E,0x02D,0x02B,0x02A,0x029,0x028
,0x026,0x025,0x024,0x023,0x022,0x021,0x020,0x01E,0x01D,0x01C,0x01B,0x01A,0x019,0x018,0x017,0x016
,0x016,0x015,0x014,0x013,0x012,0x011,0x010,0x010,0x00F,0x00E,0x00D,0x00D,0x00C,0x00B,0x00B,0x00A
,0x009,0x009,0x008,0x008,0x007,0x007,0x006,0x006,0x005,0x005,0x004,0x004,0x003,0x003,0x003,0x002
,0x002,0x002,0x001,0x001,0x001,0x001,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000
,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x001,0x001,0x001,0x001,0x002
,0x002,0x002,0x003,0x003,0x003,0x004,0x004,0x005,0x005,0x006,0x006,0x007,0x007,0x008,0x008,0x009
,0x009,0x00A,0x00B,0x00B,0x00C,0x00D,0x00D,0x00E,0x00F,0x010,0x010,0x011,0x012,0x013,0x014,0x015
,0x016,0x016,0x017,0x018,0x019,0x01A,0x01B,0x01C,0x01D,0x01E,0x020,0x021,0x022,0x023,0x024,0x025
,0x026,0x028,0x029,0x02A,0x02B,0x02D,0x02E,0x02F,0x031,0x032,0x033,0x035,0x036,0x038,0x039,0x03A
,0x03C,0x03D,0x03F,0x040,0x042,0x044,0x045,0x047,0x048,0x04A,0x04C,0x04D,0x04F,0x051,0x052,0x054
,0x056,0x057,0x059,0x05B,0x05D,0x05F,0x060,0x062,0x064,0x066,0x068,0x06A,0x06C,0x06E,0x070,0x072
,0x074,0x076,0x078,0x07A,0x07C,0x07E,0x080,0x082,0x084,0x086,0x088,0x08A,0x08D,0x08F,0x091,0x093
,0x095,0x098,0x09A,0x09C,0x09E,0x0A1,0x0A3,0x0A5,0x0A8,0x0AA,0x0AC,0x0AF,0x0B1,0x0B3,0x0B6,0x0B8
,0x0BB,0x0BD,0x0BF,0x0C2,0x0C4,0x0C7,0x0C9,0x0CC,0x0CE,0x0D1,0x0D3,0x0D6,0x0D8,0x0DB,0x0DE,0x0E0
,0x0E3,0x0E5,0x0E8,0x0EB,0x0ED,0x0F0,0x0F3,0x0F5,0x0F8,0x0FB,0x0FD,0x100,0x103,0x106,0x108,0x10B
,0x10E,0x111,0x113,0x116,0x119,0x11C,0x11F,0x121,0x124,0x127,0x12A,0x12D,0x130,0x133,0x135,0x138
,0x13B,0x13E,0x141,0x144,0x147,0x14A,0x14D,0x150,0x153,0x156,0x159,0x15C,0x15F,0x162,0x165,0x168
,0x16B,0x16E,0x171,0x174,0x177,0x17A,0x17D,0x180,0x183,0x186,0x189,0x18C,0x18F,0x192,0x195,0x198
,0x19B,0x19E,0x1A1,0x1A4,0x1A8,0x1AB,0x1AE,0x1B1,0x1B4,0x1B7,0x1BA,0x1BD,0x1C0,0x1C4,0x1C7,0x1CA
,0x1CD,0x1D0,0x1D3,0x1D6,0x1D9,0x1DD,0x1E0,0x1E3,0x1E6,0x1E9,0x1EC,0x1EF,0x1F2,0x1F6,0x1F9,0x1FC};
void delay\_us(unsigned char n) //us级延时函数
{
unsigned char i;
for(i=0;i<n;i++);
}
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1.sclk的上升沿数据进入输入寄存器
2.在sclk为低的时候,CS的上升沿数据开始DA转化
3.连续输入12位数据,高位在前,其中前10位有效,后两位补0
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
void output(uint DA_Value) //TLC5615驱动函数
{
unsigned char i;
DA_Value=DA_Value<<6; //将DA\_Value左移6位,即nnnn nnnn nnnn变为nnnn nnnn nn00 0000

SCLK=0; //为低,准备输入数据
CS=0; //片选
for(i=12;i>0;i--) //从高位开始,连续取出12位数据,
{
if(DA_Value&0x8000) //和1000 0000 0000 0000 求与,获取最高位的值。
DIN=1;
else
DIN=0;
SCLK=1; //上升沿,进入输入寄存器
SCLK=0; //准备下一次输入
DA_Value=DA_Value<<1; //左移1位,准备输入下一位数据
}
CS=1; //在sclk为低的时候,CS上升沿,数据开始DA转化
}
void main()
{
uint i;
while(1)
{
i=0;
for(i=0;i<1023;i++) //连续取出1024点正弦数据
output(sin1[i]); //输出正弦波

}
}



仿真资源和源码

1
2
3
链接:https://pan.baidu.com/s/1CjJ88b5ax5d9ScD6TNoysw 
提取码:0iij