基于51单片机的8路电压采集与液晶显示

时间:2026-01-21

通过51单片机控制0808或0809采集八路电压进行1602液晶显示

此程序分三部分,一是主程序,二是1602显示程序,三是ad0808采样程序,附protues仿真图。

//*************************************************************************************************

//**<程序名>:多路数字电压表 采集 //**<功能>:使用LCD1602显示被检测电压,精度为0.05V,范围是0~5V。 //**<版本说明>:这是第3版,使用LCD显示。 //**<作者>:程沛

//**<修改>:杨坚 //**<完成时间>:2011年11月18日

//*************************************************************************************************

//*头文件及宏定义

#include "includes.h"

#include <at89x51.h>

#define TIME0H 0x3C

#define TIME0L 0xB0

//#define abc P1

//****************************全局变量***************************** *

//*************************************************************************** unsigned char uc_Clock=0; //定时器0中断计数

bit b_DATransform=0;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //把电压显示在LCD

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> void vShowVoltage(unsigned int uiNumber)

{

unsigned char ucaNumber[3],ucCount;

if(uiNumber>999)

uiNumber=999;

ucaNumber[0]=uiNumber/100; //把计算数字的每个位存入数组。 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('.');

}

}

//*************************************************************************************************

通过51单片机控制0808或0809采集八路电压进行1602液晶显示

//*主函数

//*************************************************************************************************

void main()

{ unsigned int m,g,k;

unsigned char abc;

// for(m=0;m<8;m++)

// {

//<<<<<<<<<<<<<<<<<设置定时器0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TMOD=0x01; //定时器0,模式1。

TH0=TIME0H;

TL0=TIME0L;

TR0=1; ET0=1; //启动定时器。 //开定时器中断。

EA=1; //开总中断

vdInitialize();

vWriteCMD(0x84); //写入显示起始地址(第二行第一个位置)

vShowChar("Voltage:");

vWriteCMD(0xC9);

vShowChar("(V)");

while(1)

{

abc = 0x00;

for(m=0;m<8;m++)

{

P1=abc;

abc++;

if(b_DATransform==1)

{

b_DATransform=0;

vWriteCMD(0x80);

vShowVoltage(m);

vWriteCMD(0xC4);

vShowVoltage(uiADTransform());

for(g=0;g<1000;g++)

for(k=0;k<120;k++);

}

}

}

}

//<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

通过51单片机控制0808或0809采集八路电压进行1602液晶显示

//<<<<<<<<<<<<<<定时器0中断函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> void Time0() interrupt 1

{

if(uc_Clock==0)

{

uc_Clock=5;

b_DATransform=1;

}

else

uc_Clock--;

TH0=TIME0H; //恢复定时器0。

TL0=TIME0L;

}

//***********************延时程序********************************************* //void adelay()

//{

// unsigned int i,k;

// for(i=0;i<1000;i++)

// for(k=0;k<120;k++);

//}

//<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<AD转换函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>> …… 此处隐藏:4480字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于51单片机的8路电压采集与液晶显示.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219