⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于8051F实现数字电压表功能.用液晶作为显示界面,精度很高.
💻 C
字号:
/*===============================================================*/
/*函数名称: main.c                                              */
/*函数功能: 主函数,调用各模块                                   */
/*基本思想:  单端输入,定时启动,由T2定时,选择AIN0.3为ADC0转化通道                                          */
/*修改记录: 无修改记录                                          */
/*编写作者: t483-4-19chenyong                                   */
/*编写日期: 2007-4-06                                           */
/*===============================================================*/
#include  "common.h"
#include  "TS12864A.h"
#include  "show.h"
#include  "adc.h"
#define N  10
bit isnewdata;
int xdata k=0,count=0;
//long ad_value=0;      //真实测量电压值  
float xdata sum=0,average_value=0;
float xdata realvol[N];
extern long ad_value;	   //真实测量电压值

void main()
{
    Port_Initial();
	SYSCLK_Init();
    LCD_Init();		             //液晶初始化   
	CleanScreen();	
	adc0_initial();                        //ADC0初始化
	EA=1;
	while(1)
	{
/*	  if(isnewdata)			      	  //滑动滤波
	  {
		Display_Character(0,3,19);    //电压
	    Display_Character(2,3,20);
	    Display_Character(4,3,15);	  //单位	
	    Display_Char(14,3,19);
		realvol[k++]=ad_value;
		if(k==N)
		{
		   k=0;
		}
		sum=0;
		for(count=0;count<N;count++)
		{
		   sum=sum+realvol[count];		   
		}
		sum=(float)sum/100;
		sum=(float)sum/100;
	    average_value=sum/N;
		Show_FloatData(average_value,3);       //显示电压值
		EA=0;
     	Port_Initial();
	    adc0_initial();                        //ADC0初始化
	    EA=1;
		isnewdata=0;
		}  */
//=====================================================================
	  if(isnewdata)			      	  //滑动滤波
	  {
		Display_Character(0,3,19);    //电
	    Display_Character(2,3,20);	  //压
	    Display_Character(4,3,15);	  //:	
	    Display_Char(14,3,19);	   //单位V

		realvol[k]= ad_value;	/*减去噪声干扰*/
		sum=sum+realvol[k];	
		k++;		
		EA=0;
		Port_Initial();
	    adc0_initial();                           //ADC0初始化
	    EA=1;
		if(k>(N-1))
		{
		   k=0;
	  	   sum=(float)sum/100;
		   sum=(float)sum/1000;		 /*把原来100改为1000*/
	       average_value=sum/N;
		   Show_FloatData(average_value,3);                   //显示电压值
		}

		isnewdata=0 ;
		}  



	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -