找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7174|回復(fù): 3
收起左側(cè)

51單片機(jī)怎么接TB6600驅(qū)動器和程序才能實(shí)現(xiàn)按鍵控制?

[復(fù)制鏈接]
ID:279485 發(fā)表于 2018-1-29 22:03 | 顯示全部樓層 |閱讀模式
51單片機(jī)怎么接TB6600驅(qū)動器和程序才能實(shí)現(xiàn)按鍵控制? 怎么接線 c程序怎么寫
回復(fù)

使用道具 舉報(bào)

ID:470961 發(fā)表于 2019-1-21 09:04 | 顯示全部樓層
會接,程序怎么寫?
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2019-1-21 19:06 | 顯示全部樓層
  1. /*************************************************************
  2. * 測試說明
  3. *1、MCU:STC89C52RC
  4. *2、測試頻率:12Mhz
  5. *2、編程語言:C51
  6. *2、編譯環(huán)境:Keil C
  7. *2、功能:全速正轉(zhuǎn)、全速反轉(zhuǎn)、停止、調(diào)速運(yùn)行
  8. ***************************************************************/

  9. #include  <reg52.h> //TB6560輸入控制端定義
  10. sbit CLK = P1^0;  //PUL是脈沖
  11. sbit ENA = P1^1;  //ENA是使能
  12. sbit DIR = P1^2;  //DIR是方向
  13. sbit CW = P3^0; //正轉(zhuǎn)運(yùn)行按鍵
  14. sbit STOP = P3^1; //停止運(yùn)行按鍵
  15. sbit CCW = P3^2; //反轉(zhuǎn)運(yùn)行按鍵
  16. sbit ADJ1 = P3^3; //調(diào)速運(yùn)行按鍵
  17. sbit ADJ2 = P3^4; //調(diào)速運(yùn)行按鍵
  18. bit Run_Status; //運(yùn)行狀態(tài)位標(biāo)志,
  19. //=0表示電機(jī)在停止?fàn)顟B(tài),可以按鍵正轉(zhuǎn)、反轉(zhuǎn)均可
  20. //=1表示電機(jī)在運(yùn)行狀態(tài),不支持正反轉(zhuǎn)按鍵,只有先停止。防止強(qiáng)行換向帶來的電流過大。
  21. unsigned char Run_Dir; //電機(jī)運(yùn)行方向
  22. #define F_DIR 0 //正轉(zhuǎn)
  23. #define B_DIR 1 //反轉(zhuǎn)
  24. unsigned int CYCLE; //周期變量
  25. /************************************************************************************************
  26. ** 函數(shù)名稱: void Delay(unsigned int cnt)
  27. ** 功能描述: 簡單的延時函數(shù)
  28. ** 輸  入: cnt:0-65535之間的任意整數(shù)
  29. ** 輸  出: 無
  30. *************************************************************************************************/
  31. void Delay(unsigned int cnt)
  32. {
  33.         while(--cnt);
  34. }

  35. /************************************************************************************************
  36. ** 函數(shù)名稱: void main(void)
  37. ** 功能描述: 主函數(shù)
  38. ** 輸  入: 無
  39. ** 輸  出: 無
  40. *************************************************************************************************/
  41. void main(void)
  42. {
  43.         Run_Status=0; //=0表示電機(jī)在停止?fàn)顟B(tài),可以按鍵正轉(zhuǎn)、反轉(zhuǎn)均可
  44.         CLK = 0;
  45.         ENA = 0;
  46.         while(1)
  47.         {
  48.                 if(!STOP) //任何時候按停止鍵,電機(jī)停止運(yùn)行
  49.                 {
  50.                         Delay(1000); //延時去抖動
  51.                         if(!STOP)
  52.                         {
  53.                                 Run_Status=0; //電機(jī)正在停止的狀態(tài)標(biāo)志
  54.                                 CLK = 0;
  55.                                 ENA = 0;
  56.                                 TR0=0;
  57.                         }
  58.                 }
  59.                 if(!CW && !Run_Status) //按正轉(zhuǎn)鍵同時電機(jī)不是正在運(yùn)行時,電機(jī)正轉(zhuǎn)運(yùn)行
  60.                 {
  61.                         Delay(1000); //按下延時去抖動
  62.                         if(!CW && !Run_Status)
  63.                         {
  64.                                 Run_Status=1; //電機(jī)正在運(yùn)行的狀態(tài)標(biāo)志
  65.                                 DIR = 0; //正轉(zhuǎn)
  66.                                 ENA = 1;
  67.                                 CYCLE=2500; //脈沖頻率 定時器設(shè)置 10ms in 12M crystal 即100Hz
  68.                                 TMOD |=0x01;
  69.                                 TH0=(65536-CYCLE)/256;
  70.                                 TL0=(65536-CYCLE)%256;
  71.                                 IE= 0x82; //打開中斷
  72.                                 TR0=1;
  73.                                 Run_Dir=F_DIR; //電機(jī)運(yùn)行方向正轉(zhuǎn)  
  74.                         }
  75.                 }
  76.                 if(!CCW && !Run_Status) //按反轉(zhuǎn)鍵同時電機(jī)不是正在運(yùn)行時,電機(jī)反轉(zhuǎn)運(yùn)行
  77.                 {
  78.                         Delay(1000); //延時去抖動
  79.                         if(!CCW && !Run_Status)
  80.                         {
  81.                                 Run_Status=1; //電機(jī)正在運(yùn)行的狀態(tài)標(biāo)志
  82.                                 DIR = 1; //反轉(zhuǎn)
  83.                                 ENA = 1;
  84.                                 CYCLE=2500; //脈沖頻率 定時器設(shè)置 10ms in 12M crystal 即100Hz
  85.                                 TMOD |=0x01;
  86.                                 TH0=(65536-CYCLE)/256;
  87.                                 TL0=(65536-CYCLE)%256;
  88.                                 IE= 0x82; //打開中斷
  89.                                 TR0=1;
  90.                                 Run_Dir=B_DIR; //電機(jī)運(yùn)行方向反轉(zhuǎn)
  91.                         }
  92.                 }
  93.                 if(!ADJ1)
  94.                 {
  95.                         Delay(5000); //延時去抖動
  96.                         if(!ADJ1)
  97.                         {
  98.                                 if(CYCLE<20000) CYCLE+=2000;
  99.                                 else CYCLE=1000;
  100.                                 Run_Status=1;
  101.                                 TR0=1;
  102.                         }
  103.                 }
  104.                 if(!ADJ2)
  105.                 {
  106.                         Delay(5000); //延時去抖動
  107.                         if(!ADJ2)
  108.                         {
  109.                                 if(CYCLE>2000) CYCLE-=2000;
  110.                                 Run_Status=1;
  111.                                 TR0=1;
  112.                                
  113.                         }
  114.                 }
  115.         }
  116. }

  117. /***********************************************************************************************
  118. ** 函數(shù)名稱: Timer0_ISR
  119. ** 功能描述: 定時器0中斷處理函數(shù)
  120. ** 輸  入: 無
  121. ** 輸  出: 無
  122. *************************************************************************************************/

  123. void Timer0_ISR(void) interrupt 1 using 1

  124. {
  125.         TH0=(65536-CYCLE)/256;
  126.         TL0=(65536-CYCLE)%256;
  127.         CLK = ~CLK;
  128. }

復(fù)制代碼

評分

參與人數(shù) 1黑幣 +6 收起 理由
wht19980626 + 6

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:721764 發(fā)表于 2020-4-17 11:30 | 顯示全部樓層
這是共陰吧,應(yīng)該還需要反拉電阻的,否則驅(qū)動不了光耦
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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