基于51单片机的数字电压表

该设计通过ADC0809模数转换器将模拟电压转换为数字信号,再通过51单片机进行处理,最终在四段共阴极数码管显示屏上显示相对应的电压值。

一、引言

在嵌入式系统设计中,51单片机因其高性价比和良好的通用性而受到广泛关注。本文基于51单片机设计了一种数字电压表,可实现对电压的实时采集和显示。

二、系统仿真硬件设计

通过仿真软件对该设计测试了系统的响应时间,结果表明系统的响应速度较快,可以满足实时监测的要求。仿真原理图如图所示:

1、51单片机:作为系统的核心部件,负责控制整个系统的运行。
2、ADC0809模数转换器:8位串行模数转换器,具有8个模拟输入通道和8位并行输出。本设计采用ADC0809实现电压的采集和转换。
3、4段共阴极数码管显示屏:用于显示电压测量结果。
4、 电源模块:为整个系统提供稳定的工作电压,用户可以通过调节该电压来改变数码管显示的电压值。

三、软件编程

本设计的软件编程采用C语言编写,主要包括主程序和单片机定时中断服务程序两个部分。主程序主要完成系统的初始化、四段共阴极数码管显示屏的初始化和ADC0809的初始化的等功能;51单片机的定时中断服务程序主要完成电压的采集和转换等功能,其实现原理框图如下:

1、定时中断服务程序

定时中断服务程序主要完成电压的采集和转换的初始化的功能。

void time0_init() interrupt 1 using 0
{
	TH0 = (65536-200)/256; // 定时器重装初始值
	TL0 = (65536-200)%256;
	clk = ~clk;
}
2、ADC0808的数据采集和处理函数

该函数通过不断读取ADC0809的转换结果并显示在数码管上。当ADC0809完成一次转换后,会向CPU发出请求信号,CPU响应判断响应后,读取ADC0809的转换结果。

void adc0808_read()	// 读取数据
{
	sta = 0;
	sta = 1;						   // 形成下跳脉冲信号,开启ad
	sta = 0;
	while(! eoc);				 // 等待转换完成
	oe = 1;						 // 允许输出
	input_data = input;						 // 获取输出
	input_num = (input_data * 1.0 / 255) * 500;	 // 对输出进行转换
	oe = 0;
}
3、在读取完数据后,MCU通过显示函数将读取后的结果在4段共阴极数码管上进行显示输出。
void seg_4()  // 4段数码管输出
{
	uchar i;

	for (i = 0;i < 4;i ++)
	{
		seg_num = seg_duan[seg_duanxuan[i]];
		if(seg_duan[seg_duanxuan[i]] == 0x3f && seg_duan[seg_duanxuan[i+1]] != 0x3f) //确定小数点的位置
		{
			sign = 2;
		}
		else
			sign += 1;
		if(sign == 3)
		{
			dot = 1;
			sign = 10;
		}
		seg_wei &= seg_w[i];
		delay(2);
		seg_wei |= 0x0f;
	}
}

四、结论

本文基于51单片机设计了一种数字电压表,可实现对电压的实时采集和显示。测试结果表明,本设计的测量误差在±0.5%以内,精度较高,且响应速度较快,可以满足实时监测的要求。本设计具有结构简单、易于实现和成本低廉等优点,可广泛应用于电力系统的电压监测领域。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
介绍了一种基于STC89C51单片机数字电压表设计方法。该方案根据数据采集的工作原理来实现数字电压的测量, 然后完成单片机与PC的通信, 以将所测量的电压值通过串口传送给PC, 并在PC上进行显示。   数字电压表设计和开发已有很多类型和款式, 传统的数字电压表有自己的特点, 它们适合在现场做手工测量, 而要完成远程测量并对测量的数据做进一步处理, 运用传统的数字电压表是无法完成的。为此, 本文设计了基于PC通信的数字电压表, 该表既可以完成测量数据的传递, 又可借助PC进行测量数据的处理。所以, 这种类型的数字电压表无论在功能和实际应用上, 都具有传统数字电压表无法比拟的优点, 这使得它的开发和应用都具有良好的前景。   本系统主要由硬件和软件两部分构成, 硬件主要包括数据采集电路, 单片机最小数据采集系统, 单片机与PC机的接口电路等。软件主要有单片机数据采集程序, 单片机与上位机通信程序,以及上位机数据处理程序。   该新型数字电压表测量的电压类型为直流,测量范围为0 ~5 V, 下位机采用的单片机为STC89C51, AD转化采用的是最常见的ADC0809,可通过RS232串行口与PC机进行通信, 以传送所测量的直流电压数据。图1所示是该数字电压表的数据采集电路。电路的设计已做到了最小化,即没有用任何附加逻辑器件做接口电路, 便可实现单片机对ADC0809转换芯片的操作。图1中的ADC0809是8位的模数转化芯片, 片内有8路模拟选通开关以及相应的通道锁存译码电路, 转化时间大约为100 μs左右。在电路应用中, 首先要指定ADC0809的数据通道, 当外部电压进入芯片后, STATR 信号由高到低, 在脉冲的下降沿ADC0809开始转换, 同时管脚EOC电平变低, 表示转化正在进行, 转化完成之后, 管脚EOC的电平变高, 表示一次转化结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值