基于89C51单片机直流电机控制及其程序
- 格式:doc
- 大小:583.71 KB
- 文档页数:13
单片机在直流调速中的应用技术研究作者:任华伟来源:《科技资讯》2012年第32期摘要:本文基于应用单片机控制电机调速技术,首先概述了直流电机调速方式,进而分析了应用单片机控制电机调速的技术优势,并介绍了应用最为广泛的PWM技术原理,进而通过设计实例(以89C51为例),介绍了应用单片机控制电机调速系统的设计流程。
关键词:单片机直流电机调速 PWM技术中图分类号:TM33 文献标识码:A 文章编号:1672-3791(2012)11(b)-0061-01直流电动机由于转速调节灵活、技术成熟、调速平滑以及控制性能好的特点,广泛应用于数控机床,工业机器人等工厂自动化设备中。
随着自动化控制系统的快速发展及应用,利用先进的单片机技术制造出技术成熟可靠的直流电机控制系统,对于促进直流电动机的应用具有非常重要的实际意义。
由于单片机具有体积小、集成度高、运算速度快、运行可靠、应用灵活、价格低廉以及面向控制等特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到广泛的应用。
随着单片机应用技术水平不断提高,目前单片机的应用领域已经遍及几乎所有的领域。
现在国内外工业上对电机的调速基本已经不再使用模拟调速,而采用数字调速系统,而数字调速系统大部分都是用单片机来进行控制,数字调速系统具有控制精确度高,非常稳定,受环境影响小,效率高等优点,所以在国内外的使用越来越广泛。
与交流电动机相比,直流电机结构复杂、成本高、运行维护困难,但是直流电机具有良好的调速性能、较大的启动转矩和过载能力强等许多优点,因此在许多行业仍大量应用。
1 直流电机的特性及调速方式直流电机的调速主要有以下几种。
(1)PWM直流调整系统。
其原理是将直流控制信号与三角波经调制电路产生一系列脉宽不等的脉冲信号,做功率放大后驱动大功率器件。
控制调制方波的占空比,便可以改变输出平均电压。
将PWM输出电压接至直流电动机的电枢两端,便可组成性能优良的调速系统。
课程论文题目:基于MCS-51单片机的直流小电机PWM调速设计姓名:***学号:****院系:电子与信息工程学院专业:电气工程及其自动化指导老师:****老师设计时间:2013年 4 月基于MCS-51单片机的直流小电机PWM调速设计摘要:本文首先简要介绍了直流小电机的脉宽调速方式,然后详细设计了基于MCS-51单片机的直流小电机脉宽调速的实现方法,此方法可实现直流小电机的7个速度级的调速功能,最后给出了调速程序框图。
关键词:PWM,单片机,直流电机。
Abstract:The mode of DC-motor PWM speed regulation is introduced briefly, a kind of PWM speed regulation of DC-motor using the MCS-51 Microcontroller is designed detailedly, and this method can implement seven-level speed control of the motor, the diagram of PWM speed regulation was given in the end.Keywords: PWM Single Chip Microcontroller DC-motor.目录1. 引言 (3)2. 总体设计概述 (3)2.1 总体硬件电路设计 (4)2.1.1系统总体设计框图 (4)2.1.2 8051单片机简介 (4)2.2 PWM信号发生电路设计 (6)2.2.1 PWM的基本原理 (6)2.3 直流电机调速的实现 (7)3.系统中程序设计 (10)4. 直流电机调速框图 (11)结论 (12)致谢 (12)参考文献 (12)1.引言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。
直流电机控制器设计说明书1.1 设计思想直流电机PWM 控制系统主要功能包括:直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,还可以方便读出电机转速的大小,能够很方便的实现电机的智能控制。
其间,还包括直流电机的直接清零、启动、暂停、连续功能。
该直流电机系统由以下电路模块组成:振荡器和时钟电路:这部分电路主要由89C51单片机和一些电容、晶振组成。
设计输入部分:这一模块主要是利用带中断的独立式键盘来实现。
设计控制部分:主要由89C51单片机的外部中断扩展电路组成。
设计显示部分:包括液晶显示部分和LED 数码显示部分。
LED 数码显示部分由七段数码显示管组成。
直流电机PWM 控制实现部分:主要由一些二极管、电机和L298直流电机驱动模块组成。
1.2 系统总体设计框图直流电机PWM 调速系统以AT89C51单片机为核心,由命令输入模块、LED 显示模块及电机驱动模块组成。
采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给直流电机驱动芯片发送PWM 波形,H 型驱动电路完成电机正,反转控制;同时单片机不停的将从键盘读取的数据送到LED 显示模块去显示,进而读取其速度。
1.3 程序设计流程图图1-2中断服务流程图2 总体硬件电路设计2.1 芯片介绍2.1.1 89C51单片机结构特点: 8位CPU ;片内振荡器和时钟电路; 32根I/O 线;外部存贮器寻址范围ROM 、RAM64K ; 2个16位的定时器/计数器; 5个中断源,两个中断优先级; 全双工串行口;图1.2 定时中断服务流程图布尔处理器。
图2-1 89C51单片机引脚分布图2.1.2 RESPACK-8排阻RESPACK-8是带公共端的8电阻排,它一般是接在51单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。
图2-2 RESPACK-8引脚分布图2.1.3 驱动器L298L298是双电源大电流功率集成电路,直接采用TTL逻辑电平控制,可用来驱动继电器,线圈,直流电动机,步进电动机等电感性负载。
基于AT89C51单⽚机和ULN2003驱动芯⽚的步进电机控制及驱动电路系统的设计摘要 (1)Abstract (2)第⼀章.绪论 (2)1.1设计背景 (4)1.2关于国内外同类产品的发展和应⽤ (4)1.3 本⽂所做的⼯作 (5)1.4 研究内容与安排 (5)第⼆章系统总体⽅案设计 (7)2.1 设计原理 (7)2.2 主要元器件介绍 (8)2.2.1 四相六线步进电机的介绍 (8)2.2.2 AT89C51单⽚机芯⽚介绍 (10)2.2.3 ULN2003芯⽚介绍 (11)2.2.4 LED七段数码管介绍 (12)第三章步进电机控制及驱动系统电路设计实现 (13)3.1 硬件设计 (13)3.2 软件设计 (17)第四章电路调试 (18)第五章总结 (20)致谢 (21)参考⽂献 (22)附录 (23)摘要本⽂主要研究了⼀种基于AT89C51单⽚机和ULN2003驱动芯⽚的步进电机控制及驱动电路系统的设计。
该系统可分为:控制模块、驱动模块、显⽰模块、⼈机交互模块四⼤部分。
其中采⽤AT89C51单⽚机作为控制模块的核⼼,利⽤单⽚机编程实现了对步进电机启动停⽌、正转反转、加速减速等功能的基本控制。
驱动模块由芯⽚ULN2003A驱动步进电机⼯作;显⽰部分由七段LED共阴数码管组成;⼈机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器,具有结构简单、可靠性⾼、实⽤性强、⼈机接⼝简单⽅便、性价⽐⾼等特点。
此外,本⽂还介绍了步进电机的基本原理及AT89C51单⽚机的性能特点。
关键词:步进电机;ULN2003; AT89C51;AbstractThis article mainly introduced the basic principle of stepping motor and the performance characteristics of AT89C51.Design research based on AT89C51 and ULN2003 stepper motor driver chips control and drive circuit system.The system can be divided into: control module, drive module, display module, human–computer interaction module.The AT89C51 single chip microcomputer as the core of the control module, microcontroller programming has realized the start stop the stepper motor, forward reverse, speed reducer, and other functions of basic control.Driver module driven by chip ULN2003A stepper motor;Display section is made up of seven segment digital tube LED, Yin;Man-machine interchangeable parts by the corresponding button to achieve the corresponding function.Through the actual test show that the system performance is superior to the traditional stepping motor controller is designed, with simple structure, high reliability and strong practicability, simple and convenient man-machine interface, high cost performance, etc.Key words: stepper motor;ULN2003;AT89S52 devices.摘要 (1)Abstract (2)第⼀章.绪论 (4)1.1设计背景 (4)1.2 关于国内外同类产品的发展和应⽤ (4)1.3 本⽂所做的⼯作 (5)1.4 研究内容与安排 (5)第⼆章系统总体⽅案设计 (7)2.1 设计原理 (7)2.2 主要元器件介绍 (8)2.2.1 四相六线步进电机的介绍 (8)2.2.2 AT89C51单⽚机芯⽚介绍 (10)2.2.3 ULN2003芯⽚介绍 (11)图2.6 ULN2003逻辑图 ..................................................................................................................... 11 2.2.4 LED 七段数码管介绍............................................................................................................... 12 图2.7六位LED 共阴数码显⽰管图 (12)第三章步进电机控制及驱动系统电路设计实现 (13)3.1 硬件设计 (13)1B 11C 162B 22C 153B 33C 144B 44C 135B 55C 126B 66C 117B77C10COM 9U2ULN2003AXTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51 ............................................................................................................................................................ 14 3.2 软件设计.. (17)第四章电路调试 ................................................................................................... 18 第五章总结............................................................................................................. 20 致谢......................................................................................................................... 21 参考⽂献................................................................................................................. 22 附录 . (23)第⼀章.绪论1.1设计背景电⽓时代的今天,电动机⼀直在现代化的⽣产和⽣活中起着⼗分重要的作⽤。
前言 (1)正文 (1)2.1 设计目的和意义 (1)2.1.1 设计目的 (1)2.1.2 设计意义 (1)2.2 设计方法 (1)2.3设计内容 (2)2.3.1 89C51单片机介绍 (2)2.3.2内容概要 (3)2.4电路分析 (3)2.4.1程序流程图 (3)2.4.2元件清单 (4)2.4.3程序电路图 (5)2.4.4程序运行结果 (5)2.4.5 Proteus调试与仿真 (5)结论 (6)总结 (7)参考文献 (8)直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。
从控制的角度来看,直流调速还是交流拖动系统的基础。
早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂.功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。
随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更高的性能。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
正文2.1 设计目的和意义2.1.1 设计目的作为理工科的学生应该在学习与动手实践中提高自己的专业技能知识,通过课程设计使我进一步熟悉了单片机的内部结构和工作原理,掌握了单片机应用系统设计的基本方法和步骤;通过利用AT89C52单片机,理解单片机在自动化装置中的作用以及掌握单片机的编程调试方法;通过设计一个简单的实际应用输入控制及显示系统,掌握protues和Wave以及各种仿真软件的使用。
现在的学习都是为以后的发展而做铺垫,通过课程设计提高自己的动手能力。
2.1.2 设计意义加深理解直流电机在单片机上的运用,增进对电路仿真的兴趣。
2.2 设计方法定义输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。
曾胜1,王兵2,胡须胜1,师浩1(1.皖江工学院 电气工程学院,安徽 马鞍山 243031;2.安徽工业大学 电气与信息工程学院,安徽 马鞍山 243000)摘要:采用SCT89C51单片机作为此次设计的控制芯片,由LCD1602液晶显示屏来展示电机的转速和占空比的相关实时数据,让用户能够更加清楚地看到电机的状态;在系统上增加按键以便于用户控制电机转速的快慢调整。
当电机通电开始运作时,LCD1602显示屏亮起,通过按键增加电机转速,液晶显示器上也会显示实时的转速数据;减速度按键使电机减速,用户可以通过正反转按键切换电机的旋转状态。
关键词:PWM电机调速;STC89C51单片机;LCD1602液晶显示屏Based on STC89C51 MCU PWM Motor Speed Regulation Zeng Sheng1, Wang Bing2, Hu Xusheng1, Shi Hao1(1�School of Electrical Engineering, Wanjiang University of Technology, Maanshan 243031, China;2� School of Electrical and Information Engineering, Anhui University of Technology,Maanshan 243000, China)Abstract: Uses STC89C51 microcontroller as the control chip of this design, and LCD1602 liquid crystal screen to display the motor speed and duty cycle related real-time data� So that users can see the state of the motor more clearly and concisely, in the system to increase the keys for users to control the speed of the motor adjustment� When the motor is energized and starts to operate, the LCD1602 display screen lights up, and the motor speed is increased by pressing the button� The LCD display will also display real-time speed data� When the motor decelerates by decelerating the button; The user can switch the rotation state of the motor through the positive and negative keys�Key Words:PWM motor speed regulation; STC89C51 MCU; LCD1602 screen0 引言直流驱动器的早期是由模拟单子控制器构成的控制设备。
1 引言随着微电子技术的不断发展与进步,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
在现代工业中,直流电动机作为电能转换的传动装置,被广泛应用于机械、冶金、石油、化工、国防等工业部门中。
直流电动机是将直流电能转换为机械能的电动机。
因其良好的调速性能而在电力拖动中得到广泛应用。
随着对生产工艺、产品质量的要求不断提高和产量的增长,越来越多的生产机械要求能实现自动调速。
直流调速系统的发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就。
正是这些技术的进步使直流调速系统发生翻天覆地的变化。
其中电机的控制部分已经由模拟控制逐渐让位于以单片机为主的微处理器控制,形成数字与模拟的混合控制系统和纯数字控制系统,并向全数字控制方向快速发展。
本文设计了用DAC0808设计直流电动机调速器的基本方案,阐述了该调速器系统的基本结构、工作原理、运行特性及其设计方法。
本系统用电压表测量直流电动机的转速,用MCS-51单片机输出数字信号通过DAC0808芯片实现数模转换,从而输出模拟电压来控制调节直流电动机的转速。
本设计主要研究利用单片机及DAC0808实现数模转换调速,直流电机的控制和测量方法,从而对直流电机的调速控制精度、响应速度以及节约能源等都具有重要意义。
2 设计总体方案2.1 设计要求基本要求:使用AT89C51单片机为核心,使用数模转换元件DAC0808对单片机输出的数字信号进行转换,输出模拟信号驱动直流电动机。
具体要求:在设计中,设计8个按键对应直流电动机的8挡不同转速,按下不同按键时,电动机将以不同速度转动,在8个按键中取一个按键为直流电动机转动停止按键。
8挡不同转速的设定由学生自己决定。
仿真:控制程序在Keil软件中编写,编译,整个控制电路在Proteus仿真软件中连接调示。
运用89C51单片机控制直流电机2008年03月06日星期四 08:28本设计以AT89C51单片机为核心,以4*4矩阵键盘做为输入达到控制直流电机的启停、速度和方向,完成了基本要求和发挥部分的要求。
在设计中,采用了PWM 技术对电机进行控制,通过对占空比的计算达到精确调速的目的。
一、设计方案比较与分析:1、电机调速控制模块:方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。
但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。
更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。
方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。
这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。
方案三:采用由达林顿管组成的H型PWM电路。
用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。
兼于方案三调速特性优良、调整平滑、调速范围广、过载能力大,因此本设计采用方案三。
2、PWM调速工作方式:方案一:双极性工作制。
双极性工作制是在一个脉冲周期内,单片机两控制口各输出一个控制信号,两信号高低电平相反,两信号的高电平时差决定电动机的转向和转速。
方案二:单极性工作制。
单极性工作制是单片机控制口一端置低电平,另一端输出PWM信号,两口的输出切换和对PWM的占空比调节决定电动机的转向和转速。
由于单极性工作制电压波开中的交流成分比双极性工作制的小,其电流的最大波动也比双极性工作制的小,所以我们采用了单极性工作制。
3、PWM调脉宽方式:调脉宽的方式有三种:定频调宽、定宽调频和调宽调频。
我们采用了定频调宽方式,因为采用这种方式,电动机在运转时比较稳定;并且在采用单片机产生PWM脉冲的软件实现上比较方便。
课程实训报告课程名称:单片机与接口技术实训题目:红外控制直流电机正反转任务书一、实训任务设计一款基于AT89C51单片机用红外遥控控制电机的正反转加减速。
二、设计要求1. 基本要求1).用无线模块控制电机的正反转加减速,实现自动化控制。
2).通过对AT89C51单片机的编程,实现直流电机的正反转,加减速。
3).写出详细的设计报告。
4).给出全部电路和源程序。
2. 发挥部分1).可通过PC机,对系统编程,实现直流电机转速的快慢。
摘要随着科技的不断进步,人们进入了无线电时代,它为我们的生活带来了极大的方便。
像现在的移动电话,无线网络,无线鼠标,无线键盘等都已经融入了我们的生活当中。
从我们身边的电子产品就可以看出我们已经进入了无线电时代。
本设计就是一款基于AT89C51的用无线模块控制的电机的正反转以及它的加减速。
这非常适应于在工厂使用,特别是在工业控制中。
可以想象,机器在工厂运转时,我们只需要用无线遥控来控制电机的转速以及它的转向,这样我们就可以在远处来控制了,用不着再跑到电机的旁边来控制开关,为工厂生产带来了极大的方便。
软件上采用C51编程,主要编写了主程序,直流电机驱动程序,中断程序延时程序等。
经过调试,实现了对电机的控制。
关键词:AT89C51 L298 PWM 直流电机无线模块目录第一章绪论 (5)1.1 概述 (5)1.2 设计目的 (5)1.3 设计任务和内容 (5)第二章总体设计及核心器件简介 (7)2.1总体设计 (7)2.2 AT89C51 (7)2.3 L298 (9)引脚介绍: (10)2.4 伺服电机介绍 (11)2.5 PT2262/PT2272 (12)第三章单元电路模块设计 (17)3.1 复位电路 (17)3.2时钟电路 (18)3.3电机驱动电路图 (18)3.4PWM调速系统设计 (19)第四章软件编程设计 (21)4.1 设计思想 (21)4.2 流程图 (21)4.3源程序 (22)第五章设计心得和存在问题 (26)第一章绪论1.1 概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
课程设计说明书院系:船舶工程学院班级:姓名:学号:机电综合课程设计设计题目:直流电机控制系统立体目的:通过本次课程设计,达到培养学生综合应用所学知识,分析和解决实际工程问题,锻炼创造能力的目的。
技术要求:设计直流电机控制系统,包括:机械装配图,控制原理图和接线图,并编制相应的控制程序。
完成基于89C51单片机开发板的直流电机速度控制,启停及正反转控制。
一.机械系统由直流电机驱动滚珠丝杠实现滑台的平移。
将电机的旋转运动通过滚珠丝杠转换为平台的直线运动。
系统组成:直流电机,底板,支座,光杠,滚珠丝杠,平台等。
二.电气系统1. 直流电机电机采用无刷直流电机,型号为:BL-2203C。
其特点是调速范围宽,低速力矩大,运行平稳,低噪声,高效率。
电机接线,两股线,一股为电机线,一股为电机霍尔线。
2.驱动器驱动器采用无刷直流电机驱动器。
接线端子说明:驱动器由220V交流供电。
驱动器调速方式(1)内部电位器调速:逆时针旋转驱动器控制面板上的电位器,电机速度减小,顺时针则转速增大:由于测速需要响应时间,速度显示会滞后。
(2)外部输入调速:将外接电位器的两端分别接于驱动器的“+12”和“COM”端上,将调解段接于“AVI”上即可使用外接电位器调速,也可以通过其他控制单元输入模拟电平信号到“AVI”端实现调速。
(3)多段速度选择:通过控制驱动器上的CH1—3三个端子的状态可以选择内部预先设定的几种转速。
电机运行/停止控制(R/S)通过控制端子“R/S”相对于“COM”的通、断可以控制电机的运行和停止。
端子“R/S”内部以电阻上拉到+12,可以配合无源触点开关使用,也可以配合集电极开路的PLC 等控制单元;当“R/S”与端子“COM”断开时电机运行,反之电机停止。
使用运行/停止端控制电机停止时,电机为自然停车,其运动规律与负载惯性有关;电机正/反转控制(F/R)通过控制端子“F/R”与端子“COM”的通、断可以控制电机的运转方向。
端子“F/R”内部以电阻上拉到+12,可以配合无源触点开关使用,也可以配合集电极开路的PLC等控制单元;当“F/R”与端子“COM”不接通时电机顺时针运行(面对电机轴),反之则电机逆时针方向运转;为避免驱动器的损坏,在改变电机转向时应先使电机停止运动后再操作改变转向,避免在电机运行时进行运转方向控制。
驱动器典型接线图使用注意事项:(1)因本驱动器220V高压输入,为确保安全在上电工作前必须接地端子(FG)可靠的与大地连接,任何情况下请不要打开机壳避免意外的损伤!(2)驱动器安装时应保证设备的通风良好;机柜内有多个驱动器并列使用时要保证相互之间的距离不小于10cm。
3. LY-51S单片机开发板应用开发板上的单片机,八个独立按键,8个LED灯,两个继电器。
4. 控制系统基于51S单片机的直流电机控制系统。
系统组成:无刷直流电机,无刷直流电机驱动器,LY-51S单片机开发板上的单片机,8个独立按键,八个LED灯,两个继电器。
单片机I/O口分配:P1.0 : 方向信号。
P1.1:启停信号。
P1.2:PWM信号。
独立按键P3 功能P0 LEDK1 P3.0 启动P0.7 LED8 K2 P3.1 停止P0.6 LED7K3 P3.2 自动P0.0 LED1K4 P3.3 手动P0.1 LED2K5 P3.4 正转P0.2 LED4K6 P3.5 反转P0.3 LED3K7 P3.6 加速P0.4 LED5K8 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"reg52.h"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; //autosbit led2=P0^1; //handsbit led3=P0^2; //forwardsbit led4=P0^3; //reversesbit led5=P0^4; //accelerationsbit led6=P0^5; //deceleratesbit led7=P0^6; //onsbit led8=P0^7; //offsbit direction=P1^0; //zhuanfansbit RS=P1^1; //on offsbit 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--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/void Init_Timer0(void){TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0=(65536-2000)/256; //重新赋值2msTL0=(65536-2000)%256;EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开}/*------------------------------------------------定时器中断子程序------------------------------------------------*/void Timer0_isr(void) interrupt 1{TH0=(65536-2000)/256; //重新赋值2msTL0=(65536-2000)%256;if(count==PWM_ON) //如果定时等于on的时间说明作用时间结束,输出低电平{PMW=0; //}if(count==CYCLE) //反之低电平时间结束后返回高电平{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){P0=0xff;PWM_ON=0;while(start){RS=0;led7=0;led8=1;}}}if(!start)//start{DelayMs(10);if(!start) //qudou{P0=0xff;PWM_ON=0;while(stop){RS=0;led8=0;led7=1;if(!AUTO) //auto{DelayMs(10);if(!AUTO){led1=0;led2=1;PWM_ON=0;while(hand&&stop){RS=1;direction=0;PWM_ON=0;while(PWM_ON!=CYCLE&&stop&&hand){PWM_ON++;DelayMs(1000);}DelayMs(1000);while(PWM_ON!=0&&stop&&hand){PWM_ON--;DelayMs(500);}//DelayMs(1000);PWM_ON=0;direction=1;while(PWM_ON!=CYCLE&&stop&&hand){PWM_ON++;DelayMs(1000);}DelayMs(1000);while(PWM_ON!=0&&stop&&hand){PWM_ON--;DelayMs(1000);}// DelayMs(1000);// AUTORUN();}}}if(!hand) //hand{DelayMs(10);if(!hand){led2=0;led1=1;PWM_ON=0;while(AUTO&&stop){if(!forward) //forward{DelayMs(10);if(!forward){while(!forward){}direction=0;led3=0;led4=1;}}if(!reverse) //reverse{DelayMs(10);if(!reverse){while(!reverse){}direction=1;led4=0;led3=1;}}if(!acceleration) //acceleration{DelayMs(10);if(!acceleration){while(!acceleration){}accelerate();led5=0;led6=1;}}if(!deceleration) //deceleration{DelayMs(10);if(!deceleration){while(!deceleration){}decelerate();led6=0;led5=1;}}}}}}}}}}。