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

📄 getinputnum.c

📁 电赛一等奖作品:音频信号分析仪单片机源码
💻 C
字号:
#include "lcd.h"
#include "func.h"
#include "interface.h"
#include "key.h"
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
/////////////////////////////////////////////////////////
uchar GetInputString(uchar x,uchar y,uchar len,char *temp)
{
  	uchar ilen=1,i=0,key;
	bit sign=0;
	SetPos(x,y);
	for(i=0;i<len;i++)
    {
        LcdPrint(" ",1);
    }
    if(len%2==1){LcdPrint(" ",1);}
	ShowCursor();
    SetPos(x,y);
	LcdPrint(" ",1);
	temp[0]=' ';
	while(1)
    {
        key=WaitKey();
        if(key<=9 && ilen<len)
        {
			key+=0x30;
            temp[ilen]=key;
			ilen++;
        }
        else
        {
            switch(key)
            {
                case 0x0a:temp[ilen]='.';
						  ilen++;
						  break;
				case 0x0b:sign=!sign;
						  if(sign)
						  	{temp[0]='-';}
						  else
						   	{temp[0]=' ';}
						  break;	
			    case 0x0e:SetPos(x,y);
                          for(i=0;i<=len;i++)
                          {
                              LcdPrint(" ",1);
                          }
                          sign=0;
                          temp[0]=' ';
                          SetPos(x,y);
                          ilen=1;
                          break;
				case 0x0f:HideCursor();  
                          return ilen;
                          break;
                 default:break;
            }
        }
	   SetPos(x,y);
	   LcdPrint(temp,ilen);
	}
}


ulong GetInputNum(uchar x,uchar y,uchar len)
{
    ulong input=0;
    uchar ilen=0,i;
    SetPos(x,y);
    for(i=0;i<len;i++)
    {
        LcdPrint(" ",1);
    }
    if(len%2==1)
    {
        LcdPrint(" ",1);
    }
    ShowCursor();
    SetPos(x,y);

    while(1)
    {
        g_KeyDown=0;
        while(!g_KeyDown){};
        if(g_KeyValue<=9 && ilen<len)
        {
            input*=10;
            input+=g_KeyValue;
            g_KeyValue+=0x30;
            LcdPrint(&g_KeyValue,1);
            ilen++;
            g_KeyDown=0;
        }
        else
        {
            switch(g_KeyValue)
            {
                case 0x0f:g_KeyDown=0;
                          HideCursor();  
                          return input;
                          break;
                case 0x0e:SetPos(x,y);
                          for(i=0;i<len;i++)
                          {
                              LcdPrint(" ",1);
                          }
                          SetPos(x,y);
                          input=0;
                          ilen=0;
                          g_KeyDown=0;
                          break;
                 default:break;
            }
        }
    }
    return input;
}
float GetInputFloatNum(uchar x,uchar y,uchar len)
{
	float integ=0,fra=0;
	uchar i;
	char temp[20];
	len=GetInputString(x,y,len,temp);
	i=1;
	while(i<len && temp[i]!='.')
	{
		integ*=10;
		integ+=temp[i]-0x30;
		i++;
	}
    i++;
	while(i<len)
	{
		fra+=temp[i]-0x30;
		fra/=10;
		i++;
	}
	if(temp[0]=='-')
	{
		return -1*(integ+fra);
	}
	else
	{
		return 	integ+fra;
	}
}

⌨️ 快捷键说明

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