找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

尋跡小車程序 采用stc12單片機的PCA模塊輸出PWM,舵機控制轉(zhuǎn)向

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:219529 發(fā)表于 2017-7-31 13:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
采用stc12c5a60s2的PCA模塊輸出PWM,舵機控制轉(zhuǎn)向

單片機源程序如下:
  1. #include<stc12c5a.h>

  2. //ENA=P1^3;
  3. //ENB=P1^4;
  4. sbit dj=P1^0;              // 陀機

  5. sbit in1=P2^0;                          //電機轉(zhuǎn)向控制端
  6. sbit in2=P2^1;                          //
  7. sbit in3=P2^2;                          //
  8. sbit in4=P2^3;                          //

  9. sbit HW1=P1^1;                  //紅外傳感器信號接收端
  10. sbit HW2=P1^2;                  //
  11. sbit HW3=P1^5;                  //
  12. sbit HW4=P1^6;                  //
  13. sbit HW5=P1^7;                  //


  14. unsigned int zkb;          //陀機 占空比
  15.                                                  
  16. void Timer1(unsigned long int us)//給定時器賦初值
  17. {       
  18.         unsigned long int valu;
  19.         valu=us*12;                                //工作在1T,對機器周期計數(shù)12次,才是1us
  20.         valu=valu;
  21.         valu=0xffff-valu;                //          
  22.     TH1=valu>>8;          
  23.     TL1=(valu<<8)>>8;
  24.     TR1  = 1;          //T0開始工作
  25. }


  26. void main()
  27. {         
  28.      //PCA模塊初始化
  29.      CMOD=0x04;        //時鐘源為定時器0
  30.          CCON=0;         //PCA控制寄存器,CF、CR、CCF1(PCA模塊中斷標志,匹配或捕獲時置位)、CCF0
  31.          CL=0;        //當CL>CCAP0L時,輸出為高電平
  32.          CH=0;        //沒有用到
  33.          CCAPM0=0x42;        //8位PWM,無中斷
  34.          CCAPM1=0x42;   //PCA比較/捕獲寄存器。8位PWM,無中斷
  35.          CR=1;
  36.          CCAP0H=CCAP0L=256-45;        //設(shè)置占空比(電機)
  37.          CCAP1H=CCAP1L=256-45;

  38.      //定時器初始化
  39.          AUXR|=0xc0; //輔助寄存器,這里讓定時器為1T模式
  40.          TMOD=0x12;
  41.          TH0=256-47;
  42.      TL0=256-47;
  43.          TR0=1;
  44.          P1M1=0;                         //
  45.          P1M0=0XFF;                         //
  46.          EA=1;                                           //開總中斷
  47.          ET1 = 1;
  48.                                         
  49.          Timer1(36); //開啟定時器,進入中斷函數(shù)

  50.         while(1)
  51.         {
  52.                  if((HW1==0)&&(1==HW2)&&(1==HW3)&&(1==HW4)&&(1==HW5))
  53.                  {
  54.                       zkb=1250;
  55.                           in1=0;
  56.               in2=1;
  57.                   in3=1;
  58.                   in4=0;
  59.                           CCAP0H=CCAP0L=256-110;        //設(shè)置占空比(電機)
  60.                   CCAP1H=CCAP1L=256-150;
  61.                           while(HW3&&HW4&&HW5);                 
  62.                  }
  63.                   else if((1==HW1)&&(0==HW2)&&(1==HW3)&&(1==HW4)&&(1==HW5))
  64.                  {
  65.                        zkb=1400;
  66.                           in1=1;
  67.               in2=0;
  68.                   in3=1;
  69.                   in4=0;
  70.                           CCAP0H=CCAP0L=256-80;        //設(shè)置占空比(電機)
  71.                   CCAP1H=CCAP1L=256-110;
  72.                           while(HW1&&HW3&&HW4&&HW5);
  73.                  }
  74.                   else if((1==HW1)&&(1==HW2)&&(1==HW3)&&(0==HW4)&&(1==HW5))
  75.                  {
  76.                           in1=1;
  77.               in2=0;
  78.                   in3=1;
  79.                   in4=0;
  80.                       zkb=1600;
  81.                           CCAP0H=CCAP0L=256-80;        //設(shè)置占空比(電機)
  82.                   CCAP1H=CCAP1L=256-110;
  83.                           while(HW5&&HW3&&HW2&&HW1);
  84.                  }
  85.                  else if((1==HW1)&&(1==HW2)&&(1==HW3)&&(1==HW4)&&(0==HW5))
  86.                  {
  87.                       in1=1;
  88.               in2=0;
  89.                   in3=0;
  90.                   in4=1;
  91.                       zkb=1750;
  92.                           CCAP0H=CCAP0L=256-150;        //設(shè)置占空比(電機)
  93.                   CCAP1H=CCAP1L=256-110;
  94.                           while(HW3&&HW2&&HW1);
  95.                  }                 
  96.                  else
  97.                  {       
  98.                            zkb=1500;
  99.                           in1=1;
  100.               in2=0;
  101.                   in3=1;
  102.                   in4=0;
  103.                           CCAP0H=CCAP0L=256-100;        //設(shè)置占空比(電機)
  104.                   CCAP1H=CCAP1L=256-100;
  105.                  }
  106.         }

  107. }

  108. /*************************************
  109.   t0 中斷 中斷

  110. *************************************/
  111. void T1zd() interrupt 3  //產(chǎn)生中斷后,又給定時器0賦初值,準備下一次中斷
  112. {
  113.                 static unsigned char num=1;        //靜態(tài)全局變量,初始化操作只會被執(zhí)行一次
  114.                 switch(num)          
  115.                 {
  116.                     case 1:
  117.                         {
  118.                                 dj=1;
  119.                                 Timer1(zkb);  //pwm_valu微秒后再次產(chǎn)生中斷
  120.                         }  break;
  121.                     case 2:
  122.                         {
  123.                                  dj=0;             //pwm1變低
  124.                                 Timer1(2500-zkb);//       
  125.                         }  break;
  126.                     case 3:
  127.                         {
  128.                                 Timer1(2500);//
  129.                         }  break;
  130.                      case 4:
  131.                         {
  132.                                 Timer1(2500);//       
  133.                         }  break;
  134.                     case 5:
  135.                         {
  136.                                 Timer1(2500);//       
  137.                         }  break;
  138.                     case 6:
  139.                         {
  140. ……………………

  141. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
STC12.rar (25.23 KB, 下載次數(shù): 57)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:228376 發(fā)表于 2017-8-19 15:16 | 只看該作者
有接線圖嗎?謝謝分享,
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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