找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3832|回复: 2
收起左侧

基于51单片机的数字电压表程序设计 可测量0~5V电压

[复制链接]
ID:485346 发表于 2019-3-22 16:54 | 显示全部楼层 |阅读模式
数字电压表可以测量0~5V电压,并在四位LED数码管上显示出来。测量最小分辨率为0.019V,测量误差约为±0.02V。
注:附件包含仿真电路图、程序源码和.hex文件。

proteus仿真电路图:


proteus仿真图:
仿真演示.png




程序代码:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit OE=P3^0;
sbit EOC=P3^1;
sbit ST=P3^2;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
uchar code leddata_dot[]={0x40,0x79,0x24,0x30,0x19,0x12};//带小数点的0~5六个段码
uchar code leddata[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极0~9十个段码
//******************************************************************************************
//延时子程序
//******************************************************************************************
void delay(uchar n)
{
uchar i,j;
  for(i=0;i<n;i++)
   for(j=0;j<125;j++);
}
//**************************************************************
//将A/D转换输出的数据转换成相应的电压值并显示出来
//**************************************************************
void convert(uchar volt_data)
{
uchar temp;
P0=leddata_dot[volt_data/51];//A/D转换的值/51即为个位的电压值
P2_1=1;                      //显示个位的值
delay(3);
P2_1=0;
if((volt_data%51)<0x19)      //余数小于19H,显示小数点后的第一位
{
  P0=leddata[(volt_data%51)*10/51];
  P2_2=1;
  delay(3);
  P2_2=0;
}
else
{
  P0=leddata[(volt_data%51)*10/51+5];//余数大于19H,结果再加上5
  P2_2=1;        //显示小数点后的第一位
  delay(3);
  P2_2=0;
}
temp=(((volt_data%51)*10)/51)*10%51;
if(temp<0x19)       //余数小于19H,显示小数点后的第二位
{
  P0=leddata[temp*10/51];
  P2_3=1;
  delay(3);
  P2_3=0;

}
else
{
  P0=leddata[temp*10/51+5];   //余数大于19H,结果再加上5
  P2_3=1;        //显示小数点后的第二位
  delay(3);
  P2_3=0;
}
}
void main()
{
uchar volt_data;
P3_4=1;         //选择通道3
P3_5=1;
P3_6=0;
while(1)
{
  ST=0;
  _nop_();
  ST=1;
  _nop_();
  ST=0;        //启动A/D转换
  if(EOC==0)       //等待转换结束
  delay(100);
  while(EOC==0);
  OE=1;        //允许输出
  volt_data=P1;      //暂存转换结果
  OE=0;        //关闭输出
  convert(volt_data);     //调用数据处理子程序
}
}


proteus仿真电路图.png

数字电压表设计.7z

85.82 KB, 下载次数: 105, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:300767 发表于 2019-3-23 04:22 | 显示全部楼层
好东东 楼主能分享下仿真工程吗
回复

使用道具 举报

ID:761785 发表于 2020-5-27 16:30 | 显示全部楼层
你好  楼主  如果要求是能够测量0-5v 的8路输入电压  应该怎么修改   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表