利用adc0809芯片,测量0~5v直流电压,通过led八段数码管显示对应的电压(要求利用三个数码管显示三位有效数字)。
时间: 2023-04-27 18:06:24 浏览: 58
可以使用ADC0809芯片来测量~5V的直流电压,并通过LED八段数码管显示对应的电压值。为了显示三位有效数字,需要使用三个数码管来显示。具体实现方法如下:
1. 将ADC0809芯片连接到电路板上,并将其输入引脚连接到待测电压的正极,将其地引脚连接到电路板的地线上。
2. 将ADC0809芯片的输出引脚连接到微控制器的输入引脚上,以便将电压值传递给微控制器。
3. 在微控制器中编写程序,读取ADC0809芯片的输出值,并将其转换为电压值。
4. 将电压值转换为三位有效数字,并将其显示在LED八段数码管上。可以使用三个数码管来显示,每个数码管显示一位数字。
5. 为了使显示更加清晰,可以使用适当的电路来控制数码管的亮度和显示方式。
通过以上步骤,就可以利用ADC0809芯片测量~5V直流电压,并通过LED八段数码管显示对应的电压值。
相关问题
利用51单片机测量0到100mv的电压并通过7段数码管显示的电路图及程序
由于51单片机的ADC模块最大输入电压为5V,因此需要通过电阻分压将输入的0-100mV电压转换为0-5V的电压再进行测量。
电路图如下:
![image](https://cdn.luogu.com.cn/upload/image_hosting/ed4q9v9z.png)
程序如下:
```c
#include <regx51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1 = P1^0;
sbit D2 = P1^1;
sbit D3 = P1^2;
sbit D4 = P1^3;
sbit D5 = P1^4;
sbit D6 = P1^5;
sbit D7 = P1^6;
sbit D8 = P1^7;
uchar code tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // 数码管显示字符表
void delay(uint t) // 延时函数
{
uint i, j;
for (i=0; i<t; i++)
for (j=0; j<100; j++);
}
void main()
{
uchar i, j;
uint adc;
P2 = 0xff; // P2口为高阻态
while (1)
{
ADC_CONTR = 0x90; // 启动ADC转换
_nop_();
_nop_();
_nop_();
_nop_();
adc = ADC_RES*256 + ADC_RESL; // 读取ADC转换结果
adc = adc/2; // 电压分压系数为2,需要将ADC转换结果除以2
i = adc/1000; // 计算千位数
j = (adc%1000)/100; // 计算百位数
if (i == 0) // 如果千位数为0,则不显示
D1 = 1;
else
D1 = 0;
D2 = tab[i];
if (i == 0 && j == 0) // 如果千位数和百位数都为0,则不显示
D3 = 1;
else
D3 = 0;
D4 = tab[j];
D5 = tab[(adc%100)/10]; // 计算十位数
D6 = tab[adc%10]; // 计算个位数
delay(10); // 延时10ms
}
}
```
利用ADC0808将一个0~5V模拟电压转换为数字量,并将转换结果直接显示出来
可以使用以下代码实现:
```
#include <ADC0808.h>
ADC0808 adc;
void setup() {
Serial.begin(9600);
adc.begin(0, 1, 2, 3, 4, 5, 6, 7); //设置ADC0808的引脚
}
void loop() {
int value = adc.read(0); //读取模拟电压并转换为数字量
Serial.println(value); //将转换结果直接显示出来
delay(1000);
}
```
其中,ADC0808是一个用于模拟电压转换的芯片,需要连接到Arduino的8个引脚上。在setup函数中,我们使用adc.begin()函数设置ADC0808的引脚。在loop函数中,我们使用adc.read()函数读取模拟电压并转换为数字量,然后使用Serial.println()函数将转换结果直接显示出来。