標(biāo)題:
尋跡小車程序 采用stc12單片機(jī)的PCA模塊輸出PWM,舵機(jī)控制轉(zhuǎn)向
[打印本頁]
作者:
grh
時(shí)間:
2017-7-31 13:40
標(biāo)題:
尋跡小車程序 采用stc12單片機(jī)的PCA模塊輸出PWM,舵機(jī)控制轉(zhuǎn)向
采用stc12c5a60s2的PCA模塊輸出PWM,舵機(jī)控制轉(zhuǎn)向
單片機(jī)源程序如下:
#include<stc12c5a.h>
//ENA=P1^3;
//ENB=P1^4;
sbit dj=P1^0; // 陀機(jī)
sbit in1=P2^0; //電機(jī)轉(zhuǎn)向控制端
sbit in2=P2^1; //
sbit in3=P2^2; //
sbit in4=P2^3; //
sbit HW1=P1^1; //紅外傳感器信號接收端
sbit HW2=P1^2; //
sbit HW3=P1^5; //
sbit HW4=P1^6; //
sbit HW5=P1^7; //
unsigned int zkb; //陀機(jī) 占空比
void Timer1(unsigned long int us)//給定時(shí)器賦初值
{
unsigned long int valu;
valu=us*12; //工作在1T,對機(jī)器周期計(jì)數(shù)12次,才是1us
valu=valu;
valu=0xffff-valu; //
TH1=valu>>8;
TL1=(valu<<8)>>8;
TR1 = 1; //T0開始工作
}
void main()
{
//PCA模塊初始化
CMOD=0x04; //時(shí)鐘源為定時(shí)器0
CCON=0; //PCA控制寄存器,CF、CR、CCF1(PCA模塊中斷標(biāo)志,匹配或捕獲時(shí)置位)、CCF0
CL=0; //當(dāng)CL>CCAP0L時(shí),輸出為高電平
CH=0; //沒有用到
CCAPM0=0x42; //8位PWM,無中斷
CCAPM1=0x42; //PCA比較/捕獲寄存器。8位PWM,無中斷
CR=1;
CCAP0H=CCAP0L=256-45; //設(shè)置占空比(電機(jī))
CCAP1H=CCAP1L=256-45;
//定時(shí)器初始化
AUXR|=0xc0; //輔助寄存器,這里讓定時(shí)器為1T模式
TMOD=0x12;
TH0=256-47;
TL0=256-47;
TR0=1;
P1M1=0; //
P1M0=0XFF; //
EA=1; //開總中斷
ET1 = 1;
Timer1(36); //開啟定時(shí)器,進(jìn)入中斷函數(shù)
while(1)
{
if((HW1==0)&&(1==HW2)&&(1==HW3)&&(1==HW4)&&(1==HW5))
{
zkb=1250;
in1=0;
in2=1;
in3=1;
in4=0;
CCAP0H=CCAP0L=256-110; //設(shè)置占空比(電機(jī))
CCAP1H=CCAP1L=256-150;
while(HW3&&HW4&&HW5);
}
else if((1==HW1)&&(0==HW2)&&(1==HW3)&&(1==HW4)&&(1==HW5))
{
zkb=1400;
in1=1;
in2=0;
in3=1;
in4=0;
CCAP0H=CCAP0L=256-80; //設(shè)置占空比(電機(jī))
CCAP1H=CCAP1L=256-110;
while(HW1&&HW3&&HW4&&HW5);
}
else if((1==HW1)&&(1==HW2)&&(1==HW3)&&(0==HW4)&&(1==HW5))
{
in1=1;
in2=0;
in3=1;
in4=0;
zkb=1600;
CCAP0H=CCAP0L=256-80; //設(shè)置占空比(電機(jī))
CCAP1H=CCAP1L=256-110;
while(HW5&&HW3&&HW2&&HW1);
}
else if((1==HW1)&&(1==HW2)&&(1==HW3)&&(1==HW4)&&(0==HW5))
{
in1=1;
in2=0;
in3=0;
in4=1;
zkb=1750;
CCAP0H=CCAP0L=256-150; //設(shè)置占空比(電機(jī))
CCAP1H=CCAP1L=256-110;
while(HW3&&HW2&&HW1);
}
else
{
zkb=1500;
in1=1;
in2=0;
in3=1;
in4=0;
CCAP0H=CCAP0L=256-100; //設(shè)置占空比(電機(jī))
CCAP1H=CCAP1L=256-100;
}
}
}
/*************************************
t0 中斷 中斷
*************************************/
void T1zd() interrupt 3 //產(chǎn)生中斷后,又給定時(shí)器0賦初值,準(zhǔn)備下一次中斷
{
static unsigned char num=1; //靜態(tài)全局變量,初始化操作只會(huì)被執(zhí)行一次
switch(num)
{
case 1:
{
dj=1;
Timer1(zkb); //pwm_valu微秒后再次產(chǎn)生中斷
} break;
case 2:
{
dj=0; //pwm1變低
Timer1(2500-zkb);//
} break;
case 3:
{
Timer1(2500);//
} break;
case 4:
{
Timer1(2500);//
} break;
case 5:
{
Timer1(2500);//
} break;
case 6:
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
STC12.rar
(25.23 KB, 下載次數(shù): 57)
2017-7-31 13:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
yu霈
時(shí)間:
2017-8-19 15:16
有接線圖嗎?謝謝分享,
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1