本單片機是STC89C52RC,本程序應用于step motor--28BYJ,小型步進電機,
供電電壓DC5V,可直接接于單片機通過ul2003驅動芯片驅動,數碼管是共陰極接口,
控制步進電機啟動/停止,正反轉,加減速,并有運行,及轉換狀態顯示。
是初學者的好例程。
0.png (53.36 KB, 下載次數: 102)
下載附件
2018-5-9 18:56 上傳
實物圖:
webwxgetmsgimg(13).jpg (146.18 KB, 下載次數: 96)
下載附件
2018-5-9 18:55 上傳
webwxgetmsgimg(14).jpg (153.85 KB, 下載次數: 73)
下載附件
2018-5-9 18:55 上傳
大家好,我是智成電子DIY,我會不定時寫一下簡單實用的源碼分享給大家,
當然是分享給初學單片機的,大神請自覺飄過。原創首發的當然會在我們的《51黑電子論壇》網址:http://www.zg4o1577.cn/bbs/ 偶爾也會發到我的新浪博客(附件里面有地址)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (15.44 KB, 下載次數: 98)
下載附件
2018-5-9 18:58 上傳
0.png (11.54 KB, 下載次數: 80)
下載附件
2018-5-9 18:58 上傳
單片機源程序如下:
- /*本單片機是STC89C52RC,本程序應用于step motor--28BYJ,小型步進電機,
- 供電電壓DC5V,可直接接于單片機通過ul2003驅動芯片驅動,數碼管是共陰極接口,*/
- #include <STC89C5xRC.H>
- #define uchar unsigned char//數據宏定義
- #define uint unsigned int
- #define A P10 //
- #define _A P11 //步進電機脈沖接口
- #define B P12 //
- #define _B P13 //步進電機脈沖接口
- uchar su_du=0; //轉速
- bit fang_xiang=0; //方向
- bit qi_dong=0; //啟動標志
- /********************************************************************/
- #include <intrins.h>//包含移位標準庫函數頭文件
- sbit DU = P2^6;//數碼管段選
- sbit WE = P2^7;//數碼管段選
- //共陰數碼管段選表0-9
- uchar code shu_ma[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
- /*********************************************************************/
- /*====================================
- 函數 : delay(uint z)
- 參數 :z 延時毫秒設定,取值范圍0-65535
- 返回值 :無
- 描述 :12T/Fosc11.0592M毫秒級延時
- ====================================*/
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y = 114; y > 0 ; y--);
- }
- /*====================================
- 函數 :display(uchar i)
- 參數 :i 顯示數值,取值范圍0-255
- 返回值 :無
- 描述 :三位共陰數碼管動態顯示
- ====================================*/
- void display(uchar i) //數據處理
- {
- uchar bai, shi, ge;
- // bai = i / 100; //236 / 100 = 2
- // shi = i % 100 / 10; //236 % 100 / 10 = 3
- ge = i;// % 10;//236 % 10 =6
-
- /* 第一位數碼管
- P0 = 0XFF;//清除斷碼
- WE = 1;//打開位選鎖存器
- P0 = 0XFE; //1111 1110
- WE = 0;//鎖存位選數據
-
- DU = 1;//打開段選鎖存器
- P0 = shu_ma[bai];//
- DU = 0;//鎖存段選數據
- delay(5);
- //第二位數碼管
- P0 = 0XFF;//清除斷碼
- WE = 1;//打開位選鎖存器
- P0 = 0XFD; //1111 1101
- WE = 0;//鎖存位選數據
-
- DU = 1;//打開段選鎖存器
- P0 = shu_ma[shi];//
- DU = 0;//鎖存段選數據
- delay(5);*/
- /********* 第三位數碼管 */
- P0 = 0XFF;//清除斷碼
- WE = 1;//打開位選鎖存器
- P0 = 0XFB; //1111 1011
- WE = 0;//鎖存位選數據
-
- DU = 1;//打開段選鎖存器
- P0 = shu_ma[ge];//
- DU = 0;//鎖存段選數據
- delay(5);
- }
- void yanshi2(uint a) //延時程序
- {
- while(a--);
- }
- uchar an_jian() //按鍵檢測,P3.0,P3.1,P3.2,P3.3分別接4個按鍵
- {
- if((P3&0x0f)!=0x0f)//判斷 P3只要有一個按鍵按下,就延時返回按鍵值。
- {
- yanshi2(20000);
- if((P3&0x0f)!=0x0f)
- {
- return P3&0x0f;
- }
- }
- return P3&0x0f;
- }
- void yanshi() //步進電機延時時間
- {
- uint sd1=0;
- sd1=8000+5753*(10-su_du);// su_du值越大,周期越短,頻率越高
- while(sd1--)
- {
- if((P3&0x0f)!=0x0f)return; //在延時里面判斷有沒有按鍵按下,有就直接返回主函數
- }
- }
- void bu_jin() //每調用一次步進電機向指定方向走一步
- {
- static char j=1; //把起始速度設置為1。
- if(fang_xiang) //判斷方向位,為1則按正相序循環,
- {
- j++;
- if(j==5)j=1;
- }
- else
- {
- j--;
- if(j==0)j=4; //否則,按反相序循環
- }
- switch(j) //根據拍數選擇不同的電壓組合
- {
- case 1:
- A=1;B=1;_A=0;_B=0;yanshi(); //ab 1100
- break;
- case 2:
- A=0;B=1;_A=1;_B=0;yanshi(); //a~b 0110
- break;
- case 3:
- A=0;B=0;_A=1;_B=1;yanshi(); //a~b~0011
- break;
- case 4:
- A=1;B=0;_A=0;_B=1;yanshi(); //ab~ 1001
- break;
- }
- }
-
- void main()
- {
- P14=0;//方向標志
- P15=0;//啟動 標志
- while(1)
- {
- switch(an_jian()) //按鍵處理
- {
- case 0x0e: //第一個按鍵按下按鍵狀態取反,啟動/停止
- qi_dong=!qi_dong;
- P15=qi_dong; //狀態指示
- break;
- case 0x0d: //第二個按鍵按下,速度加
- if(su_du<9)
- su_du++; //速度加
- break;
- case 0x0b: //第三個按鍵按下,速度減
- if(su_du>0)
- su_du--; //速度減
- break;
- case 0x07: //第四個按鍵按下按鍵狀態取反,方向轉換
- fang_xiang=!fang_xiang;
- P34=fang_xiang; //方向指示燈
- break;
- }
-
- if(qi_dong) //啟動按鈕為1
- {
- bu_jin(); //步進電機
- }
- else P1=0X0F; //停止狀態,脈沖輸出端口全部停止輸出
- display(su_du); //數碼管顯示函數
- }
-
- }
復制代碼 下面插個小廣告:
在這里會有精彩有趣的單片機DIY套件產品和優質原創的源碼。
包括淘寶最低價的微型激光雕刻機支持脫機打印的,用51單片機打造(原創哦)。
6足4足蜘蛛仿生機器人,同樣是用51單片機打造,控制18路舵機完成各個動作
還可以手機wifi控制,提供所有資料(單片機源碼,APP源碼,電路,PCB等)
還會有其他強大有趣的設計,如解魔法機器人,智能小車等。
您有好的想法也可以聯系我,我們一起開發更多有用的產品!
此附件由于多人回帖說代碼有錯誤,已經被管理員刪除,無法下載
單片機控制步進電機.rar
(361.69 KB, 下載次數: 301)
2018-5-9 13:58 上傳
點擊文件名下載附件
閱讀權限: 255 下載積分: 黑幣 -5
此附件由于多人回帖說代碼有錯誤,已經被管理員刪除,無法下載,請論壇搜索"步進電機" 或移步http://www.zg4o1577.cn/bbs/dpj-146064-1.html
|