历史上的今天
今天是:2024年10月23日(星期三)
2019年10月23日 | 用proteus8.0仿真51单片机控制步进电机实验报告与源码
2019-10-23 来源:51hei
用proteus8.0仿真51单片机控制步进电机,实现简单的正反转、加减速控制。
ps. 该贴仅为获取黑币而法,如有雷同,多多保函
实验内容
掌握KeilC51软件与Protues软件联合仿真调试的方法;
掌握步进电机的工作原理及控制方法;
掌握步进电机控制的不同编程方法。
电路图

实验心得
这次实验让我学到了通过改变延时函数的参数可以实现步进电机的增减速,改变驱动电机的数模可以实现电机的正反转,中途遇到的困难不少,但在老师的指导下总算是完成任务。这两次实验使我能更熟练地运用微机来控制其他器件,获益良多。
单片机源程序如下:
#include 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(); } } }
史海拾趣
|
我想做一个关于PT100放大的电路,然后用于温度转换,后级单片机处理已经做好了,不知道前级如何做?只要能输出一个线性的0-5V电压或者相关电压都可以了。 有做过的朋友发个图参考一下好吗?多谢了。 89c51cj@163.com… 查看全部问答> |
|
哪位大侠碰到过PICC不兼容中文的情况? 之前用PICC16程序没问题,后来换了18系列的芯片,用UNIVERSAL TOOLSUITE PICC就出现问题了,PICC版本是9.63,MPLAB V8.40,错误提示是:illegal character (0xC9)。其实不换18的芯片,用UNIVERSAL TOOLSUITE P ...… 查看全部问答> |
|
Coyote,Wolf v1.2,Wolf v1.4,Phoenix这几种platform有什么具体的区别吗?? 在看文档时发现什么有这样的定义:Edit file \\PLATFORM\\SMDK2440A\\smdk2440a.bat to select the target platform you are working on, setting the variables according with the following table: Platform Settings Coyote & ...… 查看全部问答> |




