最新智能循迹小车变速转弯程序.docx
- 文档编号:6002822
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:7
- 大小:15.67KB
最新智能循迹小车变速转弯程序.docx
《最新智能循迹小车变速转弯程序.docx》由会员分享,可在线阅读,更多相关《最新智能循迹小车变速转弯程序.docx(7页珍藏版)》请在冰豆网上搜索。
最新智能循迹小车变速转弯程序
智能循迹小车变速转弯程序
#include
#defineucharunsignedchar
#defineuintunsignedint
uchara,i,time_count=0,count=0,Dutycycle0=50,Dutycycle1=50,flag;
ucharstate;
/***定义电机控制位***/
sbitINT11=P0^0;//电机控制位,左电机左,芯片中的总开关
sbitINT22=P0^1;//右电机控制位,高电平有效
sbitINT33=P0^2;//控制左电机,从而控制其中的车轮
sbitINT44=P0^3;
sbitfunpwm0=P1^3;///两个控制PWM的端口
sbitfunpwm1=P1^4;
sbitIO4=P2^0;//ST188输出端口
sbitIO1=P2^1;
sbitIO2=P2^2;
sbitIO3=P2^3;
sbitIO5=P0^7;
sfrCCON=0xD8;//PCA控制寄存器
sbitCCF0=CCON^0;//PCA模块0中断标志
sbitCCF1=CCON^1;//PCA模块0中断标志
sbitCR=CCON^6;//PCA计数器阵列溢出标志位
sbitCF=CCON^7;//PCA计数器阵列运行控制位
sfrCMOD=0xD9;//PCA工作模式寄存器
sfrCL=0xE9;//PCA的16位计数器----低8位
sfrCH=0xF9;//PCA的16位计数器----高8位
sfrCCAPM0=0xDA;//PCA模块0的输出脉冲频率
sfrCCAP0L=0xEA;//PCA捕获、比较寄存器——低位字节
sfrCCAP0H=0xFA;//PCA捕获、比较寄存器——高位字节
sfrCCAPM1=0xDB;//PCA模块1的输出脉冲频率
sfrCCAP1L=0xEB;//同上
sfrCCAP1H=0xFB;//同上
sfrPCAPWM0=0xf2;//PCA模块0的PWM寄存器
sfrPCAPWM1=0xf3;//PCA模块1的PWM寄存器
/*------------------------------------------------
uS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下T=tx2+5uS
------------------------------------------------*/
voidDelayUs2x(unsignedchart)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
voidDelayMs(unsignedchart)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/****************************速度设定:
通过改变参数a,b来来改变两路pwm的占空比数值越大占空比越小*******************************************/
voidpwm0(unsignedinta)
{
CCAP0L=a;
CCAP0H=a;
}
voidpwm1(unsignedintb)
{
CCAP1L=b;
CCAP1H=b;
}
voidpwm_Init()
{
CL=0;
CH=0;
CMOD=0x00;
CCAP0H=CCAP0L=0x00;
CCAPM0=0x42;
CCAP1H=CCAP1L=0x00;
CCAPM1=0x42;
CR=1;
}
delay(i)
{
intk,j;
for(j=1000;j>0;j--)
for(k=200;k>0;k--)
i--;
}
former()
{
INT11=1;
INT22=0;
INT33=1;
INT44=0;
pwm0(45);
pwm1(40);
DelayMs(1000);
}
turnleft0()
{
pwm0(130);
pwm1(30);
DelayMs(1000);
}
turnright0()
{
pwm0(30);
pwm1(130);
DelayMs(1000);
}
turnleft1()
{
pwm0(0Xff);
pwm1(0);
DelayMs(1000);
}
turnright1()
{
pwm0(0);
pwm1(0Xff);
DelayMs(1000);
}
stop()
{
INT11=1;
INT22=1;
INT33=1;
INT44=1;
}
voidturnleft2()
{
INT11=1;
INT22=0;
INT33=0;
INT44=1;
pwm0(0);
pwm1(30);
}
voidturnright2()
{
INT11=0;
INT22=1;
INT33=1;
INT44=0;
pwm0(30);
pwm1(0);
}
/*************************主函数***********************************/
main()
{while
(1)
{
pwm_Init();
DelayMs(20);
while
(1)
{
if(IO5==1)turnright2();
else
{
INT11=1;
INT22=1;
INT33=1;
INT44=1;
}
/*if(IO3==0&&IO2==0&&IO1==0&&IO4==0)former();
if(IO3==0&&IO2==0&&IO1==0&&IO4==1)turnright1();
if(IO3==0&&IO2==0&&IO1==1&&IO4==0)turnright0();
if(IO3==0&&IO2==0&&IO1==1&&IO4==1)turnleft2();
if(IO3==0&&IO2==1&&IO1==0&&IO4==0)turnleft0();
if(IO3==0&&IO2==1&&IO1==0&&IO4==1)turnright1();
if(IO3==0&&IO2==1&&IO1==1&&IO4==0)former();
if(IO3==0&&IO2==1&&IO1==1&&IO4==1)turnleft2();
if(IO3==1&&IO2==0&&IO1==0&&IO4==0)turnleft1();
if(IO3==1&&IO2==0&&IO1==1&&IO4==0)turnleft0();
if(IO3==1&&IO2==0&&IO1==0&&IO4==1)former();
if(IO3==1&&IO2==0&&IO1==1&&IO4==1)turnright1();
if(IO3==1&&IO2==1&&IO1==0&&IO4==0)turnright2();
if(IO3==1&&IO2==1&&IO1==0&&IO4==1)turnleft1();
if(IO3==1&&IO2==1&&IO1==1&&IO4==0)turnright2();
if(IO3==1&&IO2==1&&IO1==1&&IO4==1)former;*/
}
}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 智能 小车 变速 转弯 程序