资源描述
. . . . 目 录1 引言12 系统论述22.1 设计背景22.2设计思路22.3系统框架设计23 PWM脉宽调制定理43.1 PWM调速原理43.2PWM调速方法43.3PWM实现方法44系统硬件设计44.1 系统基本组成44.1.1 硬件模块组成44.1.1 单片机整个控制模块44.2AT89S52单片机简介44.2.1 AT89S52主要性能44.2.2AT89S52主要功能例举44.2.3AT89S52各引脚功能介绍44.2.4AT89S52的部资源44.3L298电机驱动模块44.3.1 L298电机驱动简介44.3.2L298部原理图44.3.3L298引脚符号与功能44.3.4L298逻辑功能44.4LED数码管显示44.4.1 LED简介44.4.2LED七段数码管的结构44.4.3常见数字和字符的字段码44.4.4LED数码管与单片机的连接44.4.5简单的程序流程44.4.6本系统中单片机与LED的连接44.5独立式键盘控制模块44.5.1 键盘的功能与分类44.5.2独立式键盘44.5.3独立式键盘与单片机的连接45系统软件设计4结论5致6参考文献7附录8附录18附录281 引言早期直流传动的控制系统采用模拟分离器件构成,由于模拟器件有其固有的缺点,如存在温漂、零漂电压,构成系统的器件较多,使得模拟直流传动系统的控制精度与可靠性较低。随着计算机控制技术的发展,微处理器已经广泛使用于直流传动系统,实现了全数字化控制。由于微处理器以数字信号工作,控制手段灵活方便,抗干扰能力强。所以,全数字直流调速控制精度、可靠性和稳定性比模拟直流调速系统大大提高。所以,直流传动控制采用微处理器实现全数字化,使直流调速系统进入一个崭新的阶段。微处理器诞生于上个世纪七十年代,随着集成电路大规模与超大规模集成电路制造工艺的迅速发展,微处理器的性价比越来越高。此外,由于电力电子技术的发展,制作工艺的提升,使得大功率电子器件的性能迅速提高。为微处理器普遍用于控制电机提供了可能,利用微处理器控制电机完成各种新颖的、高性能的控制策略,使电机的各种潜在能力得到充分的发挥,使电机的性能更符合工业生产使用要求,还促进了电机生产商研发出各种如步进电机、无刷直流电机、开关磁阻电动机等便于控制且实用的新型电机,使电机的发展出现了新的变化。对于简单的微处理器控制电机,只需利用用微处理器控制继电器、电子开关元器件,使电路开通或关断就可实现对电机的控制。现在带微处理器的可编程控制器,已经在各种的机床设备和各种的生产流水线中普遍得到应用,通过对可编程控制器进行编程就可以实现对电机的规律化控制。对于复杂的微处理器控制电机,则要利用微处理器控制电机的电压、电流、转矩、转速、转角等,使电机按给定的指令准确工作。通过微处理器控制,可使电机的性能有很大的提高。目前相比直流电机和交流电机他们各有所长,如直流电机调速性能好,但带有机械换向器,有机械磨损与换向火花等问题;交流电机,不论是异步电机还是同步电机,结构都比直流电机简单,工作也比直流电机可靠,但在频率恒定的电网上运行时,它们的速度不能方便而经济地调节2。高性能的微处理器如DSP (DIGITAL SIGNAL PROCESSOR即数字信号处理器)的出现,为采用新的控制理论和控制策略提供了良好的物质基础,使电机传动的自动化程度大为提高。在先进的数控机床等数控位置伺服系统,已经采用了如DSP等的高速微处理器,其执行速度可达数百万兆以上每秒,且具有适合的矩阵运算。2 系统论述21设计背景近年来,随着科技的进步,电力电子技术得到了迅速的发展,直流电机得到了越来越广泛的应用。直流它具有优良的调速特性,调速平滑、方便,调速围广;过载能力大,能承受频繁的冲击负载,可实现频繁的无级快速起动、制动和反转;需要能满足生产过程自动化系统各种不同的特殊运行要求,从而对直流电机的调速提出了较高的要求,改变电枢回路电阻调速,改变电枢电压调速等技术已远远不能满足要求,这时通过PWM方式控制直流电机调速的方法应运而生。22 设计思路直流电机PWM控制系统的主要功能包括:实现对直流电机的加速、减速以与电机的正转、反转和急停,并且可以调整电机的转速,能够很方便的实现电机的智能控制。主体电路:即直流电机PWM控制模块。这部分电路主要由AT89S52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以与电机的正转和反转,并且可以调整电机的转速,能够很方便的实现电机的智能控制。其间是通过AT89S52单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。该直流电机PWM控制系统由以下电路模块组成:设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速以与电机的正转、反转和急停控制。设计控制部分:主要由AT89S52单片机的外部中断扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298直流电机驱动模块组成。设计显示部分: LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。23 系统框架设计直流电机PWM调速方案方案说明:直流电机PWM调速系统以AT89S52单片机为控制核心,由命令输入模块、LED显示模块与电机驱动模块组成。采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转和急停控制;同时单片机不停的将PWM脉宽调制占空比送到LED数码管完成实时显示。31 / 313 PWM脉宽调制原理31 PWM调速原理载两端的电压,从而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,比如:电机调PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负速、温度控制、压力控制等等7。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置”。如图1所示:图1 PWM信号的占空比设电机始终接通电源时,电机转速最大为Vmax,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D,其中Va指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。由上面的公式可见,当我们改变占空比D=t1/T时,就可以得到不同的电机平均速度Vd,从而达到调速的目的。严格来说,平均速度Vd与占空比D并非严格的线性关系,但是在一般的应用中,我们可以将其近似的看成是线性关系。3. 2 PWM调速方法基于单片机类由软件来实现PWM:在PWM调速系统中占空比D是一个重要参数在电源电压不变的情况下,电枢端电压的平均值取决于占空比D的大小,改变D的值可以改变电枢端电压的平均值从而达到调速的目的。改变占空比D的值有三种方法:A、定宽调频法:保持不变,只改变t,这样使周期(或频率)也随之改变。B、调宽调频法:保持t不变,只改变,这样使周期(或频率)也随之改变。C、定频调宽法:保持周期T(或频率)不变,同时改变和t。 前两种方法在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此常采用定频调宽法来改变占空比从而改变直流电动机电枢两端电压。利用单片机的定时计数器外加软件延时等方式来实现脉宽的自由调整,此种方式可简化硬件电路,操作性强等优点。3.3 PWM实现方式方案一:采用定时器做为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个us。方案二:采用软件延时方式,这一方式在精度上不与方案一,特别是在引入中断后,将有一定的误差。故采用方案一。 4系统硬件设计4.1系统基本组成4.1.1 硬件模块组成(1)单片机控制模块(2)L298电机驱动模块(3)LED显示模块(4)独立键盘控制模块3.3系统硬件各模块电路4.1.2 单片机整个控制模块单片机整个控制模块这里利用定时计数器让单片机P2口的P2.6、P2.7引脚输出占空比不同的方波,然后经驱动芯片L298放大后控制直流电机。驱动芯片的输入电压是两引脚的电压差,在调速时一根引脚线为低电平,另一个引脚产生调速方波,这样两个引脚的电压差就可通过控制其中一个引脚来控制。当需要改变电机转动方向时,两个引脚的输出相反。 定时计数器若干时间(1us)中断一次,就使P2.6或P2.7产生一个高电平或低电平。直流电机的速度分成100个等级,因此一个周期就有100个脉冲,周期为一百个脉冲的时间,速度等级对应一个周期的高电平脉冲的个数。占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。一个周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大,加在电机两端的电压越大,电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。当我们改变占空比时,就可以得到不同的电机平均速度,从而达到调速的目的。精确的讲,平均速度与占空比并不是严格的线性关系,在一般的应用中,可以将其近似看成线性关系。42 AT89S52的简介42.1 AT89S52主要性能AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;全静态操作:0Hz33Hz;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;八个中断源;全双工UART串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;看门狗定时器;双数据指针;掉电标识符。42.2 AT89S52主要功能列举1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片部具时钟振荡器(传统最高工作频率可至 12MHz)3、部程序存储器(ROM)为 8KB4、部数据存储器(RAM)为 256字节5、32 个可编程I/O 口线6、8 个中断向量源7、三个 16 位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道42.3 AT89S52各引脚功能介绍VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得部特殊功能寄存器之容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031与8032中,EA引脚必须接低电平,因为其部无程序存储器空间。如果是使用 8751 部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址与数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN与RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)与数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制与外部数据存储器容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入与部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。42.4 AT89S52的部资源AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。AT89S52部具有看门狗定时器与3个16位可编程定时器/计数器。16位是指他们都是由16个触发器构成,故最大计数模值为。可编程是指它们的工作方式由指令来设置,或者当计数器用,或者当定时器用,并且记数(定时)的围也可以由指令来设置。这种控制功能是通过定时器方式控制器TMOD来完成的。 存储器结构:MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于 89S52,如果EA 接VCC,程序读写先从部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:AT89S52 有256 字节片数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有一样的地址,而物理上是分开的。当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV 0A0H , #data使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV R0 , #data堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。4. 3 L298电机驱动模块4. 3.1L298电机驱动简介L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。4. 3.2L298部的原理图4. 3.3L298 引脚符号与功能引 脚功 能SENSA、SENSB分别为两个H桥的电流反馈脚,不用时可以直接接地ENA 、ENB使能端,输入PWM信号IN1、IN2、IN3、IN4输入端,TTL逻辑电平信号OUT1、OUT2、OUT3、OUT4输出端,与对应输入端同逻辑VCC逻辑控制电源,4.57VVSS电机驱动电源,最小值需比输入的低电平电压高GND地4. 3.4L298的逻辑功能IN1IN2ENA电机状态XX0停止101顺时针011逆时针000停止110停止当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;IN1与IN2相同时,电机快速停止。当使能端为低电平时,电动机停止转动。在对直流电动机电压的控制和驱动中,半导体功率器件(L298)在使用上可以分为两种方式:线性放大驱动方式和开关驱动方式在线性放大驱动方式。半导体功率器件工作在线性区优点是控制原理简单,输出波动小,线性好,对邻近电路干扰小,缺点为功率器件工作在线性区,功率低和散热问题严重。开关驱动方式是使半导体功率器件工作在开关状态,通过脉调制(PWM)来控制电动机的电压,从而实现电动机转速的控制。4. 4 LED数码管显示4. 4.1 LED简介LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。除半导体激光器外,当电流激励时能发射光学辐射的半导体二极管。严格地讲,术语LED应该仅应用于发射可见光的二极管;发射近红外辐射的二极管叫红外发光二极管(IRED,Infrared Emitting Diode);发射峰值波长在可见光短波限附近,由部份紫外辐射的二极管称为紫外发光二极管;但是习惯上把上述三种半导体二极管统称为发光二极管。4. 4.2 LED七段数码管的结构 共阴极 共阳极 管脚图其中:图(a)为共阴极结构,8断发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管,则对应的阳极端接高电平。图(b)为共阳极结构,8端发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源。要使哪根发光二极管,则对应的阴极端接地。其中7段发光二极管构成7笔的字形“8”,1根发光二极管构成小数点。图“c”为引脚图,从a-g引脚输入不同的8位二进制编码,可显示不同的数字或字符。通常把控制发光二极管的7(或8)位二极管编制称为字段码。不同数字或字符其字段码不一样,对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码。4. 4.3常见数字和字符的字段码显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8.FFH00HA77H88H“灭”00FFHB7CH83H4. 4.4 LED数码管和单片机的连接电路的接法决定了必须采用逐位扫描显示方式。即从段选口送出某位LED的字型码,然后选通该位LED, 并保持一段延时时间。然后选通下一位,直到所有位扫 描完。4. 4.5简单的程序流程4. 4.6本系统中单片机与LED的连接4.5独立式键盘控制模块4.5.1键盘的功能与分类键盘是一种最常用的输入设备,它是一组按键的集合,从功能上可分为数字键和功能键两种,作用是输入数据与命令,查询和控制系统的工作状态,实现简单的人机对话。键盘的分类(a)键盘按照接口原理可分为编码键盘与非编码键盘两类。这两类键盘的主要区别是识别键符与给出相应键码的方法。 编码键盘主要是用硬件来实现对键的识别; 非编码键盘主要是由软件来实现键盘的定义与识别。(b)键盘按照其结构可分为独立式键盘与矩阵式键盘两类。 独立式键盘主要用于按键较少的场合,矩阵式键盘主要用于按键较多的场合,也称行列式键盘4.5.2独立式键盘独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下4.5.3独立式键盘与单片机的5系统软件设计 直接应用AT89S52的软件方法实现PWM信号输出,这比硬件实现PWM信号成本低。限制少。实现便捷。其流程图如下所示。5.1流程图5.1.1主程序流程图图5.1系统主单片机总程序框图结论通过本次毕业设计,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:直流电机PWM调速、AT89S52单片机、L289引脚图与其引脚功能等,LED数码管显示,为本次毕业设计提供了一定的资料。在做毕业设计的初期阶段,难度很大,没有头绪。通过求助于老师、理清了思路。同时,在图书馆里、网上查阅资料,攻克了毕业设计中的道道难题。通过本次科技创新实践,我学到了许多东西,知道光靠书本上的东西是不够的,需额外去查资料。无论是在硬件还是软件设计上,我都遇到了不少的问题,在克服困难的过程中,我学到了许多,特别是在课堂上学不到的东西如(PWM)。也锻炼了我的protel画图能力,以前学的时候元器件都是给定的只要到库里面找出名字就可以,只要连线就可以,而这次是根据自己的设计需要去画,感觉不同。本次设计我能独立完成,算是有了很大的收获。总的感受有以下几方面:1、通过本次毕业设计,我不但对单片机有了更为深入的了解,对一个课题如何画流程图,编程序等有了一定的认识。2、进一步加强了我的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题,以与如何灵活地改变方法去实现设计方案。特别是深刻体会到了软件和硬件结合的重要性,以与两者的联系和配合作用。3、让我了解到单片机技术对当今人们生活的重要性。同时这次做毕业设计的经历也使我受益匪浅,让我知道做任何事情都应脚踏实地,刻苦努力地去做,只有这样,才能做好。参考文献1 林志琦.基于Proteus的单片机可视化软硬件仿真M.:航空航天大学出版 社,2006.92 周润景,丽娜.基于PROTEUS的电路与单片机系统设计与仿真M.:航空航天大学,2006.53 靖武,周灵彬.单片机系统的PROTEUS设计与仿真M.:电子工业,2007.44 周润景,丽娜.PROTEUS入门实用教程M.:机械工业,2007.95 楼然苗,光飞.51系列单片机设计实例M.:航空航天大学,2003.36 楼然苗,光飞.单片机课程设计指导M.:航空航天大学,2007.77 贾东耀,汪仁煌. 数字温度传感器在仓库温度检测系统的应用J. 传感器世界,20018 DALLAS DS18B20数据手册Z. :/.maximic.、9朝青单片机原理与接口技术M:航空航天大学,200610康华光,大钦电子技术基础(模拟部分)M:高等教育,199911康华光,邹寿彬电子技术基础(数字部分)M:高等教育,200012胡祝兵基于单片机控制的直流电机调速系统的设计J石油高等专科学校学报,2008(1)13 卢春华,海燕,莉. 基于单片机的直流电机调速系统设计J.硅谷,2009(20).14 吴守箴,戚英杰.电气传的脉宽调制控制技术.:机械工业.15 贾玉瑛,王臣.基于单片机控制的PWM直流调速系统.钢铁学院学报,2005年.16 康华光,邹寿彬.电子技术基础(数字部分第四版).:高等教育,2004年.17 三恒星科技.MCS 51单片机原理与应用实例.:电子工业,2008年1月.18 浦龙梅,私.单片机控制的直流PWM调速装置的研究.变频器世界,2006年3月19 波.SG3525A控制的直流电机脉宽调速装置.电气制造,2006年第七期.附录附录1 C程序*直流电机PWM调速功能描述:使用单片机T0定时器产生(xxxHz)脉宽调制信号,输到L298N的EN_A 实现双直流电机的速度调控。修订日期:2011-5-7*/#include #include #define uchar unsigned char#define uint unsigned int /*L298n接口定义*/ sbit MOTOR_A_2=P36;sbit MOTOR_A_1=P37;sbit EN_MOTOR_A =P34; sbit k1=P15;/定义k1为p1.5口sbit k2=P31; /定义k2为p3.1口sbit k3=P32; /定义k3为p3.2口sbit k4=P33; /定义k4为p3.3口uchar T=0; /定时标记uchar W=0; /脉宽值 0100uchar A=0; /方向标记 0,1uchar k=0; /按键标记uchar i=0; /计数变量uchar code table1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code table2=0xef,0xbf,0xdf,0x7f;void delayms(uint t); /*数码管显示*/ void disp(void)P0=table23;P2=table1W%10;/显示占空比个位delayms(1); /延时1msP0=0xff;/P0清1P0=table22;P2=table1W/100; /显示占空比百位delayms(1); /延时1msP0=0xff;/P0清1P0=table21;P2=table1W/10%10; /显示占空比十位delayms(1); /延时1msP0=0xff; /P0清1P0=table20;P2=table1A; /显示方向delayms(1); /延时1msP0=0xff;/P0清1/*定时器变量定义*/ void init(void)/启动中断TMOD=0x01;EA=1;ET0=1;TR0=1;/设置定时时间TH0=0xfd;TL0=0x17;void timer0() interrupt 1 /重置定时器时间TL0=0x17;TH0=0xff;T+; /定时标记加1 disp();/数码管显示if(TW)EN_MOTOR_A =1;elseEN_MOTOR_A =0;if(T=100)T=0;/*延时1ms*/ void delayms(uint t)uchar j;while(t-)for(j=0;j250;j+)/循环250次 _nop_(); /系统延时 _nop_();/系统延时 _nop_();/系统延时 _nop_();/系统延时/*独立按键检测*/ void key(void) /按键判断程序if(k1=0)/按键1按下while(k1=0);/按键1抬起if(W=100)/如果脉宽为100W=0;/脉宽置0elseW+=1;/否则加1else if(k2=0)/按键2按下 while(k2=0);/按键2抬起if(W=0)/如果脉宽为0W=100;/脉宽设置成100elseW-=1;/否则减1else if(k3=0)/按键3按下 while(k3=0);/按键3抬起A=!A;/方向标记取反k=0;/按键标记清0 else if(k4=0)/按键4按下 while(k4=0);/按键4抬起W=0;/脉宽清0k=0;/按键标记清0void main(void)init(); /系统初始化 while(1)key();/查询按键/*END*/附录2:原理图
展开阅读全文