找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3936|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PWM程序控制小車單片機源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:210992 發(fā)表于 2017-6-25 14:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
PWM程序控制小車程序下載:
PWM程序控制小車.rar (866 Bytes, 下載次數(shù): 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. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表