基于51单片机的电压采集(ADC0809)

这篇具有很好参考价值的文章主要介绍了基于51单片机的电压采集(ADC0809)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.ADC0809简介
IN0~IN7 : 8路模拟量输入端;
D0~D7:8位数字量输出端;
ADDA、ADDC、ADDC:3位地址输入线,用于选择8路模拟通道中的一路;
ALE:地址锁存允许信号,输入,高电平有效;
START:A/D转换启动信号,输入,高电平有效;
EOC:A/D转换结束信号,输出。当启动转换时,高引脚为低电平,当A/D结束转换时,高引脚输出高电平;
OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从D0~D7送出;
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ;
REF+、REF-:基准电压输入端;
VCC:电源,接+5V;
GND:地;
基于51单片机的电压采集(ADC0809)
2.程序代码

#include<reg52.h>

#define Duan_Port P0//定义数码管端口
#define ADC0809_Data P1//定义端口接收ADC0809数据转换结果

/*引脚定义*/
sbit Bit1=P2^3;
sbit Bit2=P2^2;
sbit Bit3=P2^1;
sbit Bit4=P2^0;

sbit OE=P3^1;
sbit Start=P3^2;
sbit EOC=P3^3;

sbit Dp=P0^7;//小数点

sbit CLK=P3^0;


unsigned int dat=0;
unsigned char Buf[4];//存放数码管显示数字的数组

unsigned char code smg_Duan[]={
									0xc0,0xf9,0xa4,0xb0,
									0x99,0x92,0x82,0xf8,
									0x80,0x90,0x88,0x83,
									0xc6,0xa1,0x86,0x8e,
								};//共阳极数码管编码

/**************函数声明***************/
void delay_xms(unsigned int t);//延时xms函数							
unsigned char ADC0809_Read();//ADC0809读取数据,输出为0-255
void ConvertVoltage();//将0-255转换为0.00-5.00V
void smg_Display();//数码管显示

void main()//主函数
{
	unsigned int n=0,sum;
	while(1)
	{
		for(n=0;n<3;n++)
		{
			sum=sum+ADC0809_Read();
			smg_Display();
		}
		dat=sum/3;
		ConvertVoltage();
		sum=0;
		smg_Display();
	}
}

void delay_xms(unsigned int t)
{
	unsigned int i,j;
	for(i=t;i>0;i--)
	    for(j=123;j>0;j--);
}

unsigned char ADC0809_Read()
{
	unsigned char Temp=0X00;
	OE=0;//输出设为高阻态
	Start=0;
	Start=1;//提供上升沿启动AD转换
	Start=0;//提供下降沿
	while(!EOC);//等待转换结束
	OE=1;//连接数据线输出
	Temp=ADC0809_Data;
	OE=0;//断开数据线
	return Temp;//返回结果
}

void ConvertVoltage()
{
	unsigned int Vo;
	Vo=dat*19.608;  //  5/255=0.01960784313
	Buf[0]=Vo/1000%10;
	Buf[1]=Vo/100%10;
	Buf[2]=Vo/10%10;
	Buf[3]=Vo/1%10;
}

void smg_Display()
{
	Bit1=0;
	Duan_Port=smg_Duan[Buf[0]];//选通第一位数码管并赋段码
	Dp=0;
	delay_xms(1);
	Bit1=1;
	Duan_Port=0xff;//关闭消影
	
	Bit2=0;
	Duan_Port=smg_Duan[Buf[1]];
	delay_xms(1);
	Bit2=1;
	Duan_Port=0xff;
	
	Bit3=0;
	Duan_Port=smg_Duan[Buf[2]];
	delay_xms(1);
	Bit3=1;
	Duan_Port=0xff;
	
	Bit4=0;
	Duan_Port=smg_Duan[Buf[3]];
	delay_xms(1);
	Bit4=1;
	Duan_Port=0xff;	
}


3.仿真电路
基于51单片机的电压采集(ADC0809)文章来源地址https://www.toymoban.com/news/detail-417117.html

到了这里,关于基于51单片机的电压采集(ADC0809)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 毕设--基于51单片机数字电压表的设计

    注:本毕设资源可在微信公众号:“Kevin的学习站” 中获取! 3.1、基本功能 利用51单片机作为主控芯片,模拟量输入范围直流0v-5v。模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制LCD1602液晶显示模拟量输入的电压值。 3.2、主

    2023年04月08日
    浏览(52)
  • 基于51单片机的数字电压表(PCF8591)(Proteus仿真+程序)

            本设计由51单片机最小系统+PCF8591模块+四路模拟量输入模块+一路DA输出+液晶1602显示模块 1、主控制器是89C82单片机。 2、PCF8591模数转换器进行A/D转换,读取四路电压数据,电压检测范围0-5V 精度(8位);实现一路数模转换(D/A)输出电压范围0-5V(8位)。 3、利用四个

    2024年02月05日
    浏览(48)
  • 基于51单片机和proteus的电流采集系统

    此系统是基于51单片机和proteus的仿真设计,功能如下: 1. LCD1602实时显示获取到电流值及设定值。 2. 按键可调整电流设定值。 3. 电流值过高则蜂鸣器报警。 4. 指示灯指示电流及系统状态。 5. 系统信息可通过串口实时更新。 功能框图如下: Proteus仿真界面如下: 下面就各个模

    2024年02月16日
    浏览(43)
  • 基于GD32单片机的12位ADC压力采集(50kg压力),附源码和原理图

    上位机监测到的ADC采集到的数据,该处采集的电压值是3.287mv,电压及压力值如下图:  示波器采集的电压值:3.26V,与上述单片机采集的数值基本一致 上位机监测到的ADC采集到的数据,该处采集的电压值是2.454mv,电压及压力值如下图:  示波器采集的电压值:2.50V,与上述单

    2024年04月22日
    浏览(37)
  • 122、仿真-基于51单片机的电量监测电压电流和温度报警系统设计(Proteus仿真+程序+流程图+配套资料等)

    方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字

    2024年02月16日
    浏览(48)
  • 51单片机制作简易数字电压表

    首先打开proteus软件导入各个元器件,并连线。  接下来介绍下adc0808的导入方法  频率发生器的导入方法:  接下来就要编写c程序了,代码都是经过测试的,可以方型复制使用。 最后就是编译成hex文件并导入proteus中仿真了,然后调节滑动变阻器,就可以发现电压表的值和l

    2024年02月11日
    浏览(43)
  • 【单片机】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日
    浏览(47)
  • 单片机】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日
    浏览(56)
  • 51单片机——ADC模数转换实验

    目录 一、功能描述 二、ADC介绍 2.1 逐次逼近型ADC转换原理 2.2 ADC的主要技术指标 三、XPT2046芯片介绍 3.1 XPT2046外部引脚 3.2 XPT2046的命令字 3.3 XPT2046时序图 四、测试文件test.c 五、实验现象         我们使用的 STC89C51单片机内部不含 ADC 接口,所以需要外接一个 ADC 转换芯片将

    2024年02月06日
    浏览(50)
  • 基于51单片机 + MQ-3酒精传感器 + ADC0832模数转换器 + LCD1602液晶显示器的酒精检测系统

    废话不多说,直接上东西。本文是基于51单片机的酒精检测系统设计,用的元器件有:51单片机、MQ-3酒精传感器、ADC0832模数转换器、 LCD1602液晶显示器、喇叭等元器件。 1、MQ-3 酒精检测传感器,用于检测酒精浓度。当然采集到的数据是模拟的还需要通过ADC0832模数转换器将其转

    2024年02月12日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包