《基于51单片机的温度控制直流电动机转速系统设计(共29页).doc》由会员分享,可在线阅读,更多相关《基于51单片机的温度控制直流电动机转速系统设计(共29页).doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上第一章 系统方案设计1.1系统的设计要求及主要技术指标本论文要求使用单片机进行电路设计,同时单片机部分应带有显示功能。单片机对某个位置进行温度监控,当外部温度45时,电动机加速正转,当温度75时,电动机全速正转;当外部温度10时,电动机加速反转,当温度0时,电动机全速反转;当温度回到1045之间时电动机逐渐停止转动。1.2系统总体方案系统总体方案设计,如下图1.1单片机温度显示温度采集DS18B20PWM输出电机驱动L298直流电动机系统供电图1.1 系统总体方案图1.3总体方案论述该系统采用AT89C51单片机为核心,通过DS18B20进行温度采集,送入单片机,经过
2、软件编程进行温度的比较和范围划定,然后通过程序控制由单片机产生不同的PWM(脉冲宽度调制)信号,送给电机驱动芯片L298的使能端口,通过L298驱动芯片来控制直流电机的启动、速度、方向的变化;单片机将温度数据传送给LM016L显示温度。整个电路设计包括温度采集模块,单片机控制模块,温度显示模块,和电机及电机驱动模块。第二章 硬件电路设计2.1单片机的选择2.1.1 AT89C51单片机AT89C51是美国ATMEL公司生产的低电压高性能CMOS 8位单片机,片内含4Kbytes的可反复檫写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM), 器件采用ATMEL公司
3、的高密度、非易失性存储技术生产,兼容标准MSC-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。2.1.2单片机晶振电路单片机系统里都有,如图2.1所示(左图为内部振荡方式,右图为外部振荡方式)在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。图2.1 晶振电路在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更
4、高。有些晶振还可以由外加电压在一定范围内调整频率,称为(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。当采用内部时钟时,片外连接石英晶体(或陶瓷振荡器)和微调电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2起稳定振荡频率、快速起振的作用。虽然没有十分严格的要求但电容容量的大小会轻微影响振荡频率的高低、振荡工作的稳定性、起振的难易程度及温度稳定性,如果使用石
5、英晶体,推荐使用30pf10pf,而如使用陶瓷振荡器最好选择40pf10pf,产生原始的振荡脉冲信号。采用外部时钟时, XTAL1输入即内部时钟发生器的输入端外部时钟脉冲信号, XTAL2悬空。仿真如图2.1所示。2.1.3单片机复位电路复位是单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续
6、为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和手动复位。上电复位:上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。手动复位:首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被短路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,正常工作,仿真如图2.2所示。图2.2 Protues仿真的晶振及复位图2.2温度采集模块
7、设计温度是一种最基本的环境参数,在工农业生产及日常生活中对温度的测量及控制具有重要意义。本模块的功能是进行温度采集,获取温度数据然后经过单片机处理,由单片机来控制PWM的输出。2.2.1方案论证:方 案一由于本模块是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路 , 其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。方案二进而考虑到用温度传感器,在单片机电路设
8、计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求 。从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。该模块通过AT89C51 单片机驱动数字温度传感器DS18B20,进行温度数据采集、读取、处理,并通过LCD显示出来。温度传感器是该模块的关键器件,本系统选用的是美国Dallas 半导体公司生产的数字化温度传感器 DS18B20。DS18B20 支持“一线总
9、线”接口,测量温度范围为-55+125,被测温度用符号扩展的16 位数字量方式串行输出,在-10+85 范围内,精度为0.5。DS18B20 采集到的现场温度直接以先进的单总线数据通信方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20 可程序设定912 位的分辨率,精度可达0.5。DS18B20具有内置的EEPROM,用户设定的分辨率和报警温度都可存储在其中,且掉电后依然存在。2.2.2 DS18B20的内部结构DS18B20内部结构由64bit闪速ROM、温度传感器、非易失性温度报警触发器TH和TL配置寄存器等
10、4个数字器件组成,如图2.3。温度传感器DS18B20是通过温度对振荡器的频率影响来测量温度,如图2.4。DS18B20内部有2个不同温度系数的振荡器,低温度系数振荡器输出的时钟脉冲信号在高温度系数振荡器产生的门周期内进计数。计数初值被预置-55相对的基数值,如计数器在高温度系数振荡器输出的门周期结束前计数为零,表示测量温度值高于-55,被预置在-55的温度寄存器的值加1,重复该过程,直到高温度系数振荡器门周期结束止,温度寄存器中的值就是被测的温度值。该值由主机通过发读存储器命令读出,经取补和十进制转换,得到实测的温度值。斜率累加器用于补偿和修正温度振荡器的非线性,以产生高分辨率的温度测量。通
11、过改变温度每升高1,计数器须经计数值实行补偿。为获得所需分辨率,必须知道该数值及在给定温度处每1的计数值(斜率累加器的值)。图2.3 DS18B20的内部结构图2.4 DS18B20测温原理图DS18B20的管脚排列如下图2.5所示:图2.5 18B20管脚图DQ为数字信号输入/输出端;GND为电源地;VCC为外接供电电源输入端(在寄生电源接线方式时接地)。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X
12、8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。表2.1 DS18B20的RAM这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中如图7所示,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度
13、。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H,温度代码对照如图8所示。表2.2 温度代码对照2.2.3 DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的ERAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。暂存存储器包含了8个连续字节如表2.3所示,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个
14、字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。表2.3 DS18B20的寄存器 寄存器内容 字节地址温度最低数字位 0温度最高数字位 1高温限值 2低温限值 3保留 4保留 5计数剩余值 6每度计数值 7CRC校验 8该字节各位的意义如下:TM R1 R0 低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表2.4所示:(DS18B20出厂时被设置为12位)分辨率设置表:表2.4 DS18B20分辨率设置表 R1R0分辨率温度最大
15、转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。CPU 只需一根端口线就能与DS18B20 进行通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。与前一代产品(DS18
16、20 温度传感器)不同,DS18B20支持3.0V5.5V的电压范围,使系统设计更灵活、方便,而且DS18B20 价格更便宜,体积更小。(1)DS18B20 芯片存储器操作指令表: Write Scratchpad (向 RAM中写数据)4EH 这是向 RAM 中写入数据的指令,随后写入的两个字节的数据将会被存到地址 2 (报警RAM 之 TH)和地址 3(报警 RAM 之 TL)。写入过程中可以用复位信号中止写入。 Read Scratchpad(从RAM 中读数据)BEH 此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM 数据的读出。芯片允许在读过程中用复位
17、信号中止读取,即可以不读后面不需要的字节以减少读取时间。Copy Scratchpad(将 RAM 数据复制到 EEPROM中)48H 此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于 EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持 10MS,来维持芯片工作。Convert T(温度转换)44H 收到此指令后芯片将进行一次温度转换,将转换的温度值放入 RAM 的第 1、2 地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,
18、当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。 Recall EEPROM(将 EEPROM中的报警值复制到 RAM)B8H 此指令将 EEPROM中的报警值复制到RAM中的第 3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样 RAM 中的两个报警字节位将始终为 EEPROM中数据的镜像。 Read Power Supply(工作方式切换)B4H 此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0
19、”为寄生电源状态,“1”为外部电源状态。b.DS18B20 芯片 ROM 指令表: Read ROM(读 ROM)33H(方括号中的为16进制的命令字)这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个 DS18B20的时候才可以使用此指令,如果挂接不只一个,当通信时将会发生数据冲突。 Match ROM(指定匹配芯片)55H这个指令后面紧跟着由控制器发出了 64 位序列号,当总线上有多只 DS18B20 时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。这条指令适应单芯片和多芯片挂接。 Skip ROM(跳跃 ROM 指令)CCH 这条
20、指令使芯片不对 ROM 编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。 Search ROM(搜索芯片)F0H 在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的 64位 ROM。 Alarm Search(报警芯片搜索)ECH 在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于 TH 或小于 TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。(2)DS18B20 芯片存储器操作指令表: Write Scratchpad(向 RAM中写数据)4
21、EH 这是向 RAM 中写入数据的指令,随后写入的两个字节的数据将会被存到地址 2 (报警RAM之TH)和地址3(报警 RAM之TL)。写入过程中可以用复位信号中止写入。 Read Scratchpad(从RAM 中读数据)BEH 此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM 数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 Copy Scratchpad(将 RAM 数据复制到 EEPROM中)48H 此指令将 RAM 中的数据存入 EEPROM中,以使数据掉电不丢失。此后由于芯片忙于 EEPROM储存处理,当控
22、制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持 10MS,来维持芯片工作。Convert T(温度转换)44H 收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第 1、2 地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持 500MS,来维持芯片工作。 Recall EEPROM(将 EEPROM中的报警值复制到 RAM)B8H 此指令将 EEPROM中的报警值复制到RA
23、M中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样 RAM 中的两个报警字节位将始终为 EEPROM中数据的镜像。 Read Power Supply(工作方式切换)B4H 此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。2.2.4 温度采集模块的电路连接DS18B20 有三个管脚:GND 为电源地,DQ 为数字信号输入/输出端,VCC 为外接供电电源接入端(用寄生电源方式时接地)。在硬件上,DS18B20与单片机的连接有两
24、种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时VCC、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。本系统中DS18B20的DQ口与单片机的 P3.3口连接,GND 接地。Protues软件仿真图如图2.6所示。图2.6 DS18B20的Protues仿真图2.3转速控制模块设计2.3.1直流电机转速调节原理直流电动机的转速n和其他参量的关系可表示为: (公式1)式中 Ua电枢供电电压(V);Ia 电枢电流(A);励磁磁通(Wb);Ra电枢回路总电阻();CE电势系数,p为电磁对数,a
25、为电枢并联支路数,N为导体数。可知调速方法:(1)改变电枢回路总电阻Ra;(2)改变电枢供电电压Ua;(3)改变励磁。由第二种方法知道,直流电机转速与加在电机两端电压有关,故可选用单片机产生PWM方波,经驱动电路放大后驱动电机旋转。2.3.2电机调速控制方案论证方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对电机的速度进行调整。这个方案的优点是电路较为简单,缺点是继电
26、器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。方案三:采用专用芯片L298的PWM控制。用单片机控制PWM信号的输出给L298驱动芯片使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路效率非常高;单片机和芯片L298保证了可以简单地实现转速和方向的控制。兼于方案三调速特性优良、调整平滑、调速范围广、过载能力大,因此本设计采用方案三。PWM系统在很多方面具有较大的优越性:l 主电路线路简单,需用的功率元件少;l 开关频率高,电流容易连续,谐波少,电机损耗和发热都较小;l 低速性能好,稳速精度高,调速范围宽;l 系统频带宽,快速响应性能好,动态抗干扰能力强;l 主电路元件工作在开
27、关状态,导通损耗小,装置效率高;l 直流电源采用不控三相整流时,电网功率因数高。2.3.3 PWM方式选择在PWM调速时,占空比D是一个重要的参数。以下3种方法都可以改变占空比的值。(1)定宽调频法:这种保持t1不变,只改变t2, 这样使得周期T也随之改变。(2)调宽调频法:这种是保持t2 不变,而改变t1 这样使得周期T或频率也随之改变(3)定频调宽法:这种是周期T不变,而改变t1 和 t2前两种方法由于在调速是改变了控制脉冲的周期或频率,当控制脉冲的频率与系统的固有频率接近时,将会引起震荡,因此这2种方法用得很少。目前在直流电机的控制中,主要用定频调宽法。2.3.4 PWM控制信号的产生方
28、式(1)分立电子元件组成的PWM信号发生器这种方法是用分立的逻辑电子元件组成PWM信号发生器,其为早期的方法,现在逐渐被淘汰。(2)专用PWM集成电路从PWM控制技术出现以来就有芯片制造商生产专用PWM集成电路芯片,现在市场上有多种这样的芯片,这些芯片除了具有PWM发生器以外,还具有死区调节功能,保护功能。在用单片机直接控制的电路中,使用专用的PWM芯片可以减轻单片机的负担,工作可靠。(3)软件模拟法利用单片机的一个I/O口的引脚,通过软件对这这个引脚不断地输出高低电平来实现PWM波的输出,51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。MCS
29、 - 51系列典型产品8051具有两个定时器T0和T1。通过控制定时器初值T0和T1,,从而可以实现从8051的任意输出口输出不同占空比由于PWM信号软件实现的核心是单片机内部的定时器,而不同单片机的定时器具有不同的特点,即使是同一台单片机由于选用的晶振不同,选择的定时器工作方式不同,其定时器的定时初值与定时时间的关系也不同。2.3.5直流电机PWM调速原理所谓脉冲宽度调制是指用改变电机电枢电压接通与断开的时间的占空比来控制电机转速的方法,称为脉冲宽度调制(PWM)。PWM驱动装置是利用全控型功率器件的开关特性来调制固定电压的直流电源,按一个固定的频率来接通和断开,并根据需要改变一个周期内“接
30、通”与“断开”时间的长短,改变直流电动机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,这种装置又称为“开关驱动装置”。对于直流电机调速系统,其方法是通过改变电机电枢电压导通时间与通电时间的比值(即占空比)来控制电机速度。PWM调速原理如图11所示。在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律改变通、断电时间,即可让电机转速得到控制。设电机永远接通电源时,其转速最大为Vmax,设占空比为D=t1/T,则电机的平均速度为Vd=VmaxD (公式2)式中,Vd电机的平均速度Vmax电机全通时的速度(最大)D=t1/T占空比 平均速度Vd与占
31、空比D的函数曲线,如图2.7所示。图2.7 平均速度和占空比的关系由图11可以看出,Vd与占空比D并不是完全线性关系(图中实线),理想情况下,可以将其近似地看成线性关系(图中虚线)。因此也就可以看成电机电枢电压Ua与占空比D成正比,改变占空比的大小即可控制电机的速度。占空比决定输出到直流电机电枢电压的平均电压,进而决定了直流电机的转速。如果能够实现占空比的连续调节即可实现直流电机无级调速。由以上叙述可知:电机的转速与电机电枢电压成比例,而电机电枢电压与控制波形的占空比成正比,因此电机的速度与占空比成比例,占空比越大,电机转得越快,当占空比1时,电机转速最大。2.4直流电机驱动模块的选择2.4.
32、1方案选择方案一:采用继电器对电动机的开和关进行控制,通过开关的切换对电机的速度进行调整。这个方案的优点是电路较为简单,实现容易;缺点是继电器的响应速度慢、机械结构易损坏、寿命较短。方案二: 采用DSP芯片,配以电机控制所需要的外围功能电路,通过数控电压源调节电机运行速度,实现控制物体的运动轨迹。该方案优点是体积小、结构紧凑、使用便捷、可靠性提高。但系统软硬件复杂、成本高。方案三: 采用专用芯片L298。L298是一个具有高电压大电流的全桥驱动芯片,它响应频率高,且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。基于上述理论分析和实际情况,拟定选择方案三。2.4.2 L2
33、98驱动芯片L298 为SGS-THOMSON Microelectronics 所出产的双全桥直流电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相和四相电机的专用驱动器,可同时驱动2个二相或1个四相电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的I/O端口来提供模拟时序信号,但在本驱动电路中用L297 来提供时序信号,节省了单片机I/O 端口的使用。L298N 之接脚如图2.8所示,Pin1 和P
34、in15 可与电流侦测用电阻连 接来控制负载的电路; OUTl、OUT2 和OUT3、OUT4 之间分别接2 个步进电机;input1input4 输入控制电位来控制电机的正反转;Enable 则控制电机停转。图2.8 L298图(1)L298的逻辑功能如下表2.5表2.5 L298的逻辑功能IN1IN2ENA电机状态XX0停止101顺时针011逆时针000停止110停止(2)用protues仿真的电路如图2.9图2.9 protues仿真的电路图2.4.3电机及驱动模块电路连接A(IN1)、B(IN2)分别与AT89C51单片机的P1.0、P1.1相连接,输入控制电位来控制电机的正反转。EN
35、A与单片机的P1.2口相连接,P1.2口输出控制电动机转速的PWM信号,来控制电动机的加速、减速,启动、停止。由于我们使用的电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。上面接电源那个是当VS断电后,电机的产生的磁场产生很大的电动势保护电机(因为电机可能正传或者反转,所以两个方向均要设计二极管),接地那个作用在于保护单片机等元件。2.5温度显示模块设计2.5.1 LM016L的结构及功能LM016L液晶模块采用HD44780控制器,HD44780具有简单而功能较强
36、的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生
37、成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L液晶模块的引脚功能如下表3.6.2(1)所示:LM016L字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线,模型如图2.10所示:图2.10 LM016L模型VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样
38、。LCD的引脚功能表,如下表2.6所示表2.6 引脚功能表引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线
39、2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flang)15BLA背光电源正极16BLK背光电源负极寄存器选择控制如表2.7表2.7 寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DBDB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0.busy flag
40、(DB7):在此位为被清除为0时,LCD将无法再处理其他的指令要求。液晶模块内部的控制器共有11条控制指令,如表2.8所示:表2.8 控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读
41、数11读出的数据内容LM016L液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显
42、示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。respack-8是protues仿真软件中的片组,P0口要上拉电阻原因有:1. P0口片内无上拉电阻2. P0为I/O口工作状态时,上方FET被关断,从而输出脚浮空,因此P0用于输出
43、线时为开漏输出。3. 由于片内无上拉电阻,上方FET又被关断,P0输出1时无法拉升端口电平。P0是双向口,其它P1,P2,P3是准双向口。单片机在读准双向口的端口时,现应给端口锁存器赋1,目的是使FET关断,不至于因片内FET导通使端口钳制在低电平。2.5.2 液晶显示模块的电路连接数据手册中可能介绍LM1602内部D0D7已有上拉,可以使用P0口直接驱动。在Proteus里LM016L内部可能没有,应该人为加上拉电阻。LM016L的接线图如图2.11所示。图2.11液晶显示模块仿真图第三章 系统软件设计3.1系统软件构架系统软件构架如图2.12所示。端口初始化液晶显示程序DS18B20函数初
44、始化读取温度值并显示延时开启中断T0定时器控制电动机正/反转,并通过PWM信号控制电动机转速等待中断开始返回图2.12 系统软件总框图3.2各模块程序说明3.2.1温度采集模块(1) DS18B20初始化程序uchar Init_DS18B20() uchar DQ=1;Delay(8);DQ = 0;Delay(90); DQ=1;Delay(8);status = DQ;Delay(100);DQ=1; return status; /初始化成功返回0(2)温度字符uchar code_temperature_char8 =0x0C,0x12,0x12,0x0C,0x00,0x00,0x0
45、0,0x00,0x00,;(3)温度小数位对照表uchar code df_Table =0,1,1,2,2,3,3,4,4,5,6,6,7,8,8,9,9 ;uchar CurrenT = 0; /当前读取的温度整数部分char Signed_Temp = 0; /有符号温度值uchar Temp_Value = 0x00,0x00; /从DS18B20读取温度值uchar Back_Temp_Value = 0xFF,0xFF; /温度数据备份uchar Display Digit = 0,0,0,0; /待显示的各温度数位bit DS18B20_IS_OK = 1; /传感器正常标志unit tCount = 0;3.2.2电动机转速及转向控制模块T0定时器控制电动机正/反转,并输出PWM信号控制转速Vo