#define uchar unsigned char #define uint unsigned int
uint temp=4,flag=0; int  k=100,m=0;
void delay(uint z) {
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--); }
sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7;
uchar check_key1() {
uchar n;
P2=0xff;                n=P2;
if(n!=0xdf)
return 1;        else
return 0;   }
uchar check_key2() {
uchar n;
P2=0xff;                n=P2;
if(n!=0xbf)
return 1;        else
return 0;   }
uchar check_key() {
uchar n;
P2=0xff;
n=P2;
if(n!=0x7f)
return 1;        else
return 0;   }
void timer0() interrupt 1 {
switch(P2)  {
case 0xde:
if(check_key1()==1)  {
delay(5);
if(check_key1()==1)    {temp=0;    P1=0xf0;}  }
break;
case 0xdd:
if(check_key1()==1)  {
delay(5);
if(check_key1()==1)    {temp=1;    P1=0xf0;}   }
break;
case 0xbb:
if(check_key2()==1)  {
delay(5);
if(check_key2()==1)    temp=2;   }
while(check_key2());  break;
case 0xb7:
if(check_key2()==1)  {
delay(5);
if(check_key2()==1)    temp=3;   }
while(check_key2());  break;
case 0x6f:
if(check_key()==1)  {
delay(5);
if(check_key()==1)    {
flag++;    if(flag>=2)    flag=0;    }   }
while(check_key());  break;  }  }
void sudu0() {
if(temp==2)  {
k+=200;
if(k>=1000)   k=1000;   temp=0;  }
if(temp==3)  {
k-=200;   if(k<=0)   k=100;   temp=0;  } }
void sudu1() {  if(temp==2)  {
k+=200;   if(k>=1000)   k=1000;   temp=1;  }
if(temp==3)  {
k-=200;   if(k<=0)   k=100;   temp=1;  } }
sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3;
void main(void)  {
TMOD=0x01;  EA=1;  ET0=1;  TR0=1;   P1_0=0;  P1_1=0;  P1_2=0;  P1_3=0;  while(1)  {
for(m=1;m<=8;m++)     {
if(flag==0)     {
if(temp==0)      {
switch(m)      {
case 1:       P1_0=1;       delay(k);
break;
case 2:   P1_3=0;        delay(k);       break;
case 3:       P1_1=1;       delay(k);       break;
case 4:       P1_0=0;       delay(k);       break;
case 5:       P1_2=1;       delay(k);       break;
case 6:       P1_1=0;       delay(k);       break;
case 7:       P1_3=1;       delay(k);       break;
case 8:       P1_2=0;       delay(k);       break;       }
sudu0();      if(flag==1)      P1=0xe0;      }
if(P1==0xe0)      break;
if(temp==1) {
switch(m) {
case 1:  P1_3=1;  delay(k);  break;
case 2:  P1_0=0;  delay(k);  break;
case 3:  P1_2=1;  delay(k);  break;
case 4:  P1_3=0;  delay(k);  break;
case 5:  P1_1=1;  delay(k);  break;
case 6:  P1_2=0;  delay(k);  break;
case 7:  P1_0=1;  delay(k);  break;
case 8:  P1_1=0;  delay(k);  break;
                                                                                                                                                                                                                           }
sudu1();   if(flag==1)   P1=0xe0;   }
if(P1==0xe0)   break; }
if(flag==0) P1=0xd0; }
if(P1==0xd0) break;
if(temp==1) {
if(flag==1)     {
if(temp==0)      {
switch(m)      {
case 1:       P1_3=0;
P1_0=1;     P1_1=1;     delay(k);       break;
case 2:       P1_0=0;       P1_1=1;     P1_2=1;       delay(k);       break;           case 3:       P1_1=0;       P1_2=1;     P1_3=1;       delay(k);
break;
case 4:       P1_2=0;       P1_3=1;       P1_0=1;       delay(k);       break;      }
sudu0();
switch(m) {
case 1:  P1_0=0;  P1_3=1;  P1_2=1;  delay(k);  break;   case 2:  P1_3=0;  P1_2=1;  P1_1=1;  delay(k);  break;  case 3:  P1_2=0;  P1_1=1;  P1_0=1;  delay(k);
break;
case 4:  P1_1=0;  P1_0=1;  P1_3=1;  delay(k);  break; }
sudu1(); if(flag==0) P1=0xd0; }
if(P1==0xd0)
       
break; }      }  }  }
五、新的体会
因为微机课和单片机课没怎么学好,故感觉在做这个设计时有点困难,比如汇编程序。后来决定用c来编写程序,这样稍微轻松点,在设计程序中涉及到了中断程序的编写,发现已学的理论知识完全用不上来,也许这就是理论脱离时间的结果,在期间恶补了单片机的中断知识及其相应的程序编写。
通过这次课程设计实验,我对步进电机调速控制系统有了实际的了解和认识,提高了动手能力。本次实验把书本上、课堂上学到的知识灵活地运用到实际的实物上,感觉是对学以致用的一种锻炼和考验
提高了用所学知识解决实际问题的
能力,加深和巩固的对知识的理解和掌握。控制电路、驱动电路、测速反馈电路、步进电机几个模块的整合,也实际中提高了自己对系统的认识,有了些整体的概念和思维观。实验是团队合作完成的,从设计电路到设计软件,然后仿真到做硬件做出符合要求的控制系统,不仅从实际中锻炼了动手能力而且学会了团队合作,互相学习,提高自己。
这次的课程设计总的感觉就是很累,但在不断的学习机实践当中学到了很多东西,知识的提高那是最基础的,中断,电路工作及相关的知识都是得到了提升;然后就是个人处理问题能力的提高,虽然说这次的设计不算一个大的项目,但也算是小的雏形,课题的选择,前期的准备,理论的实践,知识的提高,处理实际问题及后期的总结归纳。  付出去收获往往是成正比的,这次的课程设计中得到了充分的体现。
总的来说,这次设计的步进电机控制电路还是比较成功的
在设计中遇到了
很多问题,最后在自己的思考下,宿舍大家一起经过激烈的探讨下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识。同时,对未来有了更多的信心。最后,对文老师表示忠心的感谢,老师,你辛苦了。