基于51单片机的8路电压采集与液晶显示
时间:2026-01-21
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:泰国签证(单次往返签证)
下一篇:项目部工地2013年春节放假安排