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

📄 program.c

📁 采用12位MAX 197对外部信号采样。采用全周波傅立叶积分算法
💻 C
📖 第 1 页 / 共 4 页
字号:
	LCDNUM(ABC[15],90,4);												//
	LCDNUM(NUM[16],74,5);												//6.
	LCDNUM(ABC[16],82,5);												//YES.
	LCDNUM(ABC[17],90,5);												//
	LCDNUM(NUM[17],74,6);												//7.
	LCDNUM(ABC[18],82,6);												//HELP.
	LCDNUM(ABC[19],90,6);												//
	LCDNUM(NUM[ADMO],110,7);										//显示当前采样模式.
}
/* ***********************************************************************
** 函 数 名:void MUNMAX()
** 功能描述:采样模式界面.
************************************************************************** */
void MUNMAX()
{
	LCDCLEAR(1);																//清屏.
	LCDCLEAR(2);																//清屏.
	LCDNUM(ABC[12],56,1);												//标题.
	LCDNUM(ABC[13],64,1);												//标题.
	LCDNUM(NUM[10],30,3);												//0.
	LCDNUM(NUM[0],48,3);												//0
	LCDNUM(JS,80,3);														//+
	LCDNUM(NUM[5],88,3);												//5
	LCDNUM(NUM[11],30,4);												//1.
	LCDNUM(JC,40,4);														//-
	LCDNUM(NUM[5],48,4);												//5
	LCDNUM(JS,80,4);														//+
	LCDNUM(NUM[5],88,4);												//5
	LCDNUM(NUM[12],30,5);												//2.
	LCDNUM(NUM[0],48,5);												//0
	LCDNUM(JS,72,5);														//+
	LCDNUM(NUM[1],80,5);												//1
	LCDNUM(NUM[0],88,5);												//0
	LCDNUM(NUM[13],30,6);												//3.
	LCDNUM(JC,40,6);														//-
	LCDNUM(NUM[1],48,6);												//1
	LCDNUM(NUM[0],56,6);												//0
	LCDNUM(JS,72,6);														//+
	LCDNUM(NUM[1],80,6);												//1
	LCDNUM(NUM[0],88,6);												//0
}												
/* ***********************************************************************
** 函 数 名:void MUNABC()
** 功能描述:双通道显示界面.
************************************************************************** */
void MUNABC()
{
	LCDCLEAR(1);																//清屏.
	LCDCLEAR(2);																//清屏.
	LCDNUM(ABC[4+CHAN*2],24,0);									//标题.
	LCDNUM(ABC[5+CHAN*2],32,0);									//标题.
	LCDNUM(UB[CHAN],0,1);												//U*.
	LCDNUM(IB[CHAN],0,2);												//I*.
	LCDNUM(PB[CHAN],0,3);												//P*.
	LCDNUM(QB[CHAN],0,4);												//Q*.
	LCDNUM(SB[CHAN],0,5);												//S*.
	LCDNUM(LB[CHAN],0,6);												//L*.
	LCDNUM(FB[CHAN],0,7);												//F*.
}
/* ***********************************************************************
** 函 数 名:void MUNXB()
** 功能描述:谐波显示界面.
************************************************************************** */
void MUNXB()
{
	LCDCLEAR(1);																//清屏.
	LCDCLEAR(2);																//清屏.
	LCDNUM(ABC[4+CHAN*2],24,0);									//标题.
	LCDNUM(ABC[5+CHAN*2],32,0);									//标题.
	LCDNUM(UB[CHAN],20,1);											//U*.
	LCDNUM(IB[CHAN],80,1);											//I*.
	LCDNUM(BH,40,1);														//符号.
	LCDNUM(BH,100,1);														//符号.
	LCDNUM(NUM[11],0,2);												//1.
	LCDNUM(NUM[13],0,3);												//3.
	LCDNUM(NUM[15],0,4);												//5.
	LCDNUM(NUM[17],0,5);												//7.
	LCDNUM(NUM[19],0,6);												//9.
}
/* ***********************************************************************
** 函 数 名:void MUNALL()
** 功能描述:多通道界面.
************************************************************************** */
void MUNALL()
{   
	LCDCLEAR(1);																//清屏.
	LCDCLEAR(2);																//清屏.
	LCDNUM(ABC[10],24,0);												//标题.
	LCDNUM(ABC[11],32,0);												//标题.
	LCDNUM(UB[0],0,2);													//U1.
	LCDNUM(IB[0],0,5);													//I1.
	LCDNUM(UB[1],0,3);													//U2
	LCDNUM(IB[1],0,6);													//I2.
	LCDNUM(UB[2],0,4);													//U3.
	LCDNUM(IB[2],0,7);													//I3.
	LCDNUM(PB[0],64,2);													//P1.
	LCDNUM(QB[0],64,5);													//Q1.
	LCDNUM(PB[1],64,3);													//P2.
	LCDNUM(QB[1],64,6);													//Q2.
	LCDNUM(PB[2],64,4);													//P3.
	LCDNUM(QB[2],64,7);													//Q3.
}
/* ***********************************************************************
** 函 数 名:void MUND()
** 功能描述:单通道界面.
************************************************************************** */
void MUND()
{
	LCDCLEAR(1);																//清屏.
	LCDCLEAR(2);																//清屏.
	LCDNUM(NUM[10],0,0);												//标题.
	LCDNUM(JJ,24,0);														//符号.
	LCDNUM(BH,40,0);														//符号.
	LCDNUM(NUM[11],0,2);												//1.
	LCDNUM(NUM[13],0,3);												//3.
	LCDNUM(NUM[15],0,4);												//5.
	LCDNUM(NUM[17],0,5);												//7.
	LCDNUM(NUM[19],0,6);												//9.
}

/* ************************************************************************
** 函 数 名: void main()
** 功能描述:主函数,实现各子程序调用和流程安排.
*************************************************************************** */
void main()
{
	INITIAL();																//系统初始化.
	T3INIT();																	//TMR3时钟初始化.
	LCDINITI(1);															//初始化第一片LCD.
	LCDINITI(2);															//初始化第二片LCD.
	IPEN=1;																		//使能中断高低优先级.
	INTCON=INTCON|0xC0;												//开总中断.
	TMR3ON=1;																	//开定时器.
	MUNM();																		//显示主菜单.
	while(1)																	//一级while(1)
	{
		if(MAXD==1)															//进入双通道数据处量.
		{
			MAXD=0;																//标志位清零.
			MUNABC();															//显示界面.
			CCPINIT();														//启动获取频率数据.
			while(1)															//二级while(1)
			{
				ABCSH();														//数据显示.
				ADSHOW();														//波形显示.
				ADCHX();														//AD采样.
				XBFX();															//谐波分析.
				PLJS();															//频率计算.
				if(MAXD==1)													//切换采样通道.
				{
					MAXD=0;														//标志位清零.
					MUNABC();													//重新显示界面.
				}
				if(SURE==1)													//
				{
					SURE=0;														//标志位清零.
					CYTZ();														//调整采样频率.
				}	
				if(NEXT==1)													//进入显示谐波数据显示界面.
				{
					NEXT=0;														//标志位清零.
					MUNXB();													//显示界面.
					while(1)													//三级while(1)
					{
						ADCHX();												//AD采样.
						XBFX();													//谐波分析.
						XBSH();													//数据显示.
						if(NEXT==1)											//
						{
							NEXT=0;												//标志位清零.
							CYTZ();												//调整采样频率.
						}
						if(MAXD==1)											//切换采样通道.
						{
							MAXD=0;												//标志位清零.
							MUNXB();											//重新显示界面.
						}
						if(BACK==1)											//
						{
							BACK=0;												//标志位清零.
							MUNABC();											//显示上级界面.
							break;												//退出本级.
						}
						if(GUID==1)											//显示HELP.
						{
							break;												//退出本级.
						}
					}
				}
				if(MAXA==1)													//进入多通道数据处理.
				{
					break;														//退出本级.
				}
				if(BACK==1)													//
				{
					BACK=0;														//标志位清零.
					MUNM();														//显示上级界面.
					break;														//退出本级.
				}
				if(GUID==1)													//显示HELP.
				{
					break;														//退出本级.
				}
			}
			CCP1IE=0;															//关闭频率采样中断.
			TMR1ON=0;															//关闭频率采样时钟
		}
		if(MAXA==1)															//进入多通道数据处理.
		{
			MAXA=0;																//标志位清零.
			MUNALL();															//显示界面.
			while(1)															//二级while(1)
			{
				ADALL();														//多通道数据采样显示.
				if(MAXD==1)													//切换到双通道采样.
				{
					break;														//退出本级.
				}
				if(BACK==1)													//
				{
					BACK=0;														//标志位清零.
					MUNM();														//显示上级界面.
					break;														//标志位清零.
				}
				if(GUID==1)													//显示HELP.
				{
					break;														//退出本级.
				}
			}
		}
		if(BACK==1)															//选择采样模式.
		{
			BACK=0;																//标志位清零.
			MUNMAX();															//显示界面.
			while(1)															//
			{
				if(MAXD==1&&CHAN==0)								//模式0.
				{
					MAXD=0;														//标志位清零.
					ADMO=0;														//模式0.
					CHX=0;														//单极性.
					LCDNUM(NUM[0],112,7);							//显示当前采样模式.
					ADCAN=0X40;												//基控制字.
				}
				if(MAXD==1&&CHAN==1)								//模式1.
				{
					MAXD=0;														//标志位清零.
					ADMO=1;														//模式1.
					CHX=1;														//双极性.
					LCDNUM(NUM[1],112,7);							//显示当前采样模式.
					ADCAN=0X48;												//基控制字.
				}
				if(MAXD==1&&CHAN==2)								//模式2.
				{
					MAXD=0;														//标志位清零.
					ADMO=2;														//模式2.
					CHX=0;														//单极性.
					LCDNUM(NUM[2],112,7);							//显示当前采样模式.
					ADCAN=0X50;												//基控制字.
				}
				if(MAXA==1)													//模式3.
				{
					MAXA=0;														//标志位清零.
					ADMO=3;														//模式3.
					CHX=1;														//双极性.
					LCDNUM(NUM[3],112,7);							//显示当前采样模式.
					ADCAN=0X58;												//基控制字.
				}
				if(SURE==1)													//
				{
					SURE=0;														//标志位清零.
					CHAN=0;														//标志位清零.
					MUNM();														//显示上级界面.
					break;														//退出本级.
				}
			}
		}
		if(NEXT==1)															//进入单通道高速采样.
		{
			NEXT=0;																//标志位清零.
			MUND();																//显示界面.
			while(1)															//二级while(1).
			{
				ADCHD();														//数据采样处量显示.
				if(BACK==1)													//
				{
					BACK=0;														//标志位清零.
					MUNM();														//显示上级界面.
					break;														//退出本级.
				}
			}
		}
		if(SURE==1)															//
		{
			SURE=0;																//标志位清零.
			MUNM();																//显示主界面.
		}
		if(GUID==1)															//
		{
			GUID=0;																//标志位清零.
			GUIDE();															//显示HELP.
		}
	}
}

⌨️ 快捷键说明

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