单片机驱动步进电机程序代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/********************************************************实现功能:正转程序使用芯片:AT89S52晶振:11.0592MHZ编译环境:Keil作者:【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!********************************************************/#includereg52.h//库文件#defineucharunsignedchar//字符型宏定义#defineuintunsignedint//整型宏定义uchartcnt;//定时器计数初值定义uintsec;//速度值定义ucharbuf[11];ucharbai,shi,ge;/********************控制位定义*************************/sbitshi_neng=P1^0;//使能控制位sbitfang_shi=P1^1;//工作方式控制位sbitfang_xiang=P1^2;//旋转方向控制位sbitmai_chong=P1^3;//脉冲控制位/********************延时函数***************************/voiddelay1ms(ucharz){ucharx,y;for(x=0;xz;x++)for(y=0;y110;y++);}/***************************定时中断服务函数*************/voidt0(void)interrupt1using0//定时中断服务函数{tcnt++;//每过250usttcnt加一if(tcnt==1)//当tcnt满足条件时{tcnt=0;//计满重新再计sec++;if(sec==6)//括号内数值越小,电机转动速度越快{sec=0;//计满重新再计mai_chong=~mai_chong;//脉冲输出}}}/***********************定时器0/1初始化****************************/voidT0_Init(){ET0=1;TMOD=0x22;TH0=0x06;//对TH0TL0赋值TL0=0x06;TR0=1;//开始定时sec=0;mai_chong=1;//脉冲控制位}/***********************串口初始化****************************/voidUart_Init(){TMOD=0x22;TH1=0xFD;TL1=0xFD;SCON=0x50;PCON&=0xef;TR1=1;}/***********************数据接收函数****************************/voidReceiveBuf(){inti;for(i=0;i11;i++){buf[i]=SBUF;while(RI==0);RI=0;}}/***********************角度控制函数****************************/voidControl(){if((bai==buf[5])&(shi==buf[6])&(ge==buf[7])){shi_neng=0;};if(baibuf[5]){shi_neng=1;fang_xiang=0;}elseif(baibuf[5]){shi_neng=1;fang_xiang=1;};if((bai==buf[5])&shibuf[6]){shi_neng=1;fang_xiang=0;}elseif((bai==buf[5]&shibuf[6])){shi_neng=1;fang_xiang=1;};if((bai==buf[5])&(shi==buf[6]&(gebuf[7]))){shi_neng=1;fang_xiang=0;}elseif((bai==buf[5])&(shi==buf[6])&(gebuf[7])){shi_neng=1;fang_xiang=1;};if((bai==buf[5])&(shi==buf[6])&(ge==buf[7])){shi_neng=0;};delay1ms(3);bai=buf[5];shi=buf[6];ge=buf[7];}/************************主函数****************************/main(){EA=1;T0_Init();Uart_Init();while(1){//shi_neng=1;//使能控制位fang_shi=1;//工作方式控制ReceiveBuf();delay1ms(1);Control();delay1ms(10);}}/*************************结束******************************/

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功