找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個單片機程序為什么步進電機停不下來?

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:880793 發(fā)表于 2021-4-15 15:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define key P3
  5. #define MotorData P2                    //步進電機控制接口定義
  6. uchar dzheng[4]={0x18,0x24,0x42,0x81};                         // 兩步進電機正轉(zhuǎn)數(shù)組
  7. uchar dfan[4]={0x81,0x42,0x24,0x18};                // 兩步進電機反轉(zhuǎn)數(shù)組
  8. uchar keyval; // 鍵值
  9. void Delay_xms(uint x)
  10. {
  11.         uint i,j;
  12.         for(i=0;i<x;i++)
  13.                 for(j=0;j<112;j++);
  14. }

  15. void Delay10ms(void)   //誤差 0us
  16. {
  17.     unsigned char a,b,c;
  18.     for(c=1;c>0;c--)
  19.         for(b=38;b>0;b--)
  20.             for(a=130;a>0;a--);
  21. }
  22. //鍵掃
  23. void keyscan(void)
  24. {   
  25.         char a;
  26.         key=0x07;
  27.         if(key!=0x07)
  28.         {
  29.                  Delay10ms();//延時10ms進行消抖
  30.                 if(key!=0x07)
  31.                 {
  32.                         switch(key)
  33.                         {
  34.                                 case(0X06):        keyval=1;break;
  35.                                 case(0X05):        keyval=2;break;
  36.                                 case(0X03):      keyval=3;break;
  37.                                 
  38.                         }
  39.                         while((a<50)&&(key!=0x3f))         //檢測按鍵松手檢測
  40.                         {
  41.                                 Delay10ms();
  42.                                 a++;
  43.                         }
  44.                         a=0;
  45.                 }
  46.         }
  47.         
  48. }
  49. void Open()
  50. {
  51.         uint i,j;
  52.         for(j=0;j<255;j++)                // 控制步進電機正轉(zhuǎn)
  53.         {
  54.                 for(i=0;i<4;i++)
  55.                 {
  56.                         P2=dzheng[i];
  57.                         Delay_xms(3);
  58.                 }
  59.         }
  60.         
  61. }
  62. void main(void)
  63. {
  64. uint i;
  65. Delay_xms(50);//等待系統(tǒng)穩(wěn)定
  66. while(1)
  67. {
  68.    keyscan();
  69.    if(keyval==1)
  70.    {
  71.     Open();

  72.    }           
  73.          
  74.   }

  75. }



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

使用道具 舉報

沙發(fā)
ID:424598 發(fā)表于 2021-4-16 08:06 來自觸屏版 | 只看該作者
停止代碼在哪里?
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表