proteus+keil5仿真学习笔记(第八章 A-D转换)

第八章 A-D转换

A-D转换(模-数转换)用于实现模拟量到数字量的转换。A-D转换器件在形式上有两种:串行和并行。并行转换结果可直接获得,串行则需要软件处理后获得,但串行芯片结构简单。本章将介绍串行A-D转换芯片的应用。

一、A-D转换原理

AD转换是将时间连续和幅值连续的模拟量转换为时间离散、幅值也离散的数字量。使输出的数字量与输入的模拟量成正比。

A/D转换器的主要技术指标

分辨率: 又称量化间隔,定义为满刻度电压与2^n之比,n 为 A/D 转换的位数

量化误差:有相对误差和绝对误差,绝对误差等于分辨率的一半,即绝对误差 = 分辨率/2

量程:即所转换的电压范围

转换时间和转换率:完成一次A/D转换所需要的时间称为转换时间,转换时间的倒数称为转换率

A/D转换器类别:计数式、双积分式、逐次逼近式、并行式

TLC549

TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。

REF+:基准电压高端, 通常接 VCC

REF -: 基准电压低端, 通常接地

AIN :模拟电压输入端

/CS:片选端, 低电平有效

SDO:转换后数据输出端, 在时钟信号作用下从高位到低位依次输出

SCLK:时钟端

二、程序设计和仿真

1.proteus仿真

可变电阻:POT-HG

2.程序

#include <reg52.h>//单片机头文件
#define uchar unsigned char//定义uchar为unsigned char
unsigned char code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管码段表
unsigned char dat[]={0,0,0,0};//4位数字显示存放数组
unsigned char tmp,i;
//定义TLC549串行总线操作端口
sbit CLK=P1^7;//定义A-D转换的SCLK
sbit SDO=P1^5;//定义A-D转换的SDO
sbit CS=P1^6;//定义A-D转换的/CS


void delay()//延时程序
{
	unsigned char i;
	for(i=0;i<250;i++);
}

uchar TLC549ADC(void)//A-D转换子程序
{
	uchar i,ADCdata;//定义循环变量
	CS=0;//片选引脚为1
	for(i=0;i<8;i++)//循环8次
	{
		CLK=1;//时钟引脚为1
		ADCdata<<=1;//存取变量左移一位
		ADCdata|=SDO;//按位赋值
		CLK=0;//时钟引脚为0
	}
	CS=1;//片选引脚为0
	return(ADCdata);//返回A-D转换值
}

void main()
{
	int n,out;//循环变量,输出变量
	double AD_DATA;//定义A-D转换数据变量
	while(1)
	{
		AD_DATA=TLC549ADC();//读取当前电压值A-D转换数据
		out=AD_DATA*5*1000/256;//转换成电压值,并扩大1000倍
		dat[0]=out/1000;//千位
		dat[1]=out%1000/100;//百位
		dat[2]=out%100/10;//十位
		dat[3]=out%10;//个位
		tmp=0x01;//数码管片选初值
		for(i=0;i<4;i++)//循环4次,显示4个数字
		{
			P2=tmp;//设置片选值
			P0=tab[dat[i]];//输出数字
			tmp=tmp<<1;//片选值左移一位
      delay();//延时
		}
		for(n=0;n<600;n++);//延时
	}
}

总结

本章简单介绍了串行A-D转换芯片TLC549的应用。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
关于Proteus仿真ADC0809,说明以下几点: 1、在Proteus中,ADC0809是不可仿真的。但可以用ADC0808代替ADC0809进行仿真ADC0808与ADC0809有相同的引脚,功能极为相似。在Proteus中,可以认为:ADC0808就是ADC0809。 2、说明几个关键引脚的输出信号: 1)OE 数据输出允许信号,高电屏有效(意思就是,当OE接高电屏时才允许将转换后的结果从ADC0808的OUT1~OUT8引脚输出,否则,在内部锁存)。 2)ADC0808的ALE信号(22引脚),以及START信号(6引脚) ALE称为“地址锁存允许信号”,高电屏有效。就是说:ALE=1时,允许将ADDA~ADDC的地址输入到ADC0808的内部译码器,经过译码后选定外部模拟量的输入通道。 START信号,这是一个必须重点掌握的信号,向START送入一个高脉冲,其上升沿使ADC0808内部的“逐次逼近寄存器SAR”复位,其下降沿可以*启动A/D转换,并同时使EOC引脚为低电平*(两个*之间的内容必须牢记!)。 应注意到:ALE是高电屏有效,而START的有效部分只是上升沿和下降沿,所以在连接电路时可以将ALE信号与START信号连接到一起,使它们在同一个脉冲上各取所需。 3)EOC AD转换结束的标志信号,在AD转换结束时成现高电屏。不能通过以下方式使EOC恢复低电屏: 假设EOC连到P1.0口上,企通过CLR P1.0使EOC恢复低电屏是不可行的。在Proteus仿真时,会出现黄色信号,表示短路。在实际当中,短路是非常可怕的事情。 千万注意:EOC是靠START的下降沿清零的! 4)在Proteus中,ADC0808的时钟信号要用DCLOCK产生(应该知道啥是DCLOCK吧?),因为在Proteus仿真中,当不外接扩展ROM时,单片机的ALE信号(注意,不是ADC0808的ALE信号!)在Proteus仿真中不会出现,因此即使外接74LS74作分频也不会得到时钟信号。 发点牢骚:很多高校都以ADC0809作为AD转换的代表芯片来讲解,但却不细说其工作过程和工作原理。我们杨红梅老师上课这样说的:“当程序执行到MOVX @DPTR,A的时候,会启动AD转换”。我不理解为什么执行到这里就启动AD转换了,于是说道:“老师,这里我不理解。”作为一名十分有责任感的副教授,她是这样回答的:“就是执行到这里就启动了,你还想理解到什么程度?”……令我实在无语。于是我到校书馆翻阅了一些相关的高校教材,其各书所述大同小异,也没什么收获,现在的高校教材呀!不得不令人怀疑有抄袭之嫌。后来,在清华大学出版社出版的《单片机原理与应用及C51程序设计》一书中获得了一些启发,又亲自动手做了仿真,才略懂一二。对于希望学好单片机的同仁,我有一点小常识奉送,就是:务必学会读懂时序,即使老师上课不讲,自己也要自学,并学会。 我写的这个程序极其短小,重点在于使读者通过仿真控制理解上述关键信号的作用,进而理解ADC0808的工作过程和工作原理。为了减少赘余,突出重点,并没有用单片机AD转换后的数字信号行处理,而是通过ADC0808的OUT1~OUT8引脚直接输出。希望看过此例的同仁能通过此例真正学懂ADC0808(也即是:ADC0809)。相关的时序,百度上有丰富的资源,在这里就不赘赠了,请见谅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值