ADC是模数转换器,它将模拟数据转换为数字格式。通常用于将模拟电压转换为数字格式。模拟信号没有正弦波或语音之类的无限值,ADC将它们转换为特定的电平或状态,可以将其作为物理量进行数字测量。ADC不进行连续转换,而是定期转换数据,通常称为采样率。电话调制解调器这是用于互联网的ADC的示例之一,它将模拟数据转换为数字数据,因此计算机可以理解,因为计算机只能理解数字数据。使用ADC的主要优点是,可以有效地从原始信号中消除噪声,并且数字信号比模拟信号可以更有效地传播。这就是收听时数字音频非常清晰的原因。
目前,市场上有许多微控制器内置了带有一个或多个通道的ADC。通过使用他们的ADC寄存器,我们可以进行接口。当我们选择8051微控制器系列进行任何需要ADC转换的项目时,我们将使用外部ADC。一些外部ADC芯片是0803,0804,0808,0809,还有更多。今天,我们将要与AT89s52微控制器(即ADC0808 / 0809)接口8通道ADC。
组件:
- 8051单片机(AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- 电阻(1k,10k)
- 锅(10k x4)
- 电容器(10uf,1000uf)
- 红色LED
- 面包板或PCB
- 7805
- 11.0592 MHz晶体
- 功率
- 连接线
ADC0808 / 0809:
ADC0808 / 0809是单片CMOS器件和微处理器兼容的控制逻辑,具有28引脚,可在输出中提供8位值,并具有8通道ADC输入引脚(IN0-IN7)。它的分辨率为8,因此可以将模拟数据编码为256级(2 8)之一。该设备具有三个通道地址线:ADDA,ADDB和ADDC,用于选择通道。以下是ADC0808的引脚图:
ADC0808 / 0809 需要一个时钟脉冲 进行转换。我们可以使用振荡器或微控制器来提供它。在这个项目中,我们通过使用微控制器来应用频率。
我们可以使用地址线选择任何输入通道,就像我们可以通过将所有三个地址线(ADDA,ADDB和ADDC)保持为低电平来选择输入线IN0一样。如果要选择输入通道IN2,则需要保持ADDA,ADDB低和ADDC高。要选择所有其他输入通道,请查看给定的表:
ADC通道名称 |
ADDC密码 |
ADDB PIN码 |
ADDA PIN |
IN0 |
低 |
低 |
低 |
IN1 |
低 |
低 |
高 |
IN2 |
低 |
高 |
低 |
IN3 |
低 |
高 |
高 |
IN4 |
高 |
低 |
低 |
IN5 |
高 |
低 |
高 |
IN6 |
高 |
高 |
低 |
IN7 |
高 |
高 |
高 |
电路说明:
“将ADC0808与8051接口”的电路很少复杂,它包含更多用于将设备彼此连接的连接线。在本电路中,我们主要使用AT89s52作为8051微控制器,ADC0808,电位计和LCD。
16x2 LCD以4位模式与89s52微控制器连接。控制引脚RS,RW和En直接连接到引脚P2.0,GND和P2.2。数据引脚D4-D7连接到89s52的引脚P2.4,P2.5,P2.6和P2.7。ADC0808输出引脚直接连接到AT89s52的端口P1。地址线引脚ADDA,ADDB,AADC连接在P3.0,P3.1和P3.2。
ALE(地址锁存使能),SC(开始转换),EOC(转换结束),OE(输出使能)和时钟引脚连接在P3.3,P3.4,P3.5,P3.6和P3.7 。
在这里,我们使用了三个连接到ADC0808的引脚26、27和28的电位器。
使用9伏电池和5伏稳压器7805为电路供电。
加工:
在这个项目中,我们已经连接了ADC0808的三个通道。为了演示,我们使用了三个可变电阻器。当我们给电路供电时,微控制器通过使用适当的命令初始化LCD,给ADC芯片提供时钟,通过使用地址线选择ADC通道,并将启动转换信号发送给ADC。此ADC首先读取选定的ADC通道输入并将其转换后的输出提供给微控制器。然后,微控制器在LCD的Ch1位置显示其值。然后,微控制器通过使用地址线更改ADC通道。然后ADC读取所选通道并将输出发送到微控制器。并在液晶显示屏上显示名称Ch2。和其他渠道一样明智。
ADC0808的工作与ADC0804的工作非常相似。在这种情况下,由于ADC需要时钟信号才能工作,因此第一个微控制器使用Timer 0中断将500 KHz时钟信号提供给ADC0808。现在,微控制器将低电平到高电平的信号发送到ADC0808的ALE引脚(其高电平有效引脚),以启用地址中的锁存器。然后,通过将高电平到低电平信号施加到SC(开始转换),ADC开始模数转换。然后等待EOC(转换结束)引脚变为低电平。当EOC变为LOW时,表示模数转换已完成,并且可以使用数据了。此后,微控制器通过向ADC0808的OE引脚施加高电平到低电平信号来启用输出线。
ADC0808在其输出引脚上提供比率度量转换输出。辐射转换的公式为:
V in /(V fs -V z)= D x /(D max -D min)
哪里
V in是转换的输入电压
V fs是满量程电压
V z是零电压
D x是要测量的数据点
D max是最大数据限制
D min是最小数据限制
程序说明:
在程序中,首先包含头文件sand定义了ADC和LCD的变量以及输入和输出引脚。
#包括
已经创建了创建延迟的功能(无效延迟),以及一些LCD功能,例如LCD初始化,打印字符串,LCD命令等。您可以在Code中轻松找到它们。检查本文以了解与8051及其功能的LCD接口。
之后,在主程序中,我们初始化了LCD并相应地设置了EOC,ALE,EO,SC引脚。
void main(){int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini(); lcdprint(“ ADC 0808/0809”);
然后程序读取ADC并将ADC输出存储在一个变量中,然后使用void read_adc()和void adc(int i)函数将其十进制转换为ASCII后发送到LCD:
void read_adc(){number = 0; ale = 1; sc = 1; delay(1); ale = 0; sc = 0; while(eoc == 1); while(eoc == 0); oe = 1; number = input_port; delay(1); oe = 0; } void adc(int i){switch(i){case 0:ADDC = 0; ADDB = 0;ADDA = 0;lcdcmd(0xc0); read_adc();