tlc549和tlc5615模数数模转换
一、
题目:基于C语言的TLC549和TLC5615模数、数模转换系统设计
设计要求
1、查阅资料,熟悉硬件和软件;
2、掌握TLC549芯片和TLC5615芯片的特性,引脚功能。 3、确定详细软件#设计
#,画程序流程图。
4、根据TLC549的时序图,使用C语言编写单片机STC89C52与TLC549的软件通信程序
代码。实现模/数转换功能。
5、根据TLC5615的时序图,使用C语言编写单片机STC89C52与TLC5615的软件通信程
序代码。实现数/模转换功能。
6、整合模数、数模转换代码,实现信号发生器在TLC549输入端输入正弦波(频率不限),
示波器在TLC5615输出端测量到同样的正弦波,
输出波形。 7、撰写课程设计
。
三、微型计算机控制技术课程设计报告内容 1、设计要求
2、方案论证
TLC549
(1)模/数转换器的作用
(2)芯片特性;
(3)引脚功能
(4)时序控制
TLC5615
(1)数/模转换器的作用
(2)芯片特性简介
(3)引脚功能
(4)时序控制
3、硬件设计
4、软件设计(包括流程图及代码)
5、测试分析
6、小结
参考文献
试验报告
课程设计报告书
课题名称
姓 名
学 号
专 业
指导教师
机电与控制工程学院
年 月 日
任 务 书
录 目
1、绪论………………………………………………………………… XX 2、方案论证(规划、选定)…………………………………………… XX 3、方案说明(设计)……………………………………………………… XX 4、硬件方案设计………………………………………………………… XX 5、软件方案设计………………………………………………………… XX 6、调试……………………………………………………………………XX 7、技术小结(结束语)………………………………………………… XX 8、参考文献…………………………………………………………… XX 9、附录(源程序代码、电路图等)……………………………………XX
正文页(正文内容设定见目录)
指导教师
评 语
课程设计 指导教师
成 绩 签 字
年 月 日
1. 绪论
本实验主要是基于单片机微型控制器的控制,实现将模拟信号转换成数字信号的一个简单实验。通过这个实验,可以为广大研究人员提供一个比较系统的模数数模转换基础资料,以便于将模拟信号转换为数字信号或将数字信号转换成模拟信号。
2. 方案论证
2.1.试验原理
本实验主要是通过单片机stc89c52芯片控制模数转换芯片tlc549将所给模拟信号转换成数字信号,然后将数字信号读进数模转换芯片tlc5615,从输出端口将转换后的信号输出来。
可用图1简洁明了地表现出来:
数数模模 模转单拟 拟转换 片换芯信信机 Stc89c5 芯片号 tlc5615 号片 tlc549 输
输出
入
图1 设计框图 2.2模/数转换器
(1)模/数转换器的作用
TLC549是一种高性能的,位A/D转换器,它以,位开关电容逐次逼近的
实现A/D转换,本实验通过用该芯片采集模拟量,然后将采集到的模拟量转换为数字量后送至单片机。 (2)芯片特性;
TLC549芯片, 可与通用微处理器、控制器通过I/ O CLOCK、CS、DATA OU T 三条口线进
行串行接口。具有4MHz 片内系统时钟和软、硬件控制电路, 转换时间最长17?s, T LC549
允许的最高转换速率为40 000次/ s。
其极限参数如下:
? 电源电压: 6. 5V ;
? 输入电压范围: 0. 3V~ VCC+ 0. 3V ; ? 输出电压范围: 0. 3V~ VCC+ 0. 3V ; ? 峰值输入电流( 任一输入端) : ? 10mA ;
? 总峰值输入电流( 所有输入端) : ? 30mA;
? 工作温度: 0 ? ~ 70 ?
(3)引脚功能
Tlc549的引脚图如下:
TLC549各引脚功能如下:
?ANALOG IN,模拟量输入端;
?scLK,串行时钟输入端;
?cs,芯片选择,低有效;
?DATA OuT,数字量输出端;
?GND,模拟地;
?REF+,基准电压输入端;
?REF-,基准电压负端;
?VCC,正电源电压端。
(4)时序控制
Tlc 549的工作时序图如下:
当CS为高时,数据输出(DATA OUT)端处于高阻状态,此时I/O CLOCK不起作用。
这种CS控制作用允许在同时使用多片TLC549时,共用I/O CLOCK,以减少多路(片)A/D
并用时的I/O控制端口。一组通常的控制时序为:
(1)将CS置低。内部电路在测得CS下降沿后,再等待两个内部时钟上升沿和一个下降沿后,然后确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATA OUT端上。
(2) 前四个I/O CLOCK周期的下降沿依次移出第2、3、4和第5个位(D6、D5、D4、D3),片上采样保持电路在第4个I/O CLOCK下降沿开始采样模拟输入。
(3)接下来的3个I/O CLOCK周期的下降沿移出第6、7、8(D2、D1、D0)个转换位,
(4)最后,片上采样保持电路在第8个I/O CLOCK周期的下降沿将移出第6、7、8(D2、D1、D0)个转换位。保持功能将持续4个内部时钟周期,然后开始进行32个内部时钟周期的A/D转换。第8个I/O CLOCK后,CS必须为高,或I/O CLOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待保持和转换工作的完成。如果CS为低时I/O CLOCK上出现一个有效干扰脉冲,则微处理器/控制器将与器件的I/O时序失去同步;若CS为高时出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。
在36个内部系统时钟周期结束之前,实施步骤(1),(4),可重新启动一次新的A/D转换,与此同时,正在进行的转换终止,此时的输出是前一次的转换结果而不是正在进行的转换结果。
若要在特定的时刻采样模拟信号,应使第8个I/O CLOCK时钟的下降沿与该时刻对应,因为芯片虽在第4个I/O CLOCK时钟下降沿开始采样,却在第8个I/O CLOCK的下降沿开始保存。
2.3数/模转换器
(1)数/模转换器的作用
TLC5615是一个串行10位DAc芯片,它以10位开关电容逐次逼近的方法实现D/A转换。本实验通过用该芯片采集数字量,然后将采集到的数字量转换为模拟量后送至示波器。 (2)芯片特性;
Tlc5615只需要通过3根串行总线就可以完成10位数据的串行输入,易于和工业标准的微处理器或微控制器(单片机,DsP)接口,适用于数字失调与增益调整以及工业控制场合。其主要特点如下:
?单5V电源工作;
?3线串行接口;
?DAc输出的最大电压为2倍基准输入电压;
?上电时内部自动复位;
?微功耗,最大功耗为1(75mw;
?转换速率快,更新率为1(21MHz;
?建立时间125μs;
(3)引脚功能
Tlc5615的引脚图如下:
各引脚功能如下:
?DIN,串行二进制数输入端;
?scLK,串行时钟输入端;
?cs,芯片选择,低有效;
?DOuT,用于级联的串行数据输出;
?AGND,模拟地;
?REFIN,基准电压输入端;
?OuT,DAc模拟电压输出端;
?VDD,正电源电压端。
(4)时序控制
Tlc 5615的工作时序图如下:
当片选 CS为低电平时,串行输人数据才能被移人l6位移位寄存器。当 CS为低电平时,在每
一个SCLK时钟的上升沿将DIN的一位数据移入16位移寄存器。注意,二进制最高有效位被导前移入。
接着, CS的上升沿将16位移位寄存器的1O位有效数据锁存于lO位DAC寄存器,供DAC电路进行转
为高电平时,串行输人数据不能被移人l6位移位寄存器。注意(CS的上升和下降都换;当片选CS
必须发生在SCLK为低电平期间。
2.4对整个电路进行仿真
出现的结果是
仿真图
U1A1939XTAL1P0.0/AD038P0.1/AD1B37P0.2/AD21836XTAL2P0.3/AD3C35P0.4/AD434P0.5/AD5D33P0.6/AD6932RSTP0.7/AD7U32127P2.0/A8SCLKOUT2236P2.1/A9CSREFIN231P2.2/A10DIN29244R1PSENP2.3/A11DOUT3025D310kALEP2.4/A123126U2(AIN)TLC5615C(L)D10BQ015EAP2.5/A1327P2.6/A1428P2.7/A15U211026P1.0/T2P3.0/RXDAINSDO21115P1.1/T2EXP3.1/TXDREF+CS31237R2P1.2P3.2/INT0REF-SCLK41310kP1.3P3.3/INT1514TLC549P1.4P3.4/T0615D4P1.5P3.5/T171610BQ015P1.6P3.6/WR817P1.7P3.7/RDD2AT89C52LED-REDC1
2000uf
R3300
(绿色的是输出端波形,红色的事输入端波形)
输入是正弦波的时候输出是(不能输出负电压)
输入是方波的时候输出是
3. 硬件方案设计
3.1单片机最小系统部分
3.2串口部分
模数转换tlc549部分
数模转换部分tlc5615部分
4. 软件方案设计
本实验要求用stc89c52,max232,tlc549和tlc5615四种芯片,其中stc89c52是单片机微型控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型计算机,同时它体积小,质量轻,价格便宜。Stc89c52是整个实验的核心,通过它的控制完成各个模块的正常工作。Max232是一个串口芯片,它的功能主要是实
现电脑和单片机之间的通信。Tlc549是一个模数转换芯片,它是一个串行输出的八位芯片,
实现模数转换。Tlc5615是一个数模转换芯片,它是一个串行输出的十位芯片,实现数模转
换。
程序流程图:
开始
Tlc549模数转换
Stc89c52单片机
Tlc5615数模转换
结束
对应的程序是:
#include
#include
#define uint unsigned int #define uchar unsigned char #define ulong unsigned long sbit led=P1^3;
sbit tlc_clk = P1^0;
sbit tlc_data = P1^1;
sbit tlc_cs = P1^2;
sbit cs=P2^0;
sbit sclk=P2^1;
sbit din= P2^2;
/*---------------------延时函数----------------------*/
void delay(uchar z) {
uint x;
for(x=z;x>0;x--); }
/******************************************************************/
/* 作用:向TLC5615 写入数据*/ /******************************************************************/
write_5615(ulong da) {
uchar i;
cs=1;
sclk=0;
cs=0;
da=da&0x0ff;
//da<<=8;
for(i=0;i<12;i++) {
if((bit)(da&0x80)==1) din=1;
else
din=0;
sclk=1;
da<<=1;
sclk=0;
}
sclk=0;
cs=1;
_nop_();
_nop_();
}
/*-----------------------TLC549子函数-----------------------*/
void read_tlc() {
uchar i,j=0,k;
tlc_clk=0;
tlc_cs=1;
tlc_cs=0;
delay(2);
for(i=0;i<8;i++)
{
j=j<<1;
k=tlc_data;
tlc_clk=1;
delay(1);
tlc_clk=0;
//共移出8位数据
j=j+k;
}
tlc_cs=1;
led=0;
write_5615(j);
_nop_();
_nop_();
}
void main()
{
while(1)
{
read_tlc();
}
}
5. 调试 5.1硬件调试
查出问题有
(1)单片机地线没接 (2)Tlc549参考电压没接 (3)Max232一电容接错 将错误一一改正
5.2软件调试
从开始到结束出现的软件问题 (1)tlc549采样程序出错 (2)忽略了tlc549是八位精度,而tlc5615是十位精度
(3)没有考虑数模转换只能输出正电压,即没有考虑tlc5615的电压输出范围
5.3软件和硬件联合调试
(1)不清楚tlc549正常工作否,在单片机的p1.4接口接了一个低电平控制的二极管来监督tlc549是否正常工作,如果正常工作,那么二极管将会发光。
(2)当程序烧进单片机时,输出端没有显示,故在输入端输入一个高电平模拟信号,发现输出是高电平,再在输入端输入一个低电平模拟信号,发现依然是高电平,故猜测是硬件没有正
常工作,检查出是硬件问题。
5.4软件和硬件联合测试
当输入正弦波形时,输出是:
当输入时正弦波形时:
6. 小结
通过这次试验,使自己的动手能力提高了很多,使自己的分析问题能力也提高了很多,不过最有价值的是自己知道遇到问题该怎么去解决,怎么去做。不过,也发现了自己的不足,比如看文档不是怎么细心,如数模转换芯片只能输出正电压,还有焊接硬件时将电路焊接错了,希望在以后能够不断改掉自己的不好习惯,同时扎实自己的理论基础。
参考文献
1.《微型计算机控制技术》,潘新明,王燕芳,高等教育出版社,2001.7