基于89C51单片机直流电机控制及其程序 - 图文(2)

2020-05-05 13:25

3. LY-51S单片机开发板

应用开发板上的单片机,八个独立按键,8个LED灯,两个继电器。 4. 控制系统

基于51S单片机的直流电机控制系统。系统组成:无刷直流电机,无刷直流电机驱动器,LY-51S单片机开发板上的单片机,8个独立按键,八个LED灯,两个继电器。 单片机I/O口分配: P1.0 : 方向信号。 P1.1:启停信号。 P1.2:PWM信号。

独立按键 P3 功能 P0 LED K1 P3.0 启动 P0.7 LED8 K2 P3.1 停止 P0.6 LED7 K3 P3.2 自动 P0.0 LED1 K4 P3.3 手动 P0.1 LED2 K5 P3.4 正转 P0.2 LED4 K6 P3.5 反转 P0.3 LED3 K7 P3.6 加速 P0.4 LED5 K8 P3.7 减速 P0.5 LED6 接线图见附录

8个独立按键为单片机的输入,接P3口。8个LED为输出的信号显示,显示不同的工作状态,接P0口。P1.0口输出的方向信号接继电器1,控制驱动器的F/R与COM口的通断控制电机正反转。F/R与COM不接通时电机顺时针方向运转,反之则逆时针方向运转。P1.1口输出的启停信号接继电器2,控制驱动器的R/S与COM口的通断控制电机启停。R/S与COM断开时电机运行,反之则停止运行。

附录 控制程序

程序:

#include\

sbit start=P3^0; sbit stop=P3^1; sbit AUTO=P3^2; sbit hand=P3^3; sbit forward=P3^4; sbit reverse=P3^5; sbit acceleration=P3^6; sbit deceleration=P3^7;

sbit led1=P0^0; //auto sbit led2=P0^1; //hand sbit led3=P0^2; //forward sbit led4=P0^3; //reverse sbit led5=P0^4; //acceleration sbit led6=P0^5; //decelerate sbit led7=P0^6; //on sbit led8=P0^7; //off

sbit direction=P1^0; //zhuanfan sbit RS=P1^1; //on off sbit PMW=P1^2; //kongzhi //sbit speaker=P1^3;

int CYCLE,PWM_ON,count;

void initial() {

CYCLE=20; PWM_ON=0; count=0; }

/*------------------------

uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS

------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); }

/*------------------------------------------------

mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) {

//大致延时1mS DelayUs2x(245); } }

/*------------------------------------------------ 定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) {

TMOD |= 0x01; //使用模式1,16位定时器,使用\符号可以在使用多个定时器时不受影响 TH0=(65536-2000)/256; TL0=(65536-2000)%6;

EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 }

/*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 {

TH0=(65536-2000)/256; TL0=(65536-2000)%6;

if(count==PWM_ON) //如果定时等于on的时间 说明作用时间结束,输出低电平 {

PMW=0; // }

if(count==CYCLE) //反之低电平时间结束后返回高电平 {

//重新赋值 2ms

//重新赋值 2ms

DelayUs2x(245);

count=0;

if(PWM_ON!=0) //如果开启时间是0 保持原来状态 {

PMW=1; } } count++; }

void accelerate() {

if(PWM_ON==CYCLE) { } else

{PWM_ON++;} }

void decelerate() {

if(PWM_ON==0) { } else

{PWM_ON--;} } main() {

initial(); Init_Timer0();

while(1) {

if(!stop)//stop {

DelayMs(10); if(!stop) {

PWM_ON=0; while(start) {

RS=0; led7=0; led8=1;

P0=0xff;


基于89C51单片机直流电机控制及其程序 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:查济古村落导游词

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: