标题:
单片机循迹小车测试程序
[打印本页]
作者:
sdasdass
时间:
2019-6-21 09:19
标题:
单片机循迹小车测试程序
单片机源程序如下:
// CCAP0H的数值为控制左轮快慢 CCAP1H的数值为控制右轮快慢 CCAP0H与CCAP1数值只能在0-255之内
// 通过修改 CCAP0H 与 CCAP1H 的数值来使小车可以直线前进,再进一步调整向左向右的函数来实现目标
//注 void xunji() 与 void PWM_init()函数不必修改
//CCAP0L/0H=P1.3 左轮 L298N控制左电机线接单片机 P1.3
//CCAP1L/1H=P1.4 右轮 L298N控制右电机线接单片机 P1.4
#include<STC12C5A.h>
#define uchar unsigned char
#define uint unsigned int
void PWM_init(); //定义调速函数
void ys(uint i); //定义延时函数
sbit b=P1^1; // L298N控制右电机第二根线线接单片P1.1
sbit d=P1^2; // L298N控制左电机第二根线线接单片机 P1.2
sbit z2=P2^0; //循迹模块左二信号线接单片机P2.0
sbit z1=P2^1; //循迹模块左一信号线接单片机P2.1
sbit zj=P2^2; //循迹模块中间信号线接单片机P2.2
sbit y1=P2^3; //循迹模块右一信号线接单片机P2.3
sbit y2=P2^4; //循迹模块右二信号线接单片机P2.4
void zuo() //控制车向左走
{
CCAP0H = 180;
CCAP1H = 160; //55
b=0;
d=0;
}
void you() //控制车向右走
{
CCAP0H = 160; //55
CCAP1H = 180;
b=0;
d=0;
}
void dazuo()
{
CCAP0H = 150;
CCAP1H = 100; //55
b=0;
d=0;
}
void dayou()
{
CCAP0H = 100; //55
CCAP1H = 150;
b=0;
d=0;
}
void qian() //控制直线前进
{
CCAP0H = 150;// 左
CCAP1H = 147;//右
b=0;
d=0;
}
void xunji()
{
qian();
if(z1==1&&y1==0)
{
zuo();
while(zj==0);
qian();
}
if(y1==1&&z1==0)
{
you();
while(zj==0);
qian();
}
if(z2==1&&y2==0)
{
dazuo();
while(zj==0);
qian();
}
if(y2==1&&z2==0)
{
dayou();
while(zj==0);
qian();
}
if(z1==1&&y1==1&&zj==1)
{
qian();
ys(200);
}
}
void PWM_init()
{
CCON=0X00; //CF中断标志位为0 CR运行控制位清零 CCF1 CCF2模块中断标志位为0
CMOD=0x02; //CIDL在空闲状态下继续工作 时钟源选择系统时钟/2 ECF计数器中断溢出使能位 0
CCAPM0=0X42; //模式选择位0
CCAPM1=0X42; //模式选择位1
CL=CH=0; //PWM内的计数器高低位TH0 TL0
CR=1; //运行控制位 打开PWM
}
void ys(uint i)
{
uint c;
unsigned char a,b;
for(c=i;c>0;c--)
for(b=222;b>0;b--)
for(a=12;a>0;a--);
}
复制代码
所有资料51hei提供下载:
222.zip
(27.4 KB, 下载次数: 9)
2019-6-21 09:18 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1