找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4555|回復: 2
打印 上一主題 下一主題
收起左側(cè)

基于51單片機的數(shù)字電壓表程序設計 可測量0~5V電壓

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:485346 發(fā)表于 2019-3-22 16:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
數(shù)字電壓表可以測量0~5V電壓,并在四位LED數(shù)碼管上顯示出來。測量最小分辨率為0.019V,測量誤差約為±0.02V。
注:附件包含仿真電路圖、程序源碼和.hex文件。

proteus仿真電路圖:


proteus仿真圖:





程序代碼:
#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};//帶小數(shù)點的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轉(zhuǎn)換輸出的數(shù)據(jù)轉(zhuǎn)換成相應的電壓值并顯示出來
//**************************************************************
void convert(uchar volt_data)
{
uchar temp;
P0=leddata_dot[volt_data/51];//A/D轉(zhuǎn)換的值/51即為個位的電壓值
P2_1=1;                      //顯示個位的值
delay(3);
P2_1=0;
if((volt_data%51)<0x19)      //余數(shù)小于19H,顯示小數(shù)點后的第一位
{
  P0=leddata[(volt_data%51)*10/51];
  P2_2=1;
  delay(3);
  P2_2=0;
}
else
{
  P0=leddata[(volt_data%51)*10/51+5];//余數(shù)大于19H,結(jié)果再加上5
  P2_2=1;        //顯示小數(shù)點后的第一位
  delay(3);
  P2_2=0;
}
temp=(((volt_data%51)*10)/51)*10%51;
if(temp<0x19)       //余數(shù)小于19H,顯示小數(shù)點后的第二位
{
  P0=leddata[temp*10/51];
  P2_3=1;
  delay(3);
  P2_3=0;

}
else
{
  P0=leddata[temp*10/51+5];   //余數(shù)大于19H,結(jié)果再加上5
  P2_3=1;        //顯示小數(shù)點后的第二位
  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轉(zhuǎn)換
  if(EOC==0)       //等待轉(zhuǎn)換結(jié)束
  delay(100);
  while(EOC==0);
  OE=1;        //允許輸出
  volt_data=P1;      //暫存轉(zhuǎn)換結(jié)果
  OE=0;        //關閉輸出
  convert(volt_data);     //調(diào)用數(shù)據(jù)處理子程序
}
}


proteus仿真電路圖.png (16.52 KB, 下載次數(shù): 35)

proteus仿真電路圖.png

數(shù)字電壓表設計.7z

85.82 KB, 下載次數(shù): 105, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:300767 發(fā)表于 2019-3-23 04:22 | 只看該作者
好東東 樓主能分享下仿真工程嗎
回復

使用道具 舉報

板凳
ID:761785 發(fā)表于 2020-5-27 16:30 | 只看該作者
你好  樓主  如果要求是能夠測量0-5v 的8路輸入電壓  應該怎么修改   
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表