标题: 51单片机为基础,红外传感模块控制舵机旋转 源程序 [打印本页]

作者: 于丽华    时间: 2022-2-13 12:10
标题: 51单片机为基础,红外传感模块控制舵机旋转 源程序
在51单片机控制系统的基础上,通过红外感应模块控制9g舵机旋转,舵机旋转角度可以在程序上调节,该设计可以用于只能垃圾桶设计或者感应门设计,程序亲测可用,有问题可以找我呦!小姐姐一定会倾囊相授!


单片机源程序如下:
  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; //舵机的控制引脚

  8. uchar control;

  9. uchar servorTime=0;

  10. uint time;

  11. void delay(uint time){ //延迟函数

  12. uchar i;

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

  14. {

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

  16. }

  17. }

  18. void main() //中断程序 初始化赋值 重新计数 超声波模块用 计算时间

  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; //使舵机向正摆动

  39. delay(100);

  40. }

  41. }

  42. }

  43. void T1_int(void) interrupt 3 //产生舵机所需要的脉冲

  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. }
复制代码






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1