课程设计报告

课程名称: 微机原理课程设计

题 目: 基于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.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

一、设计任务与要求

1.1 设计任务

要求

二、方案总体设计

设计一个基于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 系统总体框架

2)总体工作原理

三、硬件设计

3.1 单片机最小系统

单片机要正常工作,首先要产生片内时钟信号。在单片机内部的振荡器的输入端XTAL1和输出端XTAL2之间接一个石英晶振就可以够成一个自激振荡器。再在两端之间串联接个电容并且在两个电容之间接地以便于稳定频率还对振荡频率有微调作用

单片机c语言计数器测速,基于51单片机的光电编码器测速.doc相关推荐

  1. 单片机c语言程序开发洗衣机,基于51单片机洗衣机控制器的设计(附程序)☆

    基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘  要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...

  2. 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议

    原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...

  3. 单片机c语言篮球比分_基于51单片机的篮球记分牌设计

    1 摘 要 单片机,亦称单片微电脑或单片微型计算机.它是把中央处理器( CPU ).随机存 取存储器( RAM ).只读存储器( ROM ).输入 / 输出端口( I/0 )等主要计算机功能部件 都集 ...

  4. 51单片机c语言的秒表设计,基于51单片机的计时器设计

    描述 用51单片机的定时器0的方式1计时,结果用4位数码管显示,分别为秒十位,秒个位,毫秒百位,毫秒十位.所以总共最大计时为1分钟,精确到了0.01s.同时,加上3个独立按键,分别控制秒表的清零,暂停 ...

  5. 51单片机c语言dac0832产生波形,基于51单片机的DAC0832波形发生器设计

    波形发生器是一种常用的信号源,广泛的应用于电子电路.自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一.在研制.生产.测试和维修各种电子元件.部件以及整机设备时,都需要有信号源. ...

  6. 单片机c语言交通信号灯设计,基于51单片机的交通信号灯设计毕业设计.pdf

    摘 要 在现代城市中,随着人口和汽车的急剧增长,市区交通日益拥挤,要是没有红绿灯 作为指挥工具,恐怕川流不息的汽车就会由于混乱而造成严重阻塞.因此,交通灯是交 管部门管理城市交通的重要工具之一.随着电 ...

  7. 单片机c语言程序开发洗衣机,基于51单片机的洗衣机程序

    题目:设置过程,有一个水位选择按键,选择6个水位之一,相应的有六个水位检测点,仿真时用六个开关表示.有一个程序选择按键,选择8个程序之一.一个启动/停止键,按照所选程序自动洗衣.(2)洗衣过程,模拟完 ...

  8. 51单片机c语言编写计算器仿真,基于51单片机的计算器设计c程序代码加proteus仿真...

    可实现加减乘除各类运算,带有清零复位功能 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 0.png (24.71 KB, 下载次数: 9) 2019-1-10 04:05 上传 程序 ...

  9. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

最新文章

  1. 黑科技,教你用Python打电话,控制手机技术,快来学一下
  2. 彻彻底底了解回调函数
  3. 什么是迭代器,JS如何实现迭代器
  4. [渝粤教育] 中国地质大学 运筹学 复习题
  5. 【计蒜客信息学模拟赛1月月赛 - B】蒜头套圈圈(贪心,前缀最大值)
  6. 输入文字加下划线_Word中被很多职场人士忽略的输入技巧为什么插入的文字会后移...
  7. 上海高考女生计算机专业,@2020高考:女生最多的15个专业,一辈子的好友就在这里...
  8. 8-Spring Boot消息服务
  9. 轻量级ORM框架Dapper应用二:使用Dapper实现CURD操作
  10. 使用PDF-XChange Editor为PDF文件添加图章(仅图片)
  11. 存储过程和函数的操作
  12. C语言练习①一英寸是多少厘米?
  13. 传奇源码分析---框架
  14. mentohust for linux,GitHub - xdlinux/mentohust_xidian: A ruijie client for xidian university
  15. User-Agent for Chrome浏览器模拟微信功能
  16. 障碍物参考线交通规则融合器:Frame类
  17. vue操作easyui中的DataGrid
  18. 第九届河南省ACM省赛 D 导弹发射
  19. IMPERVA-WAF 硬盘更换
  20. poll,ppoll

热门文章

  1. gRPC-go源码(2):ClientConn
  2. MySQL子查询原理分析
  3. 麻将游戏-协议实现 笔记
  4. Redis再入门 codis 对比 Memcached
  5. centos怎么查看用户和用户组
  6. php-fpm的平滑启动
  7. html限定输入的内容,HTML中限制input 输入框输入内容
  8. 垃圾收集六大算法全面理解
  9. Spring解决循环依赖
  10. Hibernate自动创建表