一、当小车各模块电路接通时,运行小车程序,判断前方是否有障碍物;
若无障碍物,则向前行驶;
若有障碍物则判断障碍物时左边还是右边;
若障碍物是右边的,则控制小车向左转,反之,若障碍物时左边的,则小车向右转。
二、小车运动状态和轮子关系
三、Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。
1、打开Keil软件后,点击Project--New Project,可以新建一个工程。
2、点击后在出现的对话框中选陵宽择工程存在路径,单击保存,出现界面。在此界面上选择电路板上所用的单片机型号(如图所示),单击“确定”。
3、设置完成后,软件会提示是否将8051上电初始化程序添加入工程。这个一般选“否”晌巧。这样就建立好了一个空的51工程。
4、点击File--New,便建立了一个空的文本框。
5、到现在为止,就可以开始在里面输入代码了。保存时注意:如果是用C语言写的程序,则将文本保存成*.c。
6、将写完的程序添加到工程里面,如图所示,在左边Project Workspace里的Source Group 1上右击,选择Add Files to Group ‟Source Group 1‟。在打开的对话框
中,选择刚存的文件路径和对应的扩展名。此时,程序就添加进了这个工程。
7、下一步就开始编译刚输入进去的代码。接着,Keil会打出下面的提示:
0 Error(s), 0 Warning(s).
建立工程的时候,默认是不生成HEX文件的,得尺谨亮在编译做如下设置:
在Project Workspace里Target 1上右击,选择“Options for Target „Target 1”
。出现如图所示对话框,选择“Output”按图示,将箭头所指的多选框勾上,点“确定”。
现在再点击重新编译,就会在工程所在文件夹里生成HEX文件。再利用下载软件,将HEX文件下载到单片机中进行调试。
四、小车程序如下:
第一,你什么电机?第二,步进电机你是几线几向的?你这都没说清楚让人档键咋写?其实思想很简单,比如你是用PWM写的,就是控制脉冲占空比。
思想都说了,你要代码?
给搭尺你个例子你行枝巧看看就行了,估计直接用是不可能的,接口不同。
// 左轮驱动
void __leftMotorContr (void)
{
static int8 cStep = 0 /* ±£Žæµç»úµ±Ç°Î»ÖÃ*/
switch (__GmLeft.cDir) {
case __MOTORGOAHEAD:/* ÏòÇ°²œœø*/
cStep = (cStep + 1) % 8
break
case __MOTORGOBACK: /* Ïòºó²œœø*/
cStep = (cStep + 7) % 8
break
default:
break
}
switch (cStep) {
case 0: /* A2B2*/
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2)
break
case 1: /* B2 */
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLB1 | __PHLB2)
break
case 2: /* A1B2*/
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLA2 | __PHLB1 | __PHLB2)
break
case 3: /* A1 */
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLA2)
break
case 4: /* A1B1*/
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLA2 | __PHLB2)
break
case 5: /* B1 */
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLB2)
break
case 6: /* A2B1*/
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLA1 | __PHLA2 | __PHLB2)
break
case 7: /* A2 */
GPIOPinWrite(GPIO_PORTD_BASE,
__PHLA1 | __PHLA2 | __PHLB1 | __PHLB2,
__PHLA1 | __PHLA2)
break
default:
break
}
}
// 右轮驱动同理
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)