基于51单片机的光电编码器测速课程设计报告课程名称: 微机原理课程设计题目: 基于51单片机的光电编码器测速摘要光电编码器是高精度位置控制系统常用的一种位移检测传感器。
在位置控制系统中,由于电机既可能正转,也可能反转,所以要对与其相连的编码器输出的脉冲进行计数,要求相应的计数器既能实现加计数,又能实现减计数,即进行可逆计数。
其计数的方法有多种,包括纯粹的软件计数和硬件计数。
文中分别对这两种常用的计数方法进行了分析,对其优缺点进行了对比,最后提出了一种新的计数方法,利用80C51单片机内部的计数器实现对光电编码器输出脉冲的加减可逆计数,既节省了硬件资源,又能得到较高的计数频率。
本设计就是由单片机STC89C52RC 芯片,光电编码器和1602液晶为核心,辅以必要的电路,构成了一个基于51单片机的光电编码器测速器。
该系统有两个控制按键,分别用于控制每秒的转速和每分钟的转速,并将速度用1602液晶显示出来。
该测速器测速精准,具有实时检测的功能,操作简单。
关键词:光电编码器,51单片机,C语言,1602液晶2目录一、设计任务与要求 ..................................................................... (4)1.1 设计任务 ..................................................................... . (4)1.2 设计要求 ..................................................................... . (4)二、方案总体设计 ..................................................................... . (5)2.1 方案一 ..................................................................... .. (5)2.2 方案二 ..................................................................... .. (5)2.3 系统采用方案 ..................................................................... ............................................... 5 三、硬件设计 ..................................................................... (7)3.1 单片机最小系统 ..................................................................... . (7)3.2 液晶显示模块 ..................................................................... .. (7)3.3 系统电源 ..................................................................... . (8)3.4光电编码器电路 ..................................................................... .. (8)3.5 整体电路 ..................................................................... . (9)四、软件设计 ..................................................................... . (10)4.1 keil软件介绍 ..................................................................... .. (10)4.2 系统程序流程 ..................................................................... ............................................. 10 五、仿真与实现 ..................................................................... (12)5.1 proteus软件介绍 ..................................................................... .. (12)5.2 仿真过程 ..................................................................... .. (12)5.3 实物制作与调试 ..................................................................... .. (13)5.4 使用说明 ..................................................................... ..................................................... 14 六、总结 ..................................................................... (15)6.1 设计总结 ..................................................................... .. (15)6.2 经验总结 ..................................................................... ..................................................... 15 七、参考文献 ..................................................................... . (16)3一、设计任务与要求1.1 设计任务1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).加深焊接的技巧,提高焊接的能力5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求1).两个按键控制显示每分钟和每秒钟的功能2).74LS74辅助光电编码器测转向3).光电编码器输出脉冲计数4).1602液晶显示转速4二、方案总体设计设计一个基于51单片机的光电编码器测测速。
设计一个电路来实现光电编码器测量;利用单片机内部精确到微妙的定时计数器来实现一个周期的时间来统计脉冲数;74LS74作为辅助芯片来完善光电编码器测转向的功能;P0和P2口控制1602液晶显示转速;利用P1^1和P1^2来实现液晶显示每秒钟和每分钟转速的功能;利用复位按键功能来实现复位操作。
调节蓝白滑动变阻器来调节液晶亮度。
2.1 方案一51单片机的定时/计数器工作在模式2时是一个可以自动重装载的8位定时/计数器。
工作时高八位和低八位装入相同的初值,当低八位装满时,高八位的值自动装入到第八位中,从而可以省去用户软件中重装初值常数的语句,可产生相当精确的定时时间。
由于只有八位参与计数,所以其计数周期最大为256微妙。
采用初值装入0x38,每个200微妙进入一次中断,5000次中断为100毫秒,即实现周期为1秒的脉冲计数。
光电编码器的A相接在单片机的外部中断,光电编码器的B相接在单片机的P1^0。
A相发出的脉冲每触发一次中断就就计数一个脉冲,并且再对P1^0的高低电平进行检测,如果为高电平则为反转,如果是低电平则为正转。
反向器中的两个作为放大作用。
再接两个三极管作为开关作用,组成一个直流电机的驱动电路。
P1^1和P1^2分别控制液晶显示每分钟的转速和每秒钟的转速。
P2口控制1602液晶的数据口,P0的三个引脚控制1602液晶的数据/命令选择端、读/写选择端、使能端来显示速度。
2.2 方案二51单片机的定时/计数器工作在模式0时是一个16位位定时/计数器。
工作时高八位和低八位各装入初值,当低八位装满时,高八位加1。
由于是16位参与计数,所以其计数周期最大为65536微妙。
采用初值高八位装入0xfc,初值低八位装入0x18,每个1000微妙进入一次中断,1000次中断为1秒,即形成周期为1秒的脉冲计数。
本方案在方案1的基础上外接一个74LS74的芯片。
光电编码器的A 相接在单片机的P3^4的引脚,利用单片机的计数器1进行脉冲计数,同时接在74LS74的时钟信号接口。
光电编码器的B相接在74LS74的D接口。
Q端接在P3^2引脚,Q非端接在P3^3引脚。
利用两个外部中断来判断正反转。
P1^1和P1^2分别控制液晶显示每分钟的转速和每秒钟的转速。
P2口控制1602液晶的数据口,P0的三个引脚控制1602液晶的数据/命令选择端、读/写选择端、使能端来显示速度。
2.3 系统采用方案1)总体设计图1为设计总体框架图,通过该图大致的介绍了一下整个光电编码器测速系统的各个主要部分。
5图1 系统总体框架2)总体工作原理是八位,可装入的值太小,每进行一个周期的脉冲统计需要进入由于定时器工作模式25000次定时器中断,由于进入中断的次数太多,所以很容易出现在低八位装满本应触发而程序还在中断子程序中运行,而无法触发中断的情况,所以不采用工作模式2。
工作模式0只需要进入定时中断1000次就可以进行一个周期的脉冲统计,所以选择功能模式0。
方案一中用,用纯软件计数虽然电路简单,但是计数速度慢,难以满足实时性要求,而且容易出错。
我们可以用单片机内部的计数器来实现加减计数。
单片机片内有两个16位定时计数器都可以用来脉冲计数,用两个外部中断来检测正反转,避免了每一个脉冲都要进行高低电平检测的步骤。
控制按键,液晶和复位方面的设计在方案一和方案二中一样。
综上考虑,最终方案确定为方案二。