《嵌入式系统及应用》课程设计报告---步进电机控制

合集下载

嵌入式控制系统工程设计课程设计

嵌入式控制系统工程设计课程设计

目录1.引言 (2)2.基本原理 (2)2.1步进电机概况 (2)2.2步进电机工作原理 (4)2.3步进电机分类 (6)3.硬件系统选择 (7)3.1核心处理器选择 (7)3.2元器件选择及接口设置 (8)4.硬件原理结构框图 (12)5.任务划分及程序大框图 (13)6.PCB设计及成本估算 (15)7.总结 (17)参考文献 (19)1.引言步进电机是一种控制电机,由于不使用反馈电路就能进行速度控制及定位控制,既所谓的电机开环控制,故越来越多的被应用于现代工业控制系统中。

其应用主要以处理办公业务能力很强的OA(Office Automation,办公自动化)机器和FA(Factory Automation,工厂自动化)机器为核心,并广泛应用于医疗器械、计量仪器、汽车、游戏机等[1]。

传统工业中的步进电机控制系统大多数采用的是8位单片机如89C51系列作为控制内核,其设计简单、价格低廉且能满足一般的控制要求,但是由于单片机本身存储空间小,外设资源较少,往往需要与PC机联机控制才能实现更高级的功能,这就带来了实时性能较差,人际交互较为复杂,操作麻烦等问题[2]。

如果采用功能强大的32位ARM处理器作为核心,集成电源、电机控制板、步进电机和人机界面于一体,形成一个完整的嵌入式一体化工业控制机,可以使得控制系统对步进电机的控制具有更高的实时性和可靠性、更友好的人机界面、更高的可操作性、更低的总成本和更高的控制精度。

本文基于这样一种设想,采用ARM7内核的LPC2131处理器为核心,设计了一个具有实时操作性和人机界面的步进电机控制器。

2.基本原理2.1步进电机概况[1]步进电机属于DC驱动的同步电机,但无法直接用DC或AC电源来驱动,需配备驱动器才能使用,所以步进电机的运行需要驱动电路。

步进电机驱动电路的任务,是按顺序指令切换DC电源的电流流入步进电机的各相线圈。

图2.1为三相VR型步进电机的绕组外加电源示意图,其中驱动电路用开关来表示。

《嵌入式系统及应用》步进电机控制设计

《嵌入式系统及应用》步进电机控制设计

《嵌入式系统及应用》步进电机控制设计目录一、设计任务 (1)二、工作原理 (1)1、步进电机电路工作原理 (1)2、LED显示电路 (2)3、键盘电路原理图 (2)三、设计原理及步骤 (2)四、内存使用分配表 (3)五、设计说明及流程 (3)1、数码管显示字形 (3)2、键盘输入模块 (4)3、步进电机控制模块 (4)六、程序清单 (5)七、设计心得 (11)一、设计任务1)从键盘上输入步进电机正、反转命令,转速参数(16级)和转动步数显示在LED显示器上。

显示器上显示:第一位为0表示正转,为1表示反转;第二位0~F为转速等级,第三到第六位设定步数。

2)单片机依显示器上显示的正、反转命令,转速级数和转动步数进相应动作,转动步数减为零时停止转动。

测量步进电机绕组两端电压,并在显示器上显示。

二、工作原理1、步进电机电路工作原理步进电动机是一种将电脉冲信号转换成相应角位移或线位移的电动机,它的运行需要专门的驱动电源,驱动电源的输出受外部的脉冲信号控制。

每一个脉冲信号可使步进电机旋转一个固定的角度,这个角度称为步距角。

脉冲的数量决定了旋转的总角度,脉冲的频率决定了电动机旋转的速度,改变绕组的通电顺序可以改变电机旋转的方向。

在数字控制系统中,它既可以用作驱动电动机,也可以用作伺服电动机。

它在工业过程控制中得到广泛的应用,尤其在智能仪表和需要精确定位的场合应用更为广泛。

如图2.1,当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。

那么,通过对它每相线圈中电流的顺序切换可使电机作步进式旋转。

图2.1步进电机工作原理图2.2 步进电机控制电路2、LED显示电路LED显示电路工作原理如图2.3。

图2.3 LED显示电路工作原理3、键盘电路原理图键盘电路原理如图2.4。

图2.4 键盘电路原理三、设计原理及步骤系统中使用24BYJ-48(四相八拍)型号步进电机,它使用+5V直流电源,步距角为5.625度,电机线圈由A、B、C、D四相组成。

嵌入式系统课程设计报告

嵌入式系统课程设计报告

NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告学生姓名:学号:学院:专业班级:指导教师:同组成员:2016年12 月26 日一、课程设计目的本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。

二、设计题目及要求2.1 设计题目:基于STM32和uC/OS-II的多任务设计2.2 功能实现:使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。

整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。

2.3 设计要求:理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II 任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。

四个任务分别为:(1)驱动1个LED指示灯闪烁、(2)由3个LED指示灯组成流水灯(3)驱动蜂鸣器发出响声。

(4)利用swd方式进行printf输出。

三、设计原理说明3.1 硬件说明本次课程设计主要使用的是STM32 神舟IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。

(1)开发板资源图(2)MCU开发板的处理器是STM32F107VCT6,该处理器基于ARM V7 架构的Cortex-M3 内核,主频72Mhz,内部含有256K字节的FLASH 和64K字节的SRAM,LQFP100 封装。

(3)蜂鸣器开发板板载一个无源蜂鸣器,用于产品告警或声音提醒。

蜂鸣器连接到了处理器的PA3管脚,当处理器的PA3管脚输出低电平时蜂鸣器开始鸣响,反之处理器的PA3管脚输出高电平时蜂鸣器停止鸣响.(4)指示灯开发板提供了1个电源指示灯和4路通用LED指示灯。

嵌入式应用实验报告,实验三 步进电机实验信科10级cumt

嵌入式应用实验报告,实验三 步进电机实验信科10级cumt

实验三步进电机实验一、步进电机简介:单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。

多相步进电动机有多相方波脉冲驱动,用途很广。

使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各项绕组。

每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。

正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

常用的步进电机:反应式步进电动机(VR):结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。

永磁式步进电动机(PM):出力大,动态性能好;但步距角一般比较大。

混合步进电动机(HB):综合了反映式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。

二、实验原理:本实验采用四相步进电机(故只介绍其原理):使用四相式步进电机,工作模式为两相四拍。

系统中采用一路I/O 进行脉冲输出,通过CPLD控制器进行脉冲分配,在通过功率放大后,进入步进电机的各相绕组。

电机有两种工作模式:半步模式,整步模式。

整步模式下的步距角为18o,半步模式则为9o,(1)半步模式脉冲信号图:脉冲分配信号(2)整步模式:脉冲信号图:脉冲分配信号实验原理图:实验系统中的步进电机的四相由0x28000006的bit0~bit3控制,bit0对应于MOTOR_A,bit1对应于MOTOR_B,bit2对应于MOTOR_C,bit3对应于MOTOR_D。

通过编制脉冲分配表表控制步进电机。

驱动方法我们驱动步进电机的话有好几种方法,个人觉得比较简单也比较常用的还是下面这两种,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A.,第一:AB高,CD低,电流则如下图黄色线所示方向流动,产生的磁场使得电机转子顺时针转动90度,转过90度之后就停在那里了;第二:BC高,AD低,电流如下图所示,同样道理,电机转子转过90度;第三,CD高,AB低,如下图:第四,DA高,BC低,如下图:如此一循环之后,电机转子就转过了一周,如果这样循环这样一个动作的话,那电机就会转起来了!现在大家应该明白了什么是四相四拍了吧!同理,四相八拍也是一样的道理.三、实验基本步骤:1.将仿真器及usb线,com串行线,S3C2410实验板与电脑连接好。

嵌入式系统原理及运用课程设计

嵌入式系统原理及运用课程设计

摘要嵌入式系统开始于20世纪80年代单片机的使用。

嵌入式技术已经渗透到各个领域,且与人们的日常生活密不可分,给人们生活和工业生产带来极大方便。

本文论述了嵌入式系统概念、嵌入式处理器、嵌入操作系统和嵌入软件开发环境,解释了嵌入式系统组成中的各个部分。

嵌入式操作系统具有良好的可移植性,能够用在根据应用要求选择的微处理器中。

嵌入式系统设计带来了与传统系统设计全然不同的挑战。

嵌入式系统已成为计算机领域的一个重要组成部分。

广泛讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。

嵌入式系统可以通过各种无线形式和有线形式的网络连接方式实现它们之间的相互连接。

因此,在网络通信市场上极具生命力。

关键词嵌入式系统,嵌入式操作系统,μC/OS-ⅡABSTRACTThe Embedded system commenced with the use of SCM in 1980’s. The embedded technology has penetrated in every field. It’s inseparable with our daily life and it brings great convenience to people’s life and the industry.This paper discusses the concept of the embedded system, the embedded processor, the embedded operating system and the embedded software developing environment, explains the components of the embedded system.The embedded system has great compatibility. It can be used in MPU selected according to the application. The design of the embedded system brings the challenge witch is different with the traditional design.The embedded system has been an important component of the computer field. Universally speaking, all the private soft-hardware systems with MPU can be named with embedded system. The embedded systems can connect with each other through wireless and cable connecting way. Therefore, it is animate in the market of the communication networks.KEY WORDS Embedded system, Embedded operating system,μC/OS-Ⅱ目录第一章嵌入式系统概述 (1)1.1 嵌入式系统简介 (1)1.2 嵌入式系统的分类 (3)1.3 嵌入式系统设计的特点 (3)第二章嵌入式处理器 (5)2.1 嵌入式处理器简介 (5)2.2 常用嵌入式处理器 (6)第三章嵌入式操作系统 (7)3.1 嵌入式操作系统简介 (7)3.1.1 嵌入式操作系统的机制 (8)3.1.2 嵌入式操作系统的特点: (9)3.1.3 嵌入式操作系统的分类 (10)3.2 μC/OS-Ⅱ嵌入式操作系统 (10)3.2.1 μC/OS-Ⅱ实时操作系统结构 (11)3.2.2 μC/OS-Ⅱ嵌入式操作系统的特点 (11)3.2.3 μC/OS-Ⅱ的移植 (13)第四章嵌入式系统编程语言 (15)4.1 嵌入式系统的高级语言特点 (15)4.2 嵌入式系统高级语言开发过程 (15)4.3 嵌入式系统编程与系统硬件 (17)4.3.1 存储器映射 (17)4.3.2 I/O映射 (18)结束语 (19)参考文献 (20)第一章嵌入式系统概述1.1 嵌入式系统简介何谓嵌入式系统?根据英国电机工程师协会的定义所做的翻译,“嵌入式系统为控制、监视或辅助设备、机器或甚至工厂操作的装置”。

步进电机控制课程设计报告

步进电机控制课程设计报告

(封面)XXXXXXX学院微机原理课程设计实验报告题目:院(系):专业班级:学生姓名:指导老师:时间:年月日课题名:步进电机控制一、课题内容和提示:编程提示:(1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋转。

调节输入脉冲的频率可改变步进电机的转速。

(2)编写程序使步进电机按正转10圈,反转5圈,再正转10圈,再反转5圈的规律旋转。

(3)调整延时参数,使步进电机的转动速度为每秒5转。

二、报告要求:每秒5转对应的延时参数是多少?,这个数字与微机的速度有什么关系?为什么?三、设计思路:(1)前言:步进电机具有控制简便、定位准确等特点。

随着科学技术的发展,在许多领域将得到广泛的应用。

鉴于传统的脉冲系统移植性不好,本文提出微机控制系统代替脉冲发生器和脉冲分配器,用软件的方法产生控制脉冲,通过软件编程可以任意设定步进电机的转速、旋转角度、转动次数和控制步进电机的运行状态。

以简化控制电路,降低生产成本,提高系统的运行效率和灵活性。

在此基础上提出了双三拍步进电机程序控制的硬件接口电路、程序流程图和汇编程序。

步进电机是自动控制系统中常用的执行部件。

步进电机的输入信号为脉冲电流,它能将输入的脉冲信号转换为阶跃型的角位移或直线位移,因而步进电机可看作是一个串行的数/模转换器。

由于步进电机能够直接接受数字信号,而不需数/模转换,所以使用微机控制步进电机显得非常方便。

(2)步进电机有以下优点:(1)通常不需要反馈就能对位置和速度进行控制;(2)位置误差不会积累;(3)与数组设备兼容,能够直接接收数字信号;(4)可以快速启停。

(3)步进电机的工作原理:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。

嵌入式步进电机控制系统

嵌入式步进电机控制系统

步进电机控制系统步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。

此设计主要控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。

一、硬件设计(一)、控制方式分析和原理图设计由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用信号发生装置来对它进行控制,而实现这一任务的主要器件就是单片机,此设计主要是解决步进电机的启停、换向、转速控制三方面:1、步进电机的换向控制如果给定工作方式正序换相通电,步进电机正转。

若步进电机的励磁方式为三相六拍,即A→AB→B→BC→C→CA→A。

如果按反序通电换相,即A→AC→C→CB→B→BA→A,则电机就反转。

其他方式情况类似。

2、步进电机的速度控制如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。

两个脉冲的间隔越短,步进电机就转得越快。

调整送给步进电机的脉冲频率,就可以对步进电机进行调试。

3、步进电机的起停控制步进电机由于其电气特性,运转时会有步进感。

为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,跳过电机运行的平稳性。

在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机转轴不能自由转动。

4、从所要实现的目标来看,就不难设计它的硬件连接部分,其具体硬件设计原理图如下图所示:(二)、电路的设计本设计的硬件电路包括控制电路、最小系统、驱动电路、显示电路四大部分。

嵌入式系统原理与应用课程设计报告书

嵌入式系统原理与应用课程设计报告书

嵌入式系统原理及应用课程设计报告题g: 电子时钟的设计与实现班级:文专电0931姓名:阳学号:3试验台号:10 ____________________指导老师:邱秀芹______________程序成绩:____________________报告成绩:____________________ 总成绩:优良中及格不及格2012年2月25日一.课程设计目的通过该课程设计将嵌入式系统原理及应用课程中所学的处理器和接口等技术应用于实际设计中。

通过中断、PWM定时器、串口、SIO、GPIO等技术在实验平台上进行综合设计,在理论和实验的基础上进一步提高综合设计能力。

二.课程设计容及功能要求1.通过一个PWM定时计数器,釆用定时中断的功能,设计能够在LED±进行时分秒显示的时钟;2.通过键盘实现对钟的功能;3.实现闹钟的功能,闹钟的时间由键盘输入进行设定;4.将时钟在超级终端上显示;时间的设定可以通过超级终端实现;三.功能实现1・总体功能框图2•详细设计:(将所设计的各部分的功能程序框图及相关程序代码进行详细的描述)①.#include M uhal.h H#mclude H myuart.h n#mclude H KeyBoaid.h H#mclude H Tuner.h n#mclude H Isr.h n#include H44b.h H#mclude ”Zlg7289.1T#mclude n def.h n#mclude H lcd320.h Hmt T iiner3 INT C ou nt=O;iiit hour = 0 ;iiit minute = 0 ;#pragnia uupoil(_use_no_senuliostmg_swi) // ensuie no functions that use senuliostmg mt maiii(void)iiit clock Ji = 23 ;iiit clock_m = 59 ;iiit clock_s = 0 ;iiit kev ;J 7iiit val=0;ARMTaigetlnitQ; 〃开发版初始化Zlg7289_Reset();Iiut_Tmier3(l 00,16.40000,20000);INTS_OFFQ;//Disable intemipt ill PSRSetISR_In 忙mipt(INT_TIMER3_OFFSEI;Timei3_ISR,0);Open_INT_GLOBAL();Open_INT(EIT_TIMER3);INTS_ONQ;//Enable intemipt ill PSRStail_Timer3();key=Zlg7289_ReadKey();Stop_Timei30 ;Delay(100); 〃按键值赋给key o〃防止中断影if( key = 18)〃秒设置,键盘3按卜•时扫描值为18 〃延时让数码管频率显示可见。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《嵌入式系统及应用》课程设计报告---步进电机控制一、设计任务1)从键盘上输入步进电机正、反转命令,转速参数(16级)和转动步数显示在LED显示器上。

显示器上显示:第一位为0表示正转,为1表示反转;第二位0~F为转速等级,第三到第六位设定步数。

2)单片机依显示器上显示的正、反转命令,转速级数和转动步数进相应动作,转动步数减为零时停止转动。

测量步进电机绕组两端电压,并在显示器上显示。

二、工作原理1、步进电机电路工作原理步进电动机是一种将电脉冲信号转换成相应角位移或线位移的电动机,它的运行需要专门的驱动电源,驱动电源的输出受外部的脉冲信号控制。

每一个脉冲信号可使步进电机旋转一个固定的角度,这个角度称为步距角。

脉冲的数量决定了旋转的总角度,脉冲的频率决定了电动机旋转的速度,改变绕组的通电顺序可以改变电机旋转的方向。

在数字控制系统中,它既可以用作驱动电动机,也可以用作伺服电动机。

它在工业过程控制中得到广泛的应用,尤其在智能仪表和需要精确定位的场合应用更为广泛。

如图2.1,当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。

那么,通过对它每相线圈中电流的顺序切换可使电机作步进式旋转。

图2.1步进电机工作原理图2.2 步进电机控制电路2、LED显示电路LED显示电路工作原理如图2.3。

图2.3 LED显示电路工作原理3、键盘电路原理图键盘电路原理如图2.4。

图2.4 键盘电路原理三、设计原理及步骤系统中使用24BYJ-48(四相八拍)型号步进电机,它使用+5V直流电源,步距角为5.625度,电机线圈由A、B、C、D四相组成。

步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。

HA、HB、HC、HD即为脉冲信号输入插孔,驱动器输出A、B、C、D接步进电机。

所需模块:单片机通用CPU板、Mon51K CPU卡、键盘显示板、电机音响继电器板。

设计步骤:1.检查设置:关闭实验仪电源,把MON51K 卡上跳线帽分别短接至“MON”、“片内”、“FOSC”、“总线”侧;CPU板跳线帽短接至“总线”;键盘显示板的“JK”置系统。

2.连线:①CPU板的 USB口→计算机USB口;②CPU板和键盘显示板:IOW→IOW,IOR→IOR,JD→JD,A0→A0,A1→A1,RST→RST,FF20→CS-8255K;③ CPU板和电机音响继电器板:Pl.0~P1.3→HA~HD 。

3联机调试1)开启实验箱电源,启动Keil软件,新建工程,创建文件,添加文件到工程,编译。

2)右键点击选择①设置晶振:实验箱用11.0592MHz;②选择硬件仿真;③选择通信端口。

3)点击编译下载、开始调试、全速运行程序后,全速运行程序后,通过键盘设置输入正、反转命令(0、1),转动参数(0~F),转动步数后,步进电机开始转动,步数逐渐减小到零时步进电机停止转动。

四、内存使用分配表内存使用分配表如表4.1表4.1 内存使用分配表五、设计说明及流程1、数码管显示字形LED显示器是由发光二极管构成的字段组成的显示器。

采用动态显示方式,即一位一位地轮流点亮(扫描)6位显示器。

在8032RAM存储器中设置六个显示缓冲区单元7EH-79H,分别存放6位显示器的显示数据(从高到低)。

显示子程序程序框图如图5.1。

图5.1 显示子程序程序框图2、键盘输入模块实验系统有4×8的键盘结构(见键扫显示原理图)。

键盘的行线通过电阻接+5V,当键盘上没有键闭合时所有的行线和列线都断开,行线都为高电平。

当键盘上某一键闭合时,则该键所对应的行线和列线都短路。

CPU逐行逐列地检查键盘的状态,可判断键盘上有无键闭合。

CPU对键盘上闭合键的键号确定,可根据行线和列线的状态计算求得,也可以根据行线和列线的状态查表求得。

键输入程序框图如图5.2。

图5.2 键输入程序框图3、步进电机控制模块四相四拍运行方式即AB-BC-CD-DA-AB或A-B-C-D-A,激励一相即对该相置“ 1”,控制每一拍的间隔时间用延时子程序实现。

步进电机控制程序框图如图5.3。

图5.3 步进电机控制程序框图六、程序清单ORG 0000HAJMP MAINORG 0050HMAIN:MOV DPTR,#0FF23H ;主程序MOV A,#10000001BMOVX @DPTR,AMOV 79H,#00HMOV 7AH,#00HMOV 7BH,#00HMOV 7CH,#00HMOV 7DH,#00HMOV 7EH,#00HMOV R1,#7EH ;取显示内存缓充区的第一位START:ACALL KEY1 ;调用按键程序MOV @R1,A ;获得的值存放到7EH中CJNE R1,#78H,KS ;是否到78H,不到转KSCJNE A,#16H,AGAIN ;是否按下EXEC键,若是则跳转到RUN LJMP RUN ;调转到步进电机控制部分AGAIN:LJMP MAINKS:DEC R1LJMP STARTRUN:MOV A,7EH ;取当前所存JZ ZHENG ;跳转到正转JNZ FAN ;跳转到反转SJMP $ZHENG:MOV P1,#03H ;给AB两相脉冲ACALL DELAY ;调用延时子程序MOV P1,#06H ;给BC两相脉冲ACALL DELAY ;调用延时子程序MOV P1,#0CH ;给CD两相脉冲ACALL DELAY ;调用延时子程序MOV P1,#09H ;给DA两相脉冲ACALL DELAY ;调用延时子程序ANL 79H,#0FH ;取7EH低四位ANL 7AH,#0FH ;取7DH低四位ANL 7BH,#0FH ;取7CH低四位ANL 7CH,#0FH ;取7BH低四位LCALL DIR ;调用显示子程序MOV R5,79H ;步数由设定值降至0停止 CJNE R5,#0,Z1MOV 79H,#0FHDEC 79HMOV R5,7AHCJNE R5,#0,Z2MOV 7AH,#0FHDEC 7AHMOV R5,7BHCJNE R5,#0,Z3MOV 7BH,#0FHDEC 7BHMOV R5,7CHCJNE R5,#0,Z4LJMP MAINZ1:DEC 79HLJMP ZHENGZ2:DEC 7AHLJMP ZHENGZ3:DEC 7BHLJMP ZHENGZ4:DEC 7CHLJMP ZHENGFAN:MOV P1,#09H ;给AD相脉冲ACALL DELAY ;调用延时子程序MOV P1,#0CH ;给DC相脉冲ACALL DELAY ;调用延时子程序 MOV P1,#06H ;给CB相脉冲ACALL DELAY ;调用延时子程序 MOV P1,#03H ;给BA相脉冲ACALL DELAY ;调用延时子程序 ANL 79H,#0FH ;取7EH低四位 ANL 7AH,#0FH ;取7DH低四位 ANL 7BH,#0FH ;取7CH低四位 ANL 7CH,#0FH ;取7BH低四位 LCALL DIRMOV R5,79H ;步数自减部分 CJNE R5,#0,F1DEC 79HMOV R5,7AHCJNE R5,#0,F2DEC 7AHMOV R5,7BHCJNE R5,#0,F3DEC 7BHMOV R5,7CHCJNE R5,#0,F4LJMP MAINF1:DEC 79HLJMP FANF2:DEC 7AHLJMP FANF3:DEC 7BHLJMP FANF4:DEC 7CHLJMP FANDELAY:MOV A,#10H ;延时调速部分SUBB A,7DHMOV R1,ADELAY10:ACALL DIRDELAY13:DJNZ R1,DELAY10RETDIR:MOV R0,#79HMOV R3,#0FEHLD0:MOV DPTR,#SEG ;扫描值送到SEG MOV A,@R0MOVC A,@A+DPTR ;查表CPL A ;取反MOV DPTR,#0FF21H ;扫描值送到PB口MOVX @DPTR,AMOV A,R3 ;显示字位MOV DPTR,#0FF20HMOVX @DPTR,A ;扫描方式8255口ACALL DL1 ;延时INC R0 ;缓冲区地址加1MOV A,R3JNB ACC.5,LD1 ;判断是否扫描到第六个显示位 RL AMOV R3,AAJMP LD0LD1:RETSEG:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H, ;显示字码段DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,73HDL1:MOV R7,#02H ;延时子程序DL:MOV R6,#0FFHDLA:DJNZ R6,DLADJNZ R7,DLRETKEY1:ACALL KS1 ;调用判断有无键按下子程序JNZ LK1 ;有键按下,转消颤延时ACALL DIR ;无键按下,调用显示子程序AJMP KEY1 ;返回KEY1,继续等待LK1:ACALL DIR ;调用显示子程序ACALL T12ms ;调用12ms延时子程序ACALL KS1 ;调用判断有无键按下子程序,确认按键真实性 JNZ LK2 ;有键按下转逐列扫描子程序AJMP KEY1 ;否则返回KEY1,继续等待LK2:MOV R2,#0FEH ;首列扫描字入R2MOV R4,#00H ;首列号入R4LK4:MOV DPTR,#0FF20H ;列扫面字送至键扫口MOV A,R2 ;第一次列扫描MOVX @DPTR,A ;使第0列线为0MOV DPTR,#0FF22H ;指向键入口MOVX A,@DPTR ;键入口读入行状态JB ACC.0,LONE ;第0行无键按下,转查第1行MOV A,#00H ;第0行有键按下,该行首键号#00HAJMP LKPLONE:JB ACC.1,LTOW ;第1行无键按下,转查第2行MOV A,#08H ;第1行有键按下,该行首键号#08HAJMP LKPLTOW:JB ACC.2,LTHR ;第2行无键按下,转查第3行MOV A,#10H ;第2行有键按下,该行首键号#10HAJMP LKPLTHR:JB ACC.3,NEXT ;第3行无键按下,转查下一列MOV A,#18H ;第3行有键按下,该行首键号#18H LKP:ADD A,R4 ;求原理图上的键号=行首键号+列号MOV DPTR,#TAB ;查找TAB1,将实际键号赋给AMOVC A,@A+DPTRPUSH ACC ;将键号压入堆栈LK3:ACALL DIR ;调用显示子程序ACALL KS1 ;等待键释放JNZ LK3 ;未释放,等待POP ACC ;键释放,键号 ARET ;键扫描结束,出口状态(A)=实际键号NEXT:INC R4 ;指向下一列,列号加1MOV A,R2 ;判断8列是否扫描完JNB ACC.7,KND ;8列扫描完,返回RL A ;扫描字左移一位,转变为下一列扫描字MOV R2,A ;扫描字入R2AJMP LK4 ;转下一列扫描KND:AJMP KEY1KS1:MOV DPTR,#0FF20H ;指向键扫口MOV A,#00H ;全扫描字#0HMOVX @DPTR,A ;全扫描字入键扫口MOV DPTR,#0FF22H ;指向键入口MOVX A,@DPTR ;读键入口行状态CPL A ;变正逻辑,以高电平表示有键按下ANL A,#0FH ;屏蔽高4位RET ;出口状态,(A)=1时有键按下T12ms:MOV R7,#18H ;延时12ms子程序TM:MOV R6,#0FFHDJNZ R6,$DJNZ R7,TMRETTAB:DB 07H,04H,08H,05H,09H,06H,0AH,0BH,01H,00H,02H, ;键表DB 0FH,03H,0EH,0CH,0DH,00H,00H,00H,00H,00H,00H,16HEND七、设计心得通过四天的学习和设计,让我将课上学习到的知识与实践更好的结合起来,通过单片机来实行简单或复杂的控制不再陌生。

相关文档
最新文档