找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2688|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机三路红外寻迹程序

[复制链接]
跳转到指定楼层
楼主
ID:195129 发表于 2017-5-9 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. #include<reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit IN1=P0^1;  
  5. sbit ENA=P0^5;
  6. sbit IN2=P0^2;                     
  7. sbit IN4=P0^4;
  8. sbit ENB=P0^0;;
  9. sbit IN3=P0^3;


  10. sbit hw1=P1^0;         
  11. sbit hw2=P1^1;
  12. sbit hw3=P1^2;
  13. //sbit hw4=P1^3;

  14. uchar PWM1=0 ;            //**右边电机的占空比**//
  15. uchar PWM2=0 ;           //**左边电机的占空比**//
  16. uchar num=0;            //**定时器中断计数器**//
  17. uchar flag;
  18. void init()
  19. {
  20.     TMOD=0x01;
  21.         TH0=(65536-50)/256;
  22.         TL0=(65536-50)%256;
  23.         EA=1;
  24.         ET0=1;
  25.         TR0=1;

  26.         IN1=0;
  27.         IN2=0;
  28.         IN3=0;
  29.         IN4=0;
  30. }


  31. void main()
  32. {
  33.      init();

  34.          while(1)
  35.          {
  36.                  if(hw1||hw2||hw3/*||hw4*/)//如果检测到信号
  37.                     {
  38.                              if(hw1&&hw2&&hw3/*&&hw4*/)
  39.                                  {
  40.                                      ENA=0;
  41.                                          ENB=0;
  42.                                  }
  43.                                  if(hw1&&!hw2&&!hw3/*&&!hw4*/)
  44.                                          {
  45.                                                  IN1=1;
  46.                                                  IN2=0;
  47.                                                  IN3=1;
  48.                                                  IN4=0;
  49.                                                  PWM1=0;
  50.                                                  PWM2=15;
  51.                                                  flag=1;
  52.                                          }
  53.                                  if(!hw1&&hw2&&!hw3/*&&!hw4*/)
  54.                                          {
  55.                                                  IN1=1;
  56.                                                  IN2=0;
  57.                                                  IN3=1;
  58.                                                  IN4=0;
  59.                                                  PWM1=0;
  60.                                                  PWM2=13;
  61.                                                  flag=2;
  62.                                          }
  63.                                  if(!hw1&&!hw2&&hw3/*&&!hw4*/)
  64.                                          {
  65.                                             IN1=1;
  66.                                             IN2=0;
  67.                                             IN3=1;
  68.                                                 IN4=0;
  69.                                                 PWM1=13;
  70.                                                 PWM2=0;
  71.                                                 flag=3;
  72.                                          }
  73.                                  if(!hw1&&!hw2&&!hw3/*&&hw4*/)
  74.                                          {
  75.                                              IN1=1;
  76.                                                  IN2=0;
  77.                                                  IN3=1;
  78.                                                  IN4=0;
  79.                                                  PWM1=15;
  80.                                                  PWM2=0;
  81.                                                  flag=4;
  82.                                          }
  83.                         }
  84.                  else  //如果检测不到信号
  85.                    {
  86.                        switch(flag)
  87.                            {
  88.                               case 1:                        
  89.                                         {
  90. //                                                            IN1=1;
  91. //                                                         IN2=0;
  92. //                                                         IN3=1;
  93. //                                                         IN4=0;
  94. //                                                         PWM1=10;
  95. //                                                         PWM2=5;
  96.                                                  IN1=0;
  97.                                                  IN2=1;
  98.                                                  IN3=1;
  99.                                                  IN4=0;
  100.                                                  PWM1=12;
  101.                                                  PWM2=12;
  102.                                                          //flag=0;
  103.                                                 }        break;


  104.                               case 2:
  105.                                         {
  106.                                                          IN1=1;
  107.                                                          IN2=0;
  108.                                                          IN3=1;
  109.                                                          IN4=0;
  110.                                                          PWM1=8;
  111.                                                          PWM2=8;
  112.                                                          flag=0;
  113.                                                 }         break;

  114.                               case 3:
  115.                                         {
  116.                                                             IN1=1;
  117.                                                          IN2=0;
  118.                                                          IN3=1;
  119.                                                          IN4=0;
  120.                                                          PWM1=8;
  121.                                                          PWM2=8;
  122.                                                          flag=0;
  123.                                                 }        break;


  124.                               case 4:
  125.                                         {
  126.                                                  IN1=1;
  127.                                                  IN2=0;
  128.                                                  IN3=0;
  129.                                                  IN4=1;
  130.                                                  PWM1=12;
  131.                                                  PWM2=12;
  132.                                                         // flag=0;
  133.                                                 }          break;


  134.                               default:
  135.                                         {
  136.                                                             IN1=1;
  137.                                                          IN2=0;
  138.                                                          IN3=1;
  139.                                                          IN4=0;
  140.                                                          PWM1=12;
  141.                                                          PWM2=12;
  142.                                                 }
  143.                            }
  144.                    }

  145.          }         
  146. }

  147. void timer0() interrupt 1
  148. {
  149.      TH0=(65536-50)/256;
  150.          TL0=(65536-50)%256;
  151.          num++;
  152.          if(num>=40)num=0;
  153.          if(num<PWM1)ENA=1;
  154.          else ENA=0;
  155.          if(num<PWM2)ENB=1;
  156.          else ENB=0;

  157. }


复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:413530 发表于 2018-11-18 23:20 | 只看该作者
这是硬件pwm?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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