51单片机AD转换(ADC0808)

ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。

将参考电压输出成0~255

引脚

ADC0808芯片有28条引脚,采用双列直插式封装。各引脚功能如下:

1~5和26~28(IN0~IN7):8路模拟量输入端。

8、14、15和17~21(out1~out8):8位数字量输出端。高位在前

22(ALE ):地址锁存允许信号,输入,高电平有效。

6(START ): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。

7(EOC ): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

9(OE ):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

10(CLK ):时钟脉冲输入端。要求时钟频率不高于640KHZ。

12(VREF(+) )和16(VREF(-) ):参考电压 输入端

11(Vcc ):主电源输入端。

13(GND ):地。

23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路

时序图

给START和ALE脉冲,这时芯片会将ADD(A~C)地址写入,启动AD转换,转换过程中EOC为低电平,转换成功后EOC为高电平,这时向OE写入1即可读出out的数据(0~255)。

参考接线

仿真图

代码

cpp 复制代码
#include <REGX52.H>
sbit ADDA=P1^4;
sbit ADDB=P1^5;
sbit ADDC=P1^6;
sbit START_ALE=P1^2;
sbit EOC=P1^1;
sbit CLOCK=P1^3;
sbit OE=P1^0;

unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char i=0;
//void delay_ms(unsigned int ms)//ms延时函数
//{
//	unsigned int i,j;
//	for(i=ms;i>0;i--)
//		for(j=110;j>0;j--);
// 
//}
// 
void Timer_Init()//定时器初始化
{
	TMOD=0x01; //设置为定时器0工作模式1
	TL0=(65536-100)%256;//低八位
	TH0=(65536-100)/256;//高八位
	TR0 = 1; //定时器0开始计时
	EA=1;//开启总中断
	ET0=1;//开启定时器0中断
}


unsigned char ADC0808_Out()//ad转换,将电压八位输出
{
	unsigned char out=0;
	ADDA=1;//ADC地址端,通过A~C可选0~7
	ADDB=1;
	ADDC=0;
	START_ALE=0;//START和ALE先给低电平再给高电平,写入地址,启动adc
	START_ALE=1;
	START_ALE=0;
	while(EOC==0);//等待ad转换结束
	OE=1;//向OE端写入1,三态门输出数据
	out=P3;
	OE=0;
	return out;
} 

void main()
{
	P2=0xfe;
	Timer_Init();//初始化定时器
  while(1)	
  { 
		i=ADC0808_Out()/50;//将256大致区分到5级
		P0=tab[i];
  }
}

void Timer0() interrupt 1
{
	TL0=(65536-100)%256;//低八位
	TH0=(65536-100)/256;//高八位
	CLOCK=~CLOCK;//给ADC时钟10khz
}
 
相关推荐
赋能大师兄5 小时前
单片机3.3V和5V电压等级
单片机·3.3v·5v
BreezeJuvenile5 小时前
外设模块学习(6)——DHT11温湿度传感器(STM32)
stm32·单片机·dht11·温湿度传感器
桃里桑5 小时前
【嵌入式软件】STM32 UART转485通信问题
stm32·单片机·嵌入式硬件
萧技电创EIIA7 小时前
基于wifi摄像头与单片机的串口透传及二次开发
单片机·51单片机·硬件工程·个人开发
三佛科技-134163842127 小时前
迷你加湿器方案开发,加湿器/香薰机MCU控制方案开发设计
单片机·嵌入式硬件·智能家居·pcb工艺
hazy1k7 小时前
51单片机基础-矩阵按键
嵌入式硬件·矩阵·51单片机
一支闲人8 小时前
带你了解STM32:SPI通信(硬件部分)
stm32·单片机·嵌入式硬件·基础知识
我先去打把游戏先10 小时前
VSCode通过SSH连接到Ubuntu虚拟机失败“找不到ssh安装”问题解决
笔记·vscode·单片机·嵌入式硬件·学习·ubuntu·ssh
学工科的皮皮志^_^12 小时前
电压源和电流源学习理解
单片机·嵌入式硬件·学习
linweidong14 小时前
跨平台驱动开发:打造兼容多款MCU的硬核方案
驱动开发·单片机·嵌入式硬件·bsp·rtos·spi驱动·hal设计