自己寫的,不規(guī)范還望包含,keil和protues文件
0.png (21.72 KB, 下載次數(shù): 99)
下載附件
2017-9-21 00:17 上傳
QQ截圖20170920232942.png (158.37 KB, 下載次數(shù): 83)
下載附件
2017-9-20 23:32 上傳
0.png (60.9 KB, 下載次數(shù): 81)
下載附件
2017-9-21 00:17 上傳
單片機源程序如下:
- #include <reg52.h>
-
- #define uchar unsigned char
- #define uint unsigned int
- uint speed = 100; //初始轉(zhuǎn)速
- uint max = 200; //最慢轉(zhuǎn)速
- uint min = 20; //最快轉(zhuǎn)速
- sbit swich = P2^0; //總開關(guān)
- sbit dir = P2^1; //電機旋轉(zhuǎn)方向
- 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}; //勵磁電流數(shù)組。
-
- 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<x;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; //設(shè)置成低電平觸發(fā),1為下降沿觸發(fā)
- EX1=1; //開啟外部中斷 1
- IT1=1; //設(shè)置成低電平觸發(fā),1為下降沿觸發(fā)
- EA=1; //開啟總中斷
- }
- void Interrupt0_handler() interrupt 0
- {
- EA=0; //首先關(guān)閉總中斷,以消除按鍵出現(xiàn)的抖動所產(chǎn)生的干擾
- delay(20); //同樣是為了消除抖動而產(chǎn)生新的中斷
- if(speed>min)
- {speed=speed-20;} //限制最快轉(zhuǎn)速
- else
- {speed=min;}
- while(speedadd==0);
- EA=1; //恢復(fù)中斷
- }
- void Interrupt1_handler() interrupt 2
- {
- EA=0; //首先關(guān)閉總中斷,以消除按鍵出現(xiàn)的抖動所產(chǎn)生的干擾
- delay(20); //同樣是為了消除抖動而產(chǎn)生新的中斷
- if(speed<max)
- {speed=speed+20;}
- else
- {speed=max;} //限制最慢轉(zhuǎn)速
- while(speedsub==0);
- EA=1; //恢復(fù)中斷
- }
- void main()
- {
- int i; //初始化
- dir=1;
- le1=0;
- le2=0;
- start:
- if(swich==0)
- {Init_INT0();} //總開關(guān)開啟,初始化中斷,開始轉(zhuǎn)動
- else
- {display(); goto start; }
- if(dir==1)
- seq:
- {
- while(1)
- {
- display();
- for (i=0; i<8; i++)
- {
- P1 = uca_MotorStep[i]; //取數(shù)據(jù)
- delay(speed); //調(diào)節(jié)轉(zhuǎn)速
- }
- if(dir==0) //是否換向
- {
- delay(5); // 換向延時
- goto oppo; //換向
- }
- if(swich==1) //總開關(guān)運行中關(guān)閉
- goto start; //等待開啟
-
- }
-
- }
- else
- oppo:
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
abc.zip
(116.04 KB, 下載次數(shù): 210)
2017-9-20 23:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|