1系统总体设计 模拟越野车系统共包括四大模块:控制模块、转向舵机模块、驱动电机模块和测距转向模块。其中控制模块STC12C5A60S2单片机是系统的核心部分。它负责接收障碍物距离信息,并对这些信息进行恰当的处理,形成合适的控制量来对舵机和电机进行控制,转向舵机模块控制前轮的左右转动,以起到蔽障左右,驱动电机模块使得单片机控制下稳定走动,测距模块检测到周围环境的距离,接收到数据发送到单片机处理和来自单片机的数据发射到环境。 2测距模块 测距模块检测到周围环境的距离,接收到数据发送到单片机处理和来自单片机的数据发射到环境,软件设计如下: /*=========超声波测距=========*/ uint16count_1(void) { uint16dat; P2_0=0; P2_0=1; delay_1(12); P2_0=0; while(!P2_1); TR0=1; while(P2_1); TR0=0; dat=TH0*256+TL0; dat=(dat*12.0/12000000*170)*100; if(dat>700||flag){flag=0;dat=600;} TH0=0; TL0=0; returndat;} 3控制模块 控制模块STC12C5A60S2单片机是系统的核心部分。它负责接收障碍物距离信息,并对这些信息进行恰当的处理,形成合适的控制量来对舵机和电机进行控制,软件设计如下: main() { uint16dat,i; int8j=40; inint_1(); P1_3=0; P1_2=1; P2_6=1; P2_7=1; AS=1; i=5; while(i--)delay_1(65535); AS=0; pwminint_0(); while(1) { dat=data_1(); if(dat { P1_2=0;for(j-=10;j>0;j-=10)delay_1(65535); j=40; CCAP0H=CCAP0L=0xff; direction(); i=8; while(i--)delay_1(65535); CCAP0H=CCAP0L=0xff; } if(dat>35&&(dat<100)) { AD=ST; P1_2=1; CCAP0H=CCAP0L=0Xc0; } dat=data_1();if(dat>=100){P1_2=1;AD=3;ST=3;j=50;} } } 4转向模块 转向舵机模块控制前轮的左右转动,以起到蔽障左右,软件设计如下: /*=========障碍物距离判断=========*/ uint16data_1() { uint16dat_1[3],dat; for(dat=0;dat<3;dat++)dat_1[dat]=count_1(); if(dat_1[0]>dat_1[1]) { dat=dat_1[0]; dat_1[0]=dat_1[1]; dat_1[1]=dat; } if(dat_1[0]>dat_1[2]) { dat=dat_1[0]; dat_1[0]=dat_1[2]; dat_1[2]=dat;} if(dat_1[1]>dat_1[2]) { dat=dat_1[1]; dat_1[1]=dat_1[2]; dat_1[2]=dat; } returndat_1[1];} 5电机驱动模块 驱动电机模块使得单片机控制下稳定走动,软件设计如下: /*====后轮直流电机速度初始化====*/ voidpwminint_0(void) { CMOD=0X0E; CCAPM0=0X42; CCON=0; CL=0; CH=0; CCAP0H=CCAP0L=0Xc0; CR=1;} [参考文献] [1]方彦军,孙健.智能仪器技术及其应用.北京,化学工业出版社,2004.1. [2]刘晋,王政林,薛凯方.基于STC12C5A60S2单片机的LED显示屏硬件设计[J].微型机与应用,2011,30(22):1674-7720.9. [3]秦友萍.C语言程序设计.北京,西北工业大学出版社,2007.8. |