光电计数器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、硬件系统说明与电路原理图
4.1 单片机系统电路
单片机电路主要由单片机、振荡电路和复位电路构成。由于AT89C51内部集成了12MHz的振荡电路,所以系统外部未加。单片机电路图如图所示。
AT89C51单片机的P0口用于输出显示器段码。P1口的P1.0~P1.5用于6个LED的亮与灭。此芯片是ATMEL公司一款低功耗,高性能的CMOS 8位微控制器,具有8K在系统可编程Flash存储器,使该公司高密度非易失性存储器制造,与MCS-51兼容。
六、软件流程图
七、心得体会
通过这次光电计数器的设计,使我对单片机系统有了更深的了解。本设计只是一个简单的光电计数器,还可以有很多的附加功能。这次实验不仅使我对单片机的认识有了加深,也提高了自己的动手能力。我意识到实践的重要性,同时也学到了很多书本上学不到的知识。
这次实验中我也遇到了不少问题,最主要的还是如何检测脉冲并显示出来,通过网上资料的查阅与课本的知识我意识到可以通过中断实现,计数器可以计数,外部中断可以检测键值。我采用的是C语言,通过数组查表的方式是数码管输出数值。而且数码管高三位用来储存计满256的次数,简化了计算的过程,并且通过4键可以直接显示计数总值,根本不用计算,非常方便。不过我的计数器也有一些问题,比如防抖动这方面没有采取什么措施,这是最大的问题。可以采取时间延时,躲过抖动期。
课程设计
光电计数器
陈耀
2012211553
12级通信工程二班
指导老师王琼
2015年7月18日
一、课题概述
在许多实际生产过程中都要对事件进行计数,例如,通过传送带上的货物,生产流水线上的产品数量等均要进行自动计数,可见计数器在工业控制中有着广泛的应用。传统的数字计数器都是用中小规模数字集成电路构成的,不但电路复杂,成本高,功能修改也不易。用单片机制作的计数器可以克服传统数字电路计数器的局限,有着广阔的应用前景。
二、 课程设计任务与要求
2.1课程设计任务
用单片机作为主控单元加上一个红外LED发光管,一个复合型光电晶体管,两个施密特触发器等元件构成光电计数器系统。
2.2要求
2.2.1 基本设计要求
上电显示初始值000000,计数上限为999999,可以复位,当光电开关检测到障碍物即挡住光电对管时计数一次,并且利用键盘控制计数器的开关及清零功能。
(1)首先从P0口输出共阳极字符的段码;
(2)然后从位选输出低电平。
4.3 光电门电路
当物体通过光电门时光被挡住,计时器开始计时,当物体离开时停止计时,光电门是由一个小的聚光灯泡和一个光敏管组成的,聚光灯泡对准光敏管,光敏管前面有一个小孔可以接收光的照射。光敏门与计时仪是按以下方式连接的。即当两个光电门的任一个被挡住时,计时仪开始计时;当两个光电门中任一个被再次挡光时,计时终止。计时仪显示的是两次挡光之间的时间间隔。
百度文库2.2.2 发挥设计要求
我在基本要求的基础上增加了两个功能:一个是通过键盘使计数值加一;二是通过键盘控制使数码管显示计数总值及恢复。
三、设计方案
3.1 方案论证
根据上述功能介绍,光电计数系统可以分光电对管信号输入、显示和控制指示3大功能,因此可以光电对管模块、显示模块、单片机模块。
T0作为计数器,方式为方式二,计数初值设为0,计数值为256。LED数码管低三位显示计数值0~256,高三位显示高位计数值,低三位计满256时,高三位进一。T1作为定时器,定时初值设为3CB0H,定时值为50ms,定时次数为10,计满0.5s时,显示当前计数值。INT1作为外部中断,检测到键值为0时,清零当前计数值;键值为1时,暂停计数;键值为2时,继续计数;键值为3时,计数值加1;键值为4时,显示计数总值=256*高位计数值+T1计数值;键值为5时,恢复正常显示。
·具有可编程的3级程序锁定定位;
AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz。
4.2 键盘输入电路及数码管LED显示当前键入数字电路
键盘是计算机最常用的输入设备,是实现人机对话的纽带。按其结构形式可分为非编码键盘和编码键盘。
编码键盘采用硬件方法产生键码。每按下一个键,键盘能自动生成键盘代码,键数较多,且具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用键盘即为编码键盘。非编码键盘仅提供按键开关工作状态,其键码由软件确定,这种键盘键数较少,硬件简单,广泛应用于各种单片机应用系统,本次试验使用的就是非编码键盘。
五、软件模块功能及软件控制方法
软件主要分为四个部分:第一个部分是初始化和主程序对各变量的命名,赋值及调用函数。调用的函数主要是三个中断程序。第二个部分是外部中断,用来检测键值及判断键值意义,具体键值对应的功能我已在方案论证中说明。第三个部分是计数器T1中断,主要用来记录数值并且判断是否计满进位。第四个部分是50ms定时器中断程序,每隔0.5s检测当前计数值并且调用显示函数依据当前键值显示计数值。
显示电路由6个共阳极数码管构成。软件编程时采用动态显示方法,数码管其实是由发光二极管组成,有共阴极和共阳极之分,对于共阳极来说,一位数码管由8个二极管组成,他们的阳极接在一起接+5v电源,而各个阴极与某个端口,如p1的8个引脚相连,当某个引脚输出低电平的时候数码管对应的二极管亮。
软件编程时,按照下面的步骤显示字符:
AT89C51单片机的主要工作特性:
·内含4KB的FLASH存储器,擦写次数1000次;
·内含28字节的RAM;
·具有32根可编程I/O线;
·具有2个16位可编程定时器;
·具有6个中断源、5个中断矢量、2级优先权的中断结构;
·具有1个全双工的可编程串行通信接口;
·具有一个数据指针DPTR;
·两种低功耗工作模式,即空闲模式和掉电模式;
3.2 设计原理
1、系统利用红外LED发光管作为光源,光敏三极管接受计数脉冲,当光敏三极管未受到光照时,使光电管截止,其集电极输出高电平,光敏三极管受到光照时,使光电管导通,集电极变为低电平,如此便在光敏三极管的集电极产生一个负脉冲。若将此脉冲接在单片机定时器/计数器的输入端,便可以进行光电计数。
2、光电计数器的计数值通过单片机扩展的电路在LED显示器上显示出来。
相关文档
最新文档