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

📄 position.c

📁 2005年全国大学生电子设计竞赛论文集
💻 C
字号:
#include "spce061v004.h"
#include "main.h"

extern int SysStatus;
extern int PositionX,PositionY;
extern int TimeN,TimePoint,TimeL[200],TimeR[200];				//下一步移动量
extern int Running;		//0:未开始运动;1:开始运动,但未完成一格运动;2:完成一格运动
extern int TimeCountL,TimeCountR;
extern int NextPosiX,NextPosiY;

int PSetPosition,PSetValue[5];
int PSetStatus=0;

//=========================================================================================
//指定坐标窗口
//=========================================================================================
void PositionPage(void)
{
	unsigned int HZCode[10]={0xD6B8,0xB6A8,0xD7F8,0xB1EA,
							 0x2020,0x2020,0x2020,0x2020,0x2020,0x2020};		//为液晶行赋初值	

	LCDWriteLine(1,HZCode);
	PositionX=0;PositionY=0;
	HZCode[0]=0xA3D8;HZCode[1]=0xA3BD;HZCode[2]=0xA3B0;HZCode[3]=0xA3B0;
	HZCode[4]=0x2020;HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
	LCDWriteLine(2,HZCode);
	
	HZCode[0]=0xA3D9;HZCode[1]=0xA3BD;HZCode[2]=0xA3B0;HZCode[3]=0xA3B0;
	HZCode[4]=0xA3B0;HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
	LCDWriteLine(3,HZCode);
	
	PSetPosition=0;
	PSetValue[0]=0;PSetValue[1]=0;PSetValue[2]=0;PSetValue[3]=0;PSetValue[4]=0;
	
	WriteByte(0x92,0);	
	WriteByte(0x0d,0);
	PSetStatus=1;
	
	SysStatus=SYS_ST_POSITION;
}

//=========================================================================================
//
//=========================================================================================
void Position(int key)
{
	unsigned int HZCode[10]={0x2020,0x2020,0x2020,0x2020,
							 0x2020,0x2020,0x2020,0x2020,0x2020,0x2020};		//为液晶行赋初值	
							 
	int x1,x2,x3,y1,y2,y3;
	switch(key)
	{
		case 0x000d:			//up/down
			if(PSetStatus==1)
			{
				PSetValue[PSetPosition]++;
				if((PSetPosition==2)&&(PSetValue[PSetPosition]>1))
					PSetValue[PSetPosition]=0;
				else if((PSetPosition==0)&&(PSetValue[PSetPosition]>8))
					PSetValue[PSetPosition]=0;
				else if(PSetValue[PSetPosition]>9)
					PSetValue[PSetPosition]=0;
					
				HZCode[0]=0xA3D8;HZCode[1]=0xA3BD;HZCode[2]=0xA3B0+PSetValue[0];HZCode[3]=0xA3B0+PSetValue[1];
				HZCode[4]=0x2020;HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
				LCDWriteLine(2,HZCode);
				
				HZCode[0]=0xA3D9;HZCode[1]=0xA3BD;HZCode[2]=0xA3B0+PSetValue[2];HZCode[3]=0xA3B0+PSetValue[3];
				HZCode[4]=0xA3B0+PSetValue[4];HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
				LCDWriteLine(3,HZCode);
	
				if(PSetPosition<2)
					WriteByte(0x92+PSetPosition,0);
				else
					WriteByte(0x88+PSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
		case 0x000c:			//up/down
			if(PSetStatus==1)
			{
				PSetValue[PSetPosition]--;
				
				if((PSetPosition==2)&&(PSetValue[PSetPosition]<0))
					PSetValue[PSetPosition]=1;
				else if((PSetPosition==0)&&(PSetValue[PSetPosition]<0))
					PSetValue[PSetPosition]=8;
				else if(PSetValue[PSetPosition]<0)
					PSetValue[PSetPosition]=9;
					
				HZCode[0]=0xA3D8;HZCode[1]=0xA3BD;HZCode[2]=0xA3B0+PSetValue[0];HZCode[3]=0xA3B0+PSetValue[1];
				HZCode[4]=0x2020;HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
				LCDWriteLine(2,HZCode);
				
				HZCode[0]=0xA3D9;HZCode[1]=0xA3BD;HZCode[2]=0xA3B0+PSetValue[2];HZCode[3]=0xA3B0+PSetValue[3];
				HZCode[4]=0xA3B0+PSetValue[4];HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
				LCDWriteLine(3,HZCode);
	
				if(PSetPosition<2)
					WriteByte(0x92+PSetPosition,0);
				else
					WriteByte(0x88+PSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
		case 0x000b:			//up/down
			if(PSetStatus==1)
			{
				PSetPosition++;
				if(PSetPosition>4) PSetPosition=0;
				if(PSetPosition<2)
					WriteByte(0x92+PSetPosition,0);
				else
					WriteByte(0x88+PSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
		case 0x000a:			//left/right
			if(PSetStatus==1)
			{
				PSetPosition--;
				if(PSetPosition<0) PSetPosition=4;
				if(PSetPosition<2)
					WriteByte(0x92+PSetPosition,0);
				else
					WriteByte(0x88+PSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
		case 0x0007:			//up/down
			if(PSetStatus==1)
			{
				NextPosiX=PSetValue[0]*10+PSetValue[1];
				NextPosiY=PSetValue[2]*100+PSetValue[3]*10+PSetValue[4];
				TimeL[0]=LTime(PositionX*10,PositionY*10,NextPosiX*10,NextPosiY*10);
				TimeR[0]=RTime(PositionX*10,PositionY*10,NextPosiX*10,NextPosiY*10);
				TimeN=1;
				TimePoint=0;
				TimeCountL=0;TimeCountR=0;
				Running=1;
				WriteByte(0x0c,0);
				PSetStatus=0;
			}
			break;
		case 0x0006:			//ok start
			if(Running==0)
			{
				OpenMenu(1,1);					 //返回菜单页1
				SysStatus=SYS_ST_MENU;
				WriteByte(0x0c,0);
			}
			break;
	}
}

⌨️ 快捷键说明

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