51单片机Proteus仿真+Keil工程-实验4-外部中断-步进电机驱动

实验4-单片机定时器外部中断实验

  之前做的一次实验,51单片机定时器外部中断实验。虽说是个外部终端实验,但相对实验3而言,实验4像是它的简化版,不过多了不仅电机的控制。如有问题欢迎指正。

实验目的:

  掌握外部中断的打开方式;掌握步进电机的基本控制。

实验目标:

  设定外部信号发生器每2s钟,产生一个下降沿,作为外部中断源,中断处理完成led灯的闪烁一次,以及控制步进电机旋转一圈。

实验环境:

   MDK-ARM V5.21a、Proteus 8.6

实现效果:

在这里插入图片描述

Proteus原理图

在这里插入图片描述

选择元器件:

DEVICES说明
7SEG-MPX8-CC-BLUE八位共阴极数码管
MOTOR-STEPPER步进电机
ULN2003A达林顿管
AT89C51MCU
BUTTON按键
CAP普通电容
CAP-ELEC电解电容
CRYSTAL晶振
LED-BLUE蓝色LED灯
LED-RED红色LED灯
LED-YELLOW黄色LED灯
RES电阻
RESPACK-8排阻

  51单片机的P0口做IO口使用时是漏极开路输出,其引脚一般需要在片外接一定阻值的上拉电阻,此时端口不存在高阻抗的悬浮状态,因此它是一个准双向口。同时,P0口每一位的驱动能力是P1~P3口的两倍,每位可以驱动8个LSTTL(Low-power Schottky TTL,即低功耗肖特基TTL)输入,89C51等单片机任何一个端口想要获得较大的驱动能力,必须采用低电平输出。
  时钟晶体振荡频率为 f o s c = 12 M H Z f_{osc}=12MHZ fosc=12MHZ
  时钟周期相当于 T o s c = 1 f o s c ≈ 83.33 n s T_{osc}=\frac{1}{f_{osc}} \approx 83.33ns Tosc=fosc183.33ns
  复位电路的话通过给89C51等单片机的复位引脚RST加上大于2个机器周期的高电平(即24个时钟振荡周期)就可以使单片机复位。

KEIL工程:

  1.按照要求,设定外部信号发生器每2s钟产生一个下降沿,即设置频率0.5HZ;
  2.步进电机是将脉冲信号转变为角位移或线位移的开环控制器件,非超载情况下,电机的转速停止的位置只取决于脉冲信号的频率和脉冲数,故它只有周期性的误差,而无累积误差;
  3.步进电机驱动芯片使用ULN2003A。此芯片是高耐压、大电流达林顿阵列产品,它由7个NPN达林顿管组成。ULN2003A具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点其输入5V的电平输出可达50mA/50V。

  主函数:

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define MotorPort P1
uchar code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//正转
sbit LED=P1^7;
/*---函数声明---*/
void Init();
void SETP_MOTOR_FFW(uchar n);
void SETP_MOTOR_REV(uchar n);
void DelayMS(uint ms);
/*--------------*/
void main(void)
{
	Init();
	while(1)
	{
		/*要做的任务*/
	}
}

  定时器初始化及中断子函数:

void Init()
{
	EA=1;
	EX0=1;	//外部中断0开
	IT0=1;  //边沿触发
	LED=1;	//灭灯
}
/*外部中断0子程序,对应端口P3^2*/
void ISR_Key(void) interrupt 0 using 1
{
	SETP_MOTOR_FFW(1);
}

  电机驱动及延时函数:

void SETP_MOTOR_FFW(uchar n)
{
 	uchar i,j,temp;
	LED=~LED;
	for(i=0;i<5*n;i++)
	{
	 	for(j=0;j<8;j++)
		{
			MotorPort = FFW[j];
			for(temp=0;temp<25;temp++)
			{
				DelayMS(1);
			}
		}
	}
	LED=~LED;
}
void DelayMS(uint ms)
{
 	uchar i;
	while(ms--)
	{
	 	for(i=0;i<120;i++);
	}
}

参考文献
1.《单片机原理与接口技术》张毅刚
资源

返回目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值