TLC5615学习笔记

合集下载

基于tlc549和tlc5615模数数模转换讲解

基于tlc549和tlc5615模数数模转换讲解

任务书1、查阅资料,熟悉硬件和软件;(所使用硬件芯片型号,所使用软件编辑环境)2、掌握TLC549芯片和TLC5615芯片的特性,引脚功能。

3、确定详细软件设计方案,画程序流程图4、根据TLC549的时序图,使用汇编语言/C语言编写单片机STC89C52与TLC549的软件通信程序代码。

实现模/数转换功能。

5、根据TLC5615的时序图,使用汇编语言/C语言编写单片机STC89C52与TLC5615的软件通信程序代码。

实现数/模转换功能。

6、整合模数、数模转换代码,实现信号发生器在MAX1247输入端输入正弦波(频率不限),示波器在TLC5615输出端测量到同样的正弦波,记录输出波形。

7 .撰写课程设计报告。

目录1、绪论 (XX)2、方案论证(规划、选定) (XX)3、方案说明(设计)XX (XX)4、硬件方案设计 (XX)5、软件方案设计 (XX)6、调试 (XX)6、技术小结(结束语) (XX)8、参考文献 (XX)9、附录(源程序代码、电路图等) (XX)1.绪论本实验主要是基于单片机微型控制器的控制,实现将模拟信号转换成数字信号的一个简单实验。

通过这个实验,可以为广大研究人员提供一个比较系统的模数数模转换基础资料,以便于将模拟信号转换为数字信号或将数字信号转换成模拟信号。

2.方案论证2.1.试验原理本实验主要是通过单片机stc89c52芯片控制模数转换芯片tlc549将所给模拟信号转换成数字信号,然后将数字信号读进数模转换芯片tlc5615,从输出端口将转换后的信号输出来。

可用图1简洁明了地表现出来:2.2模/数转换器(1)模/数转换器的作用TLC549是一种高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,本实验通过用该芯片采集模拟量,然后将采集到的模拟量转换为数字量后送至单片机。

(2)芯片特性;TLC549芯片, 可与通用微处理器、控制器通过I/ O CLOCK、CS、DATA OU T 三条口线进行串行接口。

DA_tlc5615

DA_tlc5615

实验X、DA转换TLC5615X.1.TLC5615概览TLC5615是美国德州仪器出品的一款10位DA转换芯片。

基本电气特征如下:1)8脚封装的10路CMOS DA转换2)5V单电源供电3)3线串行控制(CS、SCLK、DIN)4)高阻抗输入(10M欧)5)输出电压范围为输入电压范围的两倍6)内部供电复位(确保重复开启下的正常供电)7)低功耗,最大功耗仅1.75mW8)输出更新频率可达1.21MHz9)一次转换的典型时间(精确到0.5LSB)为12.5us10)有单调性温漂,工作温度范围为0~70℃/40~85℃基本封装形式为8脚DIP或SOIC,引脚布局如下图所示:引脚功能表如下:NAME NO I/O DESCRIPTIONDIN 1 I 串行数据输入SCLK 2 I 串行时钟输入CS 3 I 片选信号,低有效DOUT 4 O 串行数据输出(菊花链方式)AGND 5 模拟地REFIN 6 I 参考输入OUT 7 O 模拟输出VDD 8 电源开发板中TLC5615的接入电路如下:其中,3路控制信号接到D2~4脚(P0_2~P0_4)。

在工程源文件中定义如下:X.2 TLC5615的使用TLC5615的操作时序图如下:下面我们来结合源代码分析对TLC5615的操作过程:void da_5615_conv(unsigned int da_data) #define tlc5615_clk P0_2 /*时钟信号输入 */#define tlc5615_din P0_3 /*串行数字信号 */#define tlc5615_cs P0_4 /*片选信号 */{unsigned char i;da_data <<= 6; //移除高6位,int型数据有16位,该DA是10位tlc5615_clk = 0; //在片选有效前,时钟信号要为低tlc5615_cs = 0; //片选有效for(i = 0;i < 12;i++ ) //每次转换需要10个时钟下降沿?{if((da_data&0x8000)!=0) //取最高位数据,模拟串行数据tlc5615_din=1;else tlc5615_din=0; //数据在时钟上升沿到来前准备好tlc5615_clk = 1; //da_data=(da_data<<1); //数据左移,为下一次取数据做准备tlc5615_clk = 0;}tlc5615_cs = 1; //片选失效}。

TLC5615调试笔记

TLC5615调试笔记

调试笔记:
1、TLC5615转换精度10bit,转换后输出为电压,最大输出电压为VDD-0.4V,逻辑电压输入5V(+-5%),若采用5V的逻辑电平,其最大输入电压为4.6V,故参考电压Vref输入必须在0~2.3V范围之内,本仿真实验中取Vref=2.048V;
2、输出电压计算式:
3、TLC5615面向CPU的接口采用SPI串行传输,其最大传输速度为1.21Mhz,DA转换时间为12.5us,故一次写入数据(CS引脚从低电平至高电平跳跃)后,必须延时15us左右才可第二次刷入数据再次启动DA转换,参见
TLC5615-DATASHEET:
....which is a 1.21 MHz update rate. However, the DAC settling time to 10 bits of 12.5 us
limits the update rate to 80 kHz for full-scale input step transitions.
4、DOUT引脚作为MISO引脚或者多个TLC5615级联的串行数据输出;
5、写入转换数据可为12bits格式或者16bits格式(当级联输出时),数据传输高位先发:
6、写时序与SPI兼容;。

TLC5615

TLC5615
MOV DISDIG,A;
INC DISBUF;
MOV A,DISBUF;
CJNE A,#33H,EXITDISPLAY;
MOV DISBUF,#30H;
LCALL TLC5615
LCALL DELAY;
MOV A,41H;
CJNE A,#00H,Q01;
LJMP Q00;
;P0---数码管段,P2---数码管位 P1.1-sclk,P1.2---DIN,P1.0---CS
DISBUF EQU 2FH;
DISDIG EQU 2EH;
ORG 0000H;
MOV TL0,#17H;
SETB EA;
SETB ET0;
SETB TR0;
Q00: INC 41H; /41H表示传送高8位,40H(最低两位为00)低4位; 传送数年据增加
MOV DPTR,#DIS_CODE;
MOV TH0,#0FCH;
MOV TL0,#017H;
MOV P2,#0FFH; 先关闭所有数码管
MOV R0,DISBUF;
MOV A,@R0;
MOVC A,@A+DPTR;
MOV P0,A;
MOV A,DISDIG;
MOV P2,A;
SETB C;
RL A
LCALL TLC5615
LCALL DELAY;
MOV A,41H;
CJNE A,#0FFH,Q00;
Q01: DEC 41H; /传送数据减小
DJNZ R2,LOOPA ;循环送数
RET ;返回
DELAY: MOV 2AH,#0FFH;

TLC5615中文资料_数据手册_参数

TLC5615中文资料_数据手册_参数

DESCRIPTION
The TLC5615 is a 10-bit voltage output digital-to-analog converter (DAC) with a buffered reference input (high impedance). The DAC has an output voltage range that is two times the reference voltage, and the DAC is monotonic. The device is simple to use, running from a single supply of 5V. A power-on-reset function is incorporated to ensure repeatable start-up conditions.
O
Serial data output for daisy chaining
Analog ground
I
Reference input
O
DAC analog voltage output
Positive power supply
PACKAGE/ORDERING INFORMATION
For the most current package and ordering information, see the Package Option Addendum at the end of this document, or see the TI website at .
Operating free-air temperature range, TA
TLC5615C TLC5615I

项目九、温度控制-课题4

项目九、温度控制-课题4

SETB CS CLR TI SJMP $ END (2)调节加在基准电压REFIN引脚的电压为1.0V,在 (R6R7)中置数,然后连续运行,用数字万用表测量 TLC5615电压输出引脚OUT端电压,验证转换结果的正确 性。多修改几次(R6R7)的数据、验证;修改基准电压再 进行验证。
谢 谢!
XCH RLC XCH RLC XCH RLC CLR CLR MOV JNB CLR XCH MOV JNB
A,B A A,B A A,B A CS CLK SBUF,A TI,$ TI A,B SBUF,A TI,$
;选中TLC5615 ;先发送高8位 ;等待数据传送结束 ;清除传送完标志 ;传送低8位
能力目标
课题1 课题2 课题3 课题4 A-D转换接口技术 ADC0809的应用技术 D-A转换接口技术 TLC5615的应用技术
实战演练
1.通过对炉温的采集,与预设值相比较。 对偏差值处理获得控制信号去调节电阻炉的加热 功率,以实现对炉温的控制。应用到A/D转换采 集温度,D/A转换对电炉丝进行控制,从而实现 温度的调节。 2.通过该项目的训练,提高学生的实际动 手操作能力,养成学生的工程道德观念,建立工 程敬业精神和团队合作精神。
LCALL SETB SJMP TRN: RLC MOV CLR NOP SETB DJNZ END
TRN CS $ A DIO,C CLK
;片选结束 ;要发送的位→C ; C→DIO ;输出一个高电平脉冲
CLK BIT_CNT,TRN;判断是否发送结束
三、程序2 采用16位数据格式
通讯形式采用单片机串行协议方式0。待进行D/A转换的 数据在(R6R7)中,(R6)为高2位,(R7)为低8位。 ORG 0000H LJMP MAIN DIO BIT P3.0 ;数据线 CLK BIT P3.1 ;时钟线 CS BIT P2.7 ;片选线 ORG 0030H MAIN:MOV SCON,#00010000B ;方式0,禁止接收 MOV A,R7 ;取低位 MOV B,#0 CLR C RLC A ;数据格式调整

DAC之TLC5615

DAC之TLC5615

DAC之TLC5615 TLC5615是⼀款10位的DAC,采⽤三线SPI驱动⽅式,本⽂将介绍TLC5615的电路设计以及驱动程序编写。

如下图所⽰,TLC5615与MCU的接⼝为DIN、SCLK和CS,其中CS为芯⽚⽚选端,也可直接接低电平;DOUT端⽤于级联输出,不做介绍。

TLC5615的输出电压为0V—2*Vref,以上图为例,基准电压源REF3020的电压为2.048V,则TLC5615的输出电压范围为0V—4.096V,⼿册中的说明如下: 那么在此电路中1LSB对应0.004V,也就是4mV,电压输出端可以直接接负载,也可以先采⽤运放进⾏跟随,这⾥需要注意的是,如果需要在整个输出电压范围内使⽤TLC5615,运放最好选⽤轨到轨输出的运放,否则将达不到输出效果,电路中的SGM358就是⼀个轨到轨的运放,如果使⽤的是通⽤运放⽐如LM358,在5V单电源供电下,输出⼀般只有0.5V—3.5V。

同时TLC5615的电压稳定时间通常为12.5us,所以⽆法⽤于⾼速应⽤。

驱动程序的编写第⼀步:时序的理解。

CS选通很容易理解,DOUT在不级联使⽤的情况下也不⽤关注,那么通过这个图可以很清晰的看出,DIN在时钟信号SCLK的低电平允许切换状态,在SCLK的上升沿将数据锁存。

驱动程序编写第⼆步:数据传输协议。

这⾥采⽤12位数据传输⽅式,51单⽚机驱动程序如下。

#ifndef _tlc5615_h#define _tlc5615_h#include "stc8.h"#include "delay.h"#define uchar unsigned char#define uint unsigned intsbit TLC5615_DIN=P2^7;sbit TLC5615_CLK=P2^6;sbit TLC5615_CS=P2^5;//sbit TLC5615_DOUT=P2^4;void tlc5615_init(); //init tlc5615void tlc5615_set(uint vol); //set voltage to tlc5615#endif#include "tlc5615.h"void tlc5615_init() //init tlc5615{TLC5615_DIN=0;TLC5615_CLK=0;TLC5615_CS=1;//TLC5615_DOUT=1;}void tlc5615_set(uint vol) //set voltage to tlc5615{uchar i;uint temp;temp=vol<<6;TLC5615_CS=0;TLC5615_CLK=0;for(i=0;i<12;i++){if(temp&0x8000)TLC5615_DIN=1;elseTLC5615_DIN=0;TLC5615_CLK=1; temp=temp<<1; TLC5615_CLK=0; }TLC5615_CS=1;}。

08.2-SPI驱动TLC5615

08.2-SPI驱动TLC5615

在学习 c51 的期间,习得的 DA 转换都是电流输出。但是 TLC5615 内部集成了运放,使 得输出的不是电流而是电压。由于运放的原因,输出的电压带有两倍的增益。具体的输 出,请参考以下的公式:
输出电压 = ( ( 转换数值 ) / 1024 ) * 2 基准电压
如果根据以上的公式进行设计,我们不得不考虑这样的一个问题,输出的电压(Vout) 一般上都不会超过工作电压(VCC),如果我们的基准电压(Vref)取值为 5V 的话,当 转换数值为 1023 的话,那么输出电压亦不是超过了工作电压,这已经超乎一些准则。 HJ-2G 的设计确实不同了这一点。
//主函 数 void main() {
unsigned int Data; IO_Init();
while(1) {
for(Data=0x0000;Data<(0x03ff/2);Data++) {
SPI_Send((Data<<2)); //移位发送。 Delay(10000); }
//使 LED11 渐亮
8.2.5 TLC5615 数据储存格式与内部数据寄存器
TLC5615 内部 16 位移位寄存器的行为
TLC5615 的取值动作
TLC5615 内部自带了 16 位的移位寄存器,前 2 个 LSB 为无关位,而后 4 个 MSB 位无 视位。当在使用单片机为给 TLC5615 移入数据时,我们不得不把数据先处理,然后再 进行移入的动作。一般上都是很习惯的建立无符号型的 INT 型数据,然后进行左移 2 位 的操作。感觉有点像以下的概念图。
PORTC&=~BIT(PC1);
//时钟 拉低
PORTC&=~BIT(PC6);

tlc5616[汇总]

tlc5616[汇总]

tlc5616[汇总]TLC5615一、芯片简介TLC5615 为美国德州仪器公司 1999 年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。

带有上电复位功能,即把 DAC 寄存器复位至全零。

性能比早期电流型输出的 DAC 要好。

只需要通过 3 根串行总线就可以完成 10 位数据的串行输入,易于和工业标准的微处理器或微控制器(单片机) 接口, 适用于电池供电的测试仪表、移动电话,也适用于数字失调与增益调整以及工业控制场合。

二、TLC5615 器件的引脚图及各引脚功能 DIN: 串行数据输入端;SCLK: 串行时钟输入端; /CS: 芯片选用通端,低电平有效; DOUT:用于级联时的串行数据输出端;AGND: 模拟地;REFIN:基准电压输入端,2V,(VDD-2);OUT:DAC 模拟电压输出端;VDD:正电源端,4.5,5.5V,通常取5V。

TLC5615引脚图编辑本段三、功能框图TLC5615 的内部功能框图如下图所示,TLC5615功能框图它主要由以下几部分组成:1、10 位 DAC 电路;、一个 16 位移位寄存器, 接受串行移入的二进制数,并且有一个级联的数据输出端DOUT ; 23、并行输入输出的 10 位 DAC 寄存器, 为 10 位 DAC 电路提供待转换的二进制数据;4、电压跟随器为参考电压端REFIN提供很高的输入阻抗,大约10MΩ;5、×2 电路提供最大值为 2 倍于 REFIN 的输出;6、上电复位电路和控制电路。

两种工作方式: (A)从上图可以看出,16 位移位寄存器分为高 4 位虚拟位、低两位填充位以及 10位有效位。

在单片 TLC5615 工作时,只需要向 16 位移位寄存器按先后输入 10位有效位和低 2 位填充位, 2 位填充位数据任意,这是第一种方式,即 12 位数据序列。

(B)第二种方式为级联方式, 即 16 位数据列,可以将本片的 DOU T 接到下一片的 DIN , 需要向 16 位移位寄存器按先后输入高 4 位虚拟位、10 位有效位和低 2 位填充位, 由于增加了高 4 位虚拟位, 所以需要 16 个时钟脉冲。

SPI总线接口器件TLC5615

SPI总线接口器件TLC5615

SPI总线接口器件TLC5615TLC5615为美国德州仪器公司生产的串行总线接口10位电压输出数/模转换器,它既可与单片机的SPI总线接口相连接,又可与单片机的Microware总线(另外一种3线制总线)接口相连接。

AD1583CRT Z(1) TLC5615性能TLC5615性能特点如下。

①10位CMOS电压输出;②5V单电源工作;③与微处理器串行接口(SPI);④最大输出电压是基准电压的2倍;⑤输出电压具有和基准电压相同的极性;⑥建立时间12.5μs;⑦内部上电复位;⑧低功耗,最高为1.75mW。

TLC5615有小型和塑料DIP封装,引脚功能说明如下。

①1脚DIN:串行数据输入端;②2脚SCLK:串行时钟输入端;③3脚CS:芯片选用通端,低电平有效;④4脚DOUT:用于级联时的串行数据输出端;⑤5脚AGND:模拟地:⑥6脚REFIN:基准电压输入端;⑦7脚OUT:模拟电压输出;⑧8脚VDD:正电源端。

(2) TLC5615时序分析TLC5615工作时序图如图7.53所示。

由时序图可以看出,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且最高有效位在前,低有效位在后。

输入时SCLK的上升沿把串行输入数据DIN移入内部的l6位移位寄存器,SCLK的下降沿输出串行数据DOUT,片选CS的上升沿把数据传送至D/A寄存器。

当片选CS为高电平时,串行输入数据DIN不能由时钟同步送入移位寄存器;输出数据DOUT保持最近的数值不变而不进入高阻状态。

由此要想串行输入数据和输出数据必须满足两个条件:第一,时钟SCLK的有效跳变;第二,片选CS为低电平。

这里,为了使时钟的内部馈通最小,当片选CS为高电平时,输入时钟SCLK应当为低电平。

串行数/模转换器TLC5615的使用有两种方式,即级联方式和非级联方式。

如不使用级联方式,DIN只需输入12位教据。

DIN输入的12位数据中,前10位为TLC5615输入的D/A转换数据,且输入时高位在前,低位在后,后两位必须写入数值为零的低于LSB的位,因为TLC5615的D/A输入锁存器为12位宽。

TLC5615可调波形程序和仿真图

TLC5615可调波形程序和仿真图

#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned charsbit CS=P1^0;sbit SCLK=P1^1;sbit DIN=P1^2;sbit key0=P2^0;sbit key1=P2^1;sbit key2=P2^2;sbit key3=P2^3;sbit key4=P2^4;uchar code table[]={0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08 ,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x52,0x55,0x57,0x5a,0x5d,0x60,0x63,0x65,0x68,0x6a,0x6c,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a ,0x7b,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x80,0x7f,0x7e,0x7e,0x7e,0x7d,0x7d,0x7c,0x7b,0x7a,0x79,0x78, 0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6f,0x6c,0x6a,0x69,0x65,0x63,0x60,0x5d,0x5a,0x58,0x55,0x52,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x35,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05, 0x04,0x03,0x02,0x01,0x00,0x00};void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}void DAC(uchar w) //转换,将数据写入芯片{int a;CS=0;for(a=0;a<12;a++){SCLK=1;_nop_();_nop_();if((w&0x80)!=0)//判断写入数据从第一位开始,看是否有数据输入DIN=1;//将信号1写入芯片中elseDIN=0;//将0写入芯片中_nop_();_nop_();SCLK=0;//开启下一个写入数据w<<=1;}CS=1; //关闭芯片}void sanjiao() //三角波{int i;while(key2!=0){for(i=0;i<200;i++){DAC(i);}for(i=200;i>0;i--){DAC(i);}}}void juchi() //锯齿波{int j;while(key2!=0){for(j=0;j<200;j++){DAC(j);}}}void fangbo() //方波{uint w,a;uchar dat;while(key2!=0){dat=w;CS=0;for(a=0;a<12;a++){SCLK=1;DIN=(dat&0x80);//将信号1写入芯片中,从最高位开始dat<<=1;SCLK=0;//开启下一个写入数据}CS=1; //关闭芯片delay(20); //低电平持续的时间if(w==0) //当w的位移完时从新赋值w=0x8f;//完成0和8f交换elsew=0;} }void zhengxuanbo() //正弦波{uint a,p;uchar dat;while(key2!=0){for (p=0;p<150;p++){dat=table[p];CS=0;for(a=0;a<12;a++){SCLK=1;DIN=(dat&0x80);//将信号1写入芯片中,从最高位开始dat<<=1;SCLK=0;//开启下一个写入数据}CS=1; //关闭芯片delay(1);}}}void keyscan(){if (key0==0){delay(10);if(key0==0){juchi();while(!key0);}}if(key1==0){delay(10);if(key1==0){sanjiao();while(!key1);}}if(key2==0) {delay(10);if(key2==0) {key0=1;key1=1; while(!key2); }}if(key3==0) {delay(10);if(key3==0) {fangbo(); while(!key3); }}if(key4==0) {delay(10);if(key4==0) { zhengxuanbo(); while(!key4); }}}void main() {keyscan(); }Protues中仿真原理图,key1位锯齿波,key2位三角波,key3位终止位,key4位方波,key5位正弦波三角波方波正弦波,在示波器下的波形图。

用DA(TLC5615)芯片产生正弦波!

用DA(TLC5615)芯片产生正弦波!

标签:基于AVR的正弦波发生器!【原创】用DA(TLC5615)芯片产生正弦波!附件里是一个好用的工具,《正弦波数据生成器》,精度可调!/************************************************CPU: MEGA64晶振:7.3728M功能:实现频率为25Hz的正弦波************************************************/#include<avr/io.h>#include<util/delay.h>#include<avr/eeprom.h>#include<avr/pgmspace.h>#include<avr/interrupt.h>#define uint8 unsigned char#define int8 signed char#define uint16 unsigned int#define int16 signed int#define uint32 unsigned long#define int32 signed long#define uchar unsigned char#define uint unsigned int/*----------------SPI端口定义-----------------*/#define MMC_SD_CS_DDR DDRB#define MMC_SD_CS_PORT PORTB#define MMC_SD_CS_BIT 0#define MMC_SD_SCK_DDR DDRB#define MMC_SD_SCK_PORT PORTB#define MMC_SD_SCK_BIT 1#define MMC_SD_MOSI_DDR DDRB#define MMC_SD_MOSI_PORT PORTB#define MMC_SD_MOSI_BIT 2#define MMC_SD_MISO_DDR DDRB#define MMC_SD_MISO_PORT PORTB#define MMC_SD_MISO_BIT 3#define MMC_SD_PORT_INI {\MMC_SD_CS_PORT |= 1<<MMC_SD_CS_BIT;\MMC_SD_SCK_PORT |= 1<<MMC_SD_SCK_BIT;\MMC_SD_MOSI_PORT |= 1<<MMC_SD_MOSI_BIT;\MMC_SD_MISO_PORT |= 1<<MMC_SD_MISO_BIT;\\MMC_SD_CS_DDR |= 1<<MMC_SD_CS_BIT;\MMC_SD_SCK_DDR |= 1<<MMC_SD_SCK_BIT;\MMC_SD_MOSI_DDR |= 1<<MMC_SD_MOSI_BIT;\MMC_SD_MISO_DDR &= ~(1<<MMC_SD_MISO_BIT);\}#define SPI_CS_Assert MMC_SD_CS_PORT &= ~(1<<MMC_SD_CS_BI T)#define SPI_CS_Deassert MMC_SD_CS_PORT |= 1<<MMC_SD_CS_BIT uint16 i="0";uint16 t="0";uint8 t1=0,t2=0;/*---------------------正弦波数据表---------------------------*/uint16 wave[1024]={0x1FF,0x202,0x205,0x208,0x20C,0x20F,0x212,0x215,0x218,0x21B,0x21E,0 x221,0x225,0x228,0x22B,0x22E,0x231,0x234,0x237,0x23A,0x23E,0x241,0x244,0x247,0x24A,0x24D,0x250,0 x253,0x256,0x25A,0x25D,0x260,0x263,0x266,0x269,0x26C,0x26F,0x272,0x275,0x278,0x27B,0x27E,0x281,0 x284,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,0x2 DF,0x2E2,0x2E5,0x2E8,0x2EB,0x2ED,0x2F0,0x2F3,0x2F6,0x2F8,0x2FB,0x2FE,0x301,0x303,0x306,0x309,0x30B,0 x30E,0x311,0x313,0x316,0x319,0x31B,0x31E,0x320,0x323,0x326,0x328,0x32B,0x32D,0x330,0x332,0x335,0 x337,0x33A,0x33C,0x33F,0x341,0x343,0x346,0x348,0x34B,0x34D,0x34F,0x352,0x354,0x357,0x359,0x35B,0 x35D,0x360,0x362,0x364,0x366,0x369,0x36B,0x36D,0x36F,0x371,0x374,0x376,0x378,0x37A,0x37C,0x37E,0 x380,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,0x3B 9,0x3BA,0x3BC,0x3BE,0x3BF,0x3C1,0x3C2,0x3C4,0x3C5,0x3C6,0x3C8,0x3C9,0x3CB,0x3CC,0x3CD,0x3CF,0x3 D0,0x3D1,0x3D3,0x3D4,0x3D5,0x3D6,0x3D8,0x3D9,0x3DA,0x3DB,0x3DC,0x3DD,0x3DE,0x3E0,0x3E1,0x3E2,0x3 E3,0x3E4,0x3E5,0x3E6,0x3E7,0x3E8,0x3E8,0x3E9,0x3EA,0x3EB,0x3EC,0x3ED,0x3EE,0x3EE,0x3EF,0x3F0,0x3F 1,0x3F1,0x3F2,0x3F3,0x3F3,0x3F4,0x3F5,0x3F5,0x3F6,0x3F6,0x3F7,0x3F7,0x3F8,0x3F8,0x3F9,0x3F9,0x3FA,0 x3FA,0x3FB,0x3FB,0x3FB,0x3FC,0x3FC,0x3FC,0x3FD,0x3FD,0x3FD,0x3FD,0x3FE,0x3FE,0x3FE,0x3FE,0x3F E,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3FE,0x3F E,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,0x3 CB,0x3C9,0x3C8,0x3C6,0x3C5,0x3C4,0x3C2,0x3C1,0x3BF,0x3BE,0x3BC,0x3BA,0x3B9,0x3B7,0x3B6,0x3B4,0x3B 2,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,0 x374,0x371,0x36F,0x36D,0x36B,0x369,0x366,0x364,0x362,0x360,0x35D,0x35B,0x359,0x357,0x354,0x352,0 x34F,0x34D,0x34B,0x348,0x346,0x343,0x341,0x33F,0x33C,0x33A,0x337,0x335,0x332,0x330,0x32D,0x32B,0 x328,0x326,0x323,0x320,0x31E,0x31B,0x319,0x316,0x313,0x311,0x30E,0x30B,0x309,0x306,0x303,0x301,0 x2FE,0x2FB,0x2F8,0x2F6,0x2F3,0x2F0,0x2ED,0x2EB,0x2E8,0x2E5,0x2E2,0x2DF,0x2DD,0x2DA,0x2D7,0x2D 4,0x2D1,0x2CE,0x2CB,0x2C9,0x2C6,0x2C3,0x2C0,0x2BD,0x2BA,0x2B7,0x2B4,0x2B1,0x2AE,0x2AB,0x2A8,0x2A 5,0x2A2,0x29F,0x29C,0x299,0x296,0x293,0x290,0x28D,0x28A,0x287,0x284,0x281,0x27E,0x27B,0x278,0x275,0 x272,0x26F,0x26C,0x269,0x266,0x263,0x260,0x25D,0x25A,0x256,0x253,0x250,0x24D,0x24A,0x247,0x244,0 x241,0x23E,0x23A,0x237,0x234,0x231,0x22E,0x22B,0x228,0x225,0x221,0x21E,0x21B,0x218,0x215,0x212,0 x20F,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,0x1A E,0x1AB,0x1A8,0x1A4,0x1A1,0x19E,0x19B,0x198,0x195,0x192,0x18F,0x18C,0x189,0x186,0x183,0x180,0x17D,0 x17A,0x177,0x174,0x171,0x16E,0x16B,0x168,0x165,0x162,0x15F,0x15C,0x159,0x156,0x153,0x150,0x14D,0 x14A,0x147,0x144,0x141,0x13E,0x13B,0x138,0x135,0x133,0x130,0x12D,0x12A,0x127,0x124,0x121,0x11F,0 x11C,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,0x0 C9,0x0C7,0x0C4,0x0C2,0x0BF,0x0BD,0x0BB,0x0B8,0x0B6,0x0B3,0x0B1,0x0AF,0x0AC,0x0AA,0x0A7,0x0A5,0x0A 3,0x0A1,0x09E,0x09C,0x09A,0x098,0x095,0x093,0x091,0x08F,0x08D,0x08A,0x088,0x086,0x084,0x082,0x080,0 x07E,0x07C,0x07A,0x078,0x076,0x074,0x072,0x070,0x06E,0x06C,0x06A,0x068,0x066,0x064,0x062,0x060,0 x05F,0x05D,0x05B,0x059,0x057,0x056,0x054,0x052,0x051,0x04F,0x04D,0x04C,0x04A,0x048,0x047,0x045,0 x044,0x042,0x040,0x03F,0x03D,0x03C,0x03A,0x039,0x038,0x036,0x035,0x033,0x032,0x031,0x02F,0x02E,0 x02D,0x02B,0x02A,0x029,0x028,0x026,0x025,0x024,0x023,0x022,0x021,0x020,0x01E,0x01D,0x01C,0x01B,0 x01A,0x019,0x018,0x017,0x016,0x016,0x015,0x014,0x013,0x012,0x011,0x010,0x010,0x00F,0x00E,0x00D,0 x00D,0x00C,0x00B,0x00B,0x00A,0x009,0x009,0x008,0x008,0x007,0x007,0x006,0x006,0x005,0x005,0x004,0x 004,0x003,0x003,0x003,0x002,0x002,0x002,0x001,0x001,0x001,0x001,0x000,0x000,0x000,0x000,0x000,0x 000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x 001,0x001,0x001,0x001,0x002,0x002,0x002,0x003,0x003,0x003,0x004,0x004,0x005,0x005,0x006,0x006,0x 007,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,0 x021,0x022,0x023,0x024,0x025,0x026,0x028,0x029,0x02A,0x02B,0x02D,0x02E,0x02F,0x031,0x032,0x033,0 x035,0x036,0x038,0x039,0x03A,0x03C,0x03D,0x03F,0x040,0x042,0x044,0x045,0x047,0x048,0x04A,0x04C,0 x04D,0x04F,0x051,0x052,0x054,0x056,0x057,0x059,0x05B,0x05D,0x05F,0x060,0x062,0x064,0x066,0x068,0 x06A,0x06C,0x06E,0x070,0x072,0x074,0x076,0x078,0x07A,0x07C,0x07E,0x080,0x082,0x084,0x086,0x088,0 x08A,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,0x0 D3,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,0 x12D,0x130,0x133,0x135,0x138,0x13B,0x13E,0x141,0x144,0x147,0x14A,0x14D,0x150,0x153,0x156,0x159,0 x15C,0x15F,0x162,0x165,0x168,0x16B,0x16E,0x171,0x174,0x177,0x17A,0x17D,0x180,0x183,0x186,0x189,0 x18C,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,0x1E C,0x1EF,0x1F2,0x1F6,0x1F9,0x1FC};/* spi low speed, below 400KHz */void SPI_Low(void){SPCR &= ~_BV(DORD);SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR0); SPSR &= ~_BV(SPI2X);}/* spi high speed, not exceed 25MHz */void SPI_High(void){SPCR &= ~_BV(DORD);//MSB在前SPCR = _BV(SPE)|_BV(MSTR);SPSR |= _BV(SPI2X);}/* read and write one byte , full duplex */ uint8 SPI_WriteByte(uint8 val){SPDR = val;while(!(SPSR & _BV(SPIF)));return SPDR;}void SPI_Init(void){MMC_SD_PORT_INI; /* Port Initialize */SPI_High();}void timer0_init(void){cli();TCCR0 = 0x00; //stopASSR = 0x00; //set async modeTCNT0 = 0xDC; //set countOCR0 = 0x24;TCCR0 = 0x02; //start timerTIMSK = 0x01; //timer interrupt sourcessei();}//T/C0中断例程SIGNAL(SIG_OVERFLOW0){TCNT0 = 0xE1;//40ust="wave"[i];t="t"<<2; //此处是重点,为何先左移2位,要搞懂mega64硬件spi模式,同时要搞懂tlc5615的12位数据传输模式。

数控直流电流源TLC5615

数控直流电流源TLC5615

数控直流电流源林彩莲黎智华周双强(广西师范大学物理与信息工程学院创新基地桂林 541004 )摘要本数控直流电流源以单片机A T89S51为控制核心,由D/A转换器TLC5615、A/D转换器TLC2543、中文字库液晶显示块、放大电路和大功率调整电路组成。

通过4x4键盘输入给定值,由D/A转换器将数字信号转换成模拟信号,经D/A输出电压作为恒流源的参考电压,以LMOP07作为电压跟随器,利用晶体管平坦的输出特性得到恒定的电流输出,最后用中文液晶显示输出。

本系统采用单片机作为控制中心,产生数字可调的直流电流源。

其内部4K flash memory 用于存储应用程序。

键盘用于设定电流源的值。

键盘为4x4结构,采用反转法读取键盘值。

P3口的低四位接键盘的行线,P3口的高四位接键盘的列线.图中数模转换器D/A与其右边部分的电路构成恒流源。

D/A输出电压作为恒流源的参考电压,LMOP07成电压跟随器。

利用晶体管平坦的输出特性即可得到恒流输出。

由于跟随器是一种深度的电压负反馈电路,因此电流源具有较好的稳定性。

为了提高稳定度,D/A 部分的参考电压采用LM336的参考电压。

R2采用大线径康铜丝制作,康铜丝温度系数很小(5ppm/o C),大线径可使其温度影响减至最小。

单片机系统仅需5V,0.5A电源即可,电源只供单片机完成键盘输入显示,D/A等控制功能。

电流源的电源由V+提供,普通任何一种直流稳压电源都可满足要求。

作者使用的是0~10V,0~2A的直流文要电源,恒流源最大电流可达2A。

一、方案论证与比较方案一:数模转换器采用通用的DAC0809,摸数转换器采用AD0832,调整管用TIP41C.方案二:数模转换器采用美国德州仪器公司的TLC5615IP,它使带由缓冲基准输入的10位电压输出数模转换器(DAC)。

DAC具有基准电压两倍的输出范围,且DAC使单调变化的。

器件使用简单,用单5V 电源工作。

方案比较:方案一的电路能实现功能,但硬件电路复杂,逻辑电路设繁琐,调试困难,A/D、D/A采用并行转换器,占用单片机口线资源较多,处理数据的精度不够。

数控5615,简单的

数控5615,简单的

#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit lcden=P2^7;//1602液晶使能端sbit lcdwr=P2^6;//1602液晶读写端sbit lcdrs=P2^5;//1602数据、命令端sbit S1=P1^1;//定义4个按键sbit S2=P1^2;sbit S3=P1^3;sbit S4=P1^4;sbit din=P3^0; //TL5615串行数据输入sbit sclk=P3^1; //TL5615串行时钟sbit cs=P3^2; //TL5615片选uchar v=50; //电压赋初值uchar out;uchar code table1[]={"Happy Every Day!"};uchar code table2[]={" voltage: . V "};/**************延时函数delay(200)大约延时200ms,delay(500)大约延时500ms*************/void delay(uint z){uint x,y;for(x=z; x>0; x--)for(y=110;y>0;y--);}/*********************************1602写状态(命令)函数********************************/void write_com(uchar com){lcdrs=0;//lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}/*********************************1602写数据(命令)函数********************************/void write_date(uchar date){lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}/*********************************1602初始化函数****************************************/void lcd1602_init(){uchar i;lcdwr=0;lcden=0;write_com(0x38); //设置8位显示模式write_com(0x0c); //0x0c开显示,不显示光标,不闪烁;write_com(0x06); //指针加1模式,光标右移write_com(0x01); //显示清屏write_com(0x0c);write_com(0x80); //lcdDDRAM设置for(i=0;i<16;i++)//显示数组的内容{write_date(table1[i]);delay(10);}write_com(0x80+0x40);//第二行for(i=0;i<16;i++)//显示数组内容{write_date(table2[i]);delay(10);}write_com(0x0c);}/***********************************5615驱动函数****************************************/void DA5615(uint date){uchar i;date<<=6; //数字量date左移6位,保留原date低10位。

实验二、DA转换与信号产生

实验二、DA转换与信号产生

实验二、数模转换与信号产生
一、实验目的
1、掌握模数转换芯片TLC5615的接口技术。

2、掌握模数转换芯片TLC5615的编程方法。

二、实验内容
编写程序实现下列要求:通过DIP开关输入BCD码表示0.0~5.0V,由TLC5615变为模拟电压输出0-5V,记录数值与对应的对应关系。

三、实验线路
电路原理图如下,所需元件为:AT89C51、7SEG-BCD、TLC5615、DIPSW-8。

将TLC5615的信号线接到相应的端口,P2.2接SCLK、P2.1接CS、P2.0接DIN,REFIN 接+2.5V,输出0-5V电压接万用表,DIPSW8接P1口,对数值进行给定。

四、实验预习
1、学习模数转换的原理与编程
2、提前编写程序,写出预习报告。

修改输入数据,使D/A输出电压从0V到5V变化,记录数码管的显示数值。

记录到表中。

五、实验报告
1、总结出实验的详细步骤。

2、写出调试正确的程序及框图。

六、附加要求:从P1口输入BCD码表示00%~99%,由时钟为12Hz的单片机用定时中断产生周期为1ms的对应占空比的PWM波;
sbit DIN = P2^5;
sbit CS = P2^6;
sbit CLK = P2^7;
void TLC5615(uint j)
{
uchar i;
CLK=0; CS=0;
j=j<<6;
for(i=0;i<12;i++)
{
j=j<<1; DIN=CY;
CLK=0; CLK=1;
}
CS=1;
}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TLC5615学习笔记(资料补充)
TLC5615----10位D/A转换器,串口输入,8P封装:2种封装:DIP和SOP-8;主要内容见:武汉力源电子公司资料和美信MAX515(MAX504)资料。

总体介绍注解:
1:TLC5615引脚或者说功能同MAX515。

2:TLC5615为美国德州仪器公司1999年推出的产品。

3:TLC5615 与MAX515的区别:
MAX515在先研制成功,TLC5615在后。

MAX515现在的市场售价(正品):¥8元到¥40元,陶宝上水货最低价也大于6元。

正品价(中间价)20元。

TLC5615现在的市场售价(正品):¥4元到¥10
元,陶宝上水货最低价2元。

正品价(中间价)5元。

所以,现在的学习板(或者说要求不高的地方),大量开始用TLC5615替代MAX515和AD5300。

学习难点
总体上不难,具体难处,是因为资料问题:
这是因为1:MAX515无中文资料;
2:武汉力源电子公司资料《LC5615中文资料》,部分细小节处说明不足;
性能指标补充:
1:数据输入时钟FSCLK:14MHz(MAX);
2:更新速率:1.21MHz;注:实际使用中,考虑到片选信号(实质上是内部由《串行移位寄存器》向《D/A转换寄存器》读入数据)以及片选信号自身时间以及其它因素,实际使用中,更新速率被限制在80KHz以内;
3:模拟电压输入,最大输出电流20Ma;
4:使用简单,操作方便,外围元件少,(只需要一个基准电压输入);
技术资料注解:
1:文件夹中的TLC5615中文资料《中国武汉力源》的PDF
资料,要用Acrobat Reader 5.0打开,如果用Acrobat
Reader 9.0打开,则出现乱码;
2:发送数据脉冲格式
用SPI传送:2个字节(8位),具体:
先传高位,后传送低位。

如下图中从左边开始,向右边传送,
■■■■| ■■■■| ■■■■| ■■■■■|
4位无效| 高4位| 中4位|前2位是最低有效位,最后2个无用:补0,即:资料上的图11个时序图。

如果是手工编程,模拟SPI,并且不用DOUT(菊花网输出),则只要发12位即可,即资料上的图10个时序图。

原理见资料中的功能图:
3:引脚中的5脚:
模拟地,没有数字地,这是因为,在MAX515中,与(MAX504)通用,见
(MAX504)资料中,将数字地与模拟地内部已经联接了。

相对(MAX504)而言,就省去了DGND(数字地)。

4:TLC5615中内部有3个寄存器,分
别是:
1。

16位串行移位寄存器。

见右图:
2。

10位D/A转换寄存器。

见右图。

注:此寄存器具有锁存功能。

3。

16位DOUT输出寄存器。

注:DOUT输出寄存器
中保存的是上次输入的《串
行移位寄存器》。

相关文档
最新文档