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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15W408AS單片機五向按鍵模塊控制TB6600驅動步進電機源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:422885 發表于 2021-5-2 00:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10檔速度可調,通過五向按鍵模塊控制云臺實現上下左右轉動。
以下代碼一部分是通過網上搜索修改的,有不足的地方請多多指教.
制作出來的實物圖如下:


單片機源程序如下:
  1. #include<reg52.h>
  2. //電機1控制引腳     ******芯片:STC15W408AS*****
  3. sbit CLK  = P1^0;
  4. sbit ENA  = P1^1;
  5. sbit DIR  = P1^2;
  6. //電機2控制引腳
  7. sbit CLK1  = P1^3;
  8. sbit ENA1  = P1^4;
  9. sbit DIR1  = P1^5;        
  10. //按鍵控制端
  11. sbit UP  = P3^2;               //電機1正轉
  12. sbit DWN  = P3^3;                   //電機1反轉
  13. sbit LFT = P3^4;         //電機2正轉
  14. sbit RHT = P3^5;         //電機2反正
  15. sbit SET  = P3^6;           //加速
  16. sbit RST = P3^7;     //減速

  17. unsigned int Tspeed[10]={30,40,60,80,100,200,400,600,800,1000};               //調速等級表
  18. bit CY_status=0;
  19. unsigned int CYCLE=20;
  20. unsigned int cy_count=0;
  21. unsigned PWM_count=0;
  22. void Init_time();
  23. void Key_scan();
  24. void main()
  25. {
  26.         ENA=0;
  27.         CLK=0;
  28.         DIR=0;        
  29.         ENA1=0;
  30.         CLK1=0;
  31.         DIR1=0;                //初始化電機
  32.         Init_time();   //初始化定時器           
  33.         while(1)
  34.         {
  35.                 Key_scan();
  36.         }        
  37. }
  38. void Init_time()                                 //初始化定時器
  39. {
  40.         TMOD |= 0x01;
  41.         TH0=(65536-CYCLE)/256;                  //給time0裝初值
  42.         TL0=(65536-CYCLE)%256;
  43.     IE = 0x82;                     //使得time1的優先級高于time0
  44.         TR0=1;                                         //打開中斷
  45. }
  46. void Enter_Timer0() interrupt 1                                //進入定時器中斷
  47. {
  48.         TH0=(65536-CYCLE)/256;
  49.         TL0=(65536-CYCLE)%256;
  50.         CLK=~CLK;
  51.         CLK1=~CLK1;
  52.         PWM_count++;
  53.         if(PWM_count==(2*cy_count)&&CY_status)
  54.         {
  55.                 PWM_count=0;
  56.                 TR0=0;
  57.                 ENA=0;
  58.                 ENA1=0;
  59.         }        
  60. }

  61. /************************按鍵掃描程序************************
  62.    功能:讀取各按鍵值,判斷是否按下,再處理相應事件
  63.    
  64.    注:按鍵控制程序,由于按鍵中斷優先級高,且每個按鍵都設計
  65.        為彈起有效, 所以長時間按住不放會導致電機減速甚至停
  66.            止直至放開按鍵                     
  67. *************************************************************/
  68. void Key_scan()                                             
  69. {
  70.         static char i=0;
  71.         if(UP==0)                                           //電機1正反轉切換
  72.         {
  73.                 if(UP==0)
  74.                 {
  75.                     DIR=1;
  76.                           ENA=1;                  //啟動電機
  77.                                 TR0=1;                  //開啟中斷產生脈沖信號
  78.                         while(!UP);                //按鍵按下直到放開
  79.                                 ENA=0;                  //關閉電機
  80.                                 TR0=0;                  //關閉中斷停止脈沖信號
  81.                                 CY_status=0;  //刷新步進標志位
  82.                 }
  83.         }
  84.         if(DWN==0)                                          
  85.         {
  86.                 if(DWN==0)
  87.                 {
  88.                            DIR=0;
  89.                           ENA=1;                  //啟動電機
  90.                                 TR0=1;                  //開啟中斷產生脈沖信號                        
  91.                         while(!DWN);        //按鍵按下直到放開
  92.                                 ENA=0;                  //關閉電機
  93.                                 TR0=0;                  //關閉中斷停止脈沖信號
  94.                                 CY_status=0;  //刷新步進標志位                        
  95.                 }
  96.         }
  97.         if(LFT==0)                                   //電機2正反轉切換
  98.         {        
  99.                 if(LFT==0)
  100.             {
  101.                                 DIR1=1;
  102.                           ENA1=1;                  //啟動電機
  103.                                 TR0=1;                  //開啟中斷產生脈沖信號        
  104.                         while(!LFT);
  105.                                 ENA1=0;                  //關閉電機
  106.                                 TR0=0;                  //關閉中斷停止脈沖信號
  107.                                 CY_status=0;  //刷新步進標志位               
  108.                 }
  109.         }
  110.         if(RHT==0)                                   
  111.         {
  112.                 if(RHT==0)
  113.                 {
  114.                                  DIR1=0;
  115.                           ENA1=1;                  //啟動電機
  116.                                 TR0=1;                  //開啟中斷產生脈沖信號        
  117.                         while(!RHT);
  118.                                 ENA1=0;                  //關閉電機
  119.                                 TR0=0;                  //關閉中斷停止脈沖信號
  120.                                 CY_status=0;  //刷新步進標志位        
  121.                 }
  122.         }
  123. if(SET==0)                                   //加速
  124.         {               
  125.                 if(SET==0)
  126.             {
  127.                         while(!SET);
  128.                         i--;
  129. ……………………

  130. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有代碼51hei提供下載:
6鍵控制TB6600 步進電機.zip (37.1 KB, 下載次數: 133)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:422885 發表于 2021-5-2 09:44 | 只看該作者
正在研究使用ps2搖桿模塊替換五向按鍵模塊操作云臺,希望有研究過的老師給點意見.
回復

使用道具 舉報

板凳
ID:402960 發表于 2021-7-11 00:11 | 只看該作者
可否提供一下原理圖
回復

使用道具 舉報

地板
ID:1005267 發表于 2022-2-15 15:35 | 只看該作者
鍵盤掃描也需要花較長時間,看過用定時器來做能節約不少時間,但現在早已忘了怎么做的了
回復

使用道具 舉報

5#
ID:650308 發表于 2022-2-19 02:29 | 只看該作者
thank you for sharing
回復

使用道具 舉報

6#
ID:399179 發表于 2022-4-13 20:45 來自手機 | 只看該作者
感謝樓主無私奉獻!正在學習!
回復

使用道具 舉報

7#
ID:1104671 發表于 2025-3-25 15:03 | 只看該作者
樓主的按鍵都是外接的單片機最小系統嗎?還是直接用的單片機開發板
回復

使用道具 舉報

8#
ID:148537 發表于 2025-3-27 22:20 | 只看該作者
我正想玩下這個。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人第一页 | 成年人在线视频 | 午夜在线视频 | 国产一级特黄真人毛片 | 91人人爽 | 波多野结衣一区二区 | 精品综合在线 | 国产精品久久久久久久久久久久 | 亚洲精彩视频在线观看 | 永久看片 | 一区二区免费在线观看 | 中文一区二区 | 欧美电影一区 | 日日碰碰 | 一区二区三区四区在线视频 | 日韩欧美手机在线 | 搞av.com| 日本黄色免费片 | 国产一区二区久久 | 男女性毛片 | av中文字幕在线 | 亚洲成人精品久久久 | 成年人在线 | 精品中文在线 | 日韩二区| 中文字幕欧美一区 | 成人久久视频 | www.亚洲一区二区三区 | 一区二区成人在线 | 久久精品一区 | 日本久久一区 | 国产黄色在线 | 国产在线观看av | 亚洲综合激情 | 亚洲免费视频在线观看 | 黄色毛片在线播放 | 亚洲精品国产成人 | 男女污污网站 | 国产资源在线播放 | 亚洲精品大片 | 一区二区三区国产 |