红外可逆计数器设计.doc_第1页
红外可逆计数器设计.doc_第2页
红外可逆计数器设计.doc_第3页
红外可逆计数器设计.doc_第4页
红外可逆计数器设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

光电子技术课程设计课题名称:红外可逆计数器设计指导老师:曾维友 1、 课题名称:红外可逆计数器设计2、 设计任务:设计一个红外可逆计数器,要求:1、 当一物体沿某一方向经过计数器时,计数器进行加一计数;而物体沿反方向经过计数器时,计数器进行减计数;2、 用数码管显示当前的计数值,最大计数值为1000;3、 设计方案经济、实用、可靠。3、 设计方案:方案(1):红外发射管 + 一体化按收头:适用于发射管与接收管距离较大的情形方案(2):槽型光电开关:适用于发射管与接收管距离较小的情形4、 方案选择 由以上两种方案的设计框图可以看出:两种方案的唯一不同之处在于光电发射和接收装置,方案一釆用的是红外发射管加上一体化接收头,适用于发射管与接收管距离较大的情形,而且为了防止误动作,在光电发射部分加入了方波调制电路,因而具有较好的抗干扰能力;而方案二的电路比较简单,只用了一个槽型光电开关,外加两个限流电阻和一个反相器,这种电路适用于发射管与接收管距离较小的情形。考虑到越来越多的流水线上的产品和各种公共场所需要进行自动计数,而在这种情形下发射管与接收管距离一般都比较较大,加之方案一有较强的抗干扰能力。综合以上考虑,我们选择了方案一。5、 模块设计 1、方波发生电路方波发生器的组成方式很多,可以用集成运放构成,可以用一些定时芯片构成,也可以用一些数字门电路构成。由于在数电课程中,我们已经学习了用555定时器构成的方波发生器,对此比较熟悉,电路也比较简单,而且性能良好,因此我们选择了用NE555构成的方波发生器。电路如下: 2、 单片机系统 将两探测器的输出分别与单片机的P1.0和P1.1相接,根据两探测器的变化次序来判断是加计数还是减计数,然后再根据探测器的变化状态来进行计数操作,最后的计数模式及其结果由P0口和P2口输出。 3、 显示模块 显示可分为静态显示和动态显示。静态显示时各个数码管同时工作,因此亮度较均衡,但每个数码管都要占用一个输出口,接口资源浪费较大,考虑到本课题要求的最大计数值为1000,也就说最少需要四个接口,而前面的探测器输入已经占用了P1口,剩下的三个P口在没有扩展的情况下显然不满足要求,因此我们选择了动态显示的方案。动态显示时,将四个数码管的8位段选都接在P0口上,位选分别接在P2口的前四个端口上,进行动态扫描输出。由于扫描周期很短,在人的视觉暂留现象及发光二极管的余辉效应下,看到的将是一组稳定的显示数据,而不会有闪烁感。六、系统总原理图七、程序#include#define uint unsigned int#define uchar unsigned charUchar code dantab= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; /09,+ -;uchar key;uint value=0;sbit W1=P20;sbit W2=P21;sbit W3=P22;sbit W4=P23;void delay1ms() uchar t=25; while(t-); void Display(uint num) uchar temp1,temp2,temp3,temp4;temp1=num/1000;temp2=num%1000/100;temp3=num%100/10;temp4=num%10; P0=dantabtemp1;W1=0;delay1ms();W1=1;P0=dantabtemp2;W2=0; delay1ms();W2=1;P0=dantabtemp3;W3=0;delay1ms();W3=1;P0=dantabtemp4;W4=0;delay1ms();W4=1;void scan() key = 0x03 & P1; while(key=0x00) key = 0x03 & P1;Display(value); if(key=0x02) while(key=0x02) key = 0x03 & P1;Display(value); while(key=0x03) key = 0x03 & P1;Display(value); while(key=0x01) key = 0x03 & P1;Display(value); if(key=0x00) value+; if(value=1001) value=0; Display(value); if(key=0x01) while(key=0x01) key = 0x03 & P1;Display(value); while(key=0x03) key = 0x03 & P1;Display(value); while(key=0x02) key = 0x03 & P1;Display(value); if(key=0x00) value-; if(value=-1) value=1000; Displ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论