步進電機調速實驗過程的實物照片:
照片.jpg (293.85 KB, 下載次數: 124)
下載附件
2017-12-10 11:05 上傳
電路原理圖如下:
0.jpg (90.92 KB, 下載次數: 149)
下載附件
2017-12-10 10:56 上傳
51單片機源程序如下:
- /*完整的C語言程序:*/
- #include <reg52.h> //可用非常成功。
- #define uchar unsigned char
- #define uint unsigned int
- unsigned char code table1[]={0x03,0x06,0x0c,0x09,0x09,0x0c,0x06,0x03};
- //unsigned char code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共陰數碼管 0~9
- unsigned char code table2[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
- uchar table_begin;
- uint maichong; //脈沖
- uchar zhuansu; //轉速
- uchar flag; //方向
- sbit key_fuwei=P3^0; //復位鍵
- sbit key_z=P3^1; //正轉鍵
- sbit key_f=P3^2; //反轉鍵
- sbit key_jia=P3^3; //加速鍵
- sbit key_jian=P3^6; //減速鍵
- sbit A1=P2^0;
- sbit A2=P2^1;
- sbit A3=P2^2;
- sbit A4=P2^3;
- void display();
- void delayms(xms);
- void delay(uchar x)
- {
- uchar i,j; //延時
- for(i=0;i<x;i++)
- for(j=100;j>0;j--);
- }
- void fuwei(void) //復位
- {
- flag=2;
- zhuansu=0;
- }
- /*void Display(void) //顯示
- {
- unsigned char b1, b2;
- b1=zhuansu/10;
- b2=zhuansu%10;
- if(flag == 0) //0
- P0=0x71;//顯示F
- else
- P0=0x79;
- A1=0;
- delayms(3);
- A1=1;
- P0=0x40;
- A2=0; //顯示--
- delayms(3);
- A2=1;
- P0=table2[b1];
- A3=0; //顯示十位
- delayms(3);
- A3=1;
- P0=table2[b2];
- A4=0;
- delayms(3); //顯示個位
- A4=1;
- } */
-
- void display()
- {
- uchar b1,b2,b3,b4;
- if(flag==0)
- P0=0x71;//顯示F
- else
- P0=0x79;
- if(flag==1)
- P0=0x7c;//顯示b
- else
- P0=0x71;
- b1=10;
- b2=0x3f;
- b3=zhuansu/10;
- b4=zhuansu%10;
- //P0=table2;
- A1=0; //P2.0
- delay(1);
- A1=1;
- P0=b2;
- A2=0; //P2.1
- delay(1);
- A2=1;
- P0=table2[b3];
- A3=0; //P2.3
- delay(1);
- A3=1;
- P0=table2[b4];
- A4=0; //P2.4
- delay(1);
- A4=1;
- }
-
- void key() //按鍵掃描
- {
- if(key_fuwei==0)
- {
- delay(5);
- if(key_fuwei==0)
- fuwei();
- }
- if(key_z==0)
- {
- delay(5);
- if(key_z==0)
- {
- flag=0;
- zhuansu=10;
- while(key_z==0);
- }
- }
- if(key_f==0)
- {
- delay(5);
- if(key_f==0)
- {
- flag=1;
- zhuansu=10;
- while(key_f==0);
- }
- }
- if(key_jia==0)
- {
- delay(5);
- if(key_jia==0)
- {
- zhuansu++;
- if(zhuansu==21)
- zhuansu=20;
- while(key_jia==0);
- }
- }
- if(key_jian==0)
- {
- delay(5);
- if(key_jian==0)
- {
- zhuansu--;
- if(zhuansu<=0)
- zhuansu=0;
- while(key_jian==0);
- }
- }
- }
- void dispose() //脈沖函數
- {
- switch(zhuansu)
- {
- case 0: flag=2; break;
- case 1: maichong=300; break;
- case 2: maichong=295; break;
- case 3: maichong=290; break;
- case 4: maichong=280; break;
- case 5: maichong=260; break;
- case 6: maichong=240; break;
- case 7: maichong=200; break;
- case 8: maichong=180; break;
- case 9: maichong=160; break;
- case 10: maichong=120; break;
- case 11: maichong=80; break;
- case 12: maichong=70; break;
- case 13: maichong=60; break;
- case 14: maichong=40; break;
- case 15: maichong=35; break;
- case 16: maichong=30; break;
- case 17: maichong=25; break;
- case 18: maichong=20; break;
- case 19: maichong=15; break;
- case 20: maichong=10; break;
- }
- if(flag==0)
- table_begin=0;
- else
- if(flag==1)
- table_begin=4;
- }
- void zhuandong(void)
- {
- uint i,j;
- if(zhuansu>0&&zhuansu<=20)
- {
- for(j=0+table_begin;j<4+table_begin;j++)
- {
- P1=table1[j];
- for(i=0;i<maichong;i++)
- display();
- }
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 程序包,供需要者下載參考
所有資料51hei提供下載:
步進電機調速 數碼.rar
(164.47 KB, 下載次數: 700)
2017-12-10 09:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|