基于51单片机的光电编码器测速报告图文.docx

上传人:b****8 文档编号:8910001 上传时间:2023-05-16 格式:DOCX 页数:15 大小:21.90KB
下载 相关 举报
基于51单片机的光电编码器测速报告图文.docx_第1页
第1页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第2页
第2页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第3页
第3页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第4页
第4页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第5页
第5页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第6页
第6页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第7页
第7页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第8页
第8页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第9页
第9页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第10页
第10页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第11页
第11页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第12页
第12页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第13页
第13页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第14页
第14页 / 共15页
基于51单片机的光电编码器测速报告图文.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的光电编码器测速报告图文.docx

《基于51单片机的光电编码器测速报告图文.docx》由会员分享,可在线阅读,更多相关《基于51单片机的光电编码器测速报告图文.docx(15页珍藏版)》请在冰点文库上搜索。

基于51单片机的光电编码器测速报告图文.docx

基于51单片机的光电编码器测速报告图文

基于51单片机的光电编码器测速报告_图文

课程名称:

课程设计报告微机原理课程设计基于51单片机的光电编码器测速

光电编码器是高精度位置控制系统常用的一种位移检测传感器。

在位置控制系统中,由于电机既可能正转,也可能反转,所以要对与其相连的编码器输出的脉冲进行计数,要求相应的计数器既能实现加计数,又能实现减计数,即进行可逆计数。

其计数的方法有多种,包括纯粹的软件计数和硬件计数。

文中分别对这两种常用的计数方法进行了分析,对其优缺点进行了对比,最后提出了一种新的计数方法,利用80C51单片机内部的计数器实现对光电编码器输出脉冲的加减可逆计数,既节省了硬件资源,又能得到较高的计数频率。

本设计就是由单片机STC89C52RC芯片,光电编码器和1602液晶为核心,辅以必要的电路,构成了一个基于51单片机的光电编码器测速器。

该系统有两个控制按键,分别用于控制每秒的转速和每分钟的转速,并将速度用1602液晶显示出来。

该测速器测速精准,具有实时检测的功能,操作简单。

关键词:

光电编码器,51单片机,C语言,1602液晶

一、设计任务与要求...................................................................................................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.1keil软件介绍....................................................................................................................10

4.2系统程序流程..................................................................................................................10

五、仿真与实现.........................................................................................................12

5.1proteus软件介绍..............................................................................................................12

5.2仿真过程..........................................................................................................................12

5.3实物制作与调试..............................................................................................................13

5.4使用说明..........................................................................................................................14

六、总结.....................................................................................................................15

6.1设计总结..........................................................................................................................15

6.2经验总结..........................................................................................................................15

七、参考文献.............................................................................................................16

一、设计任务与要求

1.1设计任务

1).对更多小器件的了解

2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用

3).掌握仿真软件的运用和原理图的绘制

4).加深焊接的技巧,提高焊接的能力

5).熟悉调试方法和技巧,提高解决实际问题的能力

6).熟悉设计报告的编写过程

1.2设计要求

1).两个按键控制显示每分钟和每秒钟的功能

2).74LS74辅助光电编码器测转向

3).光电编码器输出脉冲计数

4).1602液晶显示转速

图1系统总体框架

2)总体工作原理

由于定时器工作模式2是八位,可装入的值太小,每进行一个周期的脉冲统计需要进入5000次定时器中断,由于进入中断的次数太多,所以很容易出现在低八位装满本应触发而程序还在中断子程序中运行,而无法触发中断的情况,所以不采用工作模式2。

工作模式0只需要进入定时中断1000次就可以进行一个周期的脉冲统计,所以选择功能模式0。

方案一中用,用纯软件计数虽然电路简单,但是计数速度慢,难以满足实时性要求,而且容易出错。

我们可以用单片机内部的计数器来实现加减计数。

单片机片内有两个16位定时计数器都可以用来脉冲计数,用两个外部中断来检测正反转,避免了每一个脉冲都要进行高低电平检测的步骤。

控制按键,液晶和复位方面的设计在方案一和方案二中一样。

综上考虑,最终方案确定为方案二。

三、硬件设计

3.1单片机最小系统

单片机要正常工作,首先要产生片内时钟信号。

在单片机内部的振荡器的输入端XTAL1和输出端XTAL2之间接一个石英晶振就可以够成一个自激振荡器。

再在两端之间串联接个电容并且在两个电容之间接地以便于稳定频率还对振荡频率有微调作用。

电容通常选30PF左右,振荡脉冲频率范围为0~24MHZ。

该电路中选用12MHZ晶振。

时钟电路图如下:

图2时钟电路图

单片机在启动时与其他微处理器一样,要让CPU及系统各部件处于确定的初始状态,并从初始开始工作。

这就需要复位操作。

复位电路有两种方式:

上电自动复位和按键自动复位。

上电自动复位只是在开始接通电源瞬间复位,接下来想要再次复位就需要断电重启,不方便。

按键自动复位不仅可以在开始接通电源瞬间复位还可以通过按下按键复位随时复位。

所以选择按键复位方式。

复位电路如下:

图3复位电路图

3.2液晶显示模块

该可调直流电机最大速度为每分钟1200转,采用1602液晶显示。

控制1602液晶亮度的是蓝白滑动变阻器。

1602液晶有16个管脚。

编号为1,2管脚为电源正负极管脚,15,16为背光源正负极管脚;7~14为dataI/O管脚与单片机的P0口相连,负责液晶与芯片之间的信息传送;4,5,6分别为数据/命令选择端、读/写选择端、使能端,与单片机的,P2^0、P2^1、P2^2相连,负责控制液晶与芯片之间数据命令的读写操作;3为液晶显示偏压信号端,用于调整液晶显示对比度。

1602液晶显示原理图如下:

图4液晶显示系统图

3.3系统电源

为了方便控制系统的上电与断电,系统电源中连接了一个蓝白自锁开关。

此开关两边各有三个引脚,不同的连接方式,开关的控制方法就不同。

电源的正负极各接在此开关的两边。

为了方便观察电源是否接上,在电路中的VCC与GND之间接一个发光二极管并且加一个限流电阻防止发光二极管烧坏,电源通电时发光二极管亮,断电时,则暗。

再接四个排针便两边的两个排针用于外部电源给系统上电,中间的两个排针是用于单片机烧录程序。

如图所示:

图5系统电源图

3.4光电编码器电路

这是一张光电编码器部分的电路原理图。

图上的74LS74芯片上就是两个D触发器。

A相接在P3^4的引脚用于计数器0采集脉冲。

A相同时接在CLK端,B相接在D端,Q接在P3.2引脚,外部中断0检测和Q非接在P3.3外部中断1来检测。

另外A相和B相各需接一个上拉电阻,阻值为1K。

这样输出的脉冲就可以直接接在单片机上,进行检测了。

另外74LS74芯片的SET引脚,CLR引脚,VCC引脚都接电源,GND引脚接地。

整个电路就连接完成了。

图6光电编码器电路

3.5整体电路

这是采用网络标号的画出的以一张整体电路图。

它将整张可调直流电机的电路原理图分为七个部分:

电源模块,P0口上拉电阻,1602液晶模块,51单片机,复位晶振电路,控制按键和光电编码器电路。

整张原理看起来美观,明了并且根据标号很容易找到与之对应的引脚。

基于51单片机的光电编码器测速设计

图7整体电路图

2)中断程序流程

图9为光电编码器测速系统的中断程序流程图。

脉冲计数周期主要是由单片机内部精确到毫秒的定时器每次以间隔相同的时间进入中断,中断1000次才形成一个周期。

一个周期的时间到了,就进行一次脉冲计算。

一个周期时间没到就进入主程序。

从而控制每个周期的方波高电平和低电平各自持续的时间,即控制了方波的占空比。

通过该图也可以清晰明了的知道,该中断程序主要涉及的就是方波的调控。

先是判断高电平是否未达到调控的时间,如果未达到则让gdp+1,即让继续高电平保持。

如果gdp为100则说明主程序已经把方波调控到一直保持高电平,就让gdp为0,就可以一直输出高电平了。

如果高电平达到了调控的时间,就让控制电机的两个引脚都为低电平并让ddp+1,即让继续低电平保持。

如果低电平未达到了调控的时间,就进入主程序继续保持低电平等待下一次中断。

如果低电平达到了调控的时间,就让ddp=gdp=0,即重新开始下一个方波。

图9定时器中断程序流程图

五、仿真与实现

5.1proteus软件介绍

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持KEIL,IAR和MPLAB等多种编译器。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。

前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。

这在相当程度上替代了传统的单片机实验教学的功能,例:

元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计。

实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。

因此,Proteus有较高的推广利用价值。

由于该设计的光电编码器测速在仿真软件中无法仿真,只能仿真液晶显示部分,所以仿真原理图忽略。

5.2仿真过程图10为使用

keil软件编写程序时的调试过程图。

我用的是C语言来编写。

第一次编写完程序后,然后编译一下,出现的对话框中显示有几个错误,点击错误提示,主程序会出现光标只向错误的地方,根据这个错误提示,然后进行更改,再编译一下,程序还是显示有错误,再重复上次的操作,进过了几次修改后,就如图所示没有错误提示了。

编写程序就是这样,需要不断修改,程序才能准确。

程序编写好,还要编译成HEX文件。

只有HEX文件才能烧录到到单片机上。

图10keil软件仿真图

5.3实物制作与调试

图11为实物图的背面,图12为实物图的正面。

原理图和洞洞板图画好,程序写好后就可以开始焊接了。

在刚开始焊好后,烧录程序进去,但液晶却不能显示,于是我就在protues中仿真了液晶显示部分,仿真中能实现正确显示,再检查一下有没有焊接错误,也没有发现任何错误,我就想如果我能正确控制1602液晶的引脚,它就应该能够显示,于是我在出现中令P2=0xaa,en=1,rw=0,rs=1,然后用万用电表检查液晶上的液晶是否是如我所设定的那样,电平引脚和我设置的一样。

我再令P2=0x55,en=0,rw=1,rs=0,结果我发现rs液引脚为高电平,而我设置的为低电平。

我用万用电表检查,发现rs引出的那根导线与电源短路了,可是我根本看不出来哪里短路了,我就先把rs引出的那根导线焊开分成两段,再检查其中有一段是短路的,接着再焊开成两段,继续检查,最后找到了短路的地方,原来是两个焊盘本身就是连在一起。

我就把其中一个焊盘用电烙铁焊掉,用走线连接,一上电,液晶立刻就显示正常。

图11实物图背面

图12实物图正面

5.4使用说明

如图12所示:

此光电编码器测速系统包含的元器件有:

STC89C52单片机一块,光电编码器,一块74LS74芯片,40个脚IC插座一个,14个脚IC插座一个排阻一个,一个16脚的排母,1602液晶一块,一个3M红色LED灯,六个排针,三个四脚轻触开关,四个个电阻,一个电解电容,两个瓷片电容,,一个六角自锁开关,一个晶振和一个103蓝白滑动变阻器。

整个光电编码器测速系统布置在一块20×10大小的洞洞板上。

1602液晶用于显示所测的转速,单片机下方的两个按键为控制按键,从左往右第一个为显示每秒转速控制键,第二个为显示每分钟的转速。

控制按键右边为一块74LS74芯片,四个排针(用于接光电编码器)和两个1K电阻组成组成光电编码器测速电路部分。

单片机右边蓝白滑动变阻器,通过调节蓝白滑动变阻器来调节液晶亮度。

那个按键为复位按键,每按一次系统就复位一次,回到初始状态。

复位按键下方的蓝白自锁开关为电源开关,当排针接好电源后,按下蓝白自锁开关则系统上电,按起蓝白自锁开关则系统断电。

蓝白自锁开关上方的红色发光二极管为电源指示灯,当系统接通电源时,指示灯亮,当系统断开电源时,指示灯暗。

蓝白自锁开关下方的四个排针从上至下依次接5V的VCC,RXD,TXD,GND。

使用前应先上电。

接上电源后由于开关断开系统还未上电,按下蓝白自锁开关后,电源接通。

通上电时,首先单片机连接电源时,先是1602液晶第一行显示welcometouse的字样,第二行显示real_speed:

0000。

可以按显示每秒速度的按键,也可以按每分钟显示的速度,转动主轴,液晶上就会显示与所按下的控制键相对应得转速。

如果是正转,液晶第二行就会显示real_speed:

xxxx,如果为反转,液晶上就会显示real_speed:

-xxxx。

如果不按控制键液晶第二行就显示real_speed:

0000。

七、参考文献

[1]杨长兴、刘卫国.C++程序设计:

中国铁道部出版社

[2]李朝青.单片机原理及接口技术(第三版):

北京航空航天大学出版社

[3]康华光.电子技术基础(第五版):

高等教育出版社

[4]刘坤、赵红波、张宪栋.51单片机C语言运用(第二版):

人民邮电出版社

[5]阎石数字电子计数基础(第五版):

高等教育出版社

#include

#defineucharunsignedchar

#defineuintunsignedint

sbiten=P0^2;//使能位

sbitrw=P0^1;//读/写选择位

sbitrs=P0^0;//数据/命令选择位

sbitfensu=P1^1;//分速键

sbitmiaosu=P1^2;//秒速键

floatw;

floata=0;

uchark=2;//实际正反转标志位

际速度的各个四位

ucharnum1,num2;

floatreal;

uintt;//定时器1中断次数

ucharcodetable1[]="welcometouse";//显示设定速度ucharcodetable2[]="real_speed:

0000";//

voiddelay(ucharz)

ucharx,y;

for(x=100;x>0;x--)

for(y=z;y>0;y--);

voidwrite_com(ucharcom)//写命令函数

rw=0;

ucharreal_gw,real_sw,real_bw,real_qw,expc_gw,expc_sw,expc_bw;//设置速度与实显示实际速度rs=0;en=0;P2=com;delay(5);en=1;delay(5);17

}en=0;

voidwrite_date(uchardate)//写数据函数

rw=0;

voiddisplay(ucharadd,ucharexpc_date)//显示速度

write_com(0x80+add);//写命令指针指向要写数据的地址write_date(expc_date);//写数据

voidinit()

TCON=0X0F;

TMOD=0X15;

EX1=1;

EX0=1;

EA=1;//开总中断

ET1=1;//开启T1中断

TR1=1;//允许T1中断

IP=0X08;//设置定时器1为优先级

TH0=0;

TL0=0;

TH1=(65536-1000)/256;

TL1=(65536-1000)%256;

write_com(0x38);//显示模式

write_com(0X0c);//不显示光标

18rs=1;en=0;P2=date;delay(5);en=1;delay(5);en=0;delay(10);//延时显示

write_com(0X06);//显示光标移动位置write_com(0X01);//清屏

write_com(0X80);//显示welcometousefor(num1=0;num1<16;num1++)

write_date(table1[num1]);

delay(20);

write_com(0X80+0X40);//显示real_speedfor(num2=0;num2<16;num2++)

write_date(table2[num2]);

delay(20);

voidkeyskan()

if(miaosu==0)//判断秒速键是否按下{

delay(5);

if(miaosu==0)

while(miaosu==0);

delay(5);

while(miaosu==0);

if(fensu==0)//判断分速键是否按下{

a=60;

190000

//外部中断0程序

voidexter0()interrupt0//反转触发{

k=0;

EX0=0;

EX1=1;

TH0=TL0=0;

//外部中断1程序

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2