步进电机驱动电路+C语言驱动程序_第1页
步进电机驱动电路+C语言驱动程序_第2页
步进电机驱动电路+C语言驱动程序_第3页
步进电机驱动电路+C语言驱动程序_第4页
步进电机驱动电路+C语言驱动程序_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/*/*兰州交通大学电子电工实验中心*/*2009-8-2*/*/#include"reg51.h"#include"intrins.h"#include"math.h"#include"absacc.h"#define PORTA XBYTE0x8500#define PORTB XBYTE0x8502#define PORTC XBYTE0x8504#define PORTC0 XBYTE0x8506#define nop _nop_()#define Right_RUN 1#define Left_RUN 0

2、unsigned long RunSpeed=76;unsigned char RUNState=1;sbit RS=P20;sbit RW=P21;sbit E=P22;sbit P17=P17;bit flag=0;unsigned char xx="speed(n/min):"unsigned char SD="76"char state214="direction:cw","direction:ccw"unsigned char FLG,INMA=0;unsigned char t,s=0x01;unsig

3、ned int a;main() void OPJIAN(); unsigned char JIAN(); unsigned char JIANZHI(); void speed(); void SHOW_LCD(); void show_state(); void write1(); void writ2(unsigned char i); void delay(); void time(); void busy(); unsigned char i; i=0x90; PORTC0=i; i=0x01; TMOD=i; t=0x10; a=0x0f; TH0=0x10; TL0=0x0f;

4、FLG=INMA; SHOW_LCD(); show_state(); EA=1; ET0=1; TR0=1;while(1) i=JIAN(); if(i!=0) time(); time(); i=JIAN();if(i!=0)INMA=JIANZHI(); OPJIAN(); time(); if(FLG!=INMA|flag=1) FLG=INMA;SHOW_LCD(); show_state();flag=0; void SHOW_LCD()/*lcd设置程序*/ P1=0x38; write1(); delay(); P1=0x38; write1(); delay(); P1=0

5、x38; write1(); delay(); P1=0x01; write1(); delay(); P1=0x0f; write1(); delay(); P1=0x06; write1(); delay(); P1=0x0c; write1(); void show_state()/*状态显示程序*/ unsigned char i=0; P1=0x80;write1(); while(xxi!='0') writ2(xxi); i+; delay(); i=0; while(SDi!='0') writ2(SDi); delay(); i+; P1=0x

6、c0; write1(); i=0; if(RUNState=Right_RUN) while(state0i!='0') writ2(state0i); i+; else if(RUNState=Left_RUN) while(state1i!='0') writ2(state1i); i+; void write1()/*lcd写控制字*/ RS=0;RW=0;E=0;busy();E=1; void writ2( unsigned char i)/*lcd写数据*/ P1=i; RS=1;RW=0;E=0; busy();E=1; void delay()

7、/*延时程序*/ unsigned char i; for(i=0;i<100;i+) i=i; void time() unsigned char i,j;for(i=0;i<100;i+) for(j=0;j<30;j+) j=j; void busy() /判断LCD是否忙 do P1=0xff; RS=0; RW=1; E=0; nop; E=1; while(P17=1); unsigned char JIAN()/*判断是否有键按下*/ unsigned char i,j; i=0xff; PORTA=i; time(); i=0x00; PORTB=i; j=P

8、ORTA; j=j; j=j&(0x0f); return j; unsigned char JIANZHI()/*读键值程序*/ unsigned i,j,d,k,m=1; i=0xfe; k=0x01; do PORTB=i; j=PORTA; m=j&(0x01); if(m=0) d=k/2; else m=j&(0x02); if(m=0) d=k/2+4; else m=j&(0x04); if(m=0) d=k/2+8; else m=j&(0x08); if(m=0)d=k/2+12; k=k+2;i=i<<1;i=i|(0x

9、01);while(m!=0);return d;void OPJIAN() /* 键值处理程序*/ switch(INMA) case 0x08: RUNState=Right_RUN;s=0xf7;break; case 0x09: RUNState=Left_RUN;s=0x01;break; case 0x0b: flag=1; t=t-2; RunSpeed=5000000/(65536-t*256-a); speed();break; case 0x0f: flag=1; t=t+2; RunSpeed=5000000/(65536-t*256-a); speed(); void speed()/*速度处理程序*/ unsigned char i=0; SD0=RunSpeed/100+48; SD1=RunSpeed%100/10+48; SD2=RunSpeed%10+48; void time

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论