版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
扬州大学水利与能源动力工程学院课程设计报告题目:直流电机的转速控制课程:单片机原理及应用课程设计专业:电气工程及其自动化班级:电气1404姓名:学号:第一部分任务书《单片机原理及应用》课程设计任务书一、课题名称详见《单片机课程设计题目(一)》:主要是软件仿真,利用Proteus软件进行仿真设计并调试;《单片机课程设计题目(二)》:主要是硬件设计,利用单片机周立功实验箱进行设计并调试。二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。三、课程设计内容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。1.系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。2.硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。3.软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。4.调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。四、课程设计要求详见《单片机课程设计题目(一)》《单片机课程设计题目(二)》五、进度安排序号内容天数1布置任务,熟悉课题要求0.52总体方案确定,硬件电路设计1.53软件编程1.54Proteus仿真,或在周立功实验箱上调试25总结,撰写课程设计报告1.5七、课程设计报告内容:总结设计过程,写出设计报告,设计报告具体内容要求如下:1.课程设计的目和设计的内容。2.课程设计的要求。3.控制系统总框图及系统工作原理。4.控制系统的硬件电路连接图,电路的原理。5.软件设计流程图及其说明。6.电路设计,软件编程、调试中遇到的问题及分析解决方法。7.实验结果及其分析。8.体会。第二部分课程设计报告目录TOC\o"1-3"\u1课题简介 11.1课题的设计目的 11.2课程任务与要求 12转速控制方案设计 12.1控制系统总体介绍 12.2设计框图 12.3工作原理 23硬件电路设计 33.1AT89C51介绍 33.274HC573介绍 33.3ULN2003A介绍 43.4LED数码管介绍 53.5直流电机介绍 54软件编程设计 64.1设计主流程图 64.2键盘程序流程图 64.3PWM程序流程图 74.4显示程序流程图 74.5初始化程序 84.6去抖延时程序 84.7按键中断程序 94.8主程序 94.9定时器中断及显示程序 105实验与结果分析 115.1硬件连接 115.2硬件调试 125.3结果分析 136小结与体会 13参考文献 15附录一硬件原理图 16附录二源程序清单 181课题简介1.1课题的设计目的学习直流电机转速的PWM控制原理及电路的实现。用单片机定时器和端口共同产生PWM波,控制直流电机的转动速度。用独立按键区的按键KEY1和KEY2实现占空比的增加和降低,实现手动调速。1.2课程任务与要求1.掌握PWM电机功率驱动电路的原理;2.按键能增减PWM波的占空比;3.LED数码管显示PWM波的占空比;4.设计硬件原理图;5.编写程序。2转速控制方案设计2.1控制系统总体介绍2.1.1电机控制系统设计综述现在电气传动的主要方向之一是电机调速系统采用微处理器实现数字化控制。采用微处理器控制。使整个调速系统的数字化程度、智能化程度大大提高;采用微处理器控制调速系统,会使得整个调速系统的数字化程度、智能化程度大大地提高;采用微处理器来控制,也能使得调速系统在结构上简单化,调速系统的可靠性能够大幅度提高。此外在操作方面,操作维护变得简捷,更为电机的稳定运行和调速精度奠定了基础。基于以上微处理器的特点,这次的课程设计理论上用的是ATMEL公司生产的嵌入式单片机AT89S51,但我们用的是自己买的普中单片机开发试验仪,其使用的单片机是AT89C51,基于该单片机在实现功能方面上与AT89S51相差不大,所以取前者而代之。2.1.2直流电机转速控制系统设计这次的课程设计的对象是直流电机,由课题的设计目的:学习直流电机转速的PWM控制原理,可知控制方式为PWM调速。从单片机课程中定时/计数器这一章节可知用单片机定时器和端口共同产生PWM波,控制直流电机的转动速度。只要控制定时器的定时长短,保持总波形的周期不变,即可以实现占空比的调节,从而改变输出电平的平均值,通过驱动器驱动电机旋转,从而改变直流电机的转速控制。这种占空比调节方式就是脉冲宽度调制(PWM)。有了控制方法,我决定用单片机P3.2端口(外部中断0)和P3.3(外部中断1)来作为改变占空比的控制端,让这两个端口与外部独立键盘KEY1和KEY2连接,通过KEY1和KEY2的按下来实现占空比的增加和降低,改变电机的转速,从而实现手动调速。有了总的控制思路,硬件电路实现起来也就容易多了。为了将调节的占空比能一目了然,特意设置了LED显示电路,与此同时一并将电机对应占空比的转速显示出来。所以以上便是本次课程设计的大体设计方案。具体的硬件电路实现将在第三部分详细叙述。2.2设计框图LED显示AT89C51单片机驱动电路直流电机键盘控制2.3工作原理直流电机,即将直流电能转换成机械能的旋转电机。直流电机具有速度控制容易,启动、制动性能良好,且能在宽广范围内换成平滑调速。所以了解直流电机的工作原理,就能够很方便地实现电机的智能控制。那么首先介绍直流电机的工作原理。直流电机由定子磁极、转子电枢和机座等部分构成如图2.3.1所示。为了便于说明其具体的运行方式,特意找出直流电机的物理模型如图2.3.2所示。Fig2.3.1直流电机结构模型Fig2.3.2物理模型通过对直流电机模型的分析可知:直流电从两电刷之间通入电枢,由于换向片和电源固定连接,无论线圈怎么样转动,总是S极有效边的电流垂直纸面向里,N极有效边的电流则垂直纸面向外。电动机电枢绕组中通电后受力(左手定则),按如图所示顺时针转动。有了直流电机的结构和理论基础,其调速原理也就左右逢源了。根据励磁方式,这次课程设计所用直流电机为他励式电机(小马达),由永磁铁励磁。从电机学中可知,他励式直流电机的机械特性曲线上的转速随所加电压成线性关系,他励式直流电机的机械特性曲线如图2.3.3所示。所以输出转速会随着电枢电压的升降而发生相应的升降变化。不同的电枢电压的机械特性曲线是相互平行的。只要平滑调节他励直流电机电枢两端的电压时,可实现电机的无级调速。这正是我们所要求达到的效果。基于以上理论,脉冲宽度调制法(PWM)成了调速方法的不二选择。脉宽调制利用一个固定的频率来控制电源的接通或断开,并通过改变一个周期内“接通”和“断开”的时间长短,也就是所谓的定频调宽法,即改变直流电机电枢电压上的“占空比”来改变平均电压大小,从而控制电机的转速。电枢电压占空比减小调节关系如图2.3.4所示。增大调节则反之即可。如果电机始终接通电源,电机的最大转速为,占空比为,则平均转速则为。可见只要改变占空比,就可以得到不同的转速,从而达到调速的目的。至此本次课程设计的全部理论基础便介绍结束。Fig2.3.3直流电机的机械特性曲线Fig2.3.4PWM调制波形3硬件电路设计3.1AT89C51介绍AT89C51是由美国在20世纪80年代中期成立的半导体公司ATMEL生产制造的。ATMEL通过E2PROM技术与Intel公司的80C51内核交换使用权。将Flash技术与80C51技术相结合,制造出片内带有Flash存储器AT89C51单片机。AT89C51单片机继承了MCS-51单片机的原有功能,与MCS-51系列单片机在原有功能、引脚以及指令系统方面完全兼容。得到改进的是AT89C51单片机片内的4KBFlash存储器取代了原有的4KBEPROM。其可在线编程或使用编程器重复编程的性能大大提高了编程的灵活性,而且价格相对来说较低,因此在一段时间内得到了广泛应用。这次的课程设计正好使用的AT89C51单片机,由于我的课题是硬件设计,所以在设计电路时先在仿真软件上画出原理图及接线。下图3.1便是AT89C51在原理图上的布局。(说明:以下原理图均由PROTEUS原理图给出,PROTEL原理图放于附录中。)Fig3.1AT89C51单片机原理图说明:单片机采定时/计数器工作在定时器模式,所以是对内部晶体振荡器信号进行12分频后的计数,因此必须在时钟引脚XTAL1和XTAL2外接石英晶体和微调电容(22pF)。从引脚P1.0引出的线就是接在后续将介绍的驱动器上的一端。从图上还可见P3.2和P3.3的第二功能位为外部中断0和外部中断1,这两个引脚分别与KEY1和KEY2相连。3.274HC573介绍74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。74HC573与74LS573管脚排布相似,器件的输入是和标准CMOS输出兼容的。其主要特点是:三态总线驱动输出、置数全并行存取、缓冲控制输入、使能输入有改善抗扰度的滞后作用。Fig3.2.174HC573原理图Fig3.2.274HC573引脚图从引脚图上可以看出:1脚三态允许控制端/OE低电平有效;1D~8D为数据输入端;1Q~8Q为数据输出端;Vcc为电源端,GND则为接地端;11脚为输出控制端LE高电平有效。其逻辑真值表如下图3.2.3所示:Fig3.2.374HC573真值表Fig3.2.474HC573逻辑图真值表上能够清楚地看出当三态允许控制端/OE低电平有效时,输出控制端LE为高电平时,输出端随着输入状态改变而改变;当LE为低电平时,输出端始终保持上一个状态的输出Q0;如果一开始/OE端为高电平时,输出状态呈现高阻状态。图3.2.474HC573的逻辑图清楚地解释了该真值表,这里就不再多赘述了。了解了74HC573的基本特性后,下面介绍其在软件仿真中的具体接线排布。从原理图3.2.1可知LE端悬空使之保持高电平,让输出始终跟随输入;输出/OE接地,输出允许被贯彻在整个过程中;输出端输出信号与数码管LED相连。3.3ULN2003A介绍我们知道从单片机端口输出的信号不能直接驱动被控元件,这需要由功率电路来扩展输出电流以满足被控元件的电流、电压,这时就必须添加适当的驱动电路。由于此次的硬件是自己设计的,所以通过查找资料我选择ULN2003A这个芯片,恰巧单片机开发试验仪上也具备这个芯片。基于其对微型电机的驱动性能较好所以用来做此次的电机(小马达)的驱动装置再合适不过了。简单介绍一下ULN2003A。图3.3.1为其实物图。Fig3.3.1ULN2003A实物图Fig3.3.2ULN2003A引脚图从图3.3.2引脚图可知,LN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平。这是一个多路输入多路输出的控制器,而这次的驱动对象是微型直流电机,所以只需接一路输入,一路输出給电机即可。Fig3.3.3ULN2003A原理图从原理图上可以看出有7路输入1B~7B,对应7路输出1C~7C,COM端也就是9端为公共端,8端为发射极端。将单片机输出信号接到1B输入端,输出端1C接到电机一端。由于ULN2003是集电极开路输出,为了让这个二极管起到续流作用,必须将COM引脚接在电机的供电电源上,只有这样才能够形成续流回路。所以COM端与直流电机的另一端接到高电平+5V上,这样正好符合芯片的输出逻辑。3.4LED数码管介绍在之前的课程以及课程设计中早已接触过LED数码管。LED数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极即可使用。这些段分别由字母a,b,c,d,e,f,g,dp来表示。数码管的管脚定义如下图3.4.1所示。LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。这次使用的是静态显示的方式。我们知道要使数码管点亮,无论其电路接法是共阴极还是共阳极,都必须有一个片选信号来选中该数码管,再由8路信号端输出来选择点亮的段号。具体如何使其按要求点亮,则在程序设计部分具体介绍。原理图中的接线方式则是上述介绍的直观体现。Fig3.4.1LED管脚图Fig3.4.2LED原理图说明:从图中可以看出两个4线是从P2口引出的位选地址线,分别接到两个数码管的片选端,用于选择数码管;从74HC573输出的信号送到LED显示端,用于点亮显示。3.5直流电机介绍从电机学中可知,直流电机的机械特性很好,调速平滑。只要均匀改变电枢电压,就可以实现转速调节了。在转速控制设计方案这一节已经详细地介绍了电机的工作原理以及驱动方式,这里就不再多多叙述了。此次设计我们采用的是直流小电机,所以控制起来也比较方便,接线方式也比较简单。如上图3.3.3所示。至此,所有硬件的基本介绍全部完毕,在硬件这一块暂告一段落。下面根据安排开始软件编程设计。4软件编程设计4.1设计主流程图开始初始化显示状态键盘查询N有键按下YYYY加速键加速按键处理NNYY减速键减速按键处理流程说明:以上流程图便是整个调速过程的整体体现。在开始时,先将中断以及LED数码管显示初始化。包括定时器的工作方式以及初值的设置,对控制电机的选通信号以及相关引脚置位,让电机工作在某一状态下。采用键盘(去抖)产生外部中断的方式来实现占空比的调节,所以一旦有键盘按下便会产生一个外部中断请求,请求被允许后经过判别是加速键按下还是减速键按下,转至相应的子程序中去执行加速或减速。同时将电机驱动信号PWM的占空比以及对应的转速通过LED显示出来。4.2键盘程序流程图YY开始有键按下?NN加速键?Y有键按下?YY减速键?YY加速Y延时去抖减速返回流程说明:由于此次控制较为简单,只有加速和减速两个对象,所以选用独立键盘。一共使用两个键,前面已经提到的加速键及减速键。当有键按下时,先通过去抖程序判断是否有键按下还是抖动,如果是真有键按下则判断是加速键还是减速键并跳至相应子程序处执行。延时去抖以及加减速子程序将在后文说明。4.3PWM程序流程图开始定时器赋初值NN定时时间到?NYNY循环次数>n?PWM=1YYPWM=0流程说明:由于此次采用的PWM调制方式为定频调宽法,所以固定一个PWM波周期T,由初始化定时时间和工作方式可确定定时长度t,而高电平占有时间Th=n*t,n为循环计数次数。因此只需改变计数n则可以改变占空比。循环次数n是通过按键来改变的,从而使得输出电压信号的平均值得以改变。4.4显示程序流程图开始选通LED7,6占空比送显延时2ms延时2ms选通LED1各位送显选通LED4千位送显延时2ms延时2ms选通LED2十位送显选通LED3百位送显延时2ms流程说明:此次显示方式为LED数码管显示,根据显示电路硬件图可知,采用P2口作为片选信号输出来选中8个数码管,P0口接锁存器输出BCD码。要使其正确显示,必须先将片选端信号置为有效信号,再将对应的BCD码从P1口输出。例如从P2.2端口选中LED3,将BCD码从P0口输出显示。从流程图中可见,每选中一个LED使其显示,需加一定延时。具体如何实现将在程序加以描述。4.5初始化程序#include<reg52.h>sbitKEY1=P3^2;//定义外部中断0为KEY1,加速键sbitKEY2=P3^3;//定义外部中断1为KEY2,减速键sbitPWM_OUT=P1^0;//P1.0为输出口unsignedtt,ge,shi,qian,bai,shi1,ge1,temp;//定义延时时间变量,显示各位变量unsignedchartime_temp,PWM=60;//设定初始PWM占空比为60%voidTimerInit(void) //定时器初始化程序{ TMOD&=0xFF; //设置定时器工作模式 TMOD|=0x11; //设置定时器工作模式 TL0=0xAE; //设置定时器0初值 TH0=0xFB; //设置定时器0初值 TF0=0; //清除TF0标志 TR0=1; //定时器0开始计时 ET0=1;//定时器0中断允许 TL1=0xAE; //设置定时器1初值 TH1=0xFB; //设置定时器1初值 TF1=0; //清除TF1标志 TR1=1; //定时器1开始计时 ET1=1;//定时器1中断允许 EA=1;//总中断被允许}unsignedcharcodetable[]={//BCD码0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};unsignedcharcodeduan[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};程序说明:此段初始化程序包括对键盘、端口以及一些变量的定义。定时器初始化程序设置了其工作方式,以及中断请求,中断允许和总中断允许位的相关置位。具体说明已在程序中。4.6去抖延时程序voidDelay() //单片机晶振频率为11.0592MHz,延时5ms判断有无键按下{ unsignedchari,j; i=9; j=244; do { while(--j); }while(--i);}程序说明:独立按键是机械触点,按键闭合或断开时必然有抖动出现。虽然这种抖动是毫秒级的,人是无法感应到的,但计算机却能识别这种抖动,当有键按下时必须先判别是抖动还是确实有键按下所以去抖程序是必不可少的,当检查到有键按下时先延迟一段时间在检查按键状态,两个状态一致时则表明确有键按下,去执行中断程序。4.7按键中断程序voidKEY()//按键中断子程序{ if(KEY1==0) { Delay();//调用去抖程序 if(KEY1==0)//确有加速键按下 { PWM=PWM+10;//占空比增十 if(PWM>100) PWM=100;//维持最高占空比不变,最高转速 while(!KEY1); } } if(KEY2==0) { Delay(); if(KEY2==0)//确有减速键按下 { PWM=PWM-10;//占空比减十 if(PWM) PWM=0;//电机停转 while(!KEY2); } }}程序说明:检测到有键按下时,如果是外部中断0(P3.2端口)请求中断,则为加速键。每有一次按键便让PWM波形占空比以十倍涨幅增长;同理,若外部中断1(P3.3端口)请求中断,则为减速键。PWM波形同样以十倍下降。从而改变输出PWM输出。4.8主程序voidmain(){ TimerInit();//调用初始化程序 while(1) { KEY();//调用按键中程序 }}程序说明:主程序执行调用初始化程序以及按键中断程序。4.9定时器中断及显示程序voidtimer_interrupt()interrupt3 //定时器1中断{ TL1=0xAE; //设置定时器1初值 TH1=0xFB; //设置定时器1初值 time_temp++; if(time_temp<=PWM) PWM_OUT=1; else PWM_OUT=0; if(time_temp>=101) time_temp=0;}voidexter()interrupt1 //定时器0中断{ TH0=(65536-200)/256; //定时器赋初值 TL0=(65536-200)%256; tt+=1;//显示时间 if(tt<=2)//延时输出BCD码 { ge=PWM%10; P0=table[ge];//占空比个位显示 P2=duan[2];}//选中第3个LED数码管 if(tt==2) {shi=PWM/10;//占空比十位显示 P0=table[shi];//选中第2个LED数码管 P2=duan[1]; temp=PWM*14.5;//转速显示if(tt<=2) {qian=temp/1000;//转速千位 P0=table[qian]; P2=duan[4];//选中第5个LED数码管 } if(tt==2)//转速百位 {bai=temp/100%10; P0=table[bai]; P2=duan[5];//选中第6个LED数码管 } if(tt==2)//转速十位 {shi1=temp/10%10; P0=table[shi1]; P2=duan[6];//选中第7个LED数码管 } if(tt==2)//转速个位 {ge1=temp%10; P0=table[ge1]; P2=duan[7];//选中第8个LED数码管 tt=0; }}}程序说明:定时器中断及显示程序在定时结束后产生中断,并将结果从P0口输出。程序注解已经较为详细地解释了各个部分的作用。主要利用P2口作为数码管的位选信号来选择要点亮的LED数码管,再将某一按键后状态的占空比和转速的BCD码送到P0口,输出给LED显示。重复显示。 5实验与结果分析 5.1硬件连接按照硬件电路设计,按照仿真软件上的电路图连接各部分硬件。硬件实物图如下图5.1所示。Fig5.1硬件连接图说明:此硬件图是按照硬件设计连接的。图片的左上角为ULN2003A驱动单元与电机相连,但两者都需要接上一个正电源;两个多路白连线是LED数码管的位选线以及数据线分别与P2端和P0端相连;电机驱动电源通过导线与单片机P1.0相连;右下角的独立按键与单片机的外部中断引脚相连。以上硬件电路的接法是一种较为简单的方法。稍加改动就可以变成另一种,例如采用3-8译码器也可以产生8路片选信号,因其本质没有改变,也就采用了前者直截了当。5.2硬件调试将软件设计部分的程序在KeilμVision4中编译好,再将编译好的程序烧录入单片机中。(由于使用的是单片机开发试验仪,所以其自带有程序烧录软件)随后给试验仪上电,可以看到初始的状态,如下图5.2.1所示。Fig5.2.1初始状态图60%的占空比的选择其实是有一定依据的,我们知道电机的机械惯性要比电磁惯性大的多,如果起初的电压信号比较小,而所给的信号又是PWM波,必然不能完全起动起来;信号过小时,会和步进电机有异曲同工之妙。为此初始占空比设为60%,既能快速启动,转速也较均匀。按下减速键,观察电机转速变化以及LED显示的变化。调试结果如图5.2.2及5.2.3所示。Fig5.2.2占空比为50%Fig5.2.3占空比为40%说明:检测到有一次减速键按下时,按照软件设计占空比应减10%,此时显示为50%,转速相应改变为725r/min。第二次按下减速键,占空比再键减10%,转速随之下降。这里选取了两个状态予以显示。按下加速键,同样观察电机转速变化以及LED显示的变化。调试结果如图5.2.3所示。Fig5.2.4占空比为70%Fig5.2.5占空比为80%说明:检测到有一次减速键按下时,按照软件设计占空比应加10%,此时显示为70%,转速相应改变为1015r/min。第二次按下加速键,占空比再减加10%,转速随之上升。这里也只选取了两个状态图以示说明。5.3结果分析从调试的结果来看已经基本达到了本次设计的目标,可以实现小型电机的加减速平稳调速控制。当然设计中仍存在一些不足之处。由于小型电机的驱动电流还是相对较大的,如果占空比过低,则会出现转速会有级,不像高占空比时的那么平滑稳定。这也是限于设计方案的选择。从另一方面讲,这也是不可避免的,要驱动电机必须要有足够的电流产生转矩来带动电机,所以电流很小时便会出现不连续旋转或有时停转的现象。虽然在宏观上,能够清楚地感受到电机的转速有明显的变化,但其准确的转速实则难测,这也是本次课程设计比较遗憾的地方。这个小马达的具体参数厂家没有给出,网上有很多小马达,但转速有一两千转到几万转的不等,具体参数也没有给出。所以我决定用近似估算的方法,估算了电机转速与所加电压占空比的大致关系。对科学研究来讲是极不严谨的甚至是错误的,但从某一方面来讲,这确实能间接反映出转速的高低与所加电压占空比的关系。总的来说,本次课程设计还是基本满足设计要求的。6小结与体会每一次的课程设计其实都是动手能力的检验。课程设计的主要目的是让我们将所储备的知识能够被充分地运用到实际中去,另一方面也是通过课程设计加深对基础知识的理解。这两者是相辅相成的。但每一次的课程设计后感受又是截然不同的。首先来总结这次课程设计。本次设计的时间为一周半,第一天分配任务和熟悉课题。我和董志涵同学被分为一组,由于深得老师器重,我们被分到一个硬件设计的题目——直流电机转速控制。看到这个题目的任务书后发现只有短短地几行要求,并不像软件设计还有电路图提供。当时我就想这个题目估计不太好做,一开始并没有什么头绪。但话又说回来,没有太多要求也是给我们留有拓展思路的空间,设计可以多样化,比较灵活。没办法只好去图书馆查资料,不得不说图书馆里有关的资料很多,经过精心挑选我借了7本有关转速控制硬件设计的书。仔细研究了书中的设计方法,一举相中上文提到的设计方法,虽然电路设计稍微简单了些,但“麻雀虽小五脏俱全”。能够实现有效地转速控制就是好的方案。随后几天,我先是和同伴先研究了控制PWM的方法以及具体的实现方案。由于我们是硬件设计,不需要先做软件仿真,所以就按照仿真图上的接线方式将硬件电路搭好。我们有各自的电路,总的实现思路是一致的,主要区别是在硬件的选择上。忙完硬件设计后,便针对要实现的功能开始软件设计。这是一个难点,结合平时做的实验和已有知识,要改变电机转速最为简单的就是改变电枢电压(马达是永磁式不能改变励磁)。PWM调制是改变高电平的占空比来改变整个输出电压。首先想到的就是利用定时器的定时长度来改变高电平输出时间。这是一个突破点,只要保持总的频率不改变便可以实现调节。但说起来简单,要实现准确的定时与中断还是得花一些时间的。我们商量在初始化时,采用统一的外部中断端口,以及一些管脚的定义。这样便于检查错误以及修正。在程序设计上,善于C语言的同伴建议用C来编写主程序。这也是我第一次接触单片机的C语言,起初还有一些不适应,他说C语言描述很容易看懂,理解起来不费劲,可以做尝试。并没有经验的我提议我们一起先将他的设计方案做出来,关键是学习C语言是如何来编写的。为此我还专门学习了单片机C语言编写教程。日子一天天过去,同伴的设计基本实现了,我开始忙自己的方案。借鉴他的程序,我开始按照自己的设计有了编写C语言的思路。其实用C语言编写确实比较简单,而且交代的很清楚,这是高级语言独有魅力吧。按照每日安排,一点一点完成了设计。虽然结果做的没有同伴的那么好看,但至少又是一次新的动手锻炼。在此也得感谢李老师一学期以来的帮助与指导,使得我们两个人既结合书本又联系实际的能力得到提高。参考文献[1]张毅刚主编,单片机原理及应用,北京:高等教育出版社,2004[2]陈涛编著,单片机应用及C51程序设计,北京:机械工业出版社,2008[3]周润景主编,PROTEUS入门实用教程,北京:机械工业出版社,2007[4]皮大能主编,单片机课程设计指导书,北京:北京理工大学出版社,2010[5]楼然苗主编,单片机实验与课程设计(Proteus仿真版),浙江:浙江大学出版社,2010[7]张丽娜主编,51单片机系统开发与实践,北京:北京航空航天大学出版社,2013[8]柳淳编著,单片机开发应用技能与技巧,北京:中国电力出版社,2008[9]于永编著,51单片机C语言常用模块与综合系统设计实例精讲,北京:电子工业出版社,2007[10]钟启仁编著,单片机原理与实践(C语言篇),北京:北京航空航天大学出版社,2012[11]吴金戌编著,单片机实践与应用,北京:清华大学出版社,2002[12]楼然苗编著,单片机课程设计指导,北京:北京航空航天大学出版社,,2012[13]赖麒文编著,8051单片机嵌入式系统应用,北京:科学出版社,,2002[14]刘文涛主编,单片机应用开发实例,北京:清华大学出版社,,2005[15]郑毛祥编著,单片机应用基础,北京:人民邮电出版社,2006附录一硬件原理图PROTEUS原理图PROTEL原理图附录二源程序清单#include<reg52.h>sbitKEY1=P3^2;//定义外部中断0为KEY1,加速键sbitKEY2=P3^3;//定义外部中断1为KEY2,减速键sbitPWM_OUT=P1^0;//P1.0为输出口unsignedtt,ge,shi,qian,bai,shi1,ge1,temp;//定义延时时间变量,显示各位变量unsignedchartime_temp,PWM=60;//设定初始PWM占空比为60%voidTimerInit(void) //定时器初始化程序{ TMOD&=0xFF; //设置定时器工作模式 TMOD|=0x11; //设置定时器工作模式 TL0=0xAE; //设置定时器0初值 TH0=0xFB; //设置定时器0初值 TF0=0; //清除TF0标志 TR0=1; //定时器0开始计时 ET0=1;//定时器0中断允许 TL1=0xAE; //设置定时器1初值 TH1=0xFB; //设置定时器1初值 TF1=0; //清除TF1标志 TR1=1; //定时器1开始计时 ET1=1;//定时器1中断允许 EA=1;//总中断被允许}unsignedcharcodetable[]={//BCD码0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};unsignedcharcodeduan[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};voidDelay() //单片机晶振频率为11.0592MHz,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB32/T5446-2026历史文化街区消防安全管理规范
- (2026年)学校法制宣传月活动工作总结
- (2026版)幼儿园防欺凌工作总结
- 原电池的原理及其应用课件
- 北航计算机组成原理讲义4.存储系统
- 北师大版语文八上《读书的三种姿势》课件
- 北京望京K7(A)组团营销推广方案
- 《财产保险》课件
- 兰蔻十年光辉美白网络新品试用活动方案
- 动物的胎生和卵生课件
- 初中八年级数学《理财小课堂》综合与实践活动教学设计
- 城乡一体化供水改造提升工程项目绩效评价
- 野外生存技能训练2026年培训课件
- 核素-靶向协同治疗策略
- 水泥毯的施工方案(3篇)
- 24J113-1 内隔墙-轻质条板(一)
- 2026考研英语二万能作文模板 图表+书信+议论文三件套完整版
- 2025年国家烟草专卖局、中国烟草总公司招录笔试题库附答案解析
- Android移动终端开发 答案
- 外交部人员培训制度
- 金色的鱼钩教学课件
评论
0/150
提交评论