单片机课程设计安徽科技学院报告封面Word文档格式.docx

上传人:b****6 文档编号:16507032 上传时间:2022-11-24 格式:DOCX 页数:13 大小:191.85KB
下载 相关 举报
单片机课程设计安徽科技学院报告封面Word文档格式.docx_第1页
第1页 / 共13页
单片机课程设计安徽科技学院报告封面Word文档格式.docx_第2页
第2页 / 共13页
单片机课程设计安徽科技学院报告封面Word文档格式.docx_第3页
第3页 / 共13页
单片机课程设计安徽科技学院报告封面Word文档格式.docx_第4页
第4页 / 共13页
单片机课程设计安徽科技学院报告封面Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机课程设计安徽科技学院报告封面Word文档格式.docx

《单片机课程设计安徽科技学院报告封面Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计安徽科技学院报告封面Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

单片机课程设计安徽科技学院报告封面Word文档格式.docx

评阅人:

安徽科技学院理学院物电系

TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。

由于是串行输入结构,能够节省51系列单片机I/O资源;

且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。

2TLC2543的特点

(1)12位分辩率A/D转换器;

(2)在工作温度范围内10μs转换时间;

(3)11个模拟输入通道;

(4)3路内置自测试方式;

(5)采样率为66kbps;

(6)线性误差±

1LSBmax;

(7)有转换结束输出EOC;

(8)具有单、双极性输出;

(9)可编程的MSB或LSB前导;

(10)可编程输出数据长度。

3TLC2543的引脚排列及说明

TLC2543有两种封装形式:

DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。

图1TLC2543的封装

表1TLC2543引脚说明

引脚号

名称

I/O

说明

1~9,11,12

AIN0~AIN10

I

模拟量输入端。

11路输入信号由内部多路器选通。

对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率

15

 

片选端。

端由高变低时,内部计数器复位。

由低变高时,在设定时间内禁止DATAINPUT和I/OCLOCK

17

DATAINPUT

串行数据输入端。

由4位的串行地址输入来选择模拟量输入通道

16

DATAOUT

O

A/D转换结果的三态串行输出端。

为高时处于高阻抗状态,

为低时处于激活状态

19

EOC

转换结束端。

在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止

10

GND

地。

GND是内部电路的地回路端。

除另有说明外,所有电压测量都相对GND而言

18

I/OCLOCK

输入/输出时钟端。

I/OCLOCK接收串行输入信号并完成以下四个功能:

(1)在I/OCLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。

(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。

(3)将前一次转换数据的其余11位输出到DATAOUT端,在I/OCLOCK的下降沿时数据开始变化。

(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位

14

REF+

正基准电压端。

基准电压的正端(通常为Vcc)被加到REF+,最大的输入电压范围由加于本端与REF-端的电压差决定

13

REF-

负基准电压端。

基准电压的低端(通常为地)被加到REF-

20

Vcc

电源

4接口时序

可以用四种传输方法使TLC2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。

一个片选(

)脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持

为低,直到时序结束。

图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入

的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次

时序。

图216时钟传送时序图(使用

,MSB在前)

图316时钟传送时序图(不使用

TLC2543驱动程序:

#include<

ctype.h>

#definebyteunsignedchar

#defineucharunsignedchar

#definewordunsignedint

#defineuintunsignedint

#defineulongunsignedlong

#defineBYTEunsignedchar

#defineWORDunsignedint

uintread2543(ucharport);

voidCollectADmodule(uint*ad_result);

externvoidtime(unsignedintucMs);

//延时单位:

ms

/**************************************

2543控制引脚宏定义

*************************************/

sbitAD_EOC=P1^0;

/*TLC2543转换完成指示引脚EOC*/

sbitCLOCK=P1^2;

/*2543时钟*/

sbitAD_CS=P1^3;

/*2543片选*/

sbitD_IN=P1^4;

/*2543输入*/

sbitD_OUT=P1^5;

/*2543输出*/

TLC2543驱动程序

名称:

read2543

功能:

TLC2543驱动模块

输入参数:

port通道号

输出参数:

ad转换值

uintread2543(ucharport)

{

uintad=0;

uchari;

P1=0xeb;

CLOCK=0;

AD_CS=0;

port<

<

=4;

for(i=0;

i<

8;

i++)//读高8位

{

if(D_OUT)ad|=0x01;

D_IN=(bit)(port&

0x80);

CLOCK=1;

CLOCK=0;

port<

=1;

ad<

}

for(i=8;

12;

i++)//读低4位

}

AD_CS=1;

ad>

>

return(ad);

}

/**************************************************

*函数说明:

采集实际端口的数据

**************************************************/

voidCollectADmodule(uint*ad_result)

AD_EOC=1;

read2543(0);

//启动0通道转换,第一次转换结果不准确,丢弃

while(!

AD_EOC){}//等待转换完成

time(3);

AD_EOC){}//等待转换完成

11;

i++){

ad_result[i]=read2543(i+1);

//读转换结果,并启动下次转换

while(!

AD_EOC){}//等待转换完成

time(3);

read2543(i+1);

AD_EOC){}//等待转换完成

主程序:

#include"

common.h"

externvoidCollectADmodule(uint*ad_result);

/********main函数*********/

voidmain(void){

uintidataTLC2543[11];

initUart();

/*初始化串口*/

do{

CollectADmodule(TLC2543);

//调用11通道AD转换

for(i=0;

printf("

TLC2543[%bd]=%u\n"

i,TLC2543[i]);

//打印输出结果

}

printf("

\n\n"

);

//回车2次

time(1000);

}while(TRUE);

AT89C51单片机程序:

REG52.H>

/*specialfunctionregisterdeclarations*/

intrins.h>

/*********************************************************

延时5us,晶振改变时只用改变这一个函数!

1、对于11.0592M晶振而言,需要2个_nop_();

2、对于22.1184M晶振而言,需要4个_nop_();

*入口参数:

*返回:

*********************************************************/

voiddelay_5us(void)//延时5us,晶振改变时只用改变这一个函数!

_nop_();

//_nop_();

/************delay_50us***************/

voiddelay_50us(void)//延时50us

unsignedchari;

4;

i++)

delay_5us();

/********延时100us******************/

voiddelay_100us(void)//延时100us

delay_50us();

/***********延时单位:

ms*******************/

voidtime(unsignedintucMs)//延时单位:

unsignedcharj;

while(ucMs>

0){

for(j=0;

j<

10;

j++)delay_100us();

ucMs--;

/**********初始化串口波特率************/

voidinitUart(void)/*初始化串口波特率,使用定时器2*/

/*Setuptheserialportfor9600baudat11.0592MHz*/

SCON=0x50;

//串口工作在方式1

RCAP2H=(65536-(3456/96))>

RCAP2L=(65536-(3456/96))%256;

T2CON=0x34;

TI=1;

/*置位TI*/

 

仿真电路图

仿真结果

PCB图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1