基于AT89S52单片机的电机控制C语言程序设计_第1页
基于AT89S52单片机的电机控制C语言程序设计_第2页
基于AT89S52单片机的电机控制C语言程序设计_第3页
基于AT89S52单片机的电机控制C语言程序设计_第4页
基于AT89S52单片机的电机控制C语言程序设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章:设计任务任务:了解电机的转动原理,能够对直流电机进行简单的控制;能够设计和使用简单的自动化闭环系统;提高多模块硬软件的综合应用能力。功能主要包括:1) 直流电机的正转;2) 直流电机的反转;3) 直流电机的加速;4) 直流电机的减速;5) 直流电机的停止;6) 直流电机的转速在数码管上显示;第二章:总体设计方案总体设计方案的硬件部分详细框图如下图所示:AT89S52基本模块独立按键模块电机驱动模块数码管显示模块霍尔元件模块第三章 系统的硬件介绍一、电机驱动芯片L298N L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。内含两个H桥的高电压大电流全桥式驱动

2、器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。 特点:1、具有信号指示;2、转速可调;3、抗干扰能力强;4、具有过电压和过电流保护;5、可单独控制两台直流电机;6、可单独控制一台步进电机;7、PWM脉宽平滑调速;8、可实现正反转;9、采用光电隔离L298N的输入输出逻辑关系表ENA(B)IN1(I

3、N3)IN2(IN4)电机HHL正转HLH反转HIN1(IN3)与IN2(IN4)电平相同快速停止LXX停止电机转速的控制主要是运用PWM波形输出实现。由逻辑关系表可知,我们可以用PWM波形控制ENA(B)端或者是IN1(IN3)和IN2(IN4)。以ENA端控制为例,当输出为高电平时电机转动,输出为低电平时电机停止。由此我们可以改变高低电平的占空比,进而实现电机转速的调整。注意:高电平和低电平的时间不能太长,否则电机不能够持续转动,启动时高电平时间也不能太短,否则电机启动较慢。二、霍尔元件霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端

4、器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。如图1所示是CS3020的外形图,将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。CS3020外形图使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业

5、现场应用广泛。三、数码管显示模块:数码管显示模块采用的是静态数码管。第四章 系统框图开始初始化显示转速设置转动方式设置转动方式设置定时器、计数器工作方式YN中断入口开始重置定时常数计时一秒NY统计转速与设定转速比较加速减速保持 =中断返回第五章 程序#include #include#define uchar unsigned char#define uint unsigned intsbit IN1=P10;sbit IN2=P11;sbit ENA=P12;sbit K1=P30; /正转sbit K2=P31; /反转sbit K3=P32; /加速sbit K4=P33; /减速sbi

6、t STCP=P20;sbit SHCP=P21;sbit DS=P22;uchar code tab=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xA4,0x8E; / 程序存储区定义字型码表uint N=0; uint high=5; extern uint num=1;extern uint n;extern uint e=0;void xianshi() ; /数码管显示void testkey(); /键盘扫描void chuli(); /正反转处理void main()ENA=1; TMOD=0x01; /T0方式1定时 T

7、H0=(65536-1000)/256; TL0=(65536-1000)%256; /周期1ms ET0=1; /允许T0定时器中断 EA=1; /开启总中断 TR0=1; /启动定时器T0 while(1) testkey(); xianshi(); void delay (uint m) /延时函数uint n; while(m-) for(n=0;n25;n+) ; void timer0()interrupt 1 /T0定时器中断TH0=(65536-1000)/256; TL0=(65536-1000)%256; /重装T0 N+; n=N%10; if(n0;i-) SHCP=0

8、;a=1; DS=CY; SHCP=1; void xianshi() /速度显示子程序CY=0; shuru(tabhigh%10); shuru(tabhigh%100/10); shuru(tabhigh/100); if(num=1) shuru(tab10); else shuru(tab11); shuchu(); delay(100);void testkey() /按键扫描程序if(K1=1) /正转 delay(1); if(K1=1) e=0; chuli(); while(K1); else if(K2=1) /反转 delay(1); if(K2=1) if(e=0)

9、e=1; chuli(); while(K2); else if(K3=1) /加速 delay(1); if(K3=1) if(high0) high-; while(K4); void chuli()switch(e) case 0: IN1=0; /正转 IN2=1; num=1; break; case 1: /反转 IN1=1; IN2=0; num=0; break; 第六章 原理图第七章 元件清单元件型号数量AT89S521带锁开关1晶振11.0592M1霍尔元件CS30201L298N1IN41481IN400712电阻1k14k71排阻300-412k2-4110k81电容30p2104222uf1100uf2静态数码管SM4105474HC5954独立按键4下载口ISP-PORT1第八章 心得体会虽然本次课程设计只有一个星期的时间,但是我之前就已经开始设计程序了,只是一直没啥进展。我也成了倒数几个没做完的一员,其实心里一直有压力,可是有时候总是力气没花到点子上,事倍功半,主要一个原因就是,我在构建整个程序框架的时候没有一个清晰的认识,结果总是达不到自己所要求的目标。这最后一天,我找了两位同学帮我一起检查程序,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论