




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./毕业设计〔论文说明书课题名称:基于单片机的直流电机控制系统设计院系专业班级学号姓名指导教师2012年5月.摘要电动机作为最主要的机电能量转换装置,其应用围已遍及国民经济的各个领域和人们的日常生活。无论是在工农业生产、国防、医疗卫生、交通运输和办公设备中,还是在日常生活的家用电器和消费电子产品中,都大量使用着各种各样的电动机。电动机的调速控制一般采用模拟法,对电动机的简单控制应用比较多。本设计实现了对电动机的简单控制,也就是指对电动机进行启动、制动和正反转控制。本设计采用了单片机STC89C52与PC串行实现通信,由于单片机输入、输出电平是TTL电平,而PC机配置的是RS232标准串行接口,两者的电气规不一致,因此要完成单片机与PC机的数据通信,必须对单片机输出的TTL电平进行电平转换。采用的转换电平芯片为MAX232。设计中采用STC89C52微处理器及其RS232通信接口、键盘、12864液晶显示器等外围电路,构成一台直流电机开环在线控制系统。设计中采用PWM调制技术,实现对直流电机速度的调制,并通过串口实现上位机的在线控制。系统实现了在线调速、正转、反转、加速、减速、停止等多种功能,并能实时显示、键盘设置等,具有一定的实际应用价值。关键词:单片机电平转换直流电机在线控制PWM调制AbstractMotorasthemainelectromechanicalenergyconversiondevice,itsapplicationhasbeenthroughoutallareasofthenationaleconomyandpeople'sdailylife.Bothinindustrialandagriculturalproduction,nationaldefense,medicalandhealth,transportationandofficeequipment,orinthedailylifeofhouseholdappliancesandconsumerelectronicsproducts,extensiveuseofvariousmotor.Motorspeedcontrolusingsimulationmethod,themotorcontrolapplicationmoresimple.Thedesignandimplementationofsimplecontrollingmotor,alsoreferstothemotorstarting,brakingandreversecontrol.ThedesignintroducedAT89C51single-chipserialcommunicationwiththePCmethod,asthesingle-chipinputandoutputlevelisTTLlevel,andPC-standardconfigurationisaRS232serialinterface,boththeelectricalspecificationsareinconsistent,ThereforetocompletePC-SCManddatacommunications,theneedforsingle-chipoutputTTLleveltoleveltranslators.Usedinchip-levelconversionfortheMAX232.AppliedtothedesignofSTC89C52microprocessorandRS232communicationinterface,keyboard,12864LCDperipheralcircuit,constituteadcmotorcontrolsystemonline.AppliedtothedesignofPWMtechnologytorealizethedcmotorspeedregulation,andthroughaserialportrealizePConlinecontrol.Theonlinespeedregulationsystem,areturning,inversion,accelerate,slowingdown,stopandotherfunctions,andcanreal-timedisplay,keyboardSettings,ithascertainpracticalapplicationvalue.Keywords:single-chipserialcommunicationLevelTranslatorsDcmotorOnlinecontrolPWMtechnology目录摘要IAbstractII1绪论11.1直流电机概述11.2单片机概述11.3脉宽调制〔PWM技术21.4课题任务及工作容32单片机直流电机控制系统总体设计方案42.1设计思路42.2方案论证与比较42.3系统组成53单片机直流电机控制系统硬件设计63.1系统硬件结构63.2系统单元电路设计63.2.1单片机最小系统电路63.2.2独立式键盘电路7液晶显示模块73.2.4蜂鸣器电路83.2.5电源电路83.2.6串口通信电路93.2.7电机驱动电路104单片机直流电机控制系统软件设计114.1软件总体结构114.2系统模块程序设计12初始化模块程序12键盘扫描模块程序13液晶显示模块程序15串口通信模块程序15电机调速模块程序175系统测试185.1测试准备185.1.1硬件环境185.1.2软件环境185.1.3测试项目185.2测试过程185.3测试结果19结束语21致22参考文献23附录24.1绪论1.1直流电机概述在现代工业中,电动机作为电能转换的传动装置被广泛应用于机械、冶金、石油化学、国防等工业部门中,随着对生产工艺、产品质量的要求不断提高和产量的增长,越来越多的生产机械要求能实现自动调速。长期以来,自动调速电动机一直占据着调速控制的统治地位。由于它具有良好的线性调速特性,简单的控制性能,高效率,优异的动态特性,现在仍是大多数调速控制电动机的最优选择以前电动机大多使用由模拟电路组成的控制柜进行控制,现在单片机已经开始取代模拟电路作为电机控制器。当前电机控制器的发展方向越来越趋于多样化和复杂化,现有的专用集成电路未必能满足苛刻的新产品开发要求,为此可考虑开发电机的新型单片机控制器,因此研究直流电机的速度控制,有着非常重要的意义。由于变频技术的出现,交流调速一直冲击直流调速,但综观全局,尤其是我国在此领域的现状,再加上全数字直流调速系统的出现,更提高了直流调速系统的精度及可靠性,直流调速系统仍将处于十分重要地位。对于直流调速系统转速控制的要求有稳速、调速、加速或减速三个方面,而在工业生产中对于后两个要求已能很好地实现,但工程应用中稳速指标却往往不能达到预期的效果,稳速要求即以一定的精度在所需要的转速稳定运行,在各种干扰不允许有过大的转速波动。1.2单片机概述随着单片机功能的飞速发展,单片机的应用领域已经渗透到了国民经济的各个领域,并影响着现代人的生活。单片机技术的出现给现代工业测控领域带来了一次技术革命。目前,单片机仍以其高可靠性、高性价比,在工业控制系统、智能化仪器仪表、数据采集系统和智能家电等诸多领域得到了广泛应用。当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以飞快的速度被单片机智能控制系统所取代。单片机的优点包括体积小、功能强、成本低,并且应用面广,可以说智能控制与自动控制的核心就是单片机。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括来讲:一块芯片就是一台计算机。它具有体积小、质量轻、价格便宜等优点,为学习、应用和开发提供了诸多便利。同时,学习使用单片机是了解计算机原理与结构的最佳选择。现在,单片机的应用领域非常广泛,比如实时工控、导航系统、智能仪表、家用电器、通讯设备等。单片机一旦运用在各种产品上面,就可以说是使产品进行了升级换代,也可以把产品美其名曰:"智能型",如智能型洗衣机等等。1.3脉宽调制〔PWM技术脉冲宽度调制〔PWM是英文"PulseWidthModulation"的缩写,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。一种模拟控制方式,根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定。脉冲宽度调制〔PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有<ON>,要么完全无<OFF>。电压或电流源是以一种通<ON>或断<OFF>的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。多数负载<无论是电感性负载还是电容性负载>需要的调制频率高于10Hz,通常调制频率为1kHz到200kHz之间。许多微控制器部都包含有PWM控制器。例如,Microchip公司的PIC16C67含两个PWM控制器,每一个都可以选择接通时间和周期。占空比是接通时间与周期之比;调制频率为周期的倒数。执行PWM操作之前,这种微处理器要求在软件中完成以下工作:1、设置提供调制方波的片上定时器/计数器的周期2、在PWM控制寄存器中设置接通时间3、设置PWM输出的方向,这个输出是一个通用I/O管脚4、启动定时器5、使能PWM控制器目前几乎所有市售的单片机都有PWM模块功能,若没有〔如早期的8051,也可以利用定时器及GPIO口来实现。更为一般的PWM模块控制流程为〔笔者使用过TI的2000系列,AVR的Mega系列,TI的LM系列:1、使能相关的模块〔PWM模块以及对应管教的GPIO模块。2、配置PWM模块的功能,具体有:①:设置PWM定时器周期,该参数决定PWM波形的频率。②:设置PWM定时器比较值,该参数决定PWM波形的占空比。③:设置死区〔deadband,为避免桥臂的直通需要设置死区,一般较高档的单片机都有该功能。④:设置故障处理情况,一般为故障是封锁输出,防止过流损坏功率管,故障一般有比较器或ADC或GPIO检测。⑤:设定同步功能,该功能在多桥臂,即多PWM模块协调工作时尤为重要。3、设置相应的中断,编写ISR,一般用于电压电流采样,计算下一个周期的占空比,更改占空比,这部分也会有PI控制的功能。4、使能PWM波形发生。1.4课题任务及工作容本题目要求设计一个单片机应用系统可以通过串行线在上位机中进行控制操作。可以通过上位机对单片机进行控制直流电机正转、反转、停止、加速、减速等功能。另外,为增加其实用性还增加了显示、键盘控制、按键蜂鸣等功能。本课题要完成以下研究工作:1、研究直流电机控制系统并仔细推敲各方面的细节,比如速度的控制等等。2、进行系统软硬件的设计。3、制作硬件,并对硬件进行调试以及优化。2单片机直流电机控制系统总体设计方案2.1设计思路本题要求设计一个上位机直流电机控制系统。利用键盘作为输入设备,输入电机控制信号;液晶显示器件作为显示,与用户进行人机交互;利用串行通信接口与上位机进行通信,接收上位机发送过来的控制命令。从PC机发来的控制命令经单片机系统接收后,产生电机控制信号,并提供给电机驱动电路控制直流电机正常运转并正常显示转速。2.2方案论证与比较<1>主控制器的选择与比较采用宏晶科技生产的STC89C52系列的8位单片机作为本系统的主控制芯片,该处理器芯片置有8K的Flash存储器,置的UART全双工异步通信接口,减少外围接口电路。具有可在线编程、使用方便、价格低廉等优点。运算速度满足系统的要求,性价比高。<2>显示电路选择与比较方案一:采用数码管显示电路,该硬件电路简单,编程也比较简单。视角围大,亮度高,显示是效果好,但是只能显示简单数字字母等有限的字符,不能满足本设计要求。故,不采用数码管显示电路。方案二:采用1602液晶显示,硬件电路简单,编程容易。可以显示字母和数字,以及一下简单的图像。能满足本设计要求,显示清晰度可以通过调节偏压端电压来改变对比度,从而实现清晰度调整。显示效果较好,还可以滚动显示等,显示灵活。方案三:采用12864液晶显示,硬件电路简单,编程容易。可以显示复杂的图案、字符、标点、英文、汉字等。能满足本设计要求,显示清晰度可以通过调节偏压端电压来改变对比度,从而实现清晰度调整。显示效果较好,还可以滚动显示等,显示灵活。综上所述,数码管显示电路不能满足本设计的要求;1602显示只能显示字母和数字,要显示汉字和图像编程复杂,效果不好;12864液晶显示可以显示数字、英文、汉字、图片等能满足本设计要求。故,采用12864液晶显示电路作为本设计的显示电路模块。<3>键盘电路选择与比较方案一:独立式键盘,独立式键盘硬件电路极为简单,程序也非常简单。容易开发,开发周期短,使用方便简单。方案二:矩阵式键盘,矩阵式键盘硬件电路也比较简单,编程较为复杂。不容易开发,在按键较多的时候,与独立式键盘相比较经济,占用IO端口较少,但编程较独立式键盘难的多,由于本设计要求的键盘按键数量较少,采用独立式键盘较方便,开发难度大大降低,开发周期缩短,也比较经济。故在本设计中采用独立式键盘。经上述比较后采用独立式键盘作为本设计的键盘电路模块。2.3系统组成经过方案论证,最终确定系统的组成框图如图2.1所示。系统由STC89C52微处理器核心模块、电源模块、独立式键盘模块、12864液晶显示模块、蜂鸣器电路模块、RS232串口通信模块、电源指示电路模块等组成。其中,独立式键盘由微动开关连接到IO口与地线之间组成。注意,由于P0口部没有上拉电阻,在作为输入时,需要外接上拉电阻。串口通信电路由MAX232电平转换芯片与9DB串口插座等构成,用于下载程序和实现与上位机通信。蜂鸣器电路主要由蜂鸣器和三级管组成,用于实现按键声音等。液晶显示电路主要由12864液晶显示模块及少量外围电阻等构成,主要用于实现人机界面的交互功能。单片机STC89C5212864单片机STC89C5212864液晶显示电路电路独立式键盘蜂鸣器电路RS232串口通信电路电源电源指示电路电机驱动电路电机控制图1.1系统组成框图3单片机直流电机控制系统硬件设计3.1系统硬件结构本设计硬件结构由单片机最小系统、键盘模块、12864液晶显示模块、蜂鸣器驱动模块、电源指示模块、串口通信模块、电机驱动模块等组成。3.2系统单元电路设计单片机最小系统电路单片机最小系统电路由STC89C52主控芯片、时钟振荡电路和复位电路等构成。其中,时钟振荡电路主要由外接11.0592MHz晶振、两个30pF的起振电容和部反相器构成。复位电路采用简单的容阻式复位电路。单片机最小系统电路原理图如图2.1所示。图2.1单片机最小系统电路独立式键盘电路键盘电路采用比较简单的独立式键盘便能满足设计要求,成本低廉,编程相对简单。4个独立按键,分别与单片机P0.0-P0.3相连,由于P1口上各位部均接有上拉电阻,故,外接按键的时候,我们不再接上拉电阻。键盘电路如图2.2所示图2.2独立式键盘电路液晶显示模块<1>12864液晶模块概述12864液晶显示电路主要由基于ST7920控制器的12864液晶和外部电位器等组成。12864具有128列64行共128*64个像素点,可以显示中文、日文、数字、英文、特殊字符、图片等。置国标GB2312码简体中文字库<16*16>,128个字符<8*16>及64*256点阵显示RAM<GDRAM>。可以与CPU直接接口,提供两种界面来连接微处理器:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。<2>12864液晶显示电路原理图液晶显示电路主要由12864液晶显示模块和外围电位器等组成。可以通过调节电位器R2,调节12864偏压端电压,改变显示对比度,提高显示效果,改变显示清晰度。控制口线RS、RW、EN分别连接到单片机的P0.4、P0.5、P0.6,8位数据总线与P2口相连,实现8位数据,并行传输。12864液晶显示电路图如图2.3所示图2.312864液晶电路原理图蜂鸣器电路蜂鸣器电路主要是利用S9012〔PNP三极管驱动蜂鸣器,实现按键发声。S9012三级管属于PNP管,发射极串接蜂鸣器线圈接至+5V,集电极直接接地,基极通过一个4.7k限流电阻接至单片机P3.3口。当S9012基极为低电平时,三极管导通,蜂鸣器得电蜂鸣,当S9012三极管基极为高电平时,三极管截止,蜂鸣器停止蜂鸣。其详细原理图如图2.4所示图2.4蜂鸣器驱动电路原理图电源电路电源电路包括开关电路和指示电路。指示电路采用发光二极管进行指示,放光二极管串联上一个1K的限流电阻,正常工作时,取发光二极管上电压为3V,流过发光二极管上的电流为10mA,故R=〔5-3/10=2K。当选择的电阻过大时,发光二极管不够亮,指示不明显;当限流电阻选择过小,发光二极管亮度过大,缩短放光二极管使用寿命。因此,应适当选取该限流电阻。当单片机正常供电时,电源指示灯正常发亮。当没有供电或出电源线短路时,电源指示熄灭,从而可以监测系统是否正常供电。电源电路原理图如图2.5所示图2.5电源电路原理图串口通信电路串口通信电路主要由美信公司生产的MAX232芯片和相应的通信指示电路构成,主要是用于程序的烧写和实现与上位机的通信。Max232用于实现TTL电平与RS232电平的转换,只要在它的外部在接上几个简单的电容就构成了通信点路,为了方便检查、排除故障可在通信线上接上两个通信指示灯,方便检查与维修。具体电路图如图2.6所示。图2.6串口通信电路电机驱动电路电机驱动电路主要有电机驱动芯片L298N、少量电阻电容和二极管构成。电机驱动电路增加光耦合器件以实现电机驱动信号与控制信号的隔离,提高控制系统的抗干扰能力,但由于光耦合芯片TLP521-4昂贵,并且设计的控制要求简单,因此驱动电路中去掉了光耦合部分。电机驱动电路原理图如图2.7所示。图2.7电机驱动电路原理图4单片机直流电机控制系统软件设计4.1软件总体结构系统软件主要由系统初始化程序模块、键盘扫描及处理模块、液晶显示程序模块、串口通信程序模块、电机调速程序模块和蜂鸣器驱动程序模块等组成。系统初始化模块:主要是配置系统工作环境。主要负责的工作有初始化定时器、初始化液晶、初始化串口、初始化I/O等键盘扫描及处理模块:实现按键识别、消抖及处理,用于设置电机转动状态。液晶显示模块:实现对电机状态的实时显示以及状态设置,实现人机交互。串口通信模块:主要是实现与上位机进行通信,接收上位机发送过来的电机控制命令。蜂鸣器模块:主要用实现按键蜂鸣。系统软件总体框图如图3.1所示串口通信程序模块串口通信程序模块系统初始化键盘扫描及处理程序模块液晶显示程序模块蜂鸣器驱动模块电机调速程序模块图3.1系统软件总体框图在没有操作系统的时候,我们采用结构化程序设计思想,自顶向下,逐步求精;其系统主程序流程图如图3.2所示系统初始化系统初始化开始键盘扫描及处理程序显示刷新数据处理图3.2系统主程序流程图4.2系统模块程序设计初始化模块程序系统初始化软件包括三大部分:串口初始化、LCD12864液晶初始化、I/O口初始化。主要完成的工作是设置定时器,并初始化串口。初始化12864液晶模块、关闭蜂鸣器等。串口初始化程序:设置定时器1为工作方式2,配置串口波特率为9600bps,选择波特率不倍增,串行工作方式1,启动定时器1,开串行口中断,开CPU总中断。串口初始化程序流程图如图3.3所示。12864液晶初始化程序:首先初始化LCD控制口,选择12864液晶输入输出为8位位流,清屏,设定输入数据后光标右移模式,开显示无光标闪烁,无反白。最后显示正常模式下的界面。12864液晶初始化程序流程图如图3.4所示开始设置波特率9600开始设置波特率9600bps的定时器1初值串口初始化为方式1、波特率不倍增结束开串口中断、CPU中断初始化LCD控制口开始选择8位数据流关显示、清屏选择光标右移、开显示显示初始界面结束图3.3串口初始程序流程图图3.412864液晶初始化程序流程图键盘扫描模块程序键盘扫描及处理程序,主要由按键key1、按键key2、按键key3、按键key4组成。Key1为循环选择键,用于选择要设置的电机状态项目。2、Key2为加1按键,用于设定电机的正反转、加减速和电机速度值。3、Key3为减1按键,用于设定电机的正反转、加减速和电机速度值。4、Key4为确定键,用于确定当前的电机状态为设定值。键盘扫描程序模块流程图如图3.5所示。开始循环选择键开始循环选择键记录按下次数设置模式标志光标在电机状态处闪烁加1键按下光标在检测转速个位处闪烁减1键按下光标在设定转速个位处闪烁光标在设定转速十百位闪烁确定键按下对应项加1光标在检测转速十百位闪烁对应项减1刷新显示退出设置结束YESYESNOYESNOYESNO图3.5键盘扫描程序模块流程图液晶显示模块程序液晶显示程序模块包括12864液晶驱动程序模块和12864液晶显示刷新程序模块。12864液晶驱动程序模块主要包括12864液晶的写数据、写命令程序模块。通过控制12864液晶的控制口线就可以实现对12864液晶的基本数据操作。液晶写数据和写命令程序流程图分别如图3.6和图3.7所示。12864液晶显示程序模块,主要实现对输入的要发送的数据和接收到的数据的显示,以及进入设置模式时的各种界面的的刷新显示等。开始开始选择写数据将要写的数据放到数据总线延时5ms写使能信号有效结束开始选择写命令将要写的命令放到数据总线延时5ms写使能信号有效结束图3.612864液晶写数据程序流程图图3.712864液晶写命令程序流程图串口通信模块程序串口通信程序模块主要包括串口初始化程序模块、串口接收程序模块。其中串口初始化程序模块主要是配置特定的串口通信环境及通信方式等。选择串口为通信方式1,定时器1方式2等。其程序流程图如前面图3.3所示。串口接收程序模块主要由串口中断程序与串口接收子程序构成。当产生接收中断时,首先判断是发送中断还是接收中断,若是发送中断则清除发送中断标志位,若是接收中断则先清除接收中断标志位,然后调用串口接收函数,将接收到的数据存于接收缓冲区中,并共单片机使用。其串口接收程序流程图如图3.8所示,其中标志位已在程序中标出。开始开始串口中断接收一个字节接收完2Byte通知CPU进行数据处理理清除发送中断标志位清除接收中断标志位结束YESNOYESNO图3.8串口接收程序流程图电机调速模块程序电机调速程序模块采用脉宽调制法实现速度控制。利用定时器0固定调速信号周期,根据正反转标志,设定电机控制端口电平。当计数值达到设定的脉宽值时则关闭电机运行,在第二个周期的调速信号到来时,又重新开启电机运转,依次的电机通断切换,从而实现电机的速度控制。其调速程序流程图如图3.9所示。NO开始NO开始电机停转计数到100开电机转动重载定时值计数变量加1结束大于脉宽值YESNOYES图3.9调速程序流程图5系统测试5.1测试准备硬件环境〔1PC机、USB转串口通信线。用于单片机C51语言的编程、编译、加载及发送电机控制命令。〔2+5V和+12V电源、电机控制系统板、若干根杜邦线、1块12864液晶模块。〔3DT9208A数字万用表1个、螺丝刀、镊子、斜口钳、吸焊器。软件环境〔1KeiluVision4,用于C51源程序的编写、编译、和调试。〔2上位机串口调试软件<串口大师>、本系统程序、相关的库和头文件。测试项目12864液晶是否正常显示。系统电源指示、通信指示、按键蜂鸣、按键复位等功能是否正常。上位机通过串口调试软件能否正确控制电机的正转、反转、加速、减速。实验板上的键盘能否正确控制电机的正转、反转、加速、减速。5.2测试过程1、利用万用表检查各线路是否存在断路、短路并修正。2、检查单片机等各口线是否正确连接,上电之前检测一下正负电源线是否短路,确保不短路才上电。3、利用KeiluVision2软件进行程序的编辑、编译、和调试。4、利用STC-ISP软件将在keil中编译生成的各个xx.Hex文件下载到系统单片机的Flash存储器中。5、按原理图连接线路、上电后开始测试。上电后首先观察系统显示是否正常,指示灯工作是否正常,复位电路是否正常等等,如不正常则修改程序重新下载测试,直至显示正常。接着按照测试项目,分别测试。首先打开串口调试软件,选择波特率为9600bps,打开串口,选择发送的数据位16进制数据。<1>正转测试:在发送窗中输入正转控制字和速度值。如:110其中,1表示正转,10<16进制>即16表示脉宽为16%的调速信号所对应的速度。点击发送观察电机是否正转,将速度改大一些看一下速度是否改变。<2>停止测试:输入停止命令字0,速度可以任意,发送后观察电机是否停机下来。<3>反转测试:输入反转命令字及速度脉宽值<最大为100>,如220,发送后观察电机的转动方向及速度,改变速度后再测一次观察电机转速是否改变。<4>加速测试:输入加速命令字3,速度可以任意,如320,发送后观察电机的转动情况。<5>减速测试:输入减速命令字4,速度可以任意,如420,发送后观察电机的转动情况。再测试正反转直接切换的情况下,电机是否还能正确运行,接着再测试一下在正反转状况下进行的加减速,观察电机是否在原来速度的基础上无跳变的平稳加减速。最后测试键盘的各项控制功能能否正常。5.3测试结果经测试表明,本电机控制系统可以通过上位机实现对直流电机的自由设速正反转和平稳加减速的控制,同时也可以通过键盘实现自由设速正反转和平稳加减速的控制;还具有显示、按键发生等多种功能。该系统完全满足系统设计要求。下面的实物测试图是正转和加速的测试。测试效果图如图5.1到图5.4所示。经测试表明,以上测试要求全部通过。测试结果如表4-1。表4-1电机主要测试结果测试项目指令控制字预期结果实际结果正转11正转<慢速>正转<慢速>150正转<快速>正转<快速>反转21反转<慢速>反转<慢速>250反转<快速>反转<快速>停止01快速停止快速停止050快速停止快速停止加速31以原速度开始加速以原速度开始加速350以原速度开始加速以原速度开始加速减速41以原速度开始减速以原速度开始减速450以原速度开始减速以原速度开始减速结束语本课题的核心任务是对串口通信的研究和对电机控制系统的应用设计,本文的研究方案是根据现有的软硬件条件,设计单片机的电机控制系统,通过RS232串口连接至PC机,并进行相关性电机控制实验。具体容包括如下:一、通过对现在应用比较广泛、技术比较成熟的串口通信进行研究,并经分析论证后设计出以STC89C52单片机为核心控制单元的上位机电机控制系统。二、根据本设计——上位机电机控制系统的设计要求,编写了系统程序。通过RS232接口连接至PC机,并进行相关性电机控制实验。三、在设计好的电机控制系统平台上,进行电机控制系统的软件开发,并通过不断的软硬件调试、实物测试,最终开发出性能优越、灵活方便、具有一定实用价值的直流电机在线控制系统。通过本次毕业设计,我更深入的学到了有关单片机的原理及应用,并且自主的动脑、动手能力得到了很大的提高。重要的是能够将单片机与实际生活中的一些应用联系起来,同时通过毕业设计对PC机通过串口控制单片机有一定的了解。上位机控制单片机系统,可以用于对多个单片机应用系统进行实时控制,也可通过调制/解调器对远程控制系统进行实时控制。另外,上位机不需要进行复杂的编程,直接用微机的通信串行口进行命令控制,并且命令符可自定义。总之我们受益匪浅,这将为我们以后的学习以及工作打下良好的基础。.致经过长期的忙碌,本次毕业设计已基本完成,作为一个还没毕业的本科生,由于缺乏经验,导致许多方面考虑不周全,幸好得到了指导老师的督促和同学们的帮忙,才能够顺利完成了这次毕业设计。在这里,我要先感我的指导老师,是她对我的悉心指导,以及对毕业设计各方面提供的意见,帮我理清了许多疑问。还要感同学对我的帮助,因为他们,我才顺利完成了我的毕业设计。最后,感我的母校为我提供了这么一个优良的学习环境,培育我成长起来,。在这里,我要对在校期间帮助过我的所有人说声!参考文献[1]毅刚喜元.单片机原理与应用设计[M].:市海淀区四季青印刷厂,2010.[2]毅刚.新编MCS-51单片机运用设计.:工业大学,2003.[3]义和王敏男许宏昌余.例说51单片机〔c语言版.:人民邮电,2009.[4]马忠梅籍顺心凯马岩.单片机的C语言应用程序设计.:航空航天大学,2010.[5]SamsungElectronics.S3C44BOXRiscmicrocontrollerARMinstructionsheet.2002.[6]郭天祥.《51单片机C语言教程》,电子工业,20XX7月[7]丁元杰.《单片微机原理及应用》,机械工业,20XX7月[8]楼然苗、光.《单片机课程设计指导》,:航空航天大学,2007.[9]OkazoeH,ShimizuK,WatanabeY.etal.Develop-mentofaFull-FlowBurnerRegenerationTypeDieselParticu-lateFilterUsingSiCHoneycomb[C].SocietyofAutomotiveEngineersInternationalCongressandExposition.Michigan:SAEPaper960130.1996,:27-35.[10]岂兴明、唐杰等.《51单片机编程基础与开发实例详解》,:人民邮电,2008.[11]王东锋、王会良、董冠强.《单片机C语言应用100例》,电子工业,2009.1V.Yu.Teplov,A.V.Anisimov.ThermostattingSystemUsingaSingle-ChipMicrocomputerandThermoelectricModulesBasedonthePeltierEffect[J],2002[12]YeagerBrent.Howtotroubleshootyourelectronicscale[J]..PowderandBulkEngineering.1995[13]周兴华.手把手教你学单片机,:航空航天大学,2005.[14]MeehanJoanne,MuirLindsey.SCMinMerseysideSMEs:Benefitsandbarriers[J]..TQMJournal.2008[15]周立功.直流电机原理与驱动[M].:电子科技大学.2008.1[16]说明书,LED12864液晶完整中文版资料[17]王晓明电动机的单片机控制<第3版>航空航天大学.2011附录附录1直流电机在线控制系统程序/*******************************************************************************************基于STC89C52和L298的直流电机的在线控制,同时可以通过键盘来控制电机在线控制的指令要求,选用16进制1XX正传1代表正传,XX代表速度2XX反转3加速加速只会加速到最大,还没有实现加速到一定量或者是加速一定量4减速减速只会加速到零,还没有实现减速到一定量或者是减速一定量通过键盘一样可以控制电机,检速电路没有实现********************************************************************************************/#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineLcdBusP2sbitKey0=P0^0;//循环选择键sbitKey1=P0^1; //"+"下一页sbitKey2=P0^2; //"-"上一页sbitKey3=P0^3; //确定键sbitLcd_RS=P0^4;sbitLcd_RW=P0^5;sbitLcd_EN=P0^6;//12864控制端口sbitMotorIN1=P1^0;sbitMotorIN2=P1^1;//单片机对L298的控制端口sbitSpeaker=P3^3;/*变量定义*/ucharconstcodeSysName[]={"电机在线控制"};ucharconstcodeName1[]={"电机状态:停止"};ucharconstcodeName2[]={"预设脉宽:000T/q"};ucharconstcodeName3[]={"反馈脉宽:000T/q"};ucharconst codeName4[]={"0123456789"};ucharconst codeStatus0[]={"停止"};ucharconstcodeStatus1[]={"转"};ucharconstcodeStatus2[]={"反转"};ucharconstcodeStatus3[]={"加速"};ucharconstcodeStatus4[]={"减速"};ucharOldMotorIN1=0,OldMotorIN2=0;charPcToMcu[2]={0};charPcToMcu0;charSetSpeed[3]={0};charSpeed[3]={0};charOldPcToMcu1;ucharStatus=0;//0:停止1:正转2:反转ucharPWM=0;ucharKeynum0=0,Keynum1=0;ucharReFlag=0;ucharSetFlag=0;ucharFlag=0;voidInit<void>;voidInitLcd<void>;voidKeyscan<void>;voidDisplay<void>;voidWr_com12864<uchar>;voidWr_dat12864<uchardat>;voiddelay<uintn>;voidTime0_Init<void>;voidUart_Init<void>;voidWork<void>;voidKeysound<void>;voidmain<>{Init<>;while<1>{if<SetFlag==0>Work<>; Keyscan<>; if<SetFlag==0>Display<>;}}/*==============================子函数区===============================*/voidInit<void>{InitLcd<>;Uart_Init<>;Time0_Init<>;}/*键盘扫描函数*/voidKeyscan<void>{if<Key0==0> //循环选择{OldPcToMcu1=PcToMcu[1];Keynum0++; SetFlag=1; while<Key0==0>Keysound<>;}if<SetFlag>//进入设置模式{switch<Keynum0> { case1:Wr_com12864<0x95>;Wr_com12864<0x0f>;break; case2:Wr_com12864<0x8E>;Wr_com12864<0x0f>;break; case3:Wr_com12864<0x8D>;Wr_com12864<0x0f>;break; case4:Keynum0=1;break; default:break; } if<Key1==0>//"+" { switch<Keynum0> { case1:if<++PcToMcu0>4>PcToMcu0=0;break; case2:SetSpeed[0]++; if<SetSpeed[0]>9> SetSpeed[0]=0; break; //设定值的设定 case3:SetSpeed[1]++; if<SetSpeed[1]>9> { SetSpeed[1]=0; SetSpeed[2]++; if<SetSpeed[2]>9> SetSpeed[2]=0; } break; case4:Keynum0=1;break; default:break; } Display<>; //刷新显示 Wr_com12864<0x0c>;//去掉光标闪烁 while<Key1==0>Keysound<>; } if<Key2==0>//"-" { switch<Keynum0> { case1:if<--PcToMcu0<0>PcToMcu0=4;break; case2:SetSpeed[0]--; if<SetSpeed[0]<0> SetSpeed[0]=9; break; //设定值的设定 case3:SetSpeed[1]--; if<SetSpeed[1]<0> { SetSpeed[1]=9; SetSpeed[2]--; if<SetSpeed[2]<0> SetSpeed[2]=9; } break; case4:Keynum0=1;break; default:break; } Display<>; //刷新显示 Wr_com12864<0x0c>;//去掉光标闪烁 while<Key2==0>Keysound<>; }}if<Key3==0> //确定键{PcToMcu[1]=SetSpeed[2]*100+SetSpeed[1]*10+SetSpeed[0]; PcToMcu[0]=PcToMcu0; Wr_com12864<0x0c>;//去掉光标闪烁 Keynum0=0; ReFlag=1; SetFlag=0;//退出设置状态 while<Key3==0>Keysound<>;}}/*按键声函数*/voidKeysound<void>{uchari;for<i=0;i<10;i++>{Speaker=0; delay<1>; Speaker=1; delay<5>;}}/*初始化LCD*/voidInitLcd<void>{uchari=0,j=0; Lcd_RS=0;Lcd_RW=0; Lcd_EN=0; Wr_com12864<0x38>;//显示模式设定 Wr_com12864<0x0c>;//不显示光标 Wr_com12864<0x06>;//写字符后光标右移 Wr_com12864<0x01>;//显示清屏 Wr_com12864<0x81>; for<i=0;i<12;i++> Wr_dat12864<SysName[i]>; Wr_com12864<0x90>; for<i=0;i<14;i++> Wr_dat12864<Name1[i]>;// Wr_dat12864<0xd5>; //"正" //Wr_dat12864<0xfd>;Wr_com12864<0x88>; for<i=0;i<16;i++> Wr_dat12864<Name2[i]>;Wr_com12864<0x98>; for<i=0;i<16;i++> Wr_dat12864<Name3[i]>;}/*向12864写命令*/voidWr_com12864<uchar>/***写命令***/{ucharlcdtemp=0; Lcd_RS=0; Lcd_RW=1; do//判忙{ Lcd_EN=1; delay<1>; lcdtemp=P2; Lcd_EN=0; } while<lcdtemp&0x80>; Lcd_RW=0; LcdBus=; delay<1>; Lcd_EN=1; delay<1>; Lcd_EN=0;}voidWr_dat12864<uchardat> /***写数据***/{ucharlcdtemp=0;Lcd_RS=0;Lcd_RW=1;do //判忙{Lcd_EN=1; delay<1>;lcdtemp=P2;Lcd_EN=0;}while<lcdtemp&0x80>;Lcd_RS=1;Lcd_RW=0;LcdBus=dat;Lcd_EN=1;delay<1>;Lcd_EN=0;}voiddelay<uintn> /***延时约1ms***/{uinti,j;for<i=0;i<n;i++>for<j=0;j<110;j++>;}/*名称:UART_Init功能:初始化串口参数:无返回值:无*/voidUart_Init<void>{TMOD=TMOD|0x20;//00100001设置T1为定时方式2TH1=0xfd;//9600Bps,11.0592MHz晶振TL1=0xfd;PCON=0x00;//波特率不倍增SCON=0x50;//串行方式1PS=1;//串行优先级最高TR1=1;//启动定时器1ES=1;//开串口中断}/*名称:Time0_Init功能:初始化Time0参数:无返回值:无*/voidTime0_Init<void>{TMOD=TMOD|0x01;//T0为定时方式1TH0=0xF8;//定时2msTL0=0xCC;EA=1;ET0=1;TR0=1;}/*名称:Display功能:刷新显示参数:无返回值:无*/voidDisplay<void>{Wr_com12864<0x95>;switch<PcToMcu0>{uchari=0;case0:for<i=0;i<4;i++>Wr_dat12864<Status0[i]>;break; case1:Wr_dat12864<0xd5>;Wr_dat12864<0xfd>;for<i=0;i<2;i++>Wr_dat12864<Status1[i]>;break;//"正转" case2:for<i=0;i<4;i++>Wr_dat12864<Status2[i]>;break; case3:for<i=0;i<4;i++>Wr_dat12864<Status3[i]>;break; case4:for<i=0;i<4;i++>Wr_dat12864<Status4[i]>;break; default:break;}Wr_com12864<0x8D>;Wr_dat12864<Name4[SetSpeed[2]]>;Wr_dat12864<Name4[SetSpeed[1]]>;Wr_dat12864<Name4[SetSpeed[0]]>;Wr_com12864<0x9D>;Wr_dat12864<Name4[Speed[2]]>;Wr_dat12864<Name4[Speed[1]]>;Wr_dat12864<Name4[Speed[0]]>;}/*名称:UART_Receive功能:串口接收参数:无返回值:无*/voidUART_Receive<void>{staticucharuCount_Receive=0;PcToMcu[uCount_Receive]=SBUF;uCount_Receive++; if<uCount_Receive==1>OldPcToMcu1=PcToMcu[1];if<uCount_Receive>=2>//接收完2个字节后,串口接收计数器清零{uCount_Receive=0; ReFlag=1;//串口接收完成标志位置位} }/*名称:Work功能:数据处理函数参数:无返回值:无*/voidWork<void>{if<ReFlag==1>{ ReFlag=0; switch<PcToMcu[0]> { case0:MotorIN1=0;MotorIN2=0;Status=0;PcToMcu[1]=0;break; case1:MotorIN1=1;MotorIN2=0;Status=1;break; //正转 case2:MotorIN1=0;MotorIN2=1;Status=2;break; //反转 case3:switch<Status> {case0:MotorIN1=1;MotorIN2=0;Status=1;PcToMcu[1]=1;break; //若之前为停止,则默认正转 case1:MotorIN1=1;MotorIN2=0;PcToMcu[1]=OldPcToMcu1;break; case2:MotorIN1=0;MotorIN2=1;PcToMcu[1]=OldPcToMcu1;break; default:break; } brea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幕墙施工安装合同
- 三农村社区公共基础设施建设规划方案
- 企业法律咨询服务合同
- 员工年终工作总结报告
- 高中语文必修(下)第二单元《窦娥冤》教学设计
- Unit 6 Review Lesson 1(教学设计)-2024-2025学年北师大版(三起)(2024)英语三年级上册
- 第8课 欧洲思想解放运动 教学设计-2023-2024学年高一统编版2019必修中外历史纲要下册
- 10 塑料 教学设计-2024-2025学年科学一年级上册湘科版
- 高中信息技术选修3教学设计-3.1 网络的功能与构造1-教科版
- 崇州北欧风格墙布施工方案
- 【化学】高中化学手写笔记
- 铁路基础知识课件
- 全面风险标准化分类分定与描述数据库(2023-雷泽佳编写)
- 六年级语文-文言文阅读训练题50篇-含答案-全国通用
- 出版物网络零售备案表
- 云南省昭通市各县区乡镇行政村村庄村名居民村民委员会明细
- 国家留学基金委国外大学邀请函
- QES三体系内审检查表 含审核记录
- 信息论与编码 自学报告
- 二年级乘除法口诀专项练习1000题-推荐
- 贷款项目资金平衡表
评论
0/150
提交评论