幻德科技 http://www.wonderchen.cn/
1
实验九 控制直流电机正反转
【实验目的】
1.熟悉 KEIL的开发环境。
2.了解下载程序的方式。
3.懂得直流电机驱动原理。
【实验设备】
1.安装有 KEIL开发环境及 STC_ISP下载程序的 PC。
2. 成套智能小车
【实验说明】
本实验通过编写程序。主要对电机进行简单控制,如正反转。
可以通过按键设置两电机的的工作方式。
【实验步骤】
1.可以建立 KEIL的工程,编写控制代码,或者采用我们的参考
源代码,生成 HEX文件。
2.下载 HEX文件到单片机。
3.观察实验效果。
4.修改相关参数,观察实验效果。
【硬件连接】
请参考《成套智能小车组装说明书》。
【程序范例】
详细程序,请查看源代码。
幻德科技 http://www.wonderchen.cn/
2
//实验九 控制直流电机正反转
//Wonder Technology
//单片机采用 22.1184M晶振
#include //包含 STC12C5A系列单片机的头文件
#include"1602.h"
sbit LED1=P3^0; //定义两只 LED到 P3^0,P3^1
sbit LED2=P3^1;
sbit beed=P2^7;
sbit KEY1=P3^6;
sbit KEY2=P3^7;
sbit EN1=P2^0;
sbit IN1=P2^1;
sbit IN2=P2^2;
sbit EN2=P2^4;
sbit IN3=P2^5;
sbit IN4=P2^6;
unsigned char pattern; //定义一个变量用于记录电机运行状态
/**************software delay****************/
void delay(unsigned long t)
{
unsigned int j,k;
for(t;t>0;t--)
for(j=10;j>0;j--)
for(k=100;k>0;k--);
}
/**************otor control program**********/
void farward() //左电机向前 右电机向前
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void backward() //左电机向后 右电机向后
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
幻德科技 http://www.wonderchen.cn/
3
void turn_left() //左电机停止 右电机向前
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void turn_right() //左电机向前 右电机停止
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_left() //左电机向后 右电机向前
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_right() //左电机向前 右电机向后
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void stop() //左电机停止 右电机停止
{
EN1=0;
EN2=0;
}
main(void)
{
LED1=1; //高电平 LED不亮
LED2=1; //
P4SW=0xff; //定义 ALE PSEN 。。三个引脚为 P4.4 P4.5 P4.6 用于控制 1602显示
屏
幻德科技 http://www.wonderchen.cn/
4
CLK_DIV=0x01; //系统分频工作,速度太快,1602控制不了。
LCM2402_Init(); // 初如化 1602显示屏
EA=1;
print(0x00,"WonderTechnology"); //在第一行第一位处从左向右打印"WonderTechnology"
字符串
print(0x40,"pattern:");
print2(0x48,pattern);
while(1)
{
if(KEY1==0) //按下第一按键
{
while(!KEY1);
stop();
delay(50);
pattern++;
if(pattern>=7)
pattern=0;
print2(0x48,pattern);
}
if(KEY2==0) //按下第二按键
{
pattern=0;
stop();
}
switch(pattern)
{
case 0: stop(); break;
case 1: farward(); break;
case 2: backward(); break;
case 3: turn_left(); break;
case 4: turn_right(); break;
case 5: rotate_left(); break;
case 6: rotate_right(); break;
default:
break;
}
}
}
【实验结果】
下载范例的程序,可以看到 1602液晶屏第二行显示“pattern:0”,
幻德科技 http://www.wonderchen.cn/
5
此时两电机处于停止状态。当按下第一只按键时,两电机向前转,对
应液晶屏上显示“pattern:1”,继续按第一个按键,两电机进入下一
种工作方式,直到显示“pattern:6”后,再次按第一个按键,两电机
变为停止状态。运行的方式,对于小车来说,共 7 种:停止,前进,
后退,左拐,右拐,左转,右转。第任意一种状态下,只要按下第二
个按键,两电机加复到停止状态。
【实验扩展】
1. 修改相应的程序,可以让小车按顺序执行动作。如前进一
段时间;向左转;向前走;再右拐等。
2.在每种工作方式切换过程加入蜂鸣器叫声。如第种一种响一
下,第 5种响 5下。
3.更多效果自己修改参数并验证。
本文档为【实验九 控制直流电机正反转】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。