完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
正反转可控的步进电机
通过按钮控制电机顺时针或逆时针旋转: #include《reg51.h》#include《string.h》#include《stdio.h》#include《intrins.h》#include《stdlib.h》#define INT8U unsigned char#define INT16U unsigned int***it FFW_KEY=P3^0;***it REV_KEY=P3^1;***it STOP_KEY=P3^2;//0000_0001 A-》AB-》B-》BC-》C-》CD-》D-》ADINT8U code FFW_ARR[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; //0000_1001 AD-》D-》CD-》C-》BC-》B-》AB-》AINT8U code REV_ARR[]={0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};/***延时**@param x 延时时间*@return*/void delay_ms(INT16U x){ INT8U t=120; while(x--) while(t--);}/***顺时针旋转**@param n 旋转圈数*@return*/void STEP_FFW(INT8U n){ INT8U i,j; for(i=0; i《5*n; i++) { for(j=0; j《8; j++) //8*9=72 { P1=FFW_ARR[j]; delay_ms(60); if(STOP_KEY==0) return; } }}/***逆时间旋转**@param n 旋转圈数*@return*/void STEP_REV(INT8U n){ INT8U i,j; for(i=0; i《5*n; i++) { for(j=0; j《8; j++) { P1=REV_ARR[j]; delay_ms(60); if(STOP_KEY==0) return; } }}void main(){ INT8U n = 1; while(1) { if(FFW_KEY==0) { P0=0xFE; // 1111_1110 STEP_FFW(n); } else if(REV_KEY==0) { P0=0xFD; // 1111_1101 STEP_REV(n); } else { P0=0xFB; // 1111_1011 } }} 百度网盘: |
|
|
|
只有小组成员才能发言,加入小组>>
592浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:13 , Processed in 0.563492 second(s), Total 68, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号