久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6420|回復: 3
打印 上一主題 下一主題
收起左側

單片機28BYJ-48步進電機控制器仿真+代碼

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機源程序如下:



  1. #include  "macro.h"
  2. typedef unsigned int  u16;
  3. u16 un;
  4. uchar  buf_Direction;                  //?????????
  5. uint  set_speed;                          //?????????
  6. uchar step_motor_loop[8]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};//28byj-48電機時序


  7. //uchar step_motor_loop[4]={0x09,0x06,0x03,0x0c};//42步進時序


  8. uchar step_index;


  9. #define CST_STEP_MOTOR_Z      10                                  //??
  10. #define CST_STEP_MOTOR_F       20                                  //??
  11. #define CST_STEP_MOTOR_ST     0                            //?
  12. #define     fosc_12MHz                  12  
  13. #define     fosc_24MHz                  24     
  14. #define     fosc_setting                 fosc_12MHz
  15. //????1
  16. #define CST_TIME_MS    200   
  17. #define CST_TH0          (65536-CST_TIME_MS*fosc_setting/fosc_12MHz)/256
  18. #define CST_TL0          (65536-CST_TIME_MS*fosc_setting/fosc_12MHz)%256
  19. uchar buf_SpeedString[]="    ";


  20. //void iniLCD(void);                                                           
  21. //void list_write_HZ_Str( int x1,int y1,  uchar *point ) ;
  22. void delay(u16 num)
  23. {
  24.         u16 x,y;
  25.         for(x=num; x>0; x--)
  26.                 for(y=110; y>0; y--)
  27.                 {
  28.                         ;//??1ms
  29.                 }
  30. }
  31. void step_motor_driver(void)
  32. {
  33. static uint speed_delay=0;

  34. speed_delay++;
  35. if( buf_Direction==CST_STEP_MOTOR_Z)
  36.    {
  37.    P0=step_motor_loop[step_index];
  38.    if(speed_delay >=set_speed )
  39.      {
  40.       speed_delay =0;
  41.       step_index--;                                                   
  42.       if(step_index <=0)
  43.              step_index =7;
  44. //=================================================轉1圈                        
  45.                         un++;
  46.                         if(un>=3600)
  47.                         {
  48.                                 un=0;
  49.                                 step_index=3;
  50.                                 buf_Direction=0;
  51.                                 
  52.                         }
  53.                         //=================================================
  54.           }


  55.    }
  56. else if( buf_Direction==CST_STEP_MOTOR_F)
  57.    {
  58.   
  59.    P0=step_motor_loop[step_index];
  60.    if(speed_delay >=set_speed)
  61.      {
  62.       speed_delay =0;
  63.       step_index++;                                                   //??7,????
  64.       if(step_index >7)
  65.              step_index =0;
  66.                         //=================================================轉1圈
  67.                         un++;
  68.                         if(un>=4100)
  69.                         {
  70.                                 un=0;
  71.                                 step_index=3;
  72.                                 buf_Direction=0;
  73.                                 
  74.                         }
  75.                         //============================================
  76.           }
  77.         }
  78. else
  79.     {
  80.       speed_delay =0;
  81.                                 un=0;
  82.                                 step_index=3;
  83.       P0=0x00;
  84.     }

  85. }




  86. //*********************************************************
  87. //******************??????****************************
  88. //************************************************************
  89. void key_Scan (void)
  90. {
  91. static uchar key_loose=0;
  92. uchar temp=0;


  93.   P1=0XFF;
  94. temp=P1&0xFF;
  95. if(key_loose >0)
  96.   {
  97.   if(temp==0xFF)
  98.      key_loose=0;
  99.   return;
  100.   }
  101. else if(temp !=0xFF)
  102.   {
  103.   key_loose=10;
  104.   temp=P1&0xFF;
  105.   switch(temp)
  106.          {
  107.           case 0xFE:      
  108.                         buf_Direction=CST_STEP_MOTOR_Z;
  109.                       //  list_write_HZ_Str(6,20,"??");
  110.                         // caluate();

  111.                           break;           
  112.                           
  113.           case 0xFD:   
  114.                         buf_Direction=CST_STEP_MOTOR_F;
  115.                          // list_write_HZ_Str(6,20,"??");
  116.                            // caluate();
  117.                           break;                          
  118.            case 0xFB:   
  119.                         buf_Direction=CST_STEP_MOTOR_ST;
  120.                          // list_write_HZ_Str(6,20,"??");
  121.                 //          list_write_HZ_Str(6,60,"     ");
  122.                           break;                  
  123.           case 0xEF:   
  124.                         if(buf_Direction !=CST_STEP_MOTOR_ST)
  125.                                      {
  126.                                           if(set_speed <100)
  127.                                              set_speed +=5;;      //??
  128.                                              // caluate();
  129.                                          }
  130.                        
  131.                                         break;
  132.           case 0xF7:   
  133.                        if(buf_Direction !=CST_STEP_MOTOR_ST)
  134.                                      {
  135.                                           if(set_speed >2)
  136.                                              set_speed -=5;      //??
  137.                                            // caluate();
  138.                                          }
  139.                      
  140.                                         break;
  141.           default:         
  142.                         break;                                //?????
  143.          }

  144.   }
  145. }

  146. void isr_timer0 (void) interrupt 1 using 1
  147. {


  148. TH0=CST_TH0;
  149. TL0=CST_TL0;

  150. step_motor_driver();
  151. }



  152. void init_timer0(void)
  153. {
  154. TCON=0x00;
  155. TMOD=0x00;
  156. TL0=0x00;
  157. TH0=0x00;
  158. TCON=0x00;
  159. // Timer 0 C/T=0,??????
  160. //Timer 0 M1,M0=0,1 .work  mode 1 www.gdzs.si.gov.cn
  161. TMOD=0x01; //GATE=0,??????TR0 ?????0 ?C/T=0,??????
  162. TH0=CST_TH0;
  163. TL0=CST_TL0;
  164. TF0=0;//clear 0. count over flag.
  165. TR0=1;// enable TIMER0 ,start count
  166. ET0=1; //enable accept interrupt

  167. }

  168. //***********************?***?****?********?********************
  169. void main(void)
  170. {  
  171.    P2=0xff;
  172.    P1=0xff;
  173.    P0=0Xff;
  174.    init_timer0();
  175.    //iniLCD();                                      //??? LCD

  176.    buf_Direction=CST_STEP_MOTOR_ST;
  177.    set_speed=30;
  178.    step_index=3;
  179.    EA=1;                                               //???
  180.    while(1)
  181.      {
  182.      key_Scan();
  183.    }
  184. }
復制代碼

所有資料51hei提供下載:
步進控制.zip (25.13 KB, 下載次數: 88)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:260698 發表于 2018-12-10 19:58 | 只看該作者
尷尬,你的版本太高了
回復

使用道具 舉報

板凳
ID:865245 發表于 2020-12-23 16:03 | 只看該作者
P1端口不用上拉電阻,好像也是可以的吧?
回復

使用道具 舉報

地板
ID:143767 發表于 2020-12-23 18:17 | 只看該作者
P1口接的電阻不是上拉,是穩定工作點的,阻值最好在4.7K到10K之間
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费黄色片在线观看 | 天堂网中文 | 91麻豆精品国产91久久久久久 | 国产精品国产三级国产aⅴ入口 | 日韩成人影院在线观看 | 欧美国产91 | 中文字幕日韩欧美 | 欧美天堂一区 | 久久不卡 | 中文字幕亚洲精品 | 亚洲一区二区av | 亚洲电影一级片 | 亚洲女人的天堂 | 日韩欧美精品在线播放 | aaa精品 | 亚洲精彩视频在线观看 | 成人一区在线观看 | 亚洲最新网址 | 欧美福利精品 | 亚洲va国产日韩欧美精品色婷婷 | 国产精品3区 | 久久久网 | 91精品麻豆日日躁夜夜躁 | 婷婷综合 | 欧美日韩中文字幕在线 | 久久久一区二区三区四区 | 黄色一级电影免费观看 | 亚洲精品日韩精品 | 黑人一级黄色大片 | 99久久精品免费看国产高清 | 日日摸日日添日日躁av | 成人动漫一区二区 | 男人的天堂久久 | 久久99精品视频 | 欧美日本韩国一区二区 | 九九九久久国产免费 | 国产精品爱久久久久久久 | 日韩视频91| 午夜国产| 91精品国产91久久久久游泳池 | 国产一区二区自拍 |