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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍牙小車可調速源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:242216 發表于 2017-10-25 21:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. #include<reg52.h>  
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uchar Buffer[4] = {0}; //從串口接收的數據
  5. uint i,j;
  6. sbit Z1=P2^0;  //左電機前進
  7. sbit Z2=P2^1;  //左電機后退
  8. sbit Y1=P2^2;  //右電機前進
  9. sbit Y2=P2^3;  //右電機后退
  10. sbit ENA=P0^0;
  11. sbit ENB=P0^1;

  12. bit Right_moto_stp=1;
  13. bit Left_moto_stp =1;
  14. uchar pwm_val_left=0;   //定義變量
  15. uchar push_val_left=0;  //左電機占空比為N/20
  16. uchar pwm_val_right=0;
  17. uchar push_val_right=0; //右電機占空比為N/20



  18. void Delay_1ms(uint i)//1ms延時
  19. {
  20. uchar x,j;
  21. for(j=0;j<i;j++)
  22. for(x=0;x<=148;x++);
  23. }
  24. /********************************************************************
  25. * 名稱 : Com_Int()
  26. * 功能 : 串口中斷子函數
  27. * 輸入 : 無
  28. * 輸出 : 無
  29. ***********************************************************************/
  30. void Com_Int(void) interrupt 4
  31. {

  32. EA = 0;
  33. if(RI == 1) //當硬件接收到一個數據時,RI會置位
  34. {
  35. Buffer[0] = SBUF - 48; //這里減去48是因為從電腦中發送過來的數據是ASCII碼。
  36. RI = 0;

  37. }
  38. EA = 1;
  39. }
  40. /********************************************************************
  41. * 名稱 : Com_Init()
  42. * 功能 : 串口初始化,晶振11.0592,波特率9600,使串口中斷
  43. * 輸入 : 無
  44. * 輸出 : 無
  45. ***********************************************************************/
  46. void Com_Init(void)
  47. {

  48. TMOD = 0x20;
  49. PCON = 0x00;
  50. SCON = 0x50;
  51. TH1 = 0xFd; //設置波特率 9600
  52. TL1 = 0xFd;
  53. TR1 = 1; //啟動定時器1
  54. ES = 1; //開串口中斷
  55. EA = 1; //開總中斷
  56. }

  57. void run()
  58. {
  59.                 push_val_left=20;   
  60.                 push_val_right=20;  

  61.                 Z1=0;Z2=1;
  62.                 Y1=0;Y2=1;
  63. Delay_1ms(100);
  64. }

  65. void backrun()
  66. {
  67.                 push_val_left=20;
  68.                 push_val_right=20;

  69. Z1=1;Z2=0;
  70. Y1=1;Y2=0;
  71. Delay_1ms(100);
  72. }

  73. void left()
  74. {
  75.                 push_val_left=13;
  76.                 push_val_right=13;

  77. Z1=1;Z2=1;
  78. Y1=0;Y2=1;
  79. Delay_1ms(100);
  80. }

  81. void right()
  82. {
  83.                 push_val_left=13;
  84.                 push_val_right=13;

  85. Z1=0;Z2=1;
  86. Y1=1;Y2=1;
  87. Delay_1ms(100);
  88. }

  89. void stop()
  90. {
  91. Z1=1;Z2=1;
  92. Y1=1;Y2=1;
  93. Delay_1ms(100);
  94. }

  95. void pwm_out_left_moto(void) //左電機調速,調節push_val_left的值改變電機轉速,占空比

  96. {

  97. if(Left_moto_stp)

  98. {                                                                           
  99. {if(pwm_val_left<=push_val_left)

  100. { ENB=1;}

  101. else

  102.   {ENB=0;}
  103.   }
  104. {if(pwm_val_left>=20)

  105.   {pwm_val_left=0;}
  106.   }
  107. }

  108. else

  109. {ENB=0;}

  110. }



  111. void pwm_out_right_moto(void) //右電機調速,調節push_val_left的值改變電機轉速,占空比

  112. {

  113. if(Right_moto_stp)

  114. {

  115. if(pwm_val_right<=push_val_right)

  116. {ENA=1;}

  117. else

  118. {ENA=0;}

  119. if(pwm_val_right>=20)

  120. {pwm_val_right=0;}

  121. }

  122. else

  123. {ENA=0;}

  124. }


  125. /*TIMER0中斷服務函數產生PWM信號*/
  126. void timer0 ()interrupt 1
  127. {
  128.                 TH0=0XEC;     //5ms定時   
  129.                 TL0=0X30;  
  130.                 pwm_val_left++;
  131.                 pwm_val_right++;
  132.                 pwm_out_left_moto();
  133.                 pwm_out_right_moto();
  134. }

  135. void main()
  136. {


  137. Delay_1ms(100);
  138. Com_Init();//串口初始化
  139. TMOD|=0X01;

  140. TH0= 0XFC; //2ms定時

  141. TL0= 0X30;                                                                 

  142. TR0= 1;

  143. ET0= 1;

  144. EA = 1;

  145. while(1)
  146. {
  147. switch(Buffer[0])
  148. {
  149. case 5: stop(); break;
  150. case 2: run(); break;
  151. case 8: backrun(); break;
  152. case 4: left(); break;
  153. case 6: right(); break;

  154. default:break;
  155. }

  156. }
  157. }

復制代碼





評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:79544 發表于 2017-11-4 14:11 | 只看該作者
這個不可以調速吧?看程序里沒有啊。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91在线 | 欧美 | 一区二区视频 | 久久a久久 | 亚洲毛片在线观看 | 国产成人jvid在线播放 | 日韩国产欧美视频 | 欧美日韩综合视频 | 成人免费大片黄在线播放 | 国产成人免费网站 | 黄色免费网站在线看 | 黄网址在线观看 | 一区二区三区欧美 | 成人免费视频 | 91青娱乐在线 | 日韩一区二区三区在线视频 | 国产精品久久久久一区二区三区 | 亚洲一区二区免费视频 | 中国黄色在线视频 | 国产精品免费视频一区 | 四虎精品在线 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 亚洲欧美视频 | 美女在线视频一区二区三区 | 在线播放一区二区三区 | 国产精品免费一区二区三区四区 | 久久精品一区二区三区四区 | 三级黄色片在线播放 | 九九九视频在线观看 | 一级黄色毛片免费 | 超碰人人爱 | 黄色一级大片在线免费看产 | 亚洲成人免费视频在线观看 | 丁香婷婷综合激情五月色 | 免费黄色大片 | 999国产视频 | 国产精品揄拍一区二区久久国内亚洲精 | 久久久久久久一区 | 仙人掌旅馆在线观看 | 亚洲成人精品在线 | 中文字幕视频一区二区 | 欧美视频在线看 |