找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1371|回复: 0
收起左侧

51单片机为基础,红外传感模块控制舵机旋转 源程序

[复制链接]
ID:461901 发表于 2022-2-13 12:10 | 显示全部楼层 |阅读模式
在51单片机控制系统的基础上,通过红外感应模块控制9g舵机旋转,舵机旋转角度可以在程序上调节,该设计可以用于只能垃圾桶设计或者感应门设计,程序亲测可用,有问题可以找我呦!小姐姐一定会倾囊相授!
dd38d67c5d39ffe596b630477cb4da4.png

单片机源程序如下:
  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. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表