基于单片机的步进电机控制系统
基于单片机的步进电机控制系统的设计与实现

基于单片机的步进电机控制系统的设计与实现一、本文概述本文旨在探讨基于单片机的步进电机控制系统的设计与实现。
随着自动化技术的快速发展,步进电机在各种机械设备中得到了广泛应用,如打印机、机器人、数控机床等。
步进电机控制系统作为其核心组成部分,对于提高设备的运行精度和稳定性具有重要意义。
因此,本文将对基于单片机的步进电机控制系统的设计原理、硬件组成、软件编程等方面进行详细阐述,并通过实验验证系统的可行性和有效性。
本文将对步进电机的基本原理和控制方式进行介绍,为后续系统的设计奠定基础。
将详细介绍基于单片机的步进电机控制系统的硬件组成,包括单片机、步进电机驱动器、电源电路等关键部件的选型与连接。
在此基础上,本文将深入探讨步进电机控制系统的软件编程,包括控制算法的实现、驱动程序的编写等。
本文将通过实验验证基于单片机的步进电机控制系统的性能,分析其优缺点,并提出改进方案。
通过本文的研究,可以为步进电机控制系统的设计提供理论支持和实践指导,推动步进电机在自动化领域的应用发展。
本文的研究也为基于单片机的其他控制系统设计提供了有益的参考和借鉴。
二、步进电机及其工作原理步进电机是一种特殊的电机,其旋转角度与输入的脉冲数成正比,因此也被称为脉冲电机。
步进电机不同于传统的交流或直流电机,其不需要依靠外部电源进行连续供电,而是通过接收一系列离散的脉冲信号,以固定的步长进行旋转。
步进电机通常由定子和转子两部分组成。
定子是由多个电磁铁组成的环形结构,每个电磁铁对应一个特定的步进角度。
而转子则是一个永磁体,它在电磁铁的磁场作用下进行旋转。
当定子上的电磁铁按照特定的顺序和时序进行通电和断电时,转子就会按照固定的步长进行旋转。
步进电机的工作原理可以简单概括为“磁阻最小原理”。
当定子上的电磁铁通电时,会在其周围产生磁场,转子上的永磁体在磁场的作用下会受到力矩的作用,从而发生旋转。
当转子旋转到某个位置时,其上的永磁体与定子上的电磁铁之间的磁阻达到最小,此时转子就稳定在该位置。
基于单片机的步进电机控制系统的设计与实现

基于单片机的步进电机控制系统的设计与实现一、引言步进电机是一种特殊的电动机,它以步进方式运行,每次接收到一个脉冲信号时,电机转动一个固定的角度,因此步进电机广泛应用于各种自动化设备和机械领域。
而为了使步进电机能够准确控制,需要设计一个稳定可靠的步进电机控制系统。
本文,主要是通过编程控制单片机来实现步进电机的精确运行控制。
二、步进电机原理简介步进电机是一种由定子线圈和转子磁极组成的电机,通过电流的变化来产生力矩,驱动转子旋转。
在步进电机内部,转子旋转的步长是固定的,通常为1.8°,也就是每接收到一个脉冲信号,电机转动一个步长。
因此,通过控制脉冲信号的频率和次数,可以实现步进电机的准确旋转。
三、步进电机控制系统设计1. 硬件设计步进电机控制系统的硬件设计主要包括步进电机驱动电路和单片机控制电路。
(1)步进电机驱动电路设计:步进电机驱动电路常用的是双H桥驱动电路,这种电路可以控制电机的正转和反转以及停止。
详尽设计时,需要选用合适的双H桥驱动芯片,并依据步进电机的电压和电流要求,设置电流补偿电阻。
通过电流补偿电阻的调整,可以使步进电机实际工作电流与设定电流一致,保证电机的正常运行。
(2)单片机控制电路设计:选用适合的单片机,如常用的51系列单片机。
单片机需要通过编程控制脉冲信号的频率和次数,从而实现对步进电机的控制。
因此,需要设计适应的时钟电路、控制信号输出电路以及电源电路。
同时,还需要将单片机与步进电机的驱动电路进行毗连,实现单片机对电机的控制。
2. 软件设计步进电机控制系统的软件设计主要包括单片机的程序设计和脉冲信号的生成设计。
(1)单片机程序设计:起首,需要初始化配置单片机,包括时钟设置、IO口功能配置等。
然后,通过编写相应的代码,实现对步进电机控制信号的生成和输出。
这需要依据电机的旋转方向和步数要求,编写相应的控制程序,控制脉冲信号的输出频率和次数。
(2)脉冲信号的生成设计:脉冲信号的生成可以通过定时器来实现。
《2024年基于单片机的步进电机控制系统的设计与实现》范文

《基于单片机的步进电机控制系统的设计与实现》篇一一、引言随着科技的不断发展,步进电机控制系统在各个领域的应用越来越广泛。
本文旨在介绍基于单片机的步进电机控制系统的设计与实现。
首先,简要介绍了步进电机控制系统的重要性和应用场景;其次,概述了本文的主要内容和结构安排。
二、系统概述步进电机控制系统是一种以步进电机为执行元件,通过控制器对步进电机进行精确控制的系统。
本文所设计的步进电机控制系统以单片机为核心,具有体积小、控制精度高、运行稳定等优点。
系统主要由单片机、步进电机、驱动器、电源等部分组成。
三、硬件设计1. 单片机选择单片机是步进电机控制系统的核心,本文选用一款性能较高、价格适中的单片机作为控制器。
该单片机具有较高的处理速度和丰富的接口资源,可满足步进电机控制系统的需求。
2. 步进电机与驱动器选型步进电机是本系统的执行元件,本文选用一种常见的两相混合式步进电机。
驱动器则选用与该步进电机匹配的驱动器,以保证电机的正常运行。
3. 电源设计电源为系统提供稳定的供电,本文设计了一种直流电源,将外部交流电源转换为稳定的直流电源,为系统提供可靠的电力保障。
四、软件设计1. 程序设计流程软件设计主要包括单片机的程序设计。
程序流程主要包括初始化、电机驱动、数据采集与处理、故障诊断等部分。
程序采用模块化设计,便于后期维护和升级。
2. 程序设计细节在程序设计过程中,需要考虑到单片机的运行速度、内存大小等因素。
程序采用C语言编写,具有良好的可读性和可移植性。
在电机驱动部分,需要根据电机的特性和工作要求,合理设置驱动参数,如步进角度、运行速度等。
数据采集与处理部分需要实时采集电机的运行数据,进行分析和处理,以便及时调整电机的运行状态。
故障诊断部分需要实时监测系统的运行状态,一旦发现故障,及时进行报警和处理。
五、系统实现1. 电路连接与调试在硬件设计完成后,需要进行电路连接与调试。
首先,将单片机与步进电机、驱动器等部件进行连接,确保电路连接正确。
《2024年基于单片机的步进电机控制系统的设计与实现》范文

《基于单片机的步进电机控制系统的设计与实现》篇一一、引言随着科技的不断发展,步进电机控制系统在各个领域的应用越来越广泛。
步进电机控制系统是一种通过单片机控制步进电机运动速度和方向的装置,具有精度高、控制方便等优点。
本文将介绍基于单片机的步进电机控制系统的设计与实现,包括系统设计、硬件设计、软件设计以及系统测试等方面。
二、系统设计步进电机控制系统主要由单片机、步进电机、驱动器等组成。
其中,单片机是控制系统的核心,负责控制步进电机的运动方向和速度。
系统的设计主要基于实际应用需求,根据需要确定系统功能,例如设置合适的运行模式和功能,以便更方便地操作和控制步进电机。
在系统设计中,需要注意几个关键问题:首先是确保控制精度,需要保证单片机的运算速度和准确性;其次是提高系统的可靠性,通过采用一些防护措施和稳定的技术来提高系统的稳定性和可靠性;最后是提高系统的灵活性,使系统能够适应不同的应用场景和需求。
三、硬件设计硬件设计是步进电机控制系统的关键环节之一。
在设计时,需要考虑单片机与步进电机之间的连接方式、电源电路、信号处理电路等。
其中,单片机与步进电机之间的连接方式需要选择合适的接口电路,以确保信号传输的稳定性和准确性。
此外,还需要考虑电源电路的设计,以确保系统能够正常工作并具有足够的稳定性。
在硬件设计中,还需要注意以下几点:首先是选择合适的元器件和材料,以确保硬件的质量和性能;其次是进行充分的测试和验证,以确保硬件的可靠性和稳定性;最后是考虑系统的可扩展性,为未来的升级和维护提供便利。
四、软件设计软件设计是步进电机控制系统的另一关键环节。
在软件设计中,需要根据系统需求和硬件配置编写相应的程序代码。
其中,程序代码需要具有高效性、稳定性和可读性等特点。
同时,还需要根据不同的应用场景和需求编写不同的控制算法和程序模块。
在软件设计中,需要注意以下几点:首先是确保程序的正确性和稳定性,通过进行充分的测试和验证来确保程序的可靠性和准确性;其次是优化程序的性能,以提高程序的运行速度和响应速度;最后是考虑程序的易用性和可维护性,以便于后续的升级和维护。
基于51单片机的步进电机控制系统设计

基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
《2024年基于单片机的步进电机控制系统的设计与实现》范文

《基于单片机的步进电机控制系统的设计与实现》篇一一、引言步进电机因其精准的控制能力和高效率的特性在各种机械设备中得到广泛应用。
而单片机作为现代电子技术的核心,具有低成本、高效率的特点。
本文旨在探讨基于单片机的步进电机控制系统的设计与实现,以实现步进电机的精确控制与高效运行。
二、系统设计1. 硬件设计本系统主要由单片机、步进电机、驱动器、电源等部分组成。
其中,单片机作为核心控制器,负责接收上位机指令,解析并输出控制信号给步进电机驱动器。
步进电机驱动器则负责将单片机的控制信号转化为步进电机可以识别的驱动信号,驱动步进电机运转。
(1)单片机选择本系统选用的是STC12C5A60S2型单片机,其具有高性能、低功耗的特点,适合于步进电机控制系统的设计。
(2)步进电机选择本系统选用的步进电机为两相混合式步进电机,具有运行平稳、噪音小等优点。
(3)驱动器选择步进电机驱动器选用专为两相混合式步进电机设计的A4988型号驱动器,该驱动器能有效地提高电机的输出扭矩和效率。
2. 软件设计软件设计主要包括单片机的程序编写和上位机界面的设计。
(1)单片机程序编写单片机程序采用C语言编写,主要实现以下功能:接收上位机指令、解析指令并输出控制信号给步进电机驱动器、实时检测步进电机的运行状态并向上位机反馈信息等。
(2)上位机界面设计上位机界面采用常见的图形化界面设计,便于用户操作。
界面主要包括电机运行参数的设置、运行状态的显示等功能。
用户可以通过界面输入控制指令,这些指令会被发送到单片机进行处理。
三、系统实现系统实现主要包括硬件的搭建与调试、单片机的编程与测试、上位机界面的开发等步骤。
1. 硬件搭建与调试按照设计图纸将各部分硬件进行组装,并进行调试,确保各部分硬件工作正常。
2. 单片机编程与测试根据程序设计编写单片机程序,并进行调试和测试,确保程序能够正确接收和处理上位机指令,并能够输出正确的控制信号给步进电机驱动器。
3. 上位机界面的开发根据需求开发上位机界面,实现用户友好的操作界面和丰富的功能。
《2024年基于单片机的步进电机控制系统的设计与实现》范文

《基于单片机的步进电机控制系统的设计与实现》篇一一、引言随着现代科技的飞速发展,步进电机控制系统在各种自动化设备中得到了广泛应用。
步进电机控制系统的性能和效率直接影响到设备的运行效果。
本文将详细介绍基于单片机的步进电机控制系统的设计与实现过程,旨在提高步进电机控制系统的稳定性和可靠性。
二、系统设计1. 硬件设计本系统采用单片机作为核心控制器,配合步进电机驱动器、电源模块、输入输出设备等组成。
其中,单片机选用具有高性能、低功耗特点的型号,以满足系统的高效运行需求。
步进电机驱动器选用具有较高驱动能力的模块,以实现对步进电机的精确控制。
(1) 单片机模块:作为整个系统的核心,负责接收输入信号、处理数据并输出控制信号。
(2) 步进电机驱动器模块:接收单片机的控制信号,驱动步进电机进行运动。
(3) 电源模块:为整个系统提供稳定的电源供应。
(4) 输入输出设备:包括按键、LED灯等,用于实现人机交互。
2. 软件设计软件设计主要包括系统初始化、信号处理、控制算法实现等部分。
系统初始化包括单片机配置、中断设置等;信号处理主要是对输入信号进行采集、分析和处理;控制算法实现则是根据处理后的信号,输出控制步进电机的指令。
(1) 系统初始化:设置单片机的工作模式、时钟频率等,为后续的信号处理和控制算法实现做好准备。
(2) 信号处理:通过ADC(模数转换器)采集输入信号,进行滤波、放大等处理,以提高信号的抗干扰能力和信噪比。
(3) 控制算法实现:根据处理后的信号,采用适当的控制算法(如PID控制、模糊控制等)输出控制步进电机的指令。
三、系统实现1. 硬件连接根据系统设计,将单片机、步进电机驱动器、电源模块、输入输出设备等连接起来。
确保各模块之间的连接正确、稳定。
2. 编程实现根据软件设计,使用C语言或汇编语言编写程序代码。
程序代码应包括系统初始化、信号处理、控制算法实现等部分。
在编写过程中,应注意代码的健壮性、可读性和可维护性。
基于单片机的步进电机控制系统设计与实现

基于单片机的步进电机控制系统设计与实现1. 本文概述随着现代工业自动化水平的不断提高,步进电机因其高精度、易控制等特点,在各个领域得到了广泛应用。
本文旨在设计并实现一种基于单片机的步进电机控制系统,以实现步进电机的精确控制和高效运行。
本文首先对步进电机的原理和工作特性进行了详细分析,然后选择了合适的单片机作为控制核心,并设计了系统的硬件和软件部分。
在硬件设计方面,本文详细介绍了电源模块、驱动模块、信号处理模块等关键部分的设计与实现在软件设计方面,本文阐述了系统控制算法的设计和程序流程的实现。
通过实验验证了系统的稳定性和可靠性,并对实验结果进行了详细分析。
本文的研究成果对于提高步进电机控制系统的性能,促进工业自动化技术的发展具有重要的理论和实际意义。
2. 步进电机原理及特性步进电机是一种电动机,它将电脑指令转换为机械运动,每接收到一个脉冲信号就转动一个步距角。
这种电机的主要特点是其“步进”功能,即它可以在没有反馈系统的情况下,通过控制脉冲的数量和频率来精确控制旋转的角度和速度。
步进电机的工作原理基于电磁学,它通过施加脉冲电流到电机的线圈上来产生旋转力矩。
电机内部有多个线圈,它们按一定的顺序被激活,产生磁场,这个磁场与永磁体相互作用,从而推动电机的转子转动。
每个线圈的激活对应一个步距角,通过控制线圈的激活顺序和时间,可以实现精确的角度控制。
精确控制:步进电机能够精确地控制旋转的角度和速度,这对于需要精确定位的应用场景非常重要。
无需反馈系统:与伺服电机不同,步进电机不需要外部反馈系统来控制位置,这简化了控制系统的设计。
低速度时的高扭矩:步进电机在低速时能提供较高的扭矩,适合于需要大扭矩但速度不高的场合。
控制简便:步进电机的控制通常只需要简单的数字信号,易于与微控制器或单片机接口。
速度与扭矩的可调性:通过改变脉冲频率和电流大小,可以调整步进电机的转速和扭矩。
失步问题:在高速或高负载的情况下,步进电机可能会出现失步现象,即电机的实际位置与控制信号指示的位置不同步。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J I A N G S U U N I V E R S I T Y单片机课程设计-----步进电机控制所属学院:电气信息工程学院专业班级:电气卓越姓名:学号:指导教师:孙日期: 2015年6月26日一.设计任务1.从键盘上输入正、反转命令,转速参数(16级)和转动步数显示在LED 显示器上。
显示器上显示:第一位为0表示正转,为1表示反转;第二位0~F 为转速等级,第三到第六位设定步数。
2. 单片机依显示器上显示的正、反转命令,转速级数和转动步数进行相应动作,转动步数减为零时停止转动。
二.工作原理1.步进电机原理如图,当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。
那么,通过对它每相线圈中电流的顺序切换可使电机作步进式旋转。
相数:产生不同对极N、S磁场的激磁线圈对数。
拍数:指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB或A-B-C-D-A,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A.步距角:对应一个脉冲信号电机转子转过的角位移.步距角=360/(转子齿数*拍数)=18度2.LED显示器原理LED数码管实际上是由七个发光管组成8字形构成的,这些段分别由字母a,b,c,d,e,f,g,dp来表示。
LED显示器有共阳极和共阴极两种接法,共阴极显示器的发光二极管阴极LED连接在一起,通常此公共阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示;同样,共阳极显示器的发光二极管LED阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极为低电平时,发光二极管点亮,相应的字段被点亮。
3.键盘接口原理键盘实际上是由排列成矩阵形式的一系列按键开关组成,用户通过键盘可以向CPU输入数据,地址和命令。
我们主要需要解决键的识别与键的抖动消除和键的保护等问题。
采用8255A接口芯片构成的4*8键盘的接口电路,其中A口为输入,作为列线;C口为输入作为行线。
当所有的键没有被按下时,C口输入均为高;若某列线为低时,恰好该列上有键被按下,则键所在的行线为低。
三.设计原理及步骤系统中使用20BY-0型号步进电机,它使用+5V直流电源,步距角为18度,电机线圈由A、B、C、D四相组成。
步进电机控制原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
BA、BB、BC、BD即为脉冲信号输入插孔,驱动器输出A、B、C、D接步进电机。
步骤:先根据书本的键盘扫描程序与数码管显示程序,设计了键盘显示程序,然后是数码管显示程序,把二者整合到一起,调试成功后,再设计了驱动电机程序,实现电机的正反转与调速控制。
四.硬件原理接线图⏹步进电机模块插头接实验系统J3插座,(顺接)⏹把P1.0~P1.3分别接到BA~BD插孔。
P1.0P1.1P1.2P1.380321234569874LS0475452126735126735VCCA BC DJ34.7kX4BB BC BA BD五.设计说明及流程图1.数码管显示字形LED显示器是由发光二极管构成的字段组成的显示器。
显示程序任务:设置显示缓冲区(7EH-79 H),存放待显示数据和字符(位置码)。
显示译码:程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。
输出显示:输出字形码到显示端口。
2.字位口表(从高位起)3.键盘显示原理图(1)显示子程序模块采用动态显示方式,即一位一位地轮流点亮(扫描)6位显示器。
在8032RAM 存储器中设置六个显示缓冲区单元7EH-79H,分别存放6位显示器的显示数据(由高到低)。
(2)键盘输入模块1.实验系统有4×8的键盘结构(见键扫显示原理图)。
2.键盘的行线通过电阻接+5V,当键盘上没有键闭合时所有的行线和列线都断开,行线都为高电平。
当键盘上某一键闭合时,则该键所对应的行线和列线都短路。
3.CPU逐行逐列地检查键盘的状态,可判断键盘上有无键闭合。
CPU对键盘上闭合键的键号确定,可根据行线和列线的状态计算求得,也可以根据行线和列线的状态查表求得。
键号=行首键号+列号。
键输入流程图下图是实际的4*8键盘的分布图,每个方框代表一个键,中间的数字代表键值,即键盘上印的数值,每个键上方的小数字代表键在扫描时的键号。
3.步进电机控制步进电机工作时序波形图单四拍双四拍八拍四相双四拍脉冲分配表A B C DN 1 1 0 0N+1 0 1 1 0N+2 0 0 1 1N+3 1 0 0 1根据表格得出控制步进电机正反转的控制字RM: DB 03H,06H,0CH,09H,00H ;正转控制字LM: DB 03H,09H,0CH,06H,00H ;反转控制字步进电机采用四相四拍运行方式,即AB-BC-CD-DA-AB或A-B-C-D-A;程序中,控制对应激励一相即对该相置“1”,即置相应P1口为1;通过控制每一拍的间隔时间用延时子程序实现步进电机转速的控制。
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会转出一步。
两个脉冲的时间间隔越短,步进电机就转的越快。
调整送给步进电机的脉冲频率,就可以对步进电机转速进行控制。
内存使用分配表六.程序清单ORG 0000HAJMP MAINORG 001BHLJMP T1INTORG 0300H ;主程序入口MAIN: ACALL SHURU ;调用输入子程序,等待确认后返回MOV R1,79H ;设置显示缓冲区MOV R2,7AHMOV R3,7BHMOV R4,7CHMOV R5,#00HMOV A,7DH ;读取设定的速度等级MOV R6,#4 ;循环左移四位N1: RL ADJNZ R6,N1MOV TMOD,#10H ;T1模式1,16位计数MOV TH1,A ;将左移后的速度等级存放到TH1MOV TL1,#00H ;按此装载,则0等级的定时时间最长,转速最慢,F转速最快SETB EA ;开中断SETB ET1SETB TR1WAIT: ACALL XS ;调用显示子程序,并等待T1中断JNB ET1,N5 ;若中断关闭则步数已减为零,重新执行主程序SJMP WAITN5 : AJMP MAINRM: DB 03H,06H,0CH,09H,00H ;正转控制字LM: DB 03H,09H,0CH,06H,00H ;反转控制字T1INT:PUSH ACC ;T1中断服务子程序,保护现场PUSH PSWPUSH DPHPUSH DPLMOV A,7EH ;读取转向JNZ LEFT ;如果A中的内容不为0,则转向left,转反转MOV DPTR,#RM ;如果A中的内容为0,则转正转AJMP N2LEFT: MOV DPTR,#LMN2: MOV A,R5 ;设置R5作为RM或LM的偏移量MOVC A,@A+DPTRMOV P1,AINC DPTRMOV A,R5MOVC A,@A+DPTR ;取下一步控制字JNZ NEXT1 ;如果A不为0,则转NEXT1,R5自增一,否则清零MOV R5,#00HAJMP N3NEXT1:INC R5N3: CJNE R1,#00H,M1 ;执行步数减一,并判断是否为0 CJNE R2,#00H,M2CJNE R3,#00H,M3CJNE R4,#00H,M4CLR ET1 ;步数减为0,关闭中断CLR EAM4: DEC R4MOV R3,#09HMOV 7CH,R4AJMP M43M3: DEC R3M43: MOV R2,#09HMOV 7BH,R3AJMP M32M2:DEC R2M32: MOV R1,#09HMOV 7AH,R2AJMP M21M1: DEC R1M21: MOV 79H,R1MOV A,7DHMOV R6,#4N4: RL ADJNZ R6,N4MOV TH1,AMOV TL1,#00HPOP DPL ;恢复现场POP DPHPOP PSWPOP ACCRETI ;中断返回SHURU:MOV R0,#7EH ;置显示缓冲器指针初值MOV R1,#7EH ;置键入缓冲指针初值MOV 79H,#00H ;初始化设定值,使数码管“灭”MOV 7AH,#00HMOV 7BH,#00HMOV 7CH,#00HMOV 7DH,#00HMOV 7EH,#00HMOV R3,#06H ;存放未设置数码管个数SHURU1:ACALL KS1 ;判断是否有键闭合JZ XY ;A=0,表明无键闭合,调显示延时ACALL XD ;A不为0,表明有键闭合,进行消抖延时CJNE A,#16H,XYRETXY: ACALL XSAJMP SHURU1XD: ACALL T12msACALL KS1JNZ N0RETN0: ACALL SAOM1RETSAOM1: MOV R2,#0FEH ;R2记列的扫描字MOV R4,#0H ;R4记列号SAOM2: MOV DPTR,#0FFDDH ;将扫描字送列MOV A,R2MOVX @DPTR,AINC DPTR ;指向行地址MOVX A,@DPTR ;读取行值JB ACC.0,LONE ;第0行无键按下,转查第二行MOV A,#00H ;第0行有键按下,置0行首键号00hAJMP QJH ;转向求键号程序LONE:JB ACC.1,LTW0MOV A,#08HAJMP QJHLTW0: JB ACC.2,LTHRMOV A,#10HAJMP QJHLTHR: JB ACC.3,NEXTMOV A,#18HAJMP QJHQJH: ADD A,R4 ;键号=行首键号+列号PUSH ACC ;键号进栈保护SAOM3: ACALL KS1 ;等待键释放JNZ SAOM3POP ACC ;释放后返回A中所存的键号CJNE A,#16H,AAA ;根据键号判断是否确认键AJMP CHSAAA: ACALL QJZ ;根据键号求键值,返回A中为待显示值MOV @R1,ADEC R1DJNZ R3,CHS ;如果按键值超过6位,则重新设置设定值MOV R3,#06HMOV R1,#7EHCHS: RETNEXT: INC R4 ;增加列号值MOV A,R2JNB ACC.7,CHS ;第8列是否已经扫描RL A ;如果没扫描,就转下一列扫描MOV R2,AAJMP SAOM2QJZ: MOV DPTR,#TAB1 ;求键值的子程序MOVC A,@A+DPTRRETTAB1:DB 7,4,8,5,9,6,0AH,0BH ;按顺序为键号0-31,表中为对应键值DB 1,0,2,0FH,3,0EH,0CH,0DHDB 0,1,0,1,0,1,0,1DB 2,3,2,3,2,3,2,3XS: MOV 30H,#20H;30H单元存放字位码XS1: MOV DPTR,#TABMOV A,@R0 ;R0指向7E-79H单元MOVC A,@A+DPTR ;查表得R0所指单元值的字形码MOV DPTR,#0FFDCHMOVX @DPTR,A ;送字形口地址MOV DPTR,#0FFDDHMOV A,30HMOVX @DPTR,A ;送子位码地址ACALL T1ms ;延时1msDEC R0JB ACC.0,XS2 ;判断是否已显示最右边的数码管,是则重置指针R0 RR AMOV 30H,AAJMP XS1XS2: MOV R0,#7EHRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 80H,90H,88H,83H,0C6H,0A1H,86H,8EHT1ms:MOV R7,#02H ;延时1msL4: MOV R6,#0F8HL3: DJNZ R6,L3DJNZ R7,L4RETT12ms:MOV R7,18H ;延时12msL6: MOV R6,#0F8HL5: DJNZ R6,L5DJNZ R7,L6RETKS1: MOV DPTR,#0FFDDH ;判断闭合子程序,有键闭合则A不为0MOV A,#00HMOVX @DPTR,AINC DPTRMOVX A,@DPTRCPL AANL A,#0FHRETEND七.设计心得体会为期一周的单片机课程设计到此结束,此次课设的任务安排如下:第一天、第二天做键盘和显示,第三天,驱动电机,第四天,总结,调试运行,第五天,准备答辩。