標(biāo)題:
單片機(jī)ADC0809模塊測(cè)量負(fù)載電壓電流功率的程序Proteus仿真
[打印本頁(yè)]
作者:
夢(mèng)不虛存
時(shí)間:
2022-4-10 15:26
標(biāo)題:
單片機(jī)ADC0809模塊測(cè)量負(fù)載電壓電流功率的程序Proteus仿真
ADC0809模塊測(cè)電壓和由取樣小電阻組成的放大器電路測(cè)電流設(shè)計(jì),再由51單片機(jī)處理數(shù)據(jù)輸出,顯示在LCD1602上
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
(52.2 KB, 下載次數(shù): 52)
下載附件
2022-4-13 03:37 上傳
單片機(jī)源程序如下:
//檢測(cè)電壓,精度為0.05V,范圍是0~5V。 **
#include"includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
sbit ch=P3^0;
sbit bh=P3^1;
uchar uc_Clock=0; //定時(shí)器0中斷計(jì)數(shù)
bit b_DATransform=0;
unsigned int dat,u,i,p;
uchar n=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把電壓顯示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(uint uiNumber)
{
uchar ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100; //把計(jì)算數(shù)字的每個(gè)位存入數(shù)組。
ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;
ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
for(ucCount=0;ucCount<3;ucCount++)
{
vShowOneChar(ucaNumber[ucCount]+48); //從首位到末位逐一輸出。
if(ucCount==0)
vShowOneChar('.');
}
}
//*************************************************************************************************
//* *
//* ********************************主函數(shù)****************************** *
//* *
//*************************************************************************************************
void main()
{
TMOD=0x01; //定時(shí)器0,模式1。
TH0=TIME0H;
TL0=TIME0L;
TR0=1; //啟動(dòng)定時(shí)器。
ET0=1; //開(kāi)定時(shí)器中斷。
EA=1; //開(kāi)總中斷
vdInitialize();
vWriteCMD(0x80); //寫(xiě)入顯示起始地址
vShowChar(" U");
vWriteCMD(0xC4);
vShowChar("V");
vWriteCMD(0x85); //寫(xiě)入顯示起始地址
vShowChar(" I");
vWriteCMD(0xCA);
vShowChar("A");
vWriteCMD(0x8B); //寫(xiě)入顯示起始地址
vShowChar(" P");
vWriteCMD(0xCF);
vShowChar("W");
ch=0;
bh=1;//關(guān)閉繼電器
while(1)
{
if(b_DATransform==1)
{
if(ch==1)
{
b_DATransform=0;
vWriteCMD(0xC0);
dat=uiADTransform();
u=dat;
vShowVoltage(dat);
vWriteCMD(0xcb);
p=u*i;
p=p/100;
vShowVoltage(p);
n++;
}
if(ch==0)
{
dat=uiADTransform();
u=dat;
b_DATransform=0;
vWriteCMD(0xC6);
dat=uiADTransform();
dat=dat/1.225;
i=dat;
if(i>500)
bh=0;
else
bh=1;//電流大于500mA,啟動(dòng)繼電器
vShowVoltage(dat);
n++;
}
if(n==3)
{
n=0;
ch=!ch;
}
//vShowVoltage(123);
}
}
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器0中斷函數(shù)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void t0() interrupt 1
{
if(uc_Clock==0)
{
uc_Clock=5;
b_DATransform=1;
}
else
uc_Clock--;
TH0=TIME0H; //恢復(fù)定時(shí)器0。
TL0=TIME0L;
}
復(fù)制代碼
Keil代碼與Proteus仿真下載:
ADC08809電壓電流功率顯示.7z
(156.25 KB, 下載次數(shù): 67)
2022-4-13 03:39 上傳
點(diǎn)擊文件名下載附件
測(cè)電壓電流功率
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1