51AD转换及简易电子电压表!

发布于:2022-10-21 ⋅ 阅读:(261) ⋅ 点赞:(0)

该知识点来源于B站知弦本章便是对其电子电压表应用的简单总结!!!

一、ADC0808/0809(模拟信号转数字信号

1、其概述如下图所示,LSB为5V/2^8

2、芯片内部结构(如下图)

IN0-IN7:模拟信号输入端

D0-D7:单片机接口端,也就是芯片输出端

COLOCK:时钟信号端,常为500KHz

ADDA、ADDB、ADDC:对IN0-IN7地址选择

ALE:对地址锁存,一般与START相连

EOC:模拟转数字信号反馈(A/D转化反馈),转化完成则为1

OE:控制D0-D7是否输出,为0否,为1则输出

VREF(+)接5V,VREF(-)接地

 

 

3、时序

看时序图写程序,大致流程如下,时序图如下:

开始的时候

START=0;
OE=0;

 选择地址

START=1
ADDA=0;ADDB=0;ADDC=0//选择000地址即IN0口
delay(5);//延时5毫秒

等待转化完成读取结果

START=0;//EOC此时为0,开始AD转化
while(!EOC);//等待转化结束
OE=1;//准备传输数据到单片机上
delay(5);
temp=P1;//输出口接单片机P1口,将其数据取出
OE=0;//结束转换

 二、仿真

器件搜索:89c51、pot-hg(可变电阻)、LM016(LCD1602)、ADC0808

 

三、程序

功能:将可变电阻的电压显示出来

#include "reg51.h"
sbit  RS=P3^0;
sbit RW=P3^1;
sbit E=P3^2;
sbit EOC=P3^3;
sbit OE=P3^4;
sbit start=P3^5;
unsigned int vol=0;
unsigned char s[]={"VOLTAGE:"};
unsigned char s1[]={"0123456789"};

sbit A=P0^0;
sbit B1=P0^1;
sbit C=P0^2;

void delay(unsigned int n )
{
	unsigned int i=0,j=0;
	for(i=0;i<n;i++)
	{
		for(j=0;j<120;j++);
	}
}



void initADC() //ADC初始化(根据时序图)
{
	start=0;
	OE=0;
	start=1;
	A=0;B1=0;C=0;//选中000地址
	delay(5);
	start=0;
	while(!EOC);
	OE=1; 
	delay(5);
	vol=P1;
	OE=0;		
}

void writecom(unsigned char com)
{
	RS=0;
	RW=0;
	E=0	;
	P2=com; 
	delay(5);
	E=1;
	E=0;
}

void writedat(unsigned char dat)
{
	RS=1;
	RW=0;
	E=0	;
	P2=dat; 
	delay(5);
	E=1;
	E=0;
}

void initlcd()  // LCD初始化
{
	writecom(0x38);
	writecom(0x0c);
	writecom(0x06);
	writecom(0x01);
}

void display()  //显示函数
{
	int i=0,j=0,temp1=0,temp2=0,temp3=0;
	writecom(0x80);
	delay(5);
	while(s[i]!='\0')
	{
		writedat(s[i]) ;
		delay(5);
		i++;
	}

	vol=vol*100/51;  //乘以100为了显示小数部分,除以51:256/5V=51,即为了转化为可观察的电压值
	temp1=vol/100;
	temp2=(vol/10)%10;
	temp3=vol%10;
	writecom(0x80+0x45);
	writedat(s1[temp1]);
	delay(5);
	writedat('.');
	delay(5);
	writedat(s1[temp2]);
	delay(5);
	writedat(s1[temp3]);
	delay(5);
	writedat('V');
	delay(5);	 
}


void main()
{
	initlcd();
	while(1)
	{
		initADC();
		display();
	}
}

四、总结

学会ADC0808的连线

能够根据时序图写程序

电压值一开始并不能显示,是在仿真之后找关系才能做相应的程序处理,进而显示电压值!

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到