ADC0809模数转换与显示

这篇具有很好参考价值的文章主要介绍了ADC0809模数转换与显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ADC0809模数转换与显示

目录

ADC0809介绍

一、硬件原理图(proteus仿真)

​编辑

二、代码及详细注释

代码如下(示例):

总结



ADC0809介绍

ADC0809是CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。该芯片为经典的模数转换芯片,适合初学者学习,认真学习此芯片可以为以后使用其他模数转换芯片打下坚实基础。

其内部结构如图所示

adc0809,51单片机,c语言,嵌入式硬件

 ADC0809内部由8路模拟量开关、通道地址锁存器、8位A/D转换器和三态数据输出锁存器组成。其中IN0~IN7为8路模拟量输入端,可以分别连接8路单端模拟电压信号。ADDA,ADDB,ADDC为通道选择端,ALE为选通控制信号。当ALE有效时,三个选通信号的不同点平组合可选择不同组合。其中ADDC为最高位,ADDA为最低位,例如,当ADDA=0,ADDB=1,ADDC=1时,IN6选通。

ADC0809的时序图如图所示

adc0809,51单片机,c语言,嵌入式硬件

 由时序图可得ADC0809的设计步骤如下

1.设置模拟通道输入端
引脚——ADDA,ADDB,ADDC选择(模拟通道选择地址信号).
2、设置START——启动A/D转换(要求不严格时,我们可以让ALE和START共用一个时钟信号)a.置0——提供上升沿

b.置1——上升沿清空ADC0809内部寄存器

c.置0——下降沿启动A/D转换

3.判断EOC——判断A/D转换是否结束
A/D转换启动后,EOC自动从高电平转化为低电平。A/D转换期间,EOC始终保持低电平。转换结束后,EOC自动从低变成高。

因此我们可以通过判断EOC的值来判断A/D 转换是否结束。
4.OE(输入允许信号)
OE=1时,输出转换得到的数据.
5.D0~D7(A/D转换后的数据输出端)

这样我们就完成了一次A/D转换。 

转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。有两种不错的方法供大家参考。

查询方式
A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
 


一、硬件原理图(proteus仿真)

adc0809,51单片机,c语言,嵌入式硬件

由于proteus中没有ADC0809,因此我们在此用与其功能完全相同的ADC0808所代替。

由仿真图可得,ADC0808的控制端与P2^0——P2^6相连接,通过软件来控制ADC0808。ADC0808的输出端与单片机的P0口相连接,因此,我们可以通过读取模数转换后P0的值,来获得模数转换所得到的数据。在此需要注意的是,ADC0808的OUT1为数据的最高位,OUT8为数据的最低位!!!

本实例中,我们选通IN3作为模拟信号的输入端,通过一个可变电阻来模拟模拟信号的输入。

仿真结果如图所示

模拟信号输入为0时

adc0809,51单片机,c语言,嵌入式硬件

模拟信号输入最大时

adc0809,51单片机,c语言,嵌入式硬件

 ADC0809为8位的模数转换芯片,因此,计数的最大量为2^8=256。

二、代码及详细注释

代码如下(示例):

#include <REGX52.H>
sbit ADDA=P2^0;
sbit ADDB=P2^1;
sbit ADDC=P2^2;
sbit START=P2^5;
sbit EOC=P2^4;
sbit OE=P2^3;
sbit CLOCK=P2^6;

unsigned char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,
	                       0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管段码表
void Delay10ms()		//@12.000MHz延时10ms
{
	unsigned char i, j;

	i = 20;
	j = 113;
	do
	{
		while (--j);
	} while (--i);
}
timer0() interrupt 1      //  500KHz
{
	CLOCK=!CLOCK;
}
void ADC0809convert()
{
 
	ADDA=1;ADDB=1;ADDC=0;//选通IN3
	START=0;
	START=1;//上升沿清空ADC0809内部寄存器
	Delay10ms();
	START=0;//下降沿开始A/D转换
	while(EOC==0);//等待转换结束
	OE=1;//提供使能信号,锁存转换数据
	
}
void led_display(unsigned char x)
{
	P3=0xf7;//选中个位数码管
	P1=led_mod[x%10];//显示个位
	Delay10ms();
	P3=0xfb;//选中十位数码管
	P1=led_mod[(x%100)/10];//显示十位
	Delay10ms();
	P3=0xfd;//选中百位
	P1=led_mod[x/100];//显示百位
	Delay10ms();
}
void main()
{
	TMOD=0x02;//设置T1定时器为模式二
	TL0=0xE8;//设置定时初始值
	TH0=0xE8;//设置定时重载值
	ET0=1;//允许定时器中断
	EA=1;//开总中断
	TR0=1;//定时器0开始计时
	while(1)
	{
		ADC0809convert();//模数转换
		led_display(P0);//显示转换数据
		OE=0;//锁存信号使能端置零,为下次锁存做准备
	}
}

总结

在本次实例中,我们学习了ADC0809这款经典的模数转换芯片以及基本使用方法。以此类推,以后,对于某种特殊的模数转换芯片,我们首先要了解该芯片的管脚功能,然后通过分析时序图确定芯片的工作时序,通过工作时序进行硬件连接并且进行软件编程,通过这种思路,我们可以做到触类旁通,以后再遇到类似的芯片,我们都可以正常的使用。文章来源地址https://www.toymoban.com/news/detail-751549.html

到了这里,关于ADC0809模数转换与显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机入门——数模\模数转换

    要记录一段美妙的音乐,我们至少有两种方式。第一种是使用黑胶唱片,第二种是使用数码文件。 任何一种音乐本质来说,都是一种跟随时间不断变化的信号,如下图(a)所示。它本身具有如下特点: 在时间轴上,信号是连续的,即每一个时刻都对应一个确定的信号。 信号

    2024年02月06日
    浏览(52)
  • 51单片机课程设计——基于单片机的AD模数转换设计

    一、功能简介 1.A/D 是模拟量到数字量的转换,依靠的是模数转换器(AnalogtoDigitalConverter),简称ADC。D/A是数字量到模拟量的转换,依靠的是数模转换器(DigitaltoAnalogConverter),简称DAC。它们的道理是完全一样的,只是转换方向不同,因此我们讲解过程主要以A/D为例来讲解。

    2024年02月04日
    浏览(50)
  • 【单片机】51单片机,TLC2543,驱动程序,读取adc

    TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0~AIN10为模拟输入端; 15——CS 为片选端; 17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式) 16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。) 19——EOC为转换结束端

    2024年02月14日
    浏览(44)
  • 单片机】51单片机,TLC2543,驱动程序,读取adc

    TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0~AIN10为模拟输入端; 15——CS 为片选端; 17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式) 16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。) 19——EOC为转换结束端

    2024年02月14日
    浏览(53)
  • 基于51单片机的电压采集(ADC0804)

    1.ADC0804简介 工作电压:+5V,即VCC=+5V。 模拟转换电压范围:0~+5V,即0≤Vin≤+5V。 分辨率:8位,即分辨率为1/(2^8)=1/256,转换值介于0~255之间。 转换时间:100us(fCK=640KHz时)。 转换误差:±1LSB。 参考电压:2.5V,即Vref/2=2.5V。 Vin(+)、Vin(-):两个模拟信号输入端,可以接

    2023年04月08日
    浏览(36)
  • 【51单片机】AD模数转换&DA数模转换(江科大)

    · AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 · DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 · AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能 ·

    2024年02月19日
    浏览(47)
  • 【51单片机Keil+Proteus8.9+ADC0804】ADC实验 模拟转数字实验

    一、实验名称 ADC实验 模拟转数字实验 二、设计思路 电路设计 1.选用AT89C51单片机作为电路核心单元,外接8位单通道AD转换器ADC0804芯片和LM016L显示器以及滑动变阻器等其它常用元器件构成电路。 2.将ADC0804芯片的控制引脚RD,WR,INTR接到AT89C51芯片对应引脚,再将ADC0804电压输入引脚

    2024年01月20日
    浏览(41)
  • MCU-51:单片机之AD模数转换与DA数模转换

    AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了

    2023年04月24日
    浏览(46)
  • STC89C51系列单片机与ADC0832通信

    ADC0832是一种常用的8位模数转换器,它可以将模拟信号转换为数字信号,以供单片机进行处理。STC89C51系列单片机是一款常见的8位单片机,具有强大的处理能力和丰富的外设资源,可以与ADC0832通信,实现模拟信号采集的功能。 本文将介绍如何使用STC89C51单片机与ADC0832通信,并

    2024年02月13日
    浏览(42)
  • 单片机学习——ADC讲解(A/D转换、D/A转换)

    单片机学习——中断系统 单片机学习——存储器详解(程序存储器、片内RAM、拓展RAM、EEPROM) 单片机学习——定时器/计数器 单片机学习——A/D转换 更新ing A/D转换模块是单片机的高功能模块,用于对模拟信号进行数字转换,本文以STC8H8K64U单片机为例(原理与其他51单片机并

    2024年02月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包