百度知道 - 信息提示

日期:2025-01-13 08:00:49 人气:1

百度知道 - 信息提示

    A+
热门评论

哪位大侠会51单片机控制的步进电机C语言程序

我上周刚做的这个实验 成功拉,给你参考一下吧 这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的 和ULN2003一样,你把它换成2003就行拉 #include unsigned char code table[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0x00}; unsigned char temp,temp_old; unsigned char key; unsigned char i,j,k,m,s; void delay(int i) { for(m=i;m>0;m--) for(j=250;j>0;j--) for(k=10;k>0;k--); } void saomiao() { P3=0xff; P3_4=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=4; break; } temp=P3; temp=temp&0x0f; while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } } P3=0xff; P3_5=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=7; break; } temp=P3; temp=temp&0x0f; while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } } } void main(void) { while(1) { saomiao(); if(key==1) { P1=0; P2=0; saomiao(); } if(key==2) { temp_old=key; for(s=0;s<8;s++) { P2=table[s]; P1_4=0; delay(13); saomiao(); if(key!=temp_old) { P1_4=1; break; } } } if(key==3) { temp_old=key; for(s=0;s<8;s++) { P2=table[s]; P1_5=0; delay(5); saomiao(); if(key!=temp_old) { P1_5=1; break; } } } if(key==4) { temp_old=key; for(s=0;s<8;s++) { P2=table[s]; P1_6=0; delay(20); saomiao(); if(key!=temp_old) { P1_6=1; break; } } } if(key==5) { temp_old=key; for(s=9;s<17;s++) { P2=table[s]; P1_7=0; delay(13); saomiao(); if(key!=temp_old) { P1_7=1; break; } } } if(key==6) { temp_old=key; for(s=9;s<17;s++) { P2=table[s]; P1_5=0; delay(5); saomiao(); if(key!=temp_old) { P1_5=1; break; } } } if(key==7) { temp_old=key; for(s=9;s<17;s++) { P2=table[s]; P1_6=0; delay(20); saomiao(); if(key!=temp_old) { P1_6=1; break; } } } } }

阅读全文