单片机课程设计概要Word下载.docx
《单片机课程设计概要Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计概要Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机课程设计概要Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/28/8a80c295-9d66-4e2d-a5da-430328fc23fb/8a80c295-9d66-4e2d-a5da-430328fc23fb1.gif)
(2)按键判断
(3)电机驱动
三、系统调试
1.工具软件简介
(1)Keil开发环境
(2)XLISP
2.调试中的问题
3.系统调示结果
附录
步进电机正反转控制
用三个独立按键,设计步进电机的正转、反转和停止。
(1)根据课题要求,确定设计方案;
(2)在Proteus软件中,绘制系统原理图;
(3)在keil中编写单片机程序,结合原理图进行系统调试;
(4)记录系统运行结果,书写课程设计报告。
通过设定K1、K2和K3三个按键控制步进电机的转动和转向,电动机采用四相激磁,将通过汇编语言,编写程序以实现步进电机的实验目的,编程时采用制表的方法。
正转和反转的脉冲信号频率是相同的,故正转使用四相步进电机正转时序表,反转使用四相步进电机反转时序表,从而来控制步进电机接受一定的脉冲,实现连续的正转或反转运动。
设计的模块大概可分为如图1所示的几部分。
图1系统方框图
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。
①时钟电路的设计
时钟电路是用于产生单片机工作时所必需的时钟信号。
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。
时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
在本系统中采用外部时钟方式的电路,如图2所示:
图2时钟电路
在本设计中的电容C1、C2典型值为20pF。
外接代内容的值虽然没有严格的要求,但是电容的大小会影响振荡器的稳定性和起振的快速性。
同时,在系统中采用12MHz的晶体振荡器来产生时钟脉冲。
这样可以满足系统在设计时的机器周期的需要。
②复位电路的设计
复位是单片机的初始化操作,只要给RST引脚加上2个机器周期以上的高电平信号,即可使单片机复位。
除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。
在系统中,为了实现上述的两项功能,采用常用的按键电平复位电路,这样复位键有复位和停止两个功能,如图3所示。
图3复位电路
从图中可以看出,当系统得到工作电压的时候,复位电路工作在上电自动复位状态,通过外部复位电路的电容充电来实现,只要Vcc的上升时间不超过1ms就可以实现自动上电复位功能。
在本系统中,采用10uF的电容和1kΩ的电阻来实现复位电路。
当系统出错时,直接按开关实现模拟系统上电复位的功能,从而实现系统重新复位启动。
③EA(31脚)的功能和接法
51单片机的EA/VPP(31脚)是内部和外部程序存储器的选择管脚。
当EA保持高电平时,单片机访问内部程序存储器;
当EA保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。
对于现今的绝大部分单片机来说,其内部的程序存储器容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。
在本实验中,EA管脚接高电平VCC,只使用内部的程序存储器。
由上述介绍的三个组成单元可画出单片的最小系统图如图4所示:
图4AT89C51单片机最小系统图
1步进电机介绍
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步进角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
常见的步进电机分三种:
永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度
或15度;
反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰;
混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:
两相步进角一般为1.8度而五相步进角一般为
0.72度。
这种步进电机的应用最为广泛。
jhfghhug
下表列出了该电机的一些典型参数:
型号
步距角
相数
电压
电流
电阻
最大静转矩
定位转矩
转动惯量
35BY48S03
7.5
4
12
0.26
47
180
65
2.5
有了这些参数,不难设计出控制电路,因其工作电压为12V,最大电流为0.26A,用一块开路输出达林顿驱动器(ULN2003A)来作为驱动正好适合,通过P1.4-P1.7来控制各线圈的接通与切断。
开机时,P1.4-P1.7均为高电平,依次将P1.4-P1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。
如果要改变电机的转动速度只要改变两次接通之间的时间,而要改变电机的转动方向,只要改变各线圈接通的顺序。
按照一定的顺序向步进电机的各相分配驱动脉冲。
对于四相步进电机,采用单四拍方式,其脉冲的方式和顺序是A-B-C-D-A,依次循环就可以转动。
②ULN2003A介绍
单片机的输出电流太小,不能直接连接步进电机,需要加驱动电路。
对于电流小于0.5A的步进电机,可以采用ULN2003A类的驱动IC.
A、ULN2003A系列驱动器引脚介绍
图5ULN2003A系列驱动器引脚图
如图5所示为ULN2003A系列驱动器引脚图,图右边1-7引脚为输入端,接单片机输入端,右侧10-16引脚为输入端,接步进电机,引脚9接电源+5V,该驱动器可提供最高0.5A的电流
ULN2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350mA.,9脚可以悬空。
比如1脚输入,16脚输出,负载接在VCC与16脚之间,不用9脚。
B、ULN2003A的作用
ULN2003A是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003A是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
该电路的特点如下:
ULN2003A的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器。
ULN2003A是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003A是高耐压、大电流、内部由七个硅NPN达林顿管组成的
驱动芯片。
C、ULN2003A驱动器的应用
经常在以下电路中使用,作为:
1.显示驱动
2.继电器驱动
3.照明灯驱动
4.电磁阀驱动
5.伺服电机、步进电机驱动等电路中。
ULN2003A的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来
处理的数据。
ULN2003A工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。
ULN2003A的封装采用DIP—16或SOP—16
③驱动电路设计
由于单片机直接输出的脉冲不足以驱动步进电机正常工作所以需要驱动电路给步进电机提供电源,在本设计中采用型号为ULN2003A的芯片,使步进电机正常工作。
驱动信号由P1口的P1.0~P1.3输出,分别与驱动芯片的B1~B4相连,电路如图6所示:
图6驱动电路图
显示电路中采用八路指示灯,为了提高八路指示灯显示管的显示效果,在八路指示灯的输入端接上拉电阻。
电路如图7所示:
图7显示电路图
开始供电时,步进电机停止。
按下K1时,电动机正转;
按下K2时,电动机反转,按下K3时,电动机停止转动。
如图8所示:
图8按键控制图
(5)系统原理总图
见附录
主程序需具备的功能,要不断扫描P3口并判断K1、K2和K3是否闭合,并显示转速及步进电机的旋转方向。
图9主程序流程图
系统的程序如下:
K1EQUP3.2;
设定P3.2以K1表示
K2EQUP3.3;
设定P3.3以K2表示
K3EQUP3.4;
设定P3.4以K3表示
START:
MOVP0,#0FFH;
步进电机停止
LOOP:
JNBK1,F_Z1;
是否按K1,是则正转
JNBK2,F_F2;
是否按K2,是则反转
JNBK3,F_T3;
是否按K3,时则停止
SJMPLOOP
F_T3:
ACALLDELAY;
按K3消除抖动
JNBK3,$
ACALLDELAY;
放开消除抖动
SJMPSTART
F_Z1:
按K1消除抖动
JNBK1,$
SJMPZ_Z1
F_F2:
按K2消除抖动
JNBK2,$
SJMPZ_F2
Z_Z1:
MOVR0,#00H;
正转,取TAB初值
Z_ZX:
MOVA,R0;
取TAB值
MOVDPTR,#TAB;
存表
MOVCA,@A+DPTR
JZZ_Z;
是否取到结束值
MOVP0,A;
输出至P0,正转
是否按K3,是则停止
JNBK2,F_F2;
步进电机转速
INCR0;
取下一个值
SJMPZ_ZX
Z_F2:
MOVR0,#05;
反转,取TAB初值
Z_F21:
JZZ_F2;
输出至P0,反转
JNBK1,Z_Z2;
SJMPZ_F21
RET
表1四相步进电机正转时序表
表2四相步进电机反转时序表
表3
33H
99H
0CCH
66H
(1)Keil开发环境
随着微电子技术的迅速发展,单片机在工业控制、消费电子、家用电器、通信、办公自动化、医疗器械等方面应用越来越广泛。
单片机作为嵌入式系统的核心器件,其应用系统设计包括硬件电路设计和软件电路设计两个方面,学习和应用过程中必须软件、硬件结合。
单片机系统调试通常分为软件调试、硬件测试和整机联调三个部分。
单片机自身不具备开发功能,必须借助于开发工具。
目前,国内外推出了许多基于个人计算机的单片机软或硬开发平台。
硬件开发平台方面诸如开发板、实验箱、仿真器、编程器、示波器、逻辑分析仪等,但因其价格不菲,开发过程繁琐。
因此在软件支持的前提下,应用最普遍的是软件仿真开发平台,其方便、快捷、节约。
单片机应用系统软件仿真开发平台有两个常用的工具软件:
Keil和ProteusISIS。
Keil主要用于单片机源程序的编辑、编译、链接以及调试;
ProteusISIS主要用于单片机硬件电路原理图的设计以及单片机应用系统的软、硬件联合仿真调式。
(2)XLISP
将单片机程序写入后接入试验仪,使用XLISP对其进行调试,首先打开
,跳出如图10所示的图像,打开标题栏的选项,选择串口设置,将串口设定为COM3,如图11所示,再按下
键,将上一次的记录擦除掉,然后再按下
键,找到其对应的HEX文件,如图12所示,最后打开
键,对程序进行调试。
图10XLISP程序图
图11串口选择图
图12HEX文本图
在Keil软件环境中,输入汇编程序,编译生成HEX文件,通过XLISP软件将程序代码下载到AT89C51单片机中,进行系统调试。
(1)当将延时时间定为20ms时,按下K1,步进电机没有正转。
原因及解决方法:
有一根与电机驱动连接的导线接触不到位;
调整一下即可
(2)经过调试,可得到步进电机能实现正常运转的时间范围为12~255ms,当时间为12ms时,步进电机的转速最大,同时八路指示灯的低四位看不到灯的变化情况;
当时间为255ms时,步进电机的转速最小,同时八路指示灯的低四位灯的变化情况很明显,闪烁的速度很快;
当将时间定为100ms时,步进电机的转速相对于时间为255ms时的速度要大很多,又相对于12ms的时间的转速要小很多,所以,此时八路指示灯的低四位的变化情况要明显很多,看到的现象是八路指示灯的D0.0到D0.3的灯依次被点亮并实现循环发光。
3.系统运行结果
当按下K1按键后,电动机正转,八路指示灯的低四位出现如图9所示的现象。
图9步进电机正转图
在正转时,如果按下K3键,电机会停止转动,八路指示灯的低四位也将不发光。
按下K2键,步进电机开始反转工作,把八路指示灯的低四位依次被点亮,并循环发光。
现象如图10所示。
图10步进电机反转图