基于单片机光电计数.docx

上传人:b****5 文档编号:30230088 上传时间:2023-08-07 格式:DOCX 页数:20 大小:161.37KB
下载 相关 举报
基于单片机光电计数.docx_第1页
第1页 / 共20页
基于单片机光电计数.docx_第2页
第2页 / 共20页
基于单片机光电计数.docx_第3页
第3页 / 共20页
基于单片机光电计数.docx_第4页
第4页 / 共20页
基于单片机光电计数.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于单片机光电计数.docx

《基于单片机光电计数.docx》由会员分享,可在线阅读,更多相关《基于单片机光电计数.docx(20页珍藏版)》请在冰豆网上搜索。

基于单片机光电计数.docx

基于单片机光电计数

摘要

计数器对某物件进行自动计数,在实际生产生活中具有广泛的应用,对通过的物体进行计数,实现统计数据的搜集,如在生产流水线包装数量控制等领域的应用,能节省劳动力有能高效地完成任务。

光电计数器采用光电传感器构成的广电门实现对通过光电门的物体进行计数,是一种非接触式计数,在部分场合有着其无比的优越性,从而使其广泛应用于工业生产、实时监测、自动化控制等领域。

本作品为实现光电计数器的功能,采用模数结合的电路,以红外对射光电传感器为传感器件。

电路主要分为信号采集电路、两位十进制计数电路、数码显示电路、报警电路四个模块,分别实现对通过光电门的物体感应,计数,显示,并按要求完成报警功能。

计数范围为一百,可以预设计数数目,当计数达到设定后,停止计数并报警,可手动清除报警;还可以计数达一百时,闪灯报警两秒。

作品电路主要采用常用分立元件和小规模集成电路,结构简单可靠,能够提供准确的统计值,成本低廉,实用性强,二次开发性高

关键词:

计数器光电传感器数码显示报警

 

目录

第一章绪论3

1.1概述3

1.2光电计数的现状及发展前景3

第二章系统的设计原理4

2.1系统的设计要求4

2.2系统的组成与结构4

2.3中断方式计数4

2.4串行通信接口5

第三章光电计数器的软件设计6

3.1系统控制主程序设计6

3.2系统初始化子程序设计6

3.3显示子程序设计6

3.4光电计数处理子字程序设计7

第四章光电计数器的硬件设计9

4.1硅光电池9

4.2AT89S52单片机9

4.3LM393芯片10

4.4LM358芯片11

第五章系统调试13

5.1电路的优缺点13

5.2电路的改进方法13

5.3电路调试过程中出现的问题及解决办法13

第六章总结14

致谢15

参考文献16

附录17

 

第一章绪论

1.1概述

工业生产中常常需要自动统计产品的数量,计数器在这里有其用武之地。

光电计数器采用光电传感器利用光学原理实现对物件的数目统计。

光电式传感器是将光信号转化为电信号的一种传感器。

它的理论基础是光电效应。

这类效应大致可分为三类。

第一类是外光电效应,即在光照射下,能使电子逸出物体表面。

利用这种效应所做成的器件有真空光电管、光电倍增管等。

第二类是内光电效应,即在光线照射下,能使物质的电阻率改变。

这类器件包括各类半导体光敏电阻。

第三类是光生伏特效应,即在光线作用下,物体内产生电动势的现象,此电动势称为光生电动势。

这类器件包括光电池、光电晶体管等。

光电效应都是利用光电元件受光照后,电特性发生变化。

敏感的光波长是在可见光附近,包括红外波长和紫外波长。

市场上的光电计数器采用的光电传感器有摄像头、光电管等,采用的光的种类有普通光和激光,可见光和不可见光等。

1.2光电计数的现状及发展前景

随着科学技术的发展,电子计数器的辅助功能也逐渐增加,现在已经出现了多功能计数器,多功能计数器产品的响应度较高,交直、流电两用、耗能低、价格低、无机械碰撞、无磨损、使用寿命长,既可计数,又可计算。

例如在毛衣编织机上运用,除可计数和计算外,还可实现断线报警。

通用计数器不仅可测频率、周期还可以测多周期平均、时间间隔、频率比和累计等。

频率计数器专门用于测量高频和微波频率的计数器。

微波计数器是以通用计数器和频率计数器为主配以测频扩展器而组成的微波频率计。

它的测频上限已进入毫米波段,有手动、半自动、全自动3类。

系列化微波计数器是电子计数器发展的一个重要方面。

 

第二章系统的设计原理

2.1系统的设计要求

设计两电路光控电路,一路放置在门外,另一门放置在门内。

当有人通过门口时(无论是进入或走出房间),都会先触发一个光控电路,再触发另一个光控电路,根据光控电路产生触发脉冲的先后顺序,判断来人是进入还是离开,当有人进入时令计数器进行加计数,当有人离开时令计数器进行减计数;要求计数器的最大计数容量是99人,并用数码管显示数字。

2.2系统的组成与结构

图2-1光电计数器系统结构图

整个光电计数器系统是由光电传感电路、运算放大电路、AT89S52单片机系统电路、显示计数电路、报警电路五个部分组成的,如图2-1所示。

光电传感电路把被计数的物体的变化转换成电信号,由显示计数电路计数,再由数码显示管显示,当达到设定的报警值时,报警电路发出报警。

2.3中断方式计数

由于光电技术电路需要在数码管上显示进入电影院的人数,因此可以在内部存储器空间定义它的显示缓存区,用来暂存数码管显示的当前值。

系统在初始化程序之中,分别设置外部中断0和外部中断1产生中断的中断标志T0和T1,并初始化值为0。

当有外部中产生时,相应的中断置1。

当外部中断0产生中断时,在中断服务程序之中将中断标志T1置1,并屏蔽外部中断1,然后在主程序中扫描T0是否为1。

当T0为1时,调用光电计数子程序,将显示暂存变量加1,同时开外部中断1。

当电影院中的人数达到99人时,系统发出声光警报,直至按复位键为止。

当外部中断1产生中断时,在中断服务程序之中将中断标志T1置1,并屏蔽外部中断0,然后在主程序之中扫描T1是否为1。

当T1为1时调用光电计数子程序,将显示暂存变量减1,同时开外部中断0。

2.4串行通信接口

串行通信与并行通信不同,并行通信是一次性传送8位数据,传输快捷方便,但硬件较复杂,远距离传输成本较高,串行通信是一位一位的传送,一个字节的八位二进制数至少需要传送8次,结构也比较简单,串行通信是通过串行口来实现的,MCS-51单片机有一个全双工的异步串行接口可以用于串行数据的数据通信,串行通信的两种基本方式有异步传送方式和同步传送方式。

MCS-51单片机采用异步通信的串行通信方式,有一个全双工的串行接口电路,整个串行通信可以通过编制的程序设定,串行接口电路的内部结构如图2-2所示。

图2-2串行口内部结构

SBUF是独立的两个缓冲器,主要功能存放接收到的数据和存放将要发送的数据,起缓冲作用,TXD是发送引脚,数据从TXD一位一位的向外设发送,RXD是接收引脚,数据从RXD一位一位的接收到单片机内。

 

第三章光电计数器的软件设计

系统上电初始化之后,主程序不断地扫描键盘和显示程序;同时判断外部中断标志是否有效。

如果外部中断标志有效,则调用光电计数处理子程序,刷新数码管的显示值

3.1系统控制主程序设计

定义蜂鸣器接口P3.6,初始状态为0,蜂鸣器不报警,当有高电平触发P3.6是,蜂鸣器开始报警。

当下一个脉冲是1时外部中断T0则产生中断,计数器停止加计数,同样若外部中断T1也是高电平则T1产生中断,计数器停止减计数。

3.2系统初始化子程序设计

设定外部中断T0、T1的标志位置0即中断处于关闭状态,蜂鸣器控制标志位也置0,处于关闭状态,系统初始化流程图如图3-5所示。

图4-1系统初始化流程图

3.3显示子程序设计

定义数码管的段码表、位选码,定义计数器的显示缓存区,在统计过程中,当一个信号传到单片机中,系统调用延时子程序进行延时,计数器对十位和个位进行计数判断,将数据通过数码管显示出来,显示子程序的电路图如图3-6所示。

图4-2动态显示电路流程图

3.4光电计数处理子字程序设计

外部中断T0和T1初始化后都处于关闭状态,当其中断标志有效时进行加计数,当外部中断T0处于关闭时,外部中断T1进行加计数且判断计数器是否达到计满值99,若大于等于99则KEYBOARD=1蜂鸣器报警。

外部中断T1关闭,开外部中断T0,则减计数,再开外部中断T0。

最后将计数值通过数码管显示,其流程图如图3-7所示。

图4-3光电计数处理子程序流程图

 

第四章光电计数器的硬件设计

主要芯片元器件引脚图及功能介绍

4.1硅光电池

硅光电池是一种能将光能直接转换成电能的半导体器件,其结构图1-1所示。

在N型层受光层上制作有栅状负电极,另外在受光面上还均匀覆盖有抗反射膜,它是一层很薄的天蓝色一氧化硅膜,可以使电池对有效入射光的吸收率达到90%以上并使硅光电池的短路电流增加25%-30%。

以硅材料为基体的硅光电池,可以使用单晶硅、多晶硅、非晶硅来制造。

单晶硅光电池是目前应用最广的一种,它有2CR和2DR两种类型,其中2CR型硅光电池采用N型单晶硅制造,2DR型硅光电池则采用P型单晶硅制造。

硅光电池的工作原理是光生伏特效应。

当硅光电池接入负载后,光电流从P区经负载流至N区,负载中即得到功率输出。

图1-1硅光电池结构图

4.2AT89S52单片机

AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S52具有如下特点:

40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求,AT89S52的引脚图如图1-2所示。

主要功能特性:

兼容MCS-51指令系统、8k可反复擦写(>1000次)ISPFlashROM、32个双向I/O口、4.5-5.5V工作电压、3个16位可编程定时/计数器、时钟频率0-33MHz、全双工UART串行中断口线、256x8bit内部RAM、2个外部中断源、低功耗空闲和省电模式、中断唤醒省电模式、3级加密位、看门狗(WDT)电路、软件设置空闲和省电功能、灵活的ISP字节和分页编程、双数据寄存器指针。

图1-2AT89S52引脚图

4.3LM393芯片

LM393是双电压比较器集成电路,其内部结构图如图1-3所示。

该电路的特点如下:

工作电源电压范围宽,单电源、双电源均可工作,单电源:

2~36V,双电源:

±1~±18V;消耗电流小,Icc=0.8mA;输入失调电压小,VIO=±2mV;共模输入电压范围宽,Vic=0~Vcc-1.5V;输出与TTL,DTL,MOS,CMOS等兼容;输出可以用开路集电极连接“或”门。

图1-3LM393内部结构图

4.4LM358芯片

LM358里面包括有两个高增益、独立的、内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运放的地方使用,其内部结构图如图1-4所示。

LM358封装有塑封8引线双列直插式和贴片式两种。

LM358的特点:

内部频率补偿;低输入偏流;低输入失调电压和失调电流;共模输入电压范围宽,包括接地;差模输入电压范围宽,等于电源电压范围;直流电压增益高(约100dB);单位增益频带宽(约1MHz);电源电压范围宽:

单电源(3—30V);双电源(±1.5一±15V);低功耗电流,适合于电池供电;输出电压摆幅大(0至Vcc-1.5V)。

图1-4LM358内部结构图

 

第五章系统调试

5.1电路的优缺点

1.用单片机作为设计的核心系统有点易于实现自动化控制、计数精确。

而电路采用数码管动态显示电路直观性比较好、具有一定的抗干扰能力且比较容易实现级联,以达到扩大计数范围的作用,同时电路具有很强的实用性。

2.电路的不足由高亮光电管和硅光电池组成的信号产生电路灵敏度稍差,在实际环境中光线的接受还是收到影响,导致电路反应有点迟钝。

3.电路刚开始有些地方考虑的欠佳,线路排布个人觉得并不十分完美。

在电路焊接过程中有重复焊接的外观不是和美观。

5.2电路的改进方法

1、断电检查:

硬件电路及对照原理图检查硬件电路。

2、整个调试过程分层次进行,先调试单元电路,再调试模块电路,最后系统联调。

3、通电检查:

入正常电压,观察各模块工作波形及工作电压有无异常。

4、单元电路调试:

利用信号源或其他实验仪器判断各单元电路的工作状态。

5、整机联调:

从最前端到末级进行统调,检查各级动态信号工作情况,分析是否满足设计要求。

6、参数计算和器件选择:

5.3电路调试过程中出现的问题及解决办法

1.电压比较器LM393的第一级比较器的参考电压端(五号端)的上电电压很高,接近于电源电压,使输入端(六号端)与之比较时没有反应,LM393不能正常工作,从而不能产生脉冲信号。

2.某些时候数码显示器计数不准确,产生这种现象的原因是由于脉冲发生电路所产生的脉冲信号频率不正常。

2.解决方法1.电压比较器LM393集成块的四号端和八号端对调,使四脚接地,八脚接正极,这样就将参考电压端(五号端)的电压拉低,使之为VDD/2,使电路正常工作。

2.既然脉冲信号频率不正常,那么我就查脉冲发生电路,由高亮发光管到硅光电池,到运放电路再到电压比较器,发现电路中有虚焊的,加牢之后情况好转。

 

第六章总结

经过这次的设计与制作,我们的作品总算是出来的,一路走来,道路并不平坦,可以说我们是在曲折中前进的。

由于我们的知识面有限,在设计中各种问题总是不断的出现,经过查阅有关书籍、上网搜索,一步一脚印的解决了我们在设计中出现了问题,同时也增加了我们的知识面。

作品的制作过程更是给了我们很多宝贵的经验,因为从作品的原理图设计,都是我们亲手亲为,有力地提升了我们电子设计的能力,也开阔了我们的眼界,增强了我们的动手能力。

在这次设计期间我学到了很多知识和技巧,而最重要的就是学到了科学试验中的不可缺少的毅力和耐心。

总之,知识必须通过应用才能实现其价值!

有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

致谢

在论文完成之际,我首先向关心帮助和指导我的指导老师表示衷心的感谢并致以崇高的敬意!

在论文工作中,遇到了研究理论、框架结构、数据整理等问题,他们在撰写、修改和定稿等各个环节均严格把关,并投入了大量的时间和精力,使我得以完成本次论文,一直得到老师的亲切关怀和悉心指导,使我老师以其渊博的学识、严谨的治学态度、求实的工作作风和他敏捷的思维给我留下了深刻的印象,使我的知识层次又有所提高,打牢了研究基础;在学术探讨中他们又以对问题高屋建瓴的专业见地使我茅塞顿开,逐渐掌握了许多研究方法和研究思路。

在生活上,老师更是平易近人,亲人般无微不至的关怀,常带给我许多温暖和感动。

可以说无论是我在学业上的进步还是个人的成长,都离不开她的关怀。

每思及恩师教诲和为此付出的辛劳,常自责未能达到恩师期望,唯有在以后的道路上更加勤勉努力,望能不负师恩。

再一次向他们表示衷心的感谢,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助!

值此论文完成之际,谨向老师致以最崇高的谢意!

特别感谢我的同学以及讲师们对我的学习和生活所提供的大力支持和关心!

还要感谢一直关心帮助我成长的室友们!

最后,衷心地感谢在百忙之中评阅论文和答辩的老师!

 

参考文献

1.韩克,柳秀山.《电子技能与EDA技术》[M]·暨南大学出版社,2002   

2.张大彪.《电子技能与实训》[M]·北京电子工业出版社,2003

3.杨元挺.《电子技术技能训练》[M]·电子工业出版社,2001

4.梁廷贵.《现代集成电路实用手册》[M]·科学技术文献出版社,2006

5.李萧,郭明琼.《常用数字集成电路原理与应用》[M]·人民邮电出版社,

2004

6.李中发.《数字电子技术基础》[M]·中国水利水电出版社,2003

7.曹国清.《数字电路与逻辑设计》[M]·中国矿业大学出版社,2005

8.杨绪东,刘景行.《实用电子电路精选》[M]·化学工业出版社,2001

9.江志红.《51单片机技术与应用系统开发案例精选》[M]·北京清华大学出版社,2008

10.李群芳.《单片微型计算机与接口技术》[M]·电子工业出版社

 

附录

硬件的设计

 

软件的程序设计

sbitKEY=P3^6;

voidmain(void)

{system();

int01initial();

while

(1)

{

led();

keydeal();

if(KEYBOARD==1)

KEY=1;

else

KEY=0;

if(T0==1)

inout();

if(T1==1)

inout();

}

}

voidsystem(void)

{

T0=0;

T1=0;

KEYBOARD=0;

KEY=0;

}

constunsignedchartable0[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x75,0x7c,0x39,0x5e,0x79,

0x71};

constunsignedchartable1[]={0xfe,0xfd};

unsignedintbuffer[]={0,1};

voiddelay(intxc)

{

inti;

for(i=0;i

;

}

voidled(void)

{

intj,k;

for(j=0;j<2;j++)

{

k=buffer[j];

P0=table0[k];

P2=table1[j];

delay(150);

}

}

intscan(void)

{

intscancode;

scancode=(scancode)&0x80;

if(scancode==0x80)

retun1;

else

retun0;

}

//键盘处理

voidkeydeal(void)

{

inttemp;

temp=scan();

if(temp==1)

{//延时,消抖动

led();

led();

led();

led();

led();

led();

led();

}

temp=scan();

if(temp==1)

{

KEYBOARD=0;//键盘扫描,是否停止蜂鸣器报警

}

}

voidint01initial(void)

{

INT0=1;//设置外部中断0下降沿有效

EX0=1;//开外部中断0

IT1=1;//设置外部中断1下降沿有效

EX1=1;//开外部中断1

EA=1;//开全局中断

}

voidint0(void)interrupt0using1

{

T0=1;//外部中断0标志置1

EX1=0;//管外部中断1

}

voidint1(void)interrupt2using1

{

T1=1;//外部中断1标志置1

EX0=0;//管外部中断0

}

voidinout(viod)

{

If(T0==1)//外部中断0产生中断,加计数

{

T0=0;

Num++;

EX1=1;//开外部中断1

If(Num>=99)//Num大于或等于99时蜂鸣器报警

{

KEYBOARD=1;

}

}

If(T1==1)//外部中断1产生中断,减计数

{

T1=0;

Num--;

EX0=1;//开外部中断0

}

buffer[0]=Num/10;

buffer[1]=Num%10;//计数值分解,送显

}

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

当前位置:首页 > 表格模板 > 表格类模板

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

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