资源简介
一个定时器实现定时,一个实现计数,从而实现电机的测速
代码片段和文件信息
#include “STC12C5A.H“
#include “oled.h“
#define T 49604 //定时器 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;//左电机
sbit in2=P1^2;
sbit in3=P1^5;//右电机
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() //初始化定时器
{
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 //定时25ms
{
TH0=(65536-T)/256;
TL0=(65536-T)%256;
x++;
z++;
}
void T1_time()interrupt 3 //计数
{
TH0=0;
TL0=0;
y++;
}
void delay(uint i) //延时ms
{
uint j;
for(;i>0;i--)
for(j=0;j<220;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) // 循迹电机控制
{
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) // 竞速电机控制
{
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;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-10-19 15:33 测速程序\
文件 22491 2017-10-18 22:31 测速程序\测速
文件 9494 2017-10-18 22:31 测速程序\测速.LST
文件 23185 2017-10-18 22:31 测速程序\测速.M51
文件 25528 2017-10-18 22:31 测速程序\测速.OBJ
文件 2854 2017-10-19 14:32 测速程序\测速.c
文件 11145 2017-10-18 22:31 测速程序\测速.hex
文件 25 2017-10-18 22:31 测速程序\测速.lnp
文件 184 2017-10-19 15:33 测速程序\测速.plg
文件 70647 2018-07-05 17:11 测速程序\测速.uvgui.lenovo
文件 4957 2018-07-05 17:10 测速程序\测速.uvopt
文件 13775 2018-07-05 17:10 测速程序\测速.uvproj
文件 56029 2017-10-19 15:33 测速程序\测速_uvopt.bak
文件 0 2017-10-12 13:42 测速程序\测速_uvproj.bak
评论
共有 条评论