資源簡(jiǎn)介
一個(gè)定時(shí)器實(shí)現(xiàn)定時(shí),一個(gè)實(shí)現(xiàn)計(jì)數(shù),從而實(shí)現(xiàn)電機(jī)的測(cè)速

代碼片段和文件信息
#include?“STC12C5A.H“
#include??“oled.h“
#define?T?49604 //定時(shí)器??50ms
#define?uchar?unsigned?char
#define?uint??unsigned?int
#define??xunsu??15 ? //1-DS
#define??DS 181 //最高速
#define??XS?176 //限速
sbit?in=P3^5;
sbit?BM1=P1^0;
sbit?BM2=P1^7;
sbit?in1=P1^1;//左電機(jī)
sbit?in2=P1^2;
sbit?in3=P1^5;//右電機(jī)
sbit?in4=P1^6;
unsigned?long?xyzq; ?//??編碼器用
void?BM_display(uint?xyunsigned?long?dat)
{
OLED_ShowNum(x+24ydat%10000412);
if(dat>9999)
OLED_ShowNum(xydat/10000412);
}
void?init() //初始化定時(shí)器
{
x=y=q=0;
TMOD=0X51;
TH0=(65536-T)/256;
TL0=(65536-T)%256;
EA=1;
ET0=1;
ET1=1;
TR0=TR1=1;
}
void?T0_time()interrupt?1???? //定時(shí)25ms
{
TH0=(65536-T)/256;
TL0=(65536-T)%256;
x++;
z++;
}
void?T1_time()interrupt?3???? //計(jì)數(shù)
{
TH0=0;
TL0=0;
y++;
}
void?delay(uint?i) //延時(shí)ms
{
uint?j;
for(;i>0;i--)
for(j=0;j<220;j++);
}
//////////////////////////////// ???
//???????電機(jī)占空比 ??????//
??????//
void?pwm_left(uint?a) ??//
{ ??//
if(a>XS) ??//
a=XS; ??//
CCAP0H=CCAP0L=DS-a; ??????// ???
} ??//
void?pwm_right(uint?b) ??//
{ ??//
if(b>XS) ??//
b=XS; ??//
CCAP1H=CCAP1L=DS-b; ??????//
} ??//
////////////////////////////////
/////////////////////////////////////////////////////
void?js(int?leftright) //?循跡電機(jī)控制
{
?if(left>0)
?{
?in1=0;
?in2=1;
?}
?if(left==0)
?{
?in1=0;
?in2=0;
?}
?if(left<0)
?{
? in1=1;
in2=0;
left=-left;
?}
?if(right>0)
?{
?in3=0;
?in4=1;
?}
?if(right==0)
?{
?in3=0;
?in4=0;
?}
?if(right<0)
?{
?in3=1;
?in4=0; ?
?right=-right;
?}
?? ?pwm_left(left);
?pwm_right(right);
}
/////////////////////////////////////////////
void?xj(int?ab) ?//?競(jìng)速電機(jī)控制
{
?if(b>0)
?{
?in1=1;
?in2=0;
?}
?if(b<0)
?{
? in1=0;
in2=1;
b=-b;
?}
?if(b==0)
?{
?in1=0;
?in2=0;
?}
? ?if(a>0)
?{
?in3=1;
?in4=0;
?}
?if(a<0)
?{
?in3=0;
?in4=1; ?
?a=-a;
?}
?if(a==0)
?{
?in3=0;
?in4=0;
?}
?? ?pwm_left(b);
?pwm_right(a);
}
void?main()
{
pwm_init();
P0M1=0x00;
P0M0=0x09;
OLED_Init();
OLED_Clear();
delay(5000);
init();
BM1=1;
BM2=0;
while(1)
{??
// ??? BM_display(00w);
// BM_display(02q);
if(x==40)
{
TR0=TR1=0;
q=(TH1*256+TL1+y*65536)/4+q;
TL0=TH0=TL1=TH1=0;
x=0;
y=0;
TR0=TR1=1;
}
if(z==160) ??//?????4s
{
TR0=TR1=0;
TL0=TH0=TL1=TH1=0;
x=0;
y=0;
BM_display(00q);
q=0;
go(ww);
BM_display(02w);
w--;
if(w==5)
w=189;
z=0;
delay(1000);
TR0=TR1=1;
}
}?
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-10-19?15:33??測(cè)速程序\
?????文件???????22491??2017-10-18?22:31??測(cè)速程序\測(cè)速
?????文件????????9494??2017-10-18?22:31??測(cè)速程序\測(cè)速.LST
?????文件???????23185??2017-10-18?22:31??測(cè)速程序\測(cè)速.M51
?????文件???????25528??2017-10-18?22:31??測(cè)速程序\測(cè)速.OBJ
?????文件????????2854??2017-10-19?14:32??測(cè)速程序\測(cè)速.c
?????文件???????11145??2017-10-18?22:31??測(cè)速程序\測(cè)速.hex
?????文件??????????25??2017-10-18?22:31??測(cè)速程序\測(cè)速.lnp
?????文件?????????184??2017-10-19?15:33??測(cè)速程序\測(cè)速.plg
?????文件???????70647??2018-07-05?17:11??測(cè)速程序\測(cè)速.uvgui.lenovo
?????文件????????4957??2018-07-05?17:10??測(cè)速程序\測(cè)速.uvopt
?????文件???????13775??2018-07-05?17:10??測(cè)速程序\測(cè)速.uvproj
?????文件???????56029??2017-10-19?15:33??測(cè)速程序\測(cè)速_uvopt.bak
?????文件???????????0??2017-10-12?13:42??測(cè)速程序\測(cè)速_uvproj.bak
評(píng)論
共有 條評(píng)論