用proteus8.0仿真51单片机控制步进电机,实现简单的正反转、加减速控制。
ps. 该贴仅为获取黑币而法,如有雷同,多多保函
实验内容- 掌握KeilC51软件与Protues软件联合仿真调试的方法;
- 掌握步进电机的工作原理及控制方法;
- 掌握步进电机控制的不同编程方法。
电路图
实验心得
这次实验让我学到了通过改变延时函数的参数可以实现步进电机的增减速,改变驱动电机的数模可以实现电机的正反转,中途遇到的困难不少,但在老师的指导下总算是完成任务。这两次实验使我能更熟练地运用微机来控制其他器件,获益良多。
单片机源程序如下: - #include<reg52.h>
- sbit KEY0=P0^0;
- sbit KEY1=P0^1;
- sbit KEY2=P0^2;
- sbit KEY3=P0^3;
- sbit KEY4=P0^4;
- unsigned char a[]={0x01,0x02,0x04,0x08};
- unsigned char b[]={0x08,0x04,0x02,0x01};
- unsigned char c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
- unsigned char i,s=0,f=0;
- unsigned char k=200;
- unsigned char l=4;
- void delay(unsigned int t)
- {
- unsigned char j,b;
- b=t;
- while(b--)
- {
- for (j=0;j<125;j++);
- }
- }
- void key()
- {P0=0x1f;
- if(P0!=0x1f)
- {delay(30);
- if(P0!=0x1f)
- {delay(30);
- if(KEY0==0)
- {s=1;}
- if(KEY1==0)
- {f=1;}
- if(KEY4==0)
- {s=0;
- f=0;}
- if(KEY2==0)
- {if(l>1)
- l--;}
- if(KEY3==0)
- {if(l<7)
- l++;}
- }}
- }
- void speed()
- {switch(l)
- {case 7:k=50;P1=c[l];break;
- case 6:k=100;P1=c[l];break;
- case 5:k=150;P1=c[l];break;
- case 4:k=200;P1=c[l];break;
- case 3:k=250;P1=c[l];break;
- case 2:k=300;P1=c[l];break;
- case 1:k=350;P1=c[l];break;}
- }
- void main()
- {
- while(1)
- {key();
- while(s>0)
- {speed();
- for(i=0;i<4;i++)
- {
- P2=b[i];
- delay(k);
- key();
- }
- delay(100);
- key();
- }
-
- while(f>0)
- {speed();
- for(i=0;i<4;i++)
- {
- P2=a[i];
- delay(k);
- key();
- }
- delay(100);
- key();
- }
- }
- }
复制代码
所有资料51hei提供下载:
1.rar
(142.85 KB, 下载次数: 352)
|