ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:209.50KB ,
资源ID:7357104      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7357104.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的光电计数器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的光电计数器.docx

1、基于单片机的光电计数器基于单片机的光电计数器基于单片机的光电计数器一、设计题目: 基于单片机的光电计数器二、设计要求: 1,数码管可以显示产品个数(0-99),自由设定产品报警个数(比如 ,10),当产品数目是10的个数时,发出报警(蜂鸣器响)。2,独立设计电路,应包括单片机小系统、红外光电开关、数码管显 示部分。摘 要本文所设计的计数器抗干扰性好,可靠性高。可用于测量商场、电影院、博物馆、展览观、车站、码头、银行等公共场所的人员数量及人员流通数量,同时丝毫不会侵犯到被测人员的个人隐私。该产品应用广泛,常用于测量流水线上的产品的数量,以及可检查产品有无缺损。 本电路的指导思想是设计两电路光控电

2、路,一路放置在门外,另一门放置在门内。当有人通过门口时(无论是进入或走出房间),都会先触发一个光控电路,再触发另一个光控电路,根据光控电路产生触发脉冲的先后顺序,判断来人是进入还是离开,当有人进入时令计数器进行加计数,当有人离开时令计数器进行减计数;要求计数器的最大计数容量是99人,并用数码管显示数字。该系统具有结构简单、成本低廉、计数准确的特点,适用于本次设计的系统。该光电计数器只有两位数,如果二位数不满足需要也可通过级联可以扩展为四位,甚至多位。关键词:单片机、外部中断、报警器 正 文一、题目分析本电路的指导思想是设计一电路光控电路,放置在流水线旁。当有产品通过光电门时,都会先触发光控电路

3、,根据光控电路产生触发脉冲令计数器进行加计数,要求计数器的最大计数容量是99个,并用数码管显示数字。并在计数每次达到10时报警。二、整体构思 系统的组成与结构:图2-1 光电计数器系统结构图整个光电计数器系统是由光电传感电路、AT89C52单片机系统电路、显示计数电路、报警电路五个部分组成的,如图2-1所示。光电传感电路把被计数的物体的变化转换成电信号,由显示计数电路计数,再由数码显示管显示,当达到设定的报警值时,报警电路发出报警。三、具体实现:1,光电开关用开关模拟光电传感器采集外部信号。2,复位电路单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后

4、,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如图中R1、C3和K1。上电自动复位通过电容C1充电来实现。手动按键复位是通过按键将R3与VCC接通来实现。如图示两种复位方式: 图 上电复位电路 图手动复位电路3, 中断方式计数:由于光电技术电路需要在数码管上显示通过光电门的产品数量,因此可以在内部存储器空间定义它的显示缓存区,用来暂存数码管显示的当前值。系统在初始化程序之中,设置外部中断0产生中断标志T0,并初始化值为0。当有外部中产生时,相应的中断置1。当外部中断0产生中断时,在主程序中扫描T0是否为1。当T0为1时,调用光电计数子程

5、序,将显示暂存变量加1,。每当通过光电门的产品数量达到10时,蜂鸣器响一声,并清零缓存,继续计数。4, 显示部分:该系统要求显示计数功能。基于上述原因,我们考虑了三种方案:方案一:完全采用 LCD显示。完全采用 LCD显示可显示有限的符号和数码字苻,能满足设计的需要。方案二:完全采用点阵式 LCD显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等,也可满足设计的需要。方案三:采用 LED显示,LED只显示数字输出。这种方案既满足系统功能要求,又简单,成本有低。权衡利弊,第三种方案的优缺点,我们决定采用方案三来实现数字显示。系统中采用的数码管为共阴

6、极数码管,显示电路图的电路如图3-3所示。图3-3显示电路图5,报警部分:当计数器计数到00时应使计数器复位并置数99。但这时将不会显示00,而计数器从01直接复位。由于00是一个过渡时期,不会显示出来,所以本电路采用10作为计数器复位脉冲。当计数器由00跳变到10时,从输出低电平使计数器置数,并保持继续计数,蜂鸣器发出一声报警声。当产品经过光电门时,Rs触发器翻转输出高电平,计数器开始计数。若按下S2,计数器立即复位。报警电路的电路图如图3-4所示。图3-4 报警电路图6,软件程序的设计系统上电初始化之后,主程序不断地扫描键盘和显示程序;同时判断外部中断标志是否有效。如果外部中断标志有效,则

7、调用光电计数处理子程序,刷新数码管的显示值7,系统控制主程序设计定义蜂鸣器接口P3.7,初始状态为0,蜂鸣器不报警,当有高电平触发P3.7时,蜂鸣器开始报警。当下一个脉冲是1时外部中断T0则产生中断,计数器停止加计数。8,系统初始化子程序设计:设定外部中断T0的标志位置0即中断处于关闭状态,蜂鸣器控制标志位也置0,处于关闭状态,系统初始化流程图如图3-5所示。图3-5 系统初始化流程图9,显示子程序设计定义数码管的段码表、位选码,定义计数器的显示缓存区,在统计过程中,当一个信号传到单片机中,系统调用延时子程序进行延时,计数器对十位和个位进行计数判断,将数据通过数码管显示出来,显示子程序的电路图

8、如图3-6所示。图3-6 动态显示电路流程图10,光电计数处理子字程序设计外部中断T0初始化后处于关闭状态,当其中断标志有效时进行加计数,外部中断T0进行加计数且判断计数器是否达到10,若等于10则KEYBOARD=1蜂鸣器报警。最后将计数值通过数码管显示,其流程图如图3-7所示。SHAPE * MERGEFORMAT3-7 光电计数处理子程序流程图四、系统调试4.1电路的优缺点1.用单片机作为设计的核心系统有点易于实现自动化控制、计数精确。而电路采用数码管动态显示电路直观性比较好、具有一定的抗干扰能力且比较容易实现级联,以达到扩大计数范围的作用,同时电路具有很强的实用性。2.电路的不足由高亮

9、光电管和硅光电池组成的信号产生电路灵敏度稍差,在实际环境中光线的接受还是收到影响,导致电路反应有点迟钝。3.电路刚开始有些地方考虑的欠佳,线路排布个人觉得并不十分完美。4.2电路的改进方法1、断电检查:硬件电路及对照原理图检查硬件电路。2、整个调试过程分层次进行,先调试单元电路,再调试模块电路,最后系统联调。3、通电检查:入正常电压,观察各模块工作波形及工作电压有无异常。4、单元电路调试:利用信号源或其他实验仪器判断各单元电路的工作状态。5、整机联调:从最前端到末级进行统调,检查各级动态信号工作情况,分析是否满足设计要求。6、参数计算和器件选择:五、系统程序设计 用C语言进行编程:#inclu

10、de#define uchar unsigned char#define uint unsigned intuchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit SPK=P37;sbit key1=P10;sbit key2=P11;uchar n,a,b;void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);void scan() if(key1=0) delay(5); if(key1=0) while(!key1); n+; if(

11、n=100) n=0; if(key2=0) delay(5); if(key2=0) while(!key2); n=0; void display() a=n%10; b=n/10; P2=0xfe; P0=tabb; delay(5); P2=0xfd; P0=taba; delay(5);void alarm(uchar t) uchar i,j; for(i=0;i200;i+) SPK=SPK; for(j=0;jt;j+); void main() while(1) scan(); display(); if(a=0)&(b!=0) alarm(30); alarm(50); 六

12、、仿真用proteus画好电路图,仿真结果如下:1,计数显示如下图:2,当计数到10时,报警器报警,仿真结果如下图:3,按下清零键,数码管恢复到00,仿真结果如下图:七、设计心得体会本次课程设计是利用光电传感器对通过光电门的产品数量计数。在设计电路初期,由于没有设计经验,觉得无从下手,空有很多设计思想,经过自己查找资料,我的设计渐渐有了头绪,通过查阅资料,逐渐确立系统方案。发现自己对单片机AT89C52的功能的认识和应用掌握力度不够,在软件设计程序时常常遇到问题,又找不到错误问题根源所在。究其原因是我对芯片应用和C语言编写程序的经验太少,速度过慢。我知道问题的根本原因之后,我认真研究并掌握单片

13、机的应用并提高编写程序的准确度,变成速度。在设计期间有什么不懂的可以问指导老师,也可以和同学们互相探讨,也可以通过网络查询。在课程设计期间我学到了很多知识和技巧。并把以往老师教的理论知识用于实践。总之,知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。八、参考文献1,康华光 电子技术基础数字部分.高等教育出版社,20062,康华光 电子技术基础模拟部分.高等教育出版社,20063,倪晓军,章韵 单片机原理与接口技术清华大学出版社,20094,郭天祥 51单片机C语言教程 电子工业出版社,2009 (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1