微控制器原理及应用第12章 MCS-51与AD和DA的接口技术.ppt

微控制器原理及应用第12章 MCS-51与AD和DA的接口技术.ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CPU要启动TLC2543,首先在CS端送出一个低电平,同时给TLC2543的时钟管脚送出周期性的脉冲信号。之后,单片机根据要求发出的一系列方波信号,并且将将通道选择、数据长度选择、前导选择、单双极性选择的控制信息送入DATA INPUT端,由于EOC信号在第一个I/O CLOCK下降沿的时候变为高电平了,因此,DATA OUT端会送出AD转换的结果,但是该数据为上一次TLC2543转换完成的数据,所以要获取当前选定的通道或重新设置参数后的转换结果,需要等到下一次启动TLC2543后。单片机实现TLC2543读写控制的C语言参考代码如下。 //TLC2543 控制位定义 sbit TLC2543_EOC = P3^2; sbit TLC2543_CS = P2^0; sbit TLC2543_IO_CLOCK = P2^1; sbit TLC2543_DATA_INPUT = P2^2; sbit TLC2543_DATA_OUT = P2^3; //========================================== //TLC2543 AD转换程序 /* 通道选择 0000---AIN0 0001---AIN1 0010---AIN2 0011---AIN3 0100---AIN4 0101---AIN5 0110---AIN6 0111---AIN7 1000---AIN8 1001---AIN9 1010---AIN10 数据长度选择 01---8BIT 10---12BIT 11---16BIT 数据方向选择 0---MSB first 1---LSB first 单双极性选择 0---Unipolar 1---Bipolar */ //通道0-10 全部采用 16 bits、MSB first、Unipolar static const uchar TLC2543_channel_select[]= { 0x0C, // 通道 00 select 0x1C, // 通道 01 select 0x2C, // 通道 02 select 0x3C, // 通道 03 select 0x4C, // 通道 04 select 0x5C, // 通道 05 select 0x6C, // 通道 06 select 0x7C, // 通道 07 select 0x8C, // 通道 08 select 0x9C, // 通道 09 select 0xAC, // 通道 10 select }; //TLC2543 读出上一次 AD 值(12 位精度),并开始下一次转换 unsigned int TLC2543_work(uchar channel_select) { unsigned int AD_data_in; unsigned char AD_data_out, i; AD_data_in=0; AD_data_out=TLC2543_channel_select[channel_select];// 选择控制命令 while(TLC2543_EOC==0); TLC2543_IO_CLOCK=0; TLC2543_CS =0; for(i=0;i16;i++) { if(AD_data_out 0x80) TLC2543_DATA_IN=1; //控制命令从MSB-LSB,向 AD 发数 Else TLC2543_DATA_IN=0; TLC2543_IO_CLOCK=1; AD_data_out =1 ; AD_data_in =1 ; if(TLC2543_DATA_OUT==1) AD_data_in |=0x0001; //接收 AD转换数据,从 TLC2543_IO_CLOCK=0; } TLC2543_CS_2543=1; return (AD_data_in 4); //12 位精度 } 12.2 D/A转换器 12.1.1 D/A转换器基本原理 D/A转换器主要实现将数字量转换成模拟量输出。数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的权。为了将数字量转换成模拟量,必须将每1位的代码按其权的大小转换成相应的模拟量,然后将这些模拟量相加,即可

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档