找回密码
 立即注册

QQ登录

只需一步,快速开始

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

PWM程序控制小车单片机源程序

[复制链接]
跳转到指定楼层
楼主
ID:210992 发表于 2017-6-25 14:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM程序控制小车程序下载:
PWM程序控制小车.rar (866 Bytes, 下载次数: 18)

  1. #include<reg52.h>

  2. sbit rs=P0^0;
  3. sbit rw=P0^1;
  4. sbit en=P0^2;

  5. sbit sensera=P1^0;
  6. sbit senserb=P1^1;
  7. sbit senserc=P1^2;
  8. sbit senserd=P1^3;
  9. sbit in1=P1^4;
  10. sbit in2=P1^5;
  11. sbit in3=P1^6;
  12. sbit in4=P1^7;

  13. int left_low,left_high,right_low,right_high;

  14. unsigned char leftsign,rightsign;
  15. unsigned char leftback,rightback;
  16. void timer0init()
  17. {
  18.     TMOD=0x01;
  19. TH0=0x00;
  20. TL0=0x00;
  21. EA=1;
  22. ET0=1;
  23. TR0=1;

  24. }
  25. void timer0(void) interrupt 1
  26. {
  27. if(leftback)
  28. {
  29.    leftsign=!leftsign;
  30.    if(!leftsign)
  31.    {
  32.     TH0 =(65536-left_low)/256;
  33.     TL0 =(65536-left_low)%256;
  34.     in1=0;
  35.     in2=0;
  36.    }
  37.    if(leftsign)
  38.    {
  39.     TH0=(65536-left_high)/256;
  40.     TL0=(65536-left_high)%256;;
  41.     in1=1;           //µ¹×ª
  42.     in2=0;
  43.    }
  44. }
  45. else
  46. {
  47.    leftsign=!leftsign;
  48.    if(!leftsign)
  49.    {
  50.     TH0=(65536-left_low)/256;
  51.     TL0=(65536-left_low)%256;
  52.     in1=0;
  53.     in2=0;
  54.    }
  55.    if(leftsign)
  56.    {
  57.     TH0=(65536-left_high)/256;
  58.     TL0=(65536-left_high)%256;;
  59.     in1=0;
  60.     in2=1;
  61.    }
  62. }  
  63. }
  64. void timer1init()
  65. {
  66.     TMOD=0x10;
  67. TH1=0x00;
  68. TL1=0x00;
  69. EA=1;
  70. ET1=1;
  71. TR1=1;
  72. }
  73. void timer1(void) interrupt 3
  74. { if(rightback)
  75. {
  76.    rightsign=!rightsign;
  77.    if(!rightsign)
  78.    {
  79.     TH1=(65536-right_low)/256;
  80.     TL1=(65536-right_low)%256;
  81.     in3=0;
  82.     in4=0;
  83.    }
  84.    if(rightsign)
  85.    {
  86.     TH1=(65536-right_high)/256;
  87.     TL1=(65536-right_high)%256;
  88.     in3=1;
  89.     in4=0;
  90.    }
  91. }
  92. else
  93. {
  94.    rightsign=!rightsign;
  95.    if(!rightsign)
  96.    {
  97.     TH1=(65536-right_low)/256;
  98.     TL1=(65536-right_low)%256;
  99.     in3=0;
  100.     in4=0;
  101.    }
  102.    if(rightsign)
  103.    {
  104.     TH1=(65536-right_high)/256;
  105.     TL1=(65536-right_high)%256;
  106.     in3=0;
  107.     in4=1;
  108.    }
  109. }  
  110. }
  111. void testsenser() //×ó Ö± ÓÒ Í£ ºó£¨01234£©´ó¹Õ С¹Õ ÎÞÒâÒ壨310£©
  112. {
  113.   if((sensera==0&&senserb==0&&senserc==0&&senserd==1)||(sensera==0&&senserb==1&&senserc==1&&senserd==1)) // ÓÒ´ó¹Õ
  114.   {
  115.    leftback=0;
  116.   rightback=1;
  117.   ET0=1;
  118.   ET1=1;
  119.   left_high=20000;
  120.   left_low=40000;
  121.   right_high=20000;
  122.   right_low=40000;
  123.   }

  124.   else if((sensera==0&&senserb==0&&senserc==1&&senserd==1)||(sensera==0&&senserb==0&&senserc==1&&senserd==0))//  ÓÒС¹Õ
  125.   {
  126.    leftback=0;
  127.   rightback=1;
  128.   ET0=1;
  129.   ET1=1;
  130.   left_high=20000;
  131.   left_low=40000;
  132.   right_high=10000;
  133.   right_low=40000;
  134.   }
  135.   else if((sensera==1&&senserb==0&&senserc==0&&senserd==0)||(sensera==1&&senserb==1&&senserc==1&&senserd==0))  // ×ó´ó¹Õ
  136.   {
  137.    leftback=1;
  138.   rightback=0;
  139.   ET0=1;
  140.   ET1=1;
  141.    left_high=20000;
  142.   left_low=40000;
  143.   right_high=20000;
  144.   right_low=40000;
  145.   }
  146.   else if((sensera==1&&senserb==1&&senserc==0&&senserd==0)||(sensera==0&&senserb==1&&senserc==0&&senserd==0))    // ×óС¹Õ
  147.   {
  148.    leftback=1;
  149.   rightback=0;
  150.   ET0=1;
  151.   ET1=1;
  152.    left_high=10000;
  153.   left_low=40000;
  154.   right_high=20000;
  155.   right_low=40000;
  156.   }
  157.   else if(sensera==1&&senserb==1&&senserc==1&&senserd==1)// Í£
  158.   {
  159.    leftback=0;
  160.   rightback=0;
  161.   ET0=0;
  162.   ET1=0;
  163.      in1=0;
  164.      in2=0;
  165.      in3=0;
  166.   in4=0;
  167.   }
  168.   else if(sensera==0&&senserb==0&&senserc==0&&senserd==0)// ºóÍË
  169.   {
  170.    leftback=1;
  171.   rightback=1;
  172.   ET0=1;
  173.   ET1=1;
  174.    left_high=10000;
  175.   left_low=50000;
  176.   right_high=10000;
  177.   right_low=50000;
  178.   }
  179.   else  //Ö±×ß
  180.   {
  181.    leftback=0;
  182.   rightback=0;
  183.   ET0=1;
  184.   ET1=1;
  185.    left_high=10000;
  186.   left_low=50000;
  187.   right_high=20000;
  188.   right_low=50000;
  189.   }   
  190. }


  191.            
  192. void main()
  193. {
  194. timer0init();
  195. timer1init();
  196. while(1)
  197.   testsenser();
  198. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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