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

📄 interface.c

📁 电赛一等奖作品:音频信号分析仪单片机源码
💻 C
字号:
#include "lcd.h"
#include "func.h"
#include "interface.h"
#include "key.h"
#include "getinputnum.h"
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
void DisplayState(void)
{
	char temp[10];
	uchar len,j;
	ulong phase;
	LcdClear();
	SetPos(0,0);
	LcdPrint("波形: ",sizeof("波形: ")-1);
	switch (CurWaveType)
	{
		case 0: LcdPrint("\xd5\xfd弦波",sizeof("\xd5\xfd弦波")-1);
		          break;
		case 1:LcdPrint("方波  ",sizeof("方波  ")-1);
		          break; 
		case 2:LcdPrint("\xc8\xfd角波",sizeof("\xc8\xfd角波")-1);
		          break;          
		case 3:LcdPrint("锯齿波",sizeof("锯齿波")-1);
		          break; 
		case 4:LcdPrint("自定义",sizeof("自定义")-1);
		          break; 
		default:break;
    }

    /////////////////
    SetPos(0,1);
    LcdPrint("频率:",sizeof("频率:")-1);
    len=ltoa(Wave[CurWaveType].Freq,temp);
    if(Wave[CurWaveType].Freq>1000)
    {
        for(j=len;j>len-3;j--)
        {
            temp[j]=temp[j-1];
        }
        temp[len-3]='.';
        LcdPrint(temp,len+1);
        LcdPrint("KHz",3);
    }
    else
    {
        LcdPrint(temp,len);
        LcdPrint("Hz",2);
    }

    /////////////////
    SetPos(0,2);
    LcdPrint("幅度:",sizeof("幅度:")-1);
    temp[3]=Wave[CurWaveType].Peak;
    if(temp[3]<0){temp[3]*=-1;}
    temp[0]=temp[3]/10;
    temp[2]=temp[3]%10;
    temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
    LcdPrint(temp,3);
    LcdPrint("V",1);
    /////////////////////////////
    SetPos(0,3);
    LcdPrint("相位:",sizeof("相位:")-1);
    phase=(ulong)Wave[CurWaveType].Phase*(ulong)360;
    phase/=256;
    temp[2]=phase%10+0x30;
    phase/=10;
    temp[1]=phase%10+0x30;
    phase/=10;
    temp[0]=phase%10+0x30;
    LcdPrint(temp,3);
    LcdPrint(" 度",sizeof(" 度")-1);
}


uchar GetWaveType()
{
	uchar temp=CurWaveType,key;
	ShowCursor();
	while(1)
	{
		SetPos(3,0);
		key=WaitKey();
		if(key!=0x0f)
		{
			temp++;if(temp>3) {temp=0;}
			SetPos(3,0);
			switch (temp)
			{
			case 0:LcdPrint("\xd5\xfd弦波",sizeof("\xd5\xfd弦波")-1);
		          break;
			case 1:LcdPrint("方波  ",sizeof("方波  ")-1);
			      break; 
			case 2:LcdPrint("\xc8\xfd角波",sizeof("\xc8\xfd角波")-1);
		          break;          
			case 3:LcdPrint("锯齿波",sizeof("锯齿波")-1);
		          break; 
			default:break;
			}
		}
		else 
		{
			//HideCursor();
			return temp;
		}
    }


	
}
bit ProcessSingleInput(void)
{
	bit change=0;
	float ftemp;
	ulong temp;
	uchar i,key;
	SetPos(5,3);
	ShowCursor();
	while(1)
	{
		key=WaitKey();
		switch(key)
		{
			case 0x00: 	temp=GetWaveType();
						if(CurWaveType!=temp)
						{
							CurWaveType=temp;
							change=1;
						}
						SetPos(0,0);
	                    ShowCursor();
						break;
			case 0x01:	SetPos(3,1);
    					for(i=0;i<10;i++)
    					{
        					LcdPrint(" ",1);
    					}
						temp=GetInputNum(3,1,5);
						if(temp>0 && temp<=20000 && Wave[CurWaveType].Freq!= temp)
						{
							Wave[CurWaveType].Freq=temp;
							change=1;
						}
					  	SetPos(0,0);
	                    ShowCursor();
						break;
			case 0x02:	ftemp=10*GetInputFloatNum(3,2,4);
						if (ftemp<=50 && ftemp>=-50)
						{
							Wave[CurWaveType].Peak=ftemp;
							change=1;
						}
					    SetPos(0,0);
	                    ShowCursor();
						break;
			case 0x03:	temp=GetInputNum(3,3,3);
						if(temp<360 && Wave[CurWaveType].Phase!=temp)
						{
							Wave[CurWaveType].Phase=((float)temp*256)/360+0.5;
							change=1;
						}
					    SetPos(0,0);
	                    ShowCursor();
						break;

			case 0x0f:	LcdClear();
						LcdPrintLine("改变波形配置?",sizeof("改变波形配置?")-1,1,1);
						key=WaitKey();
						if(key==0x0f)
                        {
							   	HideCursor();
							   	return change;
                        }
			default:break;
		}
	DisplayState();
	}
	
}

⌨️ 快捷键说明

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