首页 > 其他分享 >51单片机AD转换(ADC0808)

51单片机AD转换(ADC0808)

时间:2024-06-02 11:28:33浏览次数:22  
标签:START P1 转换 单片机 高电平 ALE 51 ADC0808 sbit

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)。

参考接线

仿真图

代码

#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
}
 

标签:START,P1,转换,单片机,高电平,ALE,51,ADC0808,sbit
From: https://blog.csdn.net/qq_42683732/article/details/139371599

相关文章

  • atcoder350,351,352,353,354,355期部分题解
    声明:有些题感觉已经说到很明白了,就先不写代码了,有空会补上目录350D: newfriend350E:toward0351D:GridandMagnet352D:permutation subsequence353C:sigmaproblem353D:anothersigmaproblem354C:atcodermagics355C:bingo2355D:intersectingintervals......
  • 基于单片机HCSR04超声波测距
    **单片机设计介绍,基于单片机HCSR04超声波测距文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机HC-SR04超声波测距概要如下:一、模块简介HC-SR04超声波模块是一个常用于机器人避障、物体测距、液位检测、公......
  • 基于单片机的汽车防盗报警系统设计与实现
    摘要:为了有效保护车辆,防止车辆被盗,汽车防盗报警系统的设计成为研究的热点问题。基于STC89C52单片机设计了一套汽车防盗报警系统,该系统由硬件和软件两部分组成,通过高效集成电路形成完整的控制系统,电路结构简单、易于检测。介绍了各部件的结构及工作原理,利用实车试验对......
  • 单片机软件开发工程师(笔试+面试)
    笔试部分:1、strcpy和mencpy的作用与区别strcpy和mencpy都是C标准库函数,他们有以下特点:①复制内容不同:strcpy只能复制字符串,而mencpy可以复制任意内容、如字符数组、整型、结构体等。②复制方法不同:strcpy不需要指定长度、它遇到被复制的字符串的结束符’\0‘才结束,所以容易......
  • pcm5102芯片接口音频格式简析
    1.I2S,leftjustified中文,左对齐(MSB)标准,和stm32的SAI_I2S_MSBJUSTIFIED格式对应:具体含义:在LRCLK发生翻转的同时开始传输数据。该标准较少使用。注意此时LRCLK为1时,传输的是左声道数据,这刚好与I2SPhilips标准相反。左对齐(MSB)标准时序图如下所示:  ......
  • LED汽车灯驱动芯片降压恒流IC内置mos管AP5193
    产品描述AP5193是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于4.5-100V输入的高精度降压LED恒流驱动芯片。最大电流2.5A。AP5193可实现线性调光和PWM调光,线性调光脚有效电压范围0.55-2.6V.AP5193工作频率可以通过RT外部电阻编程来设定,同时内置抖频电路,可以降低对......
  • 使用HC—05实现单片机HAL库双蓝牙通信
     一.蓝牙HC-05简介(主要为AT模式介绍)1.接线要点:(六个引脚中左右两侧的两个不用连接)    TX-RX     RX-TX        GND -GND    VCC -VCC(5V)2.AT模式:  进入方法:使用CH340串口工具链接HC-05及电脑USB端(提前下好CH340驱动)按......
  • 学好STM32单片机必备的10件工具
    学会STM32单片机必备10件软硬件工具提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、常用软硬件工具二、软硬件工具的具体介绍1.STM32F103C8T6小系统板2.ST-LINKV2下载调试器3.万用表4.示波器5.电烙铁6.USB转TTL串口通讯模块7.AltiumD......
  • 基于at24c02的按键检测C51程序
    1#include<reg51.h>2#include<intrins.h>3#include<lcd1602.h>4#defineucharunsignedchar5#defineuintunsignedint6#defineulongunsignedlong78#defineEEPROM_ADDR0xA09sbitSDA=P2^0;10......
  • 『国产单片机』智能猫砂盆方案开发设计
    现如今养猫的不在少数,而对于猫乱排泄,养宠人也是苦恼不已,通常会购买简易的猫砂盆,以供猫咪使用,但不是很方便,需要手动动清理。现如今最新研发了一款智能智能猫砂盆的方案,能够自动收集猫咪排泄物,并且能在APP(米家)自动监测健康状态和排便次数,评估猫咪健康状态。以下是米家智能猫砂盆......