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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機 直流電控制機程序(智能小車用)

[復制鏈接]
跳轉到指定樓層
樓主
ID:76127 發表于 2015-4-18 04:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. sbit  RIGHT_IN1 = P1^3;   //右邊電機
  2. sbit RIGHT_EN  = P1^4;
  3. sbit RIGHT_IN2 = P1^5;
  4.         
  5. sbit  LEFT_IN1 = P1^2;    //左邊電機
  6. sbit LEFT_EN  = P1^1;
  7. sbit LEFT_IN2 = P1^0;
  8. /*********************************************
  9.                   宏定義
  10. **********************************************/
  11. #define PWM_PERIOD  100     //PWM周期PWM_PERIOD*100us
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. /*********************************************
  15.                 變量定義
  16. **********************************************/
  17. //---------- PWM ------------//
  18. uchar PWM_COUNTER = 0;      //pwm產生周期 100*100us
  19. uchar LEFT_PWM_DUTY  = 50;  //左邊電機占空比
  20. uchar RIGHT_PWM_DUTY = 50;  //右邊電機占空比
  21. //---------- 時鐘 ------------//
  22. uchar SecondL = 0;         //時間秒低位
  23. uchar SecondH = 0;         //時間秒高位
  24. uchar MinuteL = 0;         //時間分低位
  25. uchar MinuteH = 0;         //時間分高位
  26. /*********************************************
  27. 函數名稱: Delay_10Us
  28. 函數功能: us延時函數
  29. 函數輸入: us-延時時間控制變量
  30. 函數輸出: 無
  31. **********************************************/
  32. void Delay_10Us(uint us)
  33. {
  34. while( us-- );
  35. }
  36. /*********************************************
  37. 函數名稱: DelayMs
  38. 函數功能: ms級延時函數,延時時間:ms*ms
  39. 函數輸入: ms-延時時間控制變量
  40. 函數輸出: 無
  41. **********************************************/
  42. void DelayMs(uint ms)
  43. {
  44. unsigned int i,j;
  45. for( i = 0; i < ms; i ++ )
  46.   for( j = 115; j > 0; j --);
  47. }
  48. /*********************************************
  49. 函數名稱: Init
  50. 函數功能: 初始化單片機的定時0(用于產生PWM)、定時器1(用于產生時鐘)
  51. 函數輸入: 無
  52. 函數輸出: 無
  53. **********************************************/
  54. void Init_Timer(void)
  55. {
  56.    TMOD = 0x12;             //設定T0的工作模式為2,設定T0的工作模式為1
  57.    //----裝入定時器初值 -----//
  58.    TH0 = 0x95;              //100us定時
  59.    TL0 = 0x95;
  60.    TH1 = (65536-50000)/256; //50ms定時            
  61.    TL1 = (65536-50000)%256;
  62.    IT0 = 1;
  63.    IP  = 0x03;
  64.    EA  = 1;                 // 開總中斷
  65.    ET0 = 1;                 // 定時器0允許中斷
  66.    ET1 = 1;                 // 定時器1允許中斷
  67.    TR1 = 1;                 // 啟動定時器1
  68.    TR0 = 1;                 // 啟動定時器0
  69. }
  70. /*********************************************
  71. 函數名稱: Timer0_ISR
  72. 函數功能: 定時器0中斷服務函數,用于輸出PWM波
  73. 函數輸入: 無
  74. 函數輸出: 無
  75. **********************************************/
  76. void Timer0_ISR(void) interrupt 1 using 1
  77. {
  78. PWM_COUNTER ++;
  79. if(PWM_COUNTER < PWM_PERIOD)
  80. {
  81.   if(PWM_COUNTER > LEFT_PWM_DUTY)  LEFT_EN  = 0;
  82.   if(PWM_COUNTER > RIGHT_PWM_DUTY) RIGHT_EN = 0;
  83. }
  84. else
  85. {
  86.   PWM_COUNTER = 0;
  87.   LEFT_EN  = 1;
  88.   RIGHT_EN = 1;
  89. }
  90. }
  91. /*********************************************
  92. 函數名稱: Timer1_ISR
  93. 函數功能: 定時器1中斷服務函數,用于產生時鐘
  94. 函數輸入: 無
  95. 函數輸出: 無
  96. **********************************************/
  97. void Timer1_ISR() interrupt 3      
  98. {
  99. uchar cnt;
  100. TH1 = (65536-50000)/256;            
  101. TL1 = (65536-50000)%256;
  102. cnt++;
  103. if(cnt >= 20)
  104. {
  105.     cnt = 0;
  106.     ++SecondL;
  107.     if(SecondL == 10)
  108.     {
  109.     SecondL = 0;
  110.     ++SecondH;
  111.     if(SecondH == 6)
  112.     {
  113.     SecondH = 0;
  114.     ++MinuteL;
  115.     if(MinuteL == 10)
  116.     {
  117.     MinuteL = 0;
  118.     ++MinuteH;
  119.      }
  120.      }
  121.    }
  122.   }
  123. }
  124. /*********************************************
  125. 函數名稱: Stop
  126. 函數功能: 停車函數
  127. 函數輸入: speed_left -左輪占空比
  128.            speed_right-右輪占空比
  129. 函數輸出: 無
  130. **********************************************/
  131. void Stop(uchar speed_left,uchar speed_right)
  132. {
  133. LEFT_IN1  = 0;
  134. LEFT_IN2  = 0;
  135. RIGHT_IN1 = 0;
  136. RIGHT_IN2 = 0;
  137. LEFT_PWM_DUTY  = speed_left;
  138. RIGHT_PWM_DUTY = speed_right;
  139. }
  140. /*********************************************
  141. 函數名稱: GoHead
  142. 函數功能: 前進函數:控制小車以一定速度直線前進,也可以
  143.            控制小車轉彎
  144. 函數輸入: speed_left -左輪占空比
  145.            speed_right-右輪占空比
  146. 函數輸出: 無
  147. **********************************************/
  148. void GoHead(uchar speed_left,uchar speed_right)
  149. {
  150. LEFT_IN1  = 1;
  151. LEFT_IN2  = 0;
  152. RIGHT_IN1 = 1;
  153. RIGHT_IN2 = 0;
  154. LEFT_PWM_DUTY  = speed_left;
  155. RIGHT_PWM_DUTY = speed_right*5/4;  //走直線占空比校正
  156. }
  157. /*********************************************
  158. 函數名稱: GoBack
  159. 函數功能: 后退函數:控制小車以一定速度直線后退,也可以
  160.            小車后退轉彎
  161. 函數輸入: speed_left -左輪占空比
  162.            speed_right-右輪占空比
  163. 函數輸出: 無
  164. **********************************************/
  165. void GoBack(uchar speed_left,uchar speed_right)
  166. {
  167. LEFT_IN1  = 0;
  168. LEFT_IN2  = 1;
  169. RIGHT_IN1 = 0;
  170. RIGHT_IN2 = 1;
  171. LEFT_PWM_DUTY  = speed_left;
  172. RIGHT_PWM_DUTY = speed_right+2; //走直線占空比校正
  173. }
  174. /*********************************************
  175. 函數名稱: Goright
  176. 函數功能: 右轉90度函數:控制小車以一定速度旋轉90度
  177. 函數輸入: speed_left -左輪占空比
  178.            speed_right-右輪占空比
  179. 函數輸出: 無
  180. **********************************************/
  181. void Goright_90(void)
  182. {
  183. LEFT_IN1  = 1;
  184. LEFT_IN2  = 0;
  185. RIGHT_IN1 = 0;
  186. RIGHT_IN2 = 1;
  187. LEFT_PWM_DUTY  = 20;
  188. RIGHT_PWM_DUTY = 20;
  189. DelayMs(1135);
  190. }
復制代碼


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

使用道具 舉報

沙發
ID:79098 發表于 2015-5-6 17:45 | 只看該作者
直發程序,沒有電路圖無用啊
回復

使用道具 舉報

板凳
ID:78749 發表于 2015-5-7 21:40 | 只看該作者
這個90度,轉的精確嗎?
回復

使用道具 舉報

地板
ID:74784 發表于 2015-5-8 19:12 | 只看該作者
有pwm調速嗎???
回復

使用道具 舉報

5#
ID:142658 發表于 2016-10-13 23:00 | 只看該作者
有上位機軟件嗎
回復

使用道具 舉報

6#
ID:142658 發表于 2016-10-13 23:00 | 只看該作者
樓主幫忙
回復

使用道具 舉報

7#
ID:142658 發表于 2016-10-13 23:00 | 只看該作者
大神
回復

使用道具 舉報

8#
ID:213258 發表于 2017-6-22 15:24 | 只看該作者
有程序所屬文件么
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 麻豆国产一区二区三区四区 | 人人叉 | 久久免费精品 | 久久成| 高清一区二区视频 | www.亚洲区 | 最新午夜综合福利视频 | 亚洲精品久久久久久宅男 | 成人蜜桃av | 97精品一区二区 | 欧美日韩久久 | 欧美日韩在线精品 | 欧美一二三 | 九色在线视频 | 国产精品一区一区 | 亚洲国产成人在线视频 | 久久av一区 | 色综合一区二区 | 亚洲成人av | 狠狠艹| 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 国产精品毛片一区二区在线看 | 日韩av第一页 | 欧美日韩中文字幕 | 中文字幕一区在线观看视频 | 成人一区二区电影 | 户外露出一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 国产精品一区二区久久精品爱微奶 | 午夜成人免费视频 | 日本午夜免费福利视频 | 亚洲三级在线 | 亚洲一区二区三区四区av | 96国产精品久久久久aⅴ四区 | 日本视频一区二区 | 国产高清在线精品 | 成人午夜网 | 高清不卡毛片 | 一级毛片大全免费播放 | 一区二区三区欧美 | 99免费在线视频 |