📄 悬挂控制最终程序20050910.c
字号:
{ if(key_value==2)//按DEL键退出键盘程序
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
EA=0;
HD7279_Initial();
HD7279_ShowData(3,0x00,0);
EA=1;
break;
}
if(key_value==8)//功能选择
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
key_fun_counter+=1;
if(key_fun_counter>7) key_fun_counter=0;
EA=0;
HD7279_ShowData(3,key_fun_counter,1);
EA=1;
}
if(key_value==4)//功能确认
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
switch(key_fun_counter)
{case 1:{data_x = 0;
data_y = 0;
HD7279_Initial();
for(i=0;i<=5;i++) //数码管测试
{EA=0;
HD7279_ShowData(3,0x0f,0);
delay(10000);
HD7279_ShowData(3,0x00,0);
delay(10000);
EA=1;
}
}break; //复位
case 2:{xy_select=0;
EA=0;
HD7279_ShowData(0,0x0c,0);//显示H表示设置参数
HD7279_ShowData(4,0x0f,0);//显示H表示设置参数
EA=1;
while(1)
{
if(key_value==2)//如果按DEL键则退出
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
EA=0;
HD7279_Initial();
key_fun_counter=2;
HD7279_ShowData(3,key_fun_counter,0);
EA=1;
break;
}
if(key_value==8) //如果按FUN键上下切换H
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
xy_select=~xy_select;
if(xy_select==0)
{EA=0;
HD7279_ShowData(0,0x0c,0);//显示H表示设置参数
HD7279_ShowData(4,0x0f,0);//显示H表示设置参数
EA=1;
}
if(xy_select==1)
{EA=0;
HD7279_ShowData(0,0x0f,0);//显示H表示设置参数
HD7279_ShowData(4,0x0c,0);//显示H表示设置参数
EA=1;
}
}
if(key_value==4)//如果按ENTER键,设置XY数值
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
if(xy_select==0)//设置X轴坐标
{EA=0;
HD7279_ShowData(0,0x0a,0);//显示H表示设置参数
HD7279_ShowData(4,0x0f,0);//显示H表示设置参?
EA=1;
while(1)
{if(key_value==4)//如果按ENTER键则确认该数值退出
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
EA=0;
HD7279_ShowData(0,0x0c,0);//显示H表示设置参数
HD7279_ShowData(4,0x0f,0);//显示H表示设置参?
EA=1;
break;
}
if(key_value==1)
{for(timer0_counter=0;timer0_counter<15;);
key_value=0;
data_x+=1;
if(data_x>80) data_x=0;
}
if(key_value==7)
{for(timer0_counter=0;timer0_counter<15;);
key_value=0;
data_x-=1;
if(data_x>80) data_x=80;
}
EA=0;
show_led(data_x,0,0);
EA=1;
}
}
else//设置Y轴坐标
{while(1)
{EA=0;
HD7279_ShowData(0,0x0f,0);//显示H表示设置参数
HD7279_ShowData(4,0x0a,0);//显示H表示设置参?
EA=1;
if(key_value==4)//如果按ENTER键则确认该数值退出
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
EA=0;
HD7279_ShowData(0,0x0f,0);//显示H表示设置参数
HD7279_ShowData(4,0x0c,0);//显示H表示设置参?
EA=1;
break;
}
if(key_value==1)
{for(timer0_counter=0;timer0_counter<15;);
key_value=0;
data_y+=1;
if(data_y>100) data_y=0;
}
if(key_value==7)
{for(timer0_counter=0;timer0_counter<15;);
key_value=0;
data_y-=1;
if(data_y>100) data_y=100;
}
EA=0;
show_led(data_y,1,0);
EA=1;
}
}
}//end if(key_value==4)
}//end while(1)
}break;
case 3:{//从原点出发画一条直线
draw_line(data_x,data_y);
for(i=0;i<9;i++)
{EA=0;
HD7279_ShowData(0,0x0d,0);
delay(50000);
HD7279_ShowData(0,0x0f,0);
delay(50000);
EA=1;
}
}break;
case 4:{//画圆
draw_cir(data_x,data_y);
for(i=0;i<9;i++)
{EA=0;
HD7279_ShowData(0,0x0d,0);
delay(50000);
HD7279_ShowData(0,0x0f,0);
delay(50000);
EA=1;
}
}break;
case 5:{//移动
move_point(data_x,data_y);
for(i=0;i<9;i++)
{EA=0;
HD7279_ShowData(0,0x0d,0);
delay(50000);
HD7279_ShowData(0,0x0f,0);
delay(50000);
EA=1;
}
}break;
case 6:{//发挥(收线)
while(1)
{
EA=0;
HD7279_ShowData(0,0x0b,0);
EA=1;
if(key_value==2)//如果按DEL键则退出
{for(timer0_counter=0;timer0_counter<20;);
key_value=0;
EA=0;
HD7279_Initial();
key_fun_counter=2;
HD7279_ShowData(3,key_fun_counter,0);
EA=1;
break;
}
if(key_value == 7)
{control_motor1_z();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
while(!HD7279_KEY);
control_motor1_close();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
}
if(key_value == 3)
{control_motor2_z();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
while(!HD7279_KEY);
control_motor2_close();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
}
if(key_value == 5)
{control_motor2_f();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
while(!HD7279_KEY);
control_motor2_close();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
}
if(key_value == 1)
{control_motor1_f();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
while(!HD7279_KEY);
control_motor1_close();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
}
if(key_value == 4)
{control_motor1_close();
control_motor2_close();
PCON=1;
PCON=1;
PCON=1;
PCON=1;
PCON=1;
}
}
}break;
case 7:{ EA=0;
HD7279_ShowData(0,0x0A,0);//显示H表示设置参数
EA=1;
while(1)
{if(key_value==4)//如果按ENTER键则确认该数值退出
{for(timer0_counter=0;timer0_counter<30;);
key_value=0;
EA=0;
HD7279_ShowData(0,0x0C,0);//显示H表示设置参数
EA=1;
break;
}
if(key_value==1)
{for(timer0_counter=0;timer0_counter<15;);
key_value=0;
cir_bj+=1;
}
if(key_value==7)
{for(timer0_counter=0;timer0_counter<15;);
key_value=0;
cir_bj-=1;
if(cir_bj<0) cir_bj=25;
}
EA=0;
show_led(cir_bj,0,0);
EA=1;
}
}break;
}
}//end if(key_value==5)
}
}
//--------------------------------------------
//--------------------------------------------
//--------------------------------------------
void main()
{
uchar i;
TMOD=0x01; //T1工作于方式1
EA=1; //CPU中断开放
ET0=1; //定时器T0溢出中断允许
TH0=0xd8; //12M晶振10MS溢出初值
TL0=0xf0;
L_guang = 1;
R_guang = 1;
L_length = L_start;
R_length = R_start;
HD7279_Initial();
delay(20000);
for(i=0;i<=9;i++) //数码管测试
{HD7279_ShowData(0,i,0);
HD7279_ShowData(1,i,0);
HD7279_ShowData(2,i,0);
HD7279_ShowData(3,i,0);
HD7279_ShowData(4,i,0);
HD7279_ShowData(5,i,0);
//HD7279_ShowData(6,i,0);
//HD7279_ShowData(7,i,0);
delay(10000);
}
TR0=1;
while(1) key_chose();
}//main end
//--------------------------------------------
// 以下是定时器中断程序 |
//--------------------------------------------
void timer_t0(void) interrupt 1 //50MS
{
TH0=0xd8;
TL0=0xf0;
timer0_counter+=1;
key_value=HD7279_GetKey();//获得按键代码
if(L_sign==1)motor1_sign++;
if(R_sign==1)motor2_sign++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -