📄 circle.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 + -