標(biāo)題: 51單片機(jī)為基礎(chǔ),紅外傳感模塊控制舵機(jī)旋轉(zhuǎn) 源程序 [打印本頁]

作者: 于麗華    時間: 2022-2-13 12:10
標(biāo)題: 51單片機(jī)為基礎(chǔ),紅外傳感模塊控制舵機(jī)旋轉(zhuǎn) 源程序
在51單片機(jī)控制系統(tǒng)的基礎(chǔ)上,通過紅外感應(yīng)模塊控制9g舵機(jī)旋轉(zhuǎn),舵機(jī)旋轉(zhuǎn)角度可以在程序上調(diào)節(jié),該設(shè)計可以用于只能垃圾桶設(shè)計或者感應(yīng)門設(shè)計,程序親測可用,有問題可以找我呦!小姐姐一定會傾囊相授!


單片機(jī)源程序如下:
  1. #include <REGX51.H>

  2. #include<stdio.h>

  3. #include<intrins.h>

  4. #define uchar unsigned char

  5. #define uint unsigned int

  6. sbit in=P1^3; //控制端

  7. sbit PWM =P1^0; //舵機(jī)的控制引腳

  8. uchar control;

  9. uchar servorTime=0;

  10. uint time;

  11. void delay(uint time){ //延遲函數(shù)

  12. uchar i;

  13. for(;time>0;time--)

  14. {

  15. for(i=0;i<255;i++);

  16. }

  17. }

  18. void main() //中斷程序 初始化賦值 重新計數(shù) 超聲波模塊用 計算時間

  19. {

  20. TMOD=0x11;

  21. TH1=(65536-100)/256; //0.1ms為一次溢出

  22. TL1=(65536-100)%256;

  23. ET1=1;

  24. EA=1;

  25. TR1=1;

  26. servorTime=0;

  27. while(1)   

  28. {

  29. if(in==0) //如果距離小于30cm 蜂鳴器響

  30. {

  31. control=5;
  32. //LED=0;

  33. delay(2000);

  34. }

  35. else

  36. {

  37. //LED=1;

  38. control=15; //使舵機(jī)向正擺動

  39. delay(100);

  40. }

  41. }

  42. }

  43. void T1_int(void) interrupt 3 //產(chǎn)生舵機(jī)所需要的脈沖

  44. {

  45. TH1=(65536-100)/256; //0.1ms為一次溢出

  46. TL1=(65536-100)%256;

  47. servorTime++;

  48. if(servorTime<=control)

  49. PWM=1;

  50. else

  51. PWM=0;

  52. if(servorTime>=200)

  53. {

  54. servorTime=0;

  55. }

  56. }
復(fù)制代碼






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1