《基于单片机的红外遥控系统设计毕业设计(51页).doc》由会员分享,可在线阅读,更多相关《基于单片机的红外遥控系统设计毕业设计(51页).doc(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的红外遥控系统设计毕业设计-第 44 页本科生毕业设计(论文)基于单片机的红外遥控系统设计论 文 题 目:毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业
2、设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 摘 要本设计是基于单片机的红外遥控系统设计,设计内容包括了红外接收,红外解码和步进电机控制三大块。如今红外遥控技术已经得到了广泛的应用;其利用红外线来传输数据,这种情况下不需要实体连线,体积小,成本低,功能强。我们日常生活中的电视机,洗衣机,空调,航天飞机,工业现场设备等都运用了红外遥控的技术。本设计中发射端采用专用
3、的发射芯片来实现红外遥控码的发射,且遥控码格式是NEC标准。接收端采用市面上流行的1838一体化红外接收头,接收到的红外信号经由1838接收头完成 光/电转化和解调的工作,然后把33位的完整码发送到解码芯片中去完成解码工作。本设计中的主芯片是STC89C52单片机,主芯片和解码芯片之间进行串行通讯。系统启动后,解码芯片将解码后得到的8位数据码串行发送到主芯片中,然后通过主芯片来控制步进电机的正转,反转,加速,减速。本设计中的被控对象是步进电机,步进电机最适合做数字控制。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。本设计中通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时
4、通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。关键词: 红外遥控技术 步进电机控制 单片机控制AbstractThis design is based on the infrared remote control MCU system design, design elements include the infrared receiver, infrared decoding and stepper motor control three blocks.First, the infrared remote control technology has been a wid
5、e range of applications; use infrared to transfer the data, this case does not require a physical connection, small size, low cost, function. In our daily lives, televisions, washing machines, air conditioners, space shuttle, the industrial field devices and so the use of the technology of infrared
6、remote control.The sender of this design using a dedicated transmitter chip to achieve the emission of infrared remote control code, and the remote control code format is the NEC standard.The receiving end of the popularity of the 1838 integration of infrared receiver, the infrared signal received t
7、hrough 1838 to receive the head, the optical / electrical conversion and demodulation of the 33 complete code sent to the decoder chip to complete the decoding.The design of the main chip is STC89C52. Serial communication between the main chip and decoder chip. System startup, the decoder chip decod
8、ing 8-bit serial data code sent to the main chip, and then through the main chip to control the stepper motor forward, reverse, speed up, slow down.The design of the controlled object is a stepper motor, stepper motor is the most suitable for digital control. The stepper motor is the electrical puls
9、es into angular displacement or linear displacement of the open-loop control element. This design by controlling the number of pulses to control the amount of angular displacement, so as to achieve accurate positioning purposes; at the same time by controlling the pulse frequency to control the moto
10、r rotation speed and acceleration, so as to achieve the purpose of speed control.Key word: Stepper motor Infrared remote control Single-Chip Microcomputer Control目 录摘 要IAbstractII1 绪论11.1 课题研究背景及意义11.2 本设计的主要工作12 硬件设计22.1 整体设计方案及框图22.2 系统功能模块设计32.2.1 红外收发模块32.2.2红外解码电路模块62.2.3 显示模块72.2.4 步进驱动模块92.2.
11、5 电源模块142.2.6 主机模块143 软件设计193.1 主程序设计193.2 解码程序设计244 调试及开发环境284.1 硬件调试及开发环境284.2软件调试及开发环境305 总结和改进335.1 设计总结 335.2 设计改进33致 谢34附录一35附录二56附录三57参考文献581 绪论1.1 课题研究背景及意义本设计采用红外线来遥控步进电机。红外遥控是如今广泛使用的一种通信和遥控手段;红外线遥控利用红外线来传输数据,这种情况下不需要实体连线,体积小,成本低,功能强;因此红外遥控设备已经广泛的应用在如今的电气设备的数据交互和设备控制中2。比如航空航天及我们日常中的电视机,洗衣机,
12、空调等。并且在工业设备中,在辐射,高压,粉尘,有毒气体,许多恶劣的环境中能够有效的隔离电气干扰。在工业控制系统中,通常需要控制机械部件的平移和转动4,这些机械部件的驱动大多采用交流电机,直流电机和步进电机,在这三种电机中,步进电机最适合做数字控制,因此在数控机床,家用电器,步进电机都得到了广泛的应用。由于红外遥控和步进电机的优越性,本设计中采用了单片机来实现红外解码及产生步进电机脉冲信号。因为红外遥控和步进电机都得到了广泛的应用,所以此课题基于红外遥控步进电机是很有实际意义的。1.2本设计的主要工作本设计是红外遥控步进电机,设计的工作主要包括以下几个方面。(1)硬件电路设计,包括红外接收电路,
13、红外解码电路,主电路,显示电路,步进驱动电路的设计,双机通讯等。(2)软件设计,在keil uVison3平台上编写步进控制主程序,显示程序,红外解码程序。(3)软硬件的调试,包括在protel99se平台下原理图的绘制,焊接电路板,keil平台下程序的编写及调试,STC_ISP下载等。(4)总结以及改进。2硬件设计2.1整体设计方案及框图本设计采用的是NEC编码的遥控器,当遥控器的某个按键被按下以后,遥控器产生红外脉冲信号通过红外发射管发射出去2,接收端采用1838的红外接收头来接收红外脉冲信号,1838接收头的信号输出端OUT连接到STC12C2052的外部中断INT0,这样1838把接收
14、到的红外脉冲信号送到STC12C2052去解码,解码处理完成后得到的8位有效数据通过串行口TXD发送到主机STC89C52去处理,主程序中的switch语句能够判断出什么键被按下了,同时根据不同键值产生不同的控制策略,比如步进电机的控制脉冲通过P2.0P2.3送出,经由ULN2003功率放大,驱动4相5线的步进电机转动,同时P0口能送出段码使数码管上显示转速。本设计硬件包含了5个主要部分。(1) 红外接收部分,包括1838红外接收器及其外围电路。(2) 红外解码电路,包括STC12C2052做解码芯片。(3) 显示部分 ,包括有3个运行指示灯和4位8段数码管。(4) 主机 STC89C52 及
15、其外围电路,复位电路,晶振电路等。(5) 步进驱动电路,ULN2003驱动芯片,驱动4相5线的步进电机。 系统整体的框图如图2-1所示。红外发射运行指示灯步进电机红外接收STC12C2052INT0TXD解码芯片P1.0p1.2P1.4p1.7P3.0/RXD P2.0p2.3 主机STC89C52数码管显示步进驱动图2-1 系统整体框图2.2 系统功能模块设计2.2.1 红外收发模块红外遥控系统由发射和接收两个部分组成。发送部分包括了遥控器键盘,编码调制芯片,LED红外发射器;接收部分包括了光/电转化放大器2,解码,解调。本设计采用现成遥控器,此遥控器使用了专用的集成发射芯片来实现遥控码的发
16、射。信号发射,就是将某个按键所对应的控制指令和系统码,调制在38KHz的载波上,经由放大,驱动红外发射管将信号发射出去。而接收电路采用红外线接收和放大于一体的一体化红外接收器,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的的塑料封装的三极管大小一样,它适用于各种红外遥控和红外线数据传输。如图2-2所示。图2-2 红外线遥控系统框图由于不同公司的遥控芯片,采用的遥控码格式不一样。现在市场上较为普遍的编码标准有两种,一种是NEC标准,一种是PHILIPS标准。本设计中的遥控器的遥控芯片是NEC标准,下文介绍一下什么是NEC标准。遥控发射的信号调制在频率
17、38KHz的载波上;当用户按下按键时发送一个完整码。一个完整码7 = 一位引导码 + 8位用户码 + 8位用户码 + 8位数据码 + 8位数据反码 ,总共33位,其中引导码是9ms = 4.5 ms 的高电平 + 4.5 ms的低电平;其中用户码16位,它的作用是用来区分不同的遥控设备,不至于不同的遥控设备互相干扰。注意同一个遥控器,按哪个键用户码都是一样的。最后发送的是16位的数据码,数据码是有8位的数据码和8位的数据反码组成12,数据反码用来校验接收的是否准确。在本设计中,真正需要的是8位的数据码,所以解码过程中最重要的工作就是判断出这8位的二进制数据码是什么?需要逐次判断出8位数据码中每
18、一位是0还是1,这就是所谓的解码。然后发送给主机的就是解码后的8位数据码。由于0码和1码电平持续的时间是不同的,通过判断0 ,1电平持续的时间的不同来区分。由于NEC标准中:0的表示:0.56的高电平 + 0.565ms的低电平 = 1.125ms1的表示:0.56的高电平 1.69ms的低电平 = 2.25ms但是要非常注意的是当LED发射管发射高电平的时候,1838红外接收管输出的是低电平。且当LED发射管发射的是低电平的时候,1838红外接收管输出的是高电平;所以1838接收头输出的波形是与发射波形反向的。红外信号是从1838的OUT端获得的,所以解码时候要按照如下来判断0,1:0的表示
19、 :0.56的低电平 + 0.565ms的高电平 = 1.125ms1的表示 :0.56的低电平 1.69ms的高电平 = 2.25ms显而易见,由于低电平时间一致;那么解码程序编写的思路就是在解码程序通过一个while循环语句判断出每位高电平的时间是0.565ms还是1.69ms,如果一位码的高电平持续的时间0.565ms,那么就是码0;如果高电平持续的时间是1.69ms,那么这位码就是1。遥控器发射的信号和1838输出的信号的区别如图2-3所示。 图2-3 遥控器输出信号和1838输出信号对比本设计采用protel99se绘制红外接收电路,1838是自建的元件库画出来的,104是0.1UF
20、瓷片电容做去耦电容用,与47UF电容配合做电源滤波用。22k是上拉电阻,100欧是限流电阻。1838红外接收头的OUT端是信号输出端,GND端接地,VCC端供电。信号输出端OUT端接到解码芯片的INT0口。 图2-4 红外接收电路2.2.2 红外解码电路模块(1)本设计中采用STC12C2052作为红外解码芯片。1838的OUT管脚接到STC12C2052的INT0端,1838将红外信号送到解码芯片中去解码。然后解码芯片STC12C2052的TXD端接到主机STC89C52的RXD端2,STC12C2052将解码后的8位数据发送到主机中去。双机通讯,主机和从机的波特率均是设定为9600bps。
21、(2)解码芯片STC12C2032STC12C2052,DIP-20,超小封装的8051.特点如下:-增强型1T流水线,精简指令集RISC型CPU内核,速度比普通的8051快12倍-工作频率范围:0-35MHz,当大于8051的0-420MHz-无法解密-低功耗,掉电模式0.1UA,空闲模式1MA,工作模式 4MA-7MA-高速,高可靠,强抗静电,强抗干扰-内部集成了R/C振荡器,精度不高可以省去外部晶振-宽电压(3.4 V-5.5V)-256字节片内RAM数据存储器-2个硬件16位定时器/计数器,兼容普通的8051-2K字节的Flash存储器-在系统可编程,无需编程器(3)波特率设定的计算过
22、程。波特率 = (2SMOD/32) * 定时器T1的溢出率1 定时器T1的溢出率 = T1计数率/产生溢出所需的周期数 = (fosc / 12)/ (2k - TC) K- 定时器T1的位数 TC-定时器T1的预置初值SMOD = 0 ,fosc = 11.0592MHz = 11059200Hz,k = 8 ,TC = 0Xfd = 253代入公式中得 波特率 = (1 / 32)* (11059200 / 12) / (28 - 253 ) = 9600bps红外解码电路如图2-5所示。图2-5 红外解码电路2.2.3显示模块(1)本设计采用的是4位合一的八段LED数码管作为显示模块,
23、4位8段数码管采用共阳接法,将4个八段数码管的段选线分别并在一起,位选线独立引出;这种4位合一的数码管只能是动态扫描形式;所以每一时刻只能片选一个数码管,让其选中,然后送出相应的段码(反码)。每个管子依次交替点亮,由于管子之间切换时间很短,动态扫描起来利用人眼视觉暂留,让人觉得每个管子都在亮。之所以用共阳数码管,是由于单片机的拉电流的能力很弱,不建议用共阴极接法。采用共阳接法,公共端接到VCC +5V,单片机的8位I/0口P0分别接在段选线上,P0输出的相应的反码即可显示相应的数字。由于位选线上的电流可能很大,比如8位数码管一起亮,所以位选端要用PNP三极管驱动。将e极接在VCC上;基极接在p
24、1.4 到p1.7,当基集是低电平的时候,管子导通,完成片选,集电极提供了数码管驱动电流。(2)由于是共阳接法,P0.0P0.7送出相应的反码使得数码管相应的段点亮。表2-1是段码表。表2-1 段码表显示字符反码dpgfedcBA00xc01100000010xf91111100120xa41010010030xb01011000040x991001100150x921001001060x821000001070xf81111100080x801000000090x9010010000 A0x8810100000B0x8310110000C0xc611000000D0xa111010000E0
25、x861110000F0x8e11110000数码显示电路如图2-6所示。图中的4位数码管是自建的,其中的三极管是PNP S8550 ,段选段的限流电阻是470欧,位选端的限流电阻是5.1K。 图2-6 数码管显示电路2.2.4步进驱动模块(1)步进控制系统组成步进控制系统由3个部分组成,第一部分是控制器,第二部分步进驱动器,第三部分是步进电机以及步进电机拖动的工作台4 ;控制器可以是PLC ,定位控制模块和单片机 ,控制器的功能是产生脉冲以及正弦方案信号,步进驱动器收到控制器发出来的脉冲,对脉冲进行分配和功率放大以控制步进电机每一相线圈是否得电,步进电机旋转,拖动工作台工作10。(2)步进电
26、机的分类步进电机的分类表2-2所示。表2-2 步进电机分类表分类方式具体类型按力矩产生的原理5(1)反应式:转子无绕组,由被激磁的定子绕组产生反应力矩实现步进运行(我们现在大量用的是反应式的步进电机)(2)激磁式:定,转子均有激磁绕组,或转子是永久磁钢由电磁力矩实现步进运行按输出力矩大小(1)伺服式:输出力矩在百分之几至十分之几(N.M)只能驱动较小的负载,要与液压扭矩放大器配用,才能驱动机床工作台等较大的负载(2)功率式:输出力矩在550N.m以上,可以直接驱动机床工作台等较大的负载(我们现在主要用的是功率式的,步进电机和机床工作台直接相连)按定子数(1)单定子式(2)双定子式(3)三定子式
27、(4)多定子式按各相绕组的分布(2) 径向分布式:电机各相按圆周依次排列(2) 轴向分布式:电机各相按轴向依次排列我国使用的多为反应式步进电机,分为轴向分布式和径向分布式两种。反应式的步进电机的转子上有小齿,不同的步进电机,转子上齿的个数是不同的,定子上要有线圈(线圈按轴向分布,或径向分布),反应式步进电机定子除了有轴向分布的绕组外,它的定子还分成几个极.,一个极上一个绕组以及有小齿,转子上也有小齿。(3)步进电机工作原理步进电机工作原理实际上是电磁铁作用的原理6,当某相定子励磁后(所谓励磁后就是给定子绕组,线圈通电),它吸引转子,转子的齿与该定子磁极上的齿对齐了,转子转过一个角度,换一相得电
28、,转子又转过一个角度,如此每一相不停的轮流得电,转子不停转动。也就是说,先给定子线圈通电,定子线圈(绕组,磁极)产生磁场,在磁场力的作用下会吸引转子转动,转子转动的角度就是转子上的齿和定子上的齿对齐了,转子就停下来了,不停的给每一相轮流通电,转子就不停转动了。假设先给A相通电以后,产生磁场,因为磁力线力图通过磁阻最小路径,故而产生磁阻转矩,使靠近A相转子齿被吸引到与定子极A对齐的位置,这个磁力线经过转子,将转子磁化,因此在磁场力的作用下,这个时候,磁场会吸引.这个转子,对齐后就不会转动了。A相断电,B相通电以后,那么会在这个方向建立一个磁场,这个转子会随着磁场变化下转动,它会将离这个B相磁极最
29、近的齿把它吸引过来。 步进电动机在启动时,启动转矩不仅要克服负载转矩,而且还要克服惯性转矩,如果脉冲频率过高 ,转子跟不上,电动机就会失步,甚至不能启动,步进电动机不失步启动的最高频率为启动频率。 步进电机的转角与脉冲数成正比,转速与脉冲频率成正比,不受电压,负载与环境的影响,上述特性正好符合数字控制系统的要求 ,因此步进电机在数控 机床,军事工业获得了广泛的应用。(4)步进电机控制步进电机是将电脉冲信号转变为输出轴的角位移或线位移的电动机10,因此也称为脉冲电机。交流电机,直流电机都是连续旋转的,而步进电机是一步一步的旋转,步进电机每次能够转动的最小的角度是步距角(本设计中的步距角是0.08
30、7890625);每当步进电机的驱动器,收到一个脉冲信号时候,步进电机就按照设定的方向转过一个固定的角度,即步进角。可以通过改变加在驱动器上的脉冲的频率来改变步进电机的转速和加速度;可以通过改变加在驱动器上的脉冲的个数来改变步进电机转过的角度; 利用这一个线性关系的存在,使得步进电机在速度控制,位置等控制领域用步进电机来控制变得非常的简单。 本设计中用到的步进电机是28BYJ-48 ,5V驱动的4相5线的步进电机,且是减速的步进电机,参考手册中这个步进电机的减速比是1:64,步进角是为0.087890625(5.625/64 = 0.087890625)那么转过一圈要4096个脉冲(360/0
31、.087890625= 4096 )。本设计中采用四相八拍的驱动方式,8拍一步,8拍方式的精度更高。那么每一步转过的角度是0.703125(8 *0.087890625=0.703125),所以512步转一圈。(360/ 0.703125= 512步 )。四相五线步进电机28BYJ-481.额定电压:5V2.相数:43.减速比:1/644.步距角:5.625/64 = 0.0878906255.驱动方式:4相8拍(5) 步进驱动器本设计采用ULN2003做驱动芯片10。ULN2003的特点是高耐压、大电流复合晶体管,由七个硅NPN复合晶体管组成。ULN2003工作电压高,工作电流大,灌电流可达
32、500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流下并行运行,可直接驱动继电器等负载,输入5V电平,输出可达500mA/50V。由于51的拉电流的能力小于100uA,灌电流10mA,而本设计中的步进电机需要200mA的驱动电流,所以需要ULN2003来驱动。步进电机驱动电路如图2-7所示。 图2-7 步进电机驱动电路(6)步进驱动脉冲分配表正转表:4-1-2驱动,8拍一步D-DC-C-CB-B-BA-A-AD表2-3 正转表P2端口值P20(D相)P21(C相)P22(B相)P23(A相)0x0110000x0311000x0201000x0601100x0400100x0c
33、00110x0800010x091001反转表:4-1-2驱动,8拍一步D-DA-A-AB-B-BC-C-CA表2-4 反转表P2端口值P20(D相)P21(C相)P22(B相)P23(A相)0x0110000x0910010x0800010x0c00110x0400100x0601100x0201000x0311002.2.5电源模块本设计中用4节5号电池来供电,4节5号电池提供的电压是 5 * 1.5 = 6V,不能直接加到系统里面,所以我用了IN2007这个二极管来分压,IN4007上的压降约为0.7V,6 - 0.7 = 5.3V,那么VCC约为5.3V,5.3V作为VCC没有超过5.
34、5V,可以作为供电电源。电源模块原理图如图2-8所示。图2-8 电源电路2.2.6主机模块主机电路如图2-9所示。图2-9 主机电路本设计的主芯片采用STC89C52单片机,STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2
35、级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。STC89C52具体介绍如下:(1) 主电源引脚(2根)VCC(Pin40):电源输入,接5V电源GND(Pin20):接地线(2)外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端(3)控制引脚(4根)RST/V
36、PP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。(4)可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。P0口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7P2口(Pi
37、n21Pin28):8位准双向I/O口线,名称为P2.0P2.7P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7下文简单介绍一下本设计中使用到的STC89C52的功能寄存器1,及其初始化。(1) 串行通信控制寄存器:可位寻址的专用寄存器,它用于定义串行口的工作方式及实施接收和发送的控制,单元地址是98H 。如表2-5所示。表2-5 SCON寄存器SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0,SM1 = 00,方式0,8位同步移位寄存器,其波特率为fosc / 121SM0,SM1 = 01,方式1,10位异步接收/发送,
38、其波特率可变,由定时器1控制SM0,SM1 = 10,方式2,11位异步接收/发送,其波特率为fosc / 64,fosc / 32(SMOD)SM0,SM1 = 11,方式3,11位异步接收/发送,波特率可变,有定时器控制。fosc 是系统晶振的频率,本设计中晶振频率是11.0592MHz = 11059200HzREN用于控制数据接收的允许和禁止,REN = 1时,允许接收,REN = 0,禁止接收.该位可以软件置位以允许接收,又可以软件清0来禁止接收。TI 发送操作是在TI = 0下进行的,然后由发送电路自动在数据前后分别添加1个起始位和一个停止位 ,串行数据由TXD引脚输出,发送完一帧
39、数据后,TXD引脚主动维持高电平,且TI在发送停止位时有硬件自动置位,并可向CPU发送中断请求,T1位必须软件复位。本设计中的,串行口设定工作方式一,SM0,SM1 = 01,方式1,10位异步接收/发送,其波特率可变,由定时器1控制,由于设定为波特率可变的10位异步通信方式,发送或接收一帧信息包括1个起始位0,8位数据位和一个停止位1。这是模式下,发送时钟和接收时钟和通信波特率由定时器1溢出信号经过32分频,并由SMOD倍频,因此方式1的波特率是可变的。波特率9600bps计算过程首先由公式: 波特率 = (2SMOD/32) * 定时器T1的溢出率 T1的溢出率 = T1计数率/产生溢出所
40、需的周期数 = (fosc / 12)/ (2k - TC) K- 定时器T1的位数 TC-定时器T1的预置初值SMOD = 0 ,fosc = 11.0592MHz = 11059200Hz,k = 8 ,TC = 0Xfd = 253代入公式中得 波特率 = (1 / 32)* (11059200 / 12) / (28 - 253 ) = 9600bps (2) 本设计中用到了TMOD这个特殊功能寄存器。如表2-6所示。表2-6 TOMD寄存器TMODD7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD的功能是用于控制定时器/计数器T0,T1的工作方式的,
41、TMOD寄存器不能位寻址,只能用字节传送指令设置其内容,字节地址是89H1。本设计中TMOD = 0X21,定时器T1工作在方式2,是自动重新装入计数初值的8位定时器计数器/工作模式,用于串口通信中波特率发生器,16位的定时器/计数器被拆成两个8位寄存器TH1,TL1,CPU在对它们初始化的时候必须装入相同的定时器初值。这样省去了程序需不断给计数赋值的麻烦,计时的准确性也提高了,由T1作为波特率发生器,SCON工作在方式1的时候波特率是由定时器T1的溢出率控制。而定时器T0工作方式一,是16位的定时器方式,TH0为高8位,TH0为低8位,T0作用是产生50ms的定时,50ms的定时时间是这样得
42、到。给TH0和TL0赋初值TH0 = 0x4c ; TL0 = 0x00;由公式得 : T = (M - TC) * T0 M -计数器的模值 TC-预设的初值 T0-计数器计数脉冲的周期,即单片机系统主频周期的12倍M = 216 = 65535, TC = 0x4C00 = 19456;T0 = 12/11059200 0x4C00 = 19456;65535-19456 = 46080;T = (M - TC) * T0=(65535-19456)*(12/11059200)=46080 * = 0.05S = 50ms;这样只要启动定时器0后,就会自动产生50ms的定时了。注意 由于这
43、种方式下,计数初值在每次进入中断后都要重新赋值。(3)中断优先级寄存器。如表2-7所示。表2-7 IP寄存器IPD7D6D5D4D3D2D1D0-PSPT1PX1PT0PX0STC89C52有两个中断优先级,即高优先级和低优先级,每个中断源都可以设置为高优先级,或者低优先级,以便CPU对所有的中断实现两级中断嵌套。(4)中断允许控制寄存器 IESTC89C52中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。如表2-8所示1。表2-8 IE寄存器IED7D6D5D4D3D2D1D0EA-ESET1EX1ET0EX0EA:允许中断的总控制位ES:串行口允许中断控制位ET1/ET0:定时器1,定时器0溢出中断允许控制位EX0,EX1:外中断INT1,INT0的中断控制位3 软件设计3.1 主程序设计本设计中主程序烧写在主机STC89C52中,主机完成步进电机转速计算,电机控制,LED数码管显示等功能(1)转速计算本设计的步进电机的步进角是0.087890625(5.625/ 64 = 0.087890625),8拍一步,那么一步转过的角度就是0.703125