0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于微控制器的数字电压表设计方案,使用8051微控制器的数字电压表的实现方法

科技观察员 来源:electricaltechnology 作者:electricaltechnology 2023-07-18 16:07 次阅读

数字电压表是一种测量电信号电压的电子仪器。它用于各种应用,包括电子、电力系统和自动化领域。在本文中,我们将讨论使用8051微控制器的数字电压表的实现。

8051微控制器是一种广泛使用的微控制器,适用于各种应用。它具有 4KB 片上 ROM、128 字节片上 RAM、32 个 I/O 引脚和一个 16位定时器。微控制器可以用汇编语言或高级语言(如C)进行编程

该微控制器具有多种特性,非常适合用作数字电压表,例如内置ADC模数转换器)和8位定时器。

所需组件

要使用 8051 微控制器构建数字电压表,我们需要以下组件:

8051微控制器(AT89C51)。

LCD 显示屏 –(7 段 4 位)。

模数转换器(ADC0804 IC)。

电压传感器(25V)。

电池或直流适配器。

微控制器编程板。

晶体振荡器 = 12MHz。

3 个电阻数 = 10kΩ。

4 个电容器 = 2 个 33pF,1 个 150pF,第四个为 10μF/16V。

电路图

1.png

电路概述:

使用8051微控制器的数字电压表电路由多个组件组成,例如8051微控制器、LCD显示器、分压器网络和一些其他无源组件。分压器网络用于将电压降低到微控制器可以读取的水平。

分压器电路(ADC0804 IC)

分压器电路用于将输入信号的ADC范围增加到25V或将输入电压降压到安全水平,这可以通过微控制器进行测量。电位器用于调节电压表的电压范围。ADC用于将模拟电压信号转换为数字信号,并可显示在LCD显示屏上。

分压器电路由两个电阻R1和R2组成,串联连接。输入电压施加在R1和R2的串联组合上,输出电压施加在R2上。R2与(R1+R2)之比决定了输出电压。我们可以通过改变R1和R2的值来调整输出电压范围。

ADC通过将输入电压与基准电压进行比较,将模拟电压信号转换为数字信号。ADC的分辨率取决于转换器中使用的位数。例如,8位ADC可以测量0-5V的电压范围,每步分辨率为19.53
mV。

数字电压表的软件是用汇编语言或C语言编写的。该软件从ADC读取电压信号,将其转换为数字值,并将其显示在LCD显示屏上。该软件还可以编程以实现其他功能,例如峰值电压测量、电压平均和电压记录。

总而言之,使用8051微控制器的数字电压表是一种简单且经济高效的解决方案,用于测量各种应用中的电压信号。它需要一个分压器电路、一个ADC、一个电位计和一个LCD显示器。微控制器可以用汇编语言或C语言进行编程,以实现其他功能。

电路工作:

分压器网络由两个串联电阻组成。其中一个电阻器是电位计,可以调节以校准电压表。分压器网络的输出连接到微控制器的模拟输入引脚。微控制器使用其内置ADC将模拟电压转换为数字值。

然后,数字值显示在LCD显示屏上。LCD显示屏通过数字接口连接到微控制器。微控制器将数字值发送到LCD显示屏,然后LCD显示屏以可读格式显示。

微控制器的编程包括初始化ADC,读取模拟电压,将其转换为数字值,然后将其发送到LCD显示器。微控制器持续读取电压并更新显示。

如何为数字电压表编程微控制器AT89C51?

上述过程概述了测试已编程和构建的电路的步骤(电路图和项目代码如下所述)。以下是比较和更详细解释的步骤:

将程序刻录到 AT89C51 微控制器:此步骤涉及使用程序员将编译的程序代码传输到微控制器。程序代码通常用编程语言(如 C
或汇编语言)编写。程序代码包含微控制器为执行所需功能而执行的指令。

连接电路:将程序刻录到微控制器上后,可以使用电路图作为指导组装电路。该电路包括at89c51微控制器、电压传感器和显示元件。应小心连接,以确保电路接线正确且所有组件均正确供电

连接电压源:电压源连接到电压传感器的输入端。确保最大模拟输入电压小于25V DC以防止损坏电路非常重要。

连接数字万用表:数字万用表连接到电压传感器的输入端子。万用表用于验证LCD和万用表上显示的电压读数是否相同或非常相似。

打开电路板电源:电路的电源已打开。这为微控制器和电路的其他组件提供电源。

观察显示:LCD和数字万用表显示器应显示相同或非常相似的电压读数。这表明电压表工作正常。

改变输入电压:如果可能,可以缓慢改变输入电压,以验证电压表是否继续显示准确的读数。

关闭电路板电源:关闭电路的电源以关闭组件的电源。
编程代码:

#include
#define lcd P3
#define dat P2
sbit rs=P1^6;
sbit e=P1^7;

void delay (int);
void display (unsigned char);
void cmd (unsigned char);
void init (void);
void string (char *);
void intro (void);
char i=0;

void delay (int d)
{
unsigned char i=0;
for(;d >0;d--)
{
for(i=250;i >0;i--);
for(i=248;i >0;i--);
}
}
void cmd (unsigned char c)
{
lcd=c;
rs=0;
e=1;
delay(10);
e=0;
}
void display (unsigned char c)
{
lcd=c;
rs=1;
e=1;
delay(10);
e=0;
}
void string (char *c)
{
while(*c)
{
display(*c++);
}
}
void init (void)
{
cmd(0x38);
cmd(0x01);
cmd(0x0c);
cmd(0x80);
}
void intro (void)
{
string(" Electronics ");
cmd(0xc0);
string(" Hub ");
delay(2000);
cmd(0x01);
string(" Digital ");
cmd(0xc0);
string(" Voltmeter ");
delay(2000);
cmd(0x01);
cmd(0x80);
}

void main()
{
unsigned int temp=0;
unsigned int temp1=0;
float val=0.0;

init();
intro();
dat=0xff;
while(1)
{
if(i==0)
{
string(" Volts - ");
i++;
}
val=dat*0.02; // 0.02 is resolution of adc
val=val/0.2; // 0.2 is nothing but (R2/(R1+R2)) resistor values in the voltage sensor
cmd(0x89);
if((val >=1.0) && (val< 10.0)) { display(' '); temp=val*1000; temp1=((temp/1000)+48); display(temp1); display('.'); temp1=(((temp/100)%10)+48); display(temp1); } else if((val >=10.0) && (val< 100.0))
{
temp=val*100;
temp1=((temp/1000)+48);
display(temp1);

temp1=(((temp/100)%10)+48);
display(temp1);

display('.');

temp1=(((temp/10)%10)+48);
display(temp1);
}
else
{
display(' ');
string("0.0");
}
delay(1000);
}
while(1);
}

使用8051微控制器的数字电压表的优点:

1.数字电压表比模拟电压表更准确,更精密。

  1. 微控制器可以编程为执行除测量电压之外的其他任务。

3.数字显示易于阅读和解释。

4.电路简单,建造成本低廉。

5.电压表可以使用电池供电,便于携带,易于现场使用。

局限性

该电路只能用于测量低压应用(高达25V)。

模拟电压的输入信号应在0V至5V之间。

该系统在任何给定时间只能测量单个模拟输入值。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • 8051
    +关注

    关注

    3

    文章

    310

    浏览量

    50922
  • 数字电压表
    +关注

    关注

    4

    文章

    180

    浏览量

    32775
  • 电子仪器
    +关注

    关注

    2

    文章

    1331

    浏览量

    22844
收藏 人收藏

    评论

    相关推荐

    简易数字电压表的设计

    简易数字电压表的设计简易数字电压表可以测量0~5CV的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示。测量最小分辨率为0.01
    发表于 12-14 17:21

    EDA数字电压表的研究和设计应用

    电压表  数字电子系统通常由ASIC芯片和外围硬件设备组成,具有灵活性不强等缺陷。如图1所示的数字电压表,A/D转换
    发表于 10-26 15:43

    数字电压表

    这个是数字电压表的设计(源程序是汇编语言)
    发表于 01-16 17:08

    数字电压表

    请问AT89C51等单片机所制做成的数字电压表与ICL7107所制做成的数字电压表相比有什么优点?
    发表于 05-22 15:32

    数字电压表仿真

    数字电压表仿真
    发表于 05-31 22:27

    简易数字电压表的设计

    设计采用计数 74LS160、 74LS161、 V-F转换 LM331、集成运算放大器、 555 定时、石英晶体震荡 和共阳极数码管为主要硬件,分析了
    发表于 04-28 15:10

    单片机的数字电压表

    以单片机为核心控制器设计一个能够测量直流电压数字电压表,具体要求如下:1.可实现对至少四路直流电压
    发表于 07-07 11:08

    采用CPLD实现的智能数字电压表设计

    求一款以CPLD为控制核心的16位高精度数字电压表设计方案
    发表于 04-13 06:59

    请问如何利用CPLD实现智能数字电压表的设计?

    如何利用CPLD实现智能数字电压表的设计?数字电压表系统是如何组成的?其工作原理是什么?如何实现
    发表于 04-13 06:07

    求一种数字电压表设计方案

    求一种以CPLD为核心处理电路的数字电压表设计方案
    发表于 04-28 07:14

    怎样去设计新型数字电压表

    新型数字电压表的工作原理是什么?怎样去设计新型数字电压表
    发表于 04-28 06:46

    怎么利用FPGA实现数字电压表的设计

    怎么利用FPGA实现数字电压表的设计?
    发表于 05-06 10:19

    直流数字电压表设计程序

    直流数字电压表设计程序,积分式直流数字电压表By SCU Team任务在不采用专用A/D转换芯片的前提下,设计并制作积分型直流
    发表于 07-22 08:33

    直流数字电压表设计 精选资料推荐

    分辨率0.01V,误差在0.05V范围内。关键词:数字电压表;STC15F2K60S2;共阴数码管目录一、数字电压表简介5二、数字
    发表于 07-28 09:42

    基于Proteus的数字电压表仿真设计

    为了提高电压表的测量精度和性价比,提出了一种以AT89C51单片机为控制核心的,基于Proteus仿真技术的数字电压表设计方案。详细介绍了
    发表于 01-30 14:24 337次下载
    基于Proteus的<b class='flag-5'>数字</b><b class='flag-5'>电压表</b>仿真设计