历史上的今天
今天是:2024年11月19日(星期二)
2019年11月19日 | 51单片机实现三相六拍的步进电机控制
2019-11-19 来源:51hei


单片机源程序如下
#include #define uchar unsigned char #define uint unsigned int uint speed = 100; //初始转速 uint max = 200; //最慢转速 uint min = 20; //最快转速 sbit swich = P2^0; //总开关 sbit dir = P2^1; //电机旋转方向 sbit le1=P2^6; sbit le2=P2^7; sbit speedadd=P3^2; sbit speedsub=P3^3; unsigned char uca_MotorStep[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; //励磁电流数组。 uchar leddata[]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x40, //"-" 0x00, //熄灭 }; void delay1ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void delay(uint x ) //多功能毫秒延时 { uint i; for(i=0;i delay1ms(); } } void display(void) { if(swich==1) { P0= leddata[11]; delay(1); le2=1; le1=1; delay(1); le2=0; le1=0; } else { if(dir==1) { P0= leddata[11]; delay(1); le2=1; delay(1); le2=0; } else { P0 =leddata[10]; delay(1); le2=1; delay(1); le2=0; } P0=leddata[9-(speed-20)/20]; delay(30); le1=1; delay(5); le1=0; } } void Init_INT0() { EX0=1; //开启外部中断 0 IT0=1; //设置成低电平触发,1为下降沿触发 EX1=1; //开启外部中断 1 IT1=1; //设置成低电平触发,1为下降沿触发 EA=1; //开启总中断 } void Interrupt0_handler() interrupt 0 { EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰 delay(20); //同样是为了消除抖动而产生新的中断 if(speed>min) {speed=speed-20;} //限制最快转速 else {speed=min;} while(speedadd==0); EA=1; //恢复中断 } void Interrupt1_handler() interrupt 2 { EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰 delay(20); //同样是为了消除抖动而产生新的中断 if(speed else {speed=max;} //限制最慢转速 while(speedsub==0); EA=1; //恢复中断 } void main() { int i; //初始化 dir=1; le1=0; le2=0; start: if(swich==0) {Init_INT0();} //总开关开启,初始化中断,开始转动 else {display(); goto start; } if(dir==1) seq: { while(1) { display(); for (i=0; i<8; i++) { P1 = uca_MotorStep[i]; //取数据 delay(speed); //调节转速 } if(dir==0) //是否换向 { delay(5); // 换向延时 goto oppo; //换向 } if(swich==1) //总开关运行中关闭 goto start; //等待开启 } } else oppo: ……………………
史海拾趣
|
-----------学过单片机, 现在想搞ARM,可不知道怎么入手了,还有就是想看看ARM 的板子,价格少点的(我是学生,靠节约点才能买) 还请各位高手指点呀!在此先谢了。   ...… 查看全部问答> |
|
公司要做个项目,现在在确定平台,是使用windows mobile还是wince,主要是从研发周期和成本方面考虑,恳请大家给点建议。 目前只知道用mobile需要微软评估,另外开发工具费用、授权费用都很贵,但具体成本是多少没有概念;而用wince相对便宜些,网 ...… 查看全部问答> |
|
我编了一个小的中断程序,运行成功了,可是有的时候又不行?这是为什么? 另外我在中断服务子程序中点亮了一个灯,按说灯只要亮就说明进了中断,我这里会出现灯亮,PIVR向量却为0,且time也没有加1,这种情况是算进了中断了还是没进中断呢?出现这 ...… 查看全部问答> |
|
相信很多人手里都拿到套件了,也许有的放旁边睡觉,有的急不可耐的上电测试了。大家是怎么用的呢?用在什么方面?简单测试后,和想象中有点差距。 [ 本帖最后由 yunbei 于 2012-4-1 18:20 编辑 ]… 查看全部问答> |
|
各位大哥大神大侠,请帮帮我,搞了一天,要奔溃了。我是初学者,这是视频教程的一个hello的内核模块,用arm-linux-gcc-4.3.2编译时,总说找不到linux/init.h和linux/module.h, 我locate了一下,这两个文件在 /usr/src/kernels/2.6.35.6-45.fc14.i ...… 查看全部问答> |




