基于移动小车驱动电机运转的C语言程序

基于移动小车驱动电机运转的C语言程序,第1张

一、当小车各模块电路接通时,运行小车程序,判断前方是否有障碍物

若无障碍物,则向前行驶;

若有障碍物则判断障碍物时左边还是右边;

若障碍物是右边的,则控制小车向左转,反之,若障碍物时左边的,则小车向右转。

二、小车运动状态和轮子关系

三、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

}

}

// 右轮驱动同理


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12512028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存