找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1090|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)直流電機(jī)正反轉(zhuǎn)程序存在的問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1045846 發(fā)表于 2024-3-17 21:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
下面這個(gè)馬達(dá)正反轉(zhuǎn)程序是我用論壇里的紅綠燈程序改的,存在以下問(wèn)題:1.開(kāi)機(jī)直接就啟動(dòng)了,需求是按下P2^0才啟動(dòng),P2^0是點(diǎn)動(dòng)開(kāi)關(guān);
2.反轉(zhuǎn)后停止,現(xiàn)在是直接就停止了,需求在停止需保持1秒再斷開(kāi);

另外有點(diǎn)不理解的是
case 1:
start=1;cw=0;ccw=1;stop=1;這里啟動(dòng)不是關(guān)閉的嗎,為什么會(huì)通呢。

各位幫忙看看是需要改動(dòng)哪里。
感謝!
單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit start = P2^0;  //啟動(dòng)
  5. sbit cw = P2^1;     //馬達(dá)正轉(zhuǎn)
  6. sbit ccw = P2^2;    //馬達(dá)反轉(zhuǎn)
  7. sbit stop = P2^3;   //馬達(dá)停止


  8. uchar Time_Count = 0,Flash_Count = 0,Operation_Type = 1;

  9. void T0_INT() interrupt 1
  10. {
  11.          TH0 = -50000/256;
  12.         TL0 = -50000%256;
  13.         switch(Operation_Type)
  14. {
  15.                 case 1:
  16.                         start=1;cw=0;ccw=1;stop=1;      
  17.                         if(++Time_Count != 10) return;
  18.                         Time_Count=0;
  19.                         Operation_Type = 2;
  20.                         break;
  21.                 case 2:
  22.                         start=1;cw=1;ccw=0;stop=1;
  23.                         if(++Time_Count != 100) return;
  24.                         Time_Count=0;
  25.                         Operation_Type = 3;
  26.                         break;
  27.                 case 3:
  28.                         start=1;cw=1;ccw=1;stop=0;
  29.                         if(++Time_Count != 100) return;
  30.                         Time_Count=0;
  31.                         Operation_Type = 4;
  32.                         break;        
  33.                 case 4:
  34.                         start=1;cw=1;ccw=1;stop=1;
  35.                         if(++Time_Count != 10) return;
  36.                         Time_Count=0;
  37.                         break;        
  38.         }
  39. }


  40. void main()
  41. {
  42.         TMOD = 0x01;
  43.         IE = 0x82;
  44.         TR0 = 1;
  45.         while(1);
  46. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2024-3-17 21:42 | 只看該作者
1)沒(méi)有按鍵操作。2)Operation_Type在中斷里面自動(dòng)的從1增加到4然后保持4不變了,其他地方?jīng)]有修改的語(yǔ)句。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表