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

📄 circle.c

📁 全国电子设计大赛获奖作品 悬挂运动控制系统
💻 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;

int CSetStatus=0;
int CSetPosition,CSetValue[5];
extern int CircleX,CircleY;
extern int key;

//=========================================================================================
//画圆窗口
//设点圆心
//=========================================================================================

void CirclePage(void)
{
	unsigned int HZCode[10]={0xD4B2,0xD6DC,0xD4CB,0xB6AF,
							 0x2020,0x2020,0x2020,0x2020,0x2020,0x2020};		//为液晶行赋初值	

	LCDWriteLine(1,HZCode);
	
	HZCode[0]=0xD4B2;HZCode[1]=0xD0C4;HZCode[2]=0xA3BA;HZCode[3]=0x2020;
	HZCode[4]=0x2020;HZCode[5]=0x2020;HZCode[6]=0x2020;HZCode[7]=0x2020;
	LCDWriteLine(2,HZCode);
	HZCode[0]=0xA3B4;HZCode[1]=0xA3B0;HZCode[2]=0x2020;HZCode[3]=0xA3B0;
	HZCode[4]=0xA3B5;HZCode[5]=0xA3B0;HZCode[6]=0x2020;HZCode[7]=0x2020;
	LCDWriteLine(3,HZCode);
	
	CSetPosition=0;
	CSetValue[0]=4;	CSetValue[1]=0;	CSetValue[2]=0;	CSetValue[3]=5;	CSetValue[4]=0;
	
	WriteByte(0x88,0);	
	WriteByte(0x0d,0);
	CSetPosition=0;
	CSetStatus=1;
	
	SysStatus=SYS_ST_CIRCLE;
}

//=========================================================================================
//
//=========================================================================================
void SetCircle(int key)
{
	unsigned int HZCode[10]={0x2020,0x2020,0x2020,0x2020,
							 0x2020,0x2020,0x2020,0x2020,0x2020,0x2020};		//为液晶行赋初值	
							 
	int *TrackX1Table,*TrackY1Table,*TrackX2Table,*TrackY2Table;
	int ic;
	int x1,x2,x3,y1,y2,y3;
	
	switch(key)
	{
		case 0x000d:			//up/down
			if(CSetStatus==1)
			{
				CSetValue[CSetPosition]++;
				if((CSetPosition==2)&&(CSetValue[CSetPosition]>1))
					CSetValue[CSetPosition]=0;
				else if((CSetPosition==0)&&(CSetValue[CSetPosition]>8))
					CSetValue[CSetPosition]=0;
				else if(CSetValue[CSetPosition]>9)
					CSetValue[CSetPosition]=0;
					
				HZCode[0]=0xA3B0+CSetValue[0];HZCode[1]=0xA3B0+CSetValue[1];
				HZCode[2]=0x2020;
				HZCode[3]=0xA3B0+CSetValue[2];HZCode[4]=0xA3B0+CSetValue[3];HZCode[5]=0xA3B0+CSetValue[4];
				HZCode[6]=0x2020;HZCode[7]=0x2020;
				LCDWriteLine(3,HZCode);
	
				if(CSetPosition<2)
					WriteByte(0x88+CSetPosition,0);
				else
					WriteByte(0x89+CSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
			
		case 0x000c:			//up/down
			if(CSetStatus==1)
			{
				CSetValue[CSetPosition]--;
				if((CSetPosition==2)&&(CSetValue[CSetPosition]<01))
					CSetValue[CSetPosition]=1;
				else if((CSetPosition==0)&&(CSetValue[CSetPosition]<0))
					CSetValue[CSetPosition]=8;
				else if(CSetValue[CSetPosition]<0)
					CSetValue[CSetPosition]=9;
					
				HZCode[0]=0xA3B0+CSetValue[0];HZCode[1]=0xA3B0+CSetValue[1];
				HZCode[2]=0x2020;
				HZCode[3]=0xA3B0+CSetValue[2];HZCode[4]=0xA3B0+CSetValue[3];HZCode[5]=0xA3B0+CSetValue[4];
				HZCode[6]=0x2020;HZCode[7]=0x2020;
				LCDWriteLine(3,HZCode);
	
				if(CSetPosition<2)
					WriteByte(0x88+CSetPosition,0);
				else
					WriteByte(0x89+CSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
			
			case 0x000b:			//left/right
			if(CSetStatus==1)
			{
				CSetPosition++;
				if(CSetPosition>5) CSetPosition=0;
				if(CSetPosition<2)
					WriteByte(0x88+CSetPosition,0);
				else
					WriteByte(0x89+CSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
			
			case 0x000a:			//left/right
			if(CSetStatus==1)
			{
				CSetPosition--;
				if(CSetPosition<0) CSetPosition=5;
				if(CSetPosition<2)
					WriteByte(0x88+CSetPosition,0);
				else
					WriteByte(0x89+CSetPosition,0);
				WriteByte(0x0d,0);
			}
			break;
			
		case 0x0007:			//save and exit
			if(CSetStatus==1)
			{
				WriteByte(0x0c,0);
		
				CircleX=CSetValue[0]*10+CSetValue[1];
				CircleY=CSetValue[2]*100+CSetValue[3]*10+CSetValue[4];
				
				TBCircle(CircleX,CircleY,25);
				
/*				
				TrackX2Table=ReadTrackXAddr(2);
				TrackY2Table=ReadTrackYAddr(2);
				TimeL[0]=LTime(PositionX*10,PositionY*10,*TrackX2Table+CircleX*10,*TrackY2Table+CircleY*10);
				TimeR[0]=RTime(PositionX*10,PositionY*10,*TrackX2Table+CircleX*10,*TrackY2Table+CircleY*10);
				for(ic=0;ic<360;ic++)
				{
					TrackX1Table=ReadTrackXAddr(2)+ic;
					TrackY1Table=ReadTrackYAddr(2)+ic;
					TrackX2Table=ReadTrackXAddr(2)+ic+1;
					TrackY2Table=ReadTrackYAddr(2)+ic+1;
					
					TimeL[ic+1]=LTime(*TrackX1Table+CircleX*10,*TrackY1Table+CircleY*10,*TrackX2Table+CircleX*10,*TrackY2Table+CircleY*10);
					TimeR[ic+1]=RTime(*TrackX1Table+CircleX*10,*TrackY1Table+CircleY*10,*TrackX2Table+CircleX*10,*TrackY2Table+CircleY*10);
					
					*P_Watchdog_Clear=C_WDTCLR;
				}
				
				TrackX2Table=ReadTrackXAddr(2)+ic;
				TrackY2Table=ReadTrackYAddr(2)+ic;
				TimeL[ic]=LTime(*TrackX2Table+CircleX*10,*TrackY2Table+CircleX*10,0,0);
				TimeR[ic]=RTime(*TrackX2Table+CircleY*10,*TrackY2Table+CircleY*10,0,0);
				TimeN=ic+1;
				TimePoint=0;
				Running=1;
				TimeCountL=0;TimeCountR=0;
				CSetStatus=0;
*/
			key=0;
			SysStatus=SYS_ST_CIRCLE;
			CSetStatus=1;
			CSetPosition=0;
			WriteByte(0x88,0);
			WriteByte(0x0d,0);
			}
			break;
			
		case 0x0006:			//exit
			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 + -