资源描述:
《51控制步进电机并显示转速》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include#defineucharunsignedchar#defineuintunsignedintsbitdua=P2^6;//定义锁存使能端口段锁存sbitwei=P2^7;//位锁存ucharshi,ge;unsignedcharcodetabledua[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值0~9unsignedcharcodetablewei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf
2、,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsignedcharTempData[8];//存储显示值的全局变量sbitA1=P1^0;//定义步进电机连接端口sbitB1=P1^1;sbitC1=P1^2;sbitD1=P1^3;#defineCoil_AB1{A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电#defineCoil_BC1{A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电#defineCoil_CD1{A1=0;B1=0;C1=1;D1=1;}//CD
3、相通电,其他相断电#defineCoil_DA1{A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电#defineCoil_A1{A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电#defineCoil_B1{A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电#defineCoil_C1{A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电#defineCoil_D1{A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电#defineCoil_OFF{A
4、1=0;B1=0;C1=0;D1=0;}//全部断电unsignedcharSpeed;voidDisplay(unsignedcharFirstBit,unsignedcharNum);voidinit();voiddelay(uintz){uintx,y;for(x=20;x>0;x--)for(y=z;y>0;y--);}voidmain(){unsignedinti=512;//旋转一周时间init();//EA=1;//全局中断开//EX0=1;//外部中断0开//IT0=1;//1表示边沿触发Speed=3;shi=
5、Speed/10;ge=Speed%10;wei=1;P0=tablewei[0];wei=0;dua=1;P0=tabledua[shi];dua=0;delay(5);wei=1;P0=tablewei[1];wei=0;dua=1;P0=tabledua[ge];dua=0;delay(5);//TempData[0]=dofly_DuanMa[Speed/10];//分解显示信息,如要显示68,//TempData[1]=dofly_DuanMa[Speed%10];//则68/10=668%10=8Coil_OFFwh
6、ile(i--)//正向{Coil_A1delay(Speed);Coil_AB1//遇到Coil_AB1用{A1=1;B1=1;C1=0;D1=0;}代替delay(Speed);//改变这个参数可以调整电机转速,//数字越小,转速越大,力矩越小Coil_B1delay(Speed);Coil_BC1delay(Speed);Coil_C1delay(Speed);Coil_CD1delay(Speed);Coil_D1delay(Speed);Coil_DA1delay(Speed);}}voidinit(){TMOD
7、=0
8、x01;TH0=(65536-20000)/256;TL0=(65536-20000)%256;//使用模式1,16位定时器,使用"
9、"符号可以在使用多个定时器时不受影响EA=1;//总中断打开ET0=1;//定时器中断打开TR0=1;//定时器开关打开PT0=1;//优先级打开}/*------------------------------------------------定时器中断子程序------------------------------------------------*/voidTimer0()interr
10、upt1{Speed++;if(Speed==50){Speed=3;shi=Speed/10;ge=Speed%10;wei=1;P0=tablewei[0];wei=0;dua=1;P0=tabledua[shi];dua=0;delay(5);wei=1;