A/D转换
模数转换器
模数转换过程包括量化和编码。量化是将模拟信号量程分成许多离散量级,并确定输入信号所属的量级。编码是对每一量级分配唯一的数字码,并确定与输入信号相对应的代码。最普通的码制是二进制,它有2n个量级(n为位数),可依次逐个编号。模数转换的方法很多,从转换原理来分可分为直接法和间接法两大类。 直接法是直接将电压转换成数字量。它用数模网络输出的一套基准电压,从高位起逐位与被测电压反复比较,直到二者达到或接近平衡(见图)。控制逻辑能实现对分搜索的控制,其比较方法如同天平称重。先使二进位制数的最高位Dn-1=1,经数模转换后得到一个整个量程一半的模拟电压VS,与输入电压Vin相比较,若Vin>VS,则保留这一位;若Vin<Vin,则Dn-1=0。然后使下一位Dn-2=1,与上一次的结果一起经数模转换后与Vin相比较,重复这一过程,直到使D0=1,再与Vin相比较,由Vin>VS还是Vin<V 来决定是否保留这一位。经过n次比较后,n位寄存器的状态即为转换后的数据。这种直接逐位比较型(又称反馈比较型)转换器是一种高速的数模转换电路,转换精度很高,但对干扰的抑制能力较差,常用提高数据放大器性能的方法来弥补。它在计算机接口电路中用得最普遍。 间接法不将电压直接转换成数字,而是首先转换成某一中间量,再由中间量转换成数字。常用的有电压-时间间隔(V/T)型和电压-频率(V/F)型两种,其中电压-时间间隔型中的双斜率法(又称双积分法)用得较为普遍。 模数转换器的选用具体取决于输入电平、输出形式、控制性质以及需要的速度、分辨率和精度。 用半导体分立元件制成的模数转换器常常采用单元结构,随着大规模集成电路技术的发展,模数转换器体积逐渐缩小为一块模板、一块集成电路。
例子:
例1:对于一个2位的电压模数转换器,如果将参考设为1V,那么输出的信号有00、01、10、11,4种编码,分别代表输入电压在0V-025V, 026V-05V, 051V-075V, 076V-1V时的对应输入。分为4个等级编码,当一个08V的信号输入时,转换器输出的数据为11。 例2:对于一个4位的电压模数转换器,如果将参考设为1V,那么输出的信号有0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111,16种编码,分别代表输入电压在0V-00625V, 00626V-0125V, 09376V-1V。分为16个等级编码(比较精确)当一个08V的信号输入时,转换器输出的数据为1100
DAT0 BIT P10
CLK0 BIT P11
CS BIT P12
;----------------------------------------------------------------------------
TLC549_ADC: ;串行显示处理程序,结果存在A中
CLR A
CLR CLK0
CLR CS
MOV R6,#8
ADLOOP:
SETB CLK0
NOP
NOP
MOV C,DAT0
RLC A
CLR CLK0
NOP
DJNZ R6,ADLOOP
SETB CS
SETB CLK0
RET
首先你没有给电路连接图,仅凭汇编中的地址很难想象,下面只有使用伪代码表示,控制接口自行定义了。假设可以位寻址。
int seg_table[]={0x3F,0x06,};//数码管的表
GPIO(start) = 0;//启动,低电平有效
while(!EOC);//等待转换完成
LED = DATA;//读入数据,LED显示
int temp = DATA;
delay_ms();
int i =0;
while(temp)
{
duan = temp&0x0f;
temp >>= 4;
GPIO(duan) = 0;
GPIO(duan) = seg_table[duan];
GPIO(duan) = 0;
wei = i++;
GPIO(wei) = 0;
GPIO(wei) = wei;
delay_ms();
}
对于串行发送很简单,
for(i= 0;i<8;i++)
{
GPIO_BITx = DATA&0x01;
ATA >>= 1;
}
你result_reg result定义是浮点数,转换用整数运算result=result_reg500/256;损失了精度,
最后又n=result;赋值给整型n,又损失一次精度
现在的单片机都带有模数转换,老的单片机没有,你只要编写程序 *** 作这个模数转换单元就可以了,不知道你用的是哪个单片机,所以你可以看一下手册,确认有没有,我用的STC89C52RC单片机是有的。
以上就是关于模拟-数字-模拟转换技术的原理与过程是什么全部的内容,包括:模拟-数字-模拟转换技术的原理与过程是什么、单片机模数TLC549转换这个程序什么意思、求大神把下面ADC0808A/D模数转换汇编改成C语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)