|
求大神指導(dǎo) 已經(jīng)能夠?qū)崿F(xiàn)方式選擇,正反轉(zhuǎn),簡單的加減速,步數(shù)顯示,但仍需對步數(shù)控制的設(shè)計,例如默認(rèn)初始步數(shù)為10,則通過按鍵可以加減步數(shù),然后步進(jìn)電機(jī)運行指定步數(shù)后停下。由于篇幅限制,仿真及程序在附件中
51hei.png (17.43 KB, 下載次數(shù): 38)
下載附件
2021-5-28 15:48 上傳
- #include<reg51.h>
- #include<stdio.h>
- void delay1(void);
- void delay2(void);
- void display(int);
- int bs=0;
- int cishu;
- main()
- {
- char a,b,c,d,j,*q,
- done1[8]=
- {0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00},
- done2[8]=
- {0x03,0x06,0x05,0x00,0x03,0x05,0x06,0x00},
- done3[14]=
- {0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00};
- P3=0x20;
- delay1();
- L:a=P3;
- while(!(a&0x08))
- {
- P3=0x20;
- a=P3;
- delay1();
- }
- if(a&0x01)
- q=done1;
- if(a&0x02)
- q=done2;
- if(a&0x04)
- q=done3;
- if(a&0x20)
- cishu=5;
- else cishu=50;
- if(a&0x10)
- {
- P3=0x40;
- b=0;
- }
- else
- {
- P3=0x80;
- if(a&0x04)
- b=7;
- else b=4;
- }
- d=b;
- while(1)
- {
- c=*(q+b);
- if(c==0)
- b=d;
- else
- {
- P1=c;
- b++;
- bs++;
- display(bs);
- j=a;
- a=P3;
- if(a!=j)
- {
- if(!(a&0x08))
- bs=0;
- goto L;
- }
- }
- }
- }
- void delay1()
- {
- int i,j;
- for(i=0;i<200;i++)
- for(j=0;j<300;j++);
- }
- void display(int n)
- {
- unsigned char tab[10]=
- {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
- unsigned char i,k,t,num[4];
- num[0]=n%10;
- num[1]=(n/10)%10;
- num[2]=(n/100)%10;
- num[3]=(n/1000)%10;
- for(t=0;t<cishu;t++)
- {
- k=0x08;
- for(i=0;i<4;i++)
- {
- P2=k;
- P0=~(tab[num[i]]);
- k=k>>1;
- delay2();
- }
- }
- }
- void delay2()
- {
- int i,j;
- for(i=0;i<10;i++)
- for(j=0;j<60;j++);
- }
復(fù)制代碼
單片機(jī)綜合作業(yè).rar
(66.55 KB, 下載次數(shù): 6)
2021-5-28 15:19 上傳
點擊文件名下載附件
|
|