红外光电计数器实验报告.docx

上传人:b****6 文档编号:5834009 上传时间:2023-01-01 格式:DOCX 页数:21 大小:282.33KB
下载 相关 举报
红外光电计数器实验报告.docx_第1页
第1页 / 共21页
红外光电计数器实验报告.docx_第2页
第2页 / 共21页
红外光电计数器实验报告.docx_第3页
第3页 / 共21页
红外光电计数器实验报告.docx_第4页
第4页 / 共21页
红外光电计数器实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

红外光电计数器实验报告.docx

《红外光电计数器实验报告.docx》由会员分享,可在线阅读,更多相关《红外光电计数器实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

红外光电计数器实验报告.docx

红外光电计数器实验报告

信息与电气工程学院

课程设计说明书

(2015/2016学年第1学期)

课程名称:

小型数据设计

题目:

红外线计数器

专业班级:

计算机1401

学生姓名:

何亚茹赵君王中昆

学号:

140210122140210107140210121

指导教师:

生龙

设计周数:

二周

设计成绩:

2016年01月08日

1程序设计1

2课程设的主要内容1

2.1设计的要求1

2.2创新方案及原理分析1

2.3方案论证与选择2

2.4软件的设计3

3主要芯片设计4

3.1介绍4

3.251单片机的特点5

3.3数码管7

4系统设计8

4.1单片机最小设计系统8

4.2红外线检测电路9

4.3计数显示部分10

4.4蜂鸣器报警电路10

4.5按键控制电路11

5红外计数器程序设计11

5.1主程序设计11

5.2子程序设计13

6总结15

7参考文献16

1、程设计目的

课利用AT89C51单片机来制作一个手动计数器。

通过具体的项目设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制程序的设计等,以便掌握单片机系统设计的总体思路和方法,掌握基于单片机控制的电子产品开发的技术方法,培养个人的创新意识和动手能力。

2、课程设计的主要内容

2.1设计的要求

1.利用AT89C51单片机来制作一个红外线计数器。

有物体经过红外对管时计数一次。

计数的范围是0~99,计数满时,又从零开始计数。

2.整个系统有较强的抗干扰能力,具有报警能力。

3.将计数值准确显示出来。

2.2创新方案及原理分析

总体电路是由AT89C51单片机系统、红外光电管电路、蜂鸣器报警电路、数码管显示部

分、复位电路部分组成,其结构如图2.1所示

图2.1整体方框图

红外传感器感受到外界信息时,产生高低电平,通过软件程序设置单片机内部寄存器,当传感器的高低脉冲被单片机接收到时,单片机产生中断,中断产生后进入中断服务程序,通过设置中断服务程序,进行计数。

并通过P0口将计数信息传送至数码管,数码管显示计数的个数。

当电路断电后重新启动计数器时,系统自动复位(上电自动复位),以00开始重新计数。

2.3方案论证与选择方案一、如图2.2所示:

图2.2方案一

原理阐述:

专业检测芯片形成计数后送入控制单元AT89C51单片机,通过对它片内计数、

显示编程。

74LS245是LED驱动芯片,可以同时驱动4个7段数码管,AT24C02是EEPROM模块,可以保存单片机运算时的中间有用结果的芯片,是突然掉电,关断电源或瞬间电源电压不稳定时,不会造成数据丢失或数据误写,也可以在上电后从中读出其保存的数据内容,大大增强了抗干扰的能力。

方案二、如图2.3所示:

图2.3方案二

原理阐述:

红外发射电路和红外接收电路(由LM324为核心)构成红外检测单元及形成

计数脉冲,计数显示部分使用了使用共阴数码管。

当红外线被阻挡时,P32口由高电平变为低电平,形成下降沿,单片机进行计数,并在数码管上显示。

方案三、如图2.4所示

图2.4方案三

原理阐述:

利用红外接收发射管的特性(即红外接收头在有红外光电阻原理分压)可取基准电压,然后通过电压比较器可输出高低电平,当有红外光照射的时候,红外接收管串联的电阻分得的电压很大,可使电压比较器LM324输出为低电平;当无红外光照射的时候,红外接收头串联电阻分得的电压很小,可使电压比较器LM324输出为高电平,然后通过单片机

处理,可使输出精准的计数值。

以上三个方案各有自己的优点:

方案一既可完美的实现产品自动计数功能且能让系统处于异常状态和抗干扰时通过外围专用芯片到非常好的解决,外围电路架设相对简单、在市场上属于高端自动计数产品。

同时它也暴露出一个重大问题;由于成本太贵的原因此类产品并没有得到普及。

如果用此方案进行设计只需要了解各专用芯片的引脚功能以及外围连接方法就可以实现自动计数,并没有很好的达到我人做毕业设计的目的,故虽然这个方案最完美的一个方案也只有舍弃。

方案二是这次毕业设计用的方案,该方案价格低廉、计数精确,且在系统处于异常状态时,工作也十分稳定,也是属于现在产品自动计数市场上的热销产品,可用于在计数要求比较高的场合中。

方案三涉及的知识面广也能达到精确、稳定的自动计数,但也有一个致命的缺点,整个系统的抗干扰力较弱,系统掉电后不能保存数据,在系统牌异常状态时容易出现误操作或死机,故不考虑。

2.4系统总体框图和原理系统总体框图如图3.4所示:

图3.4系统框图原理:

电路的指导思想是红外发射管发射红外线,红外接收管接收红外线,并且接收管当有红外线照射的时候,电阻比较小,当无线外线照射的时候电阻比较大,这样就可以通过一个电压比较器和一个基准电压进行对比,当有光照的时候,红外接收管电阻比较小,那么和其串联的电压分压就会增大,所以电压比较器将会输出一高电平;当无光照射的时候,红外接收管的电阻比较大,这样电压比较器就会输出一个低电平。

这个便是外部计数电平信号,这个电平信号送入AT89C51单片机进行计数控制,在经过扩展、显示驱动完成最后的显示过程。

3.主要芯片介绍

3.1介绍

在计算机应用控制领域上,如工业控制、汽车、家电等很多控制场合,对控制系统的要求都比较苛刻。

例如需要智能高、体积小、成本低、功耗低、抗干扰能力强和可靠性高。

不仅传统电气设备无能为力,一般应用性PC机也不能胜任。

在这个背景下,单片机的设想才逐渐成型。

单片机就是将计算机的几个基本组成部分集成在单一的芯片上,体积相对较小,很好地满足了对控制系统体积的要求。

自从1975年美国德克萨斯公司开发生产出第一台单片机TMS-1000以来,单片机经历4位→8位→16位→32位的发展过程。

最有代表性的Intel公司先后推出了三个系列:

MCS-48系列8位单片机、MCS-51系列高档8位单片机、MCS-96/98系列16位单片机。

很多控制场合并不需要单片机去完成复杂的数学计算,因此单片机在生产工艺上进行了简化,降低了制造成本。

同时采用大批量生产,成本进一步降低。

从目前市场上来看,其价格一般都在几元到几十元之间。

未来单片机技术的发展趋势将以8位单片机主流,并大力发展专用单片机。

很多单片机生产

厂家充分考虑到用户的需求,将一些常用的功能部件,如ADC(模/数转换器)、DAC(数/模转

换器)、PW(N脉冲产生器)以及LCD(液晶)驱动器等集成到芯片内部、尽量做到单片化;同

时,用户还可以提出要求,由厂家为其量身定做(SoC设计)或自主设计。

另外,随着科技发展,程序存储器容量将进一步扩大。

当存储空间足够大时,可嵌入一些软件(如平台软件、虚拟外设软件、系统诊断管理软件等)以提高系统开发率。

3.251系列单片机的主要特点

图3.5AT89C51单片机引脚图

VCC:

电源GND:

接地P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作

为低8位地址/数据复用。

在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),在flash编程和校验时,P1口接收低8位地址字节。

P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个

TTL逻辑电平。

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使

用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPT)R时,P2口送出

高八位地址。

在这种应用中,P2口使用很强的内部上拉发送1。

在使用8位地址(如

MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:

P3口是一个有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口亦

作为AT89S52特殊功能(第二功能)使用,如下表3.1所示。

在flash编程和校验时,P3口

也接收一些控制信号。

表3.6P3第二功能

RST:

复位输入。

晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。

看门狗计时完成后,RST脚输出96个晶振周期的高电平。

特殊寄存器AUXR(地址8EH)上的DISRTO位

可以使此功能无效。

DISRTO默认状态下,复位高电平有效。

ALE/PROG:

地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

flash编程时,此引脚(PROG)也用作编程输入脉冲。

在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。

然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。

如果需要,通过将地址为8EH的SFR的第0位置“1”,

ALE操作将无效。

这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。

否则,ALE将

被微弱拉高。

这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN:

外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。

当AT89S52从外部程序存

储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN

将不被激活。

EA

VPP:

访问外部程序存储器控制信号。

为使能从0000H到FFFFH的外部程序存储器读

取指令,EA必须接GND。

为了执行内部程序指令,EA应该接VCC。

在flash编程期间,EA也接收12伏VPP电压。

XTAL1:

振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:

振荡器反相放大器的输出端。

3.3数码管

一些小型设备或小型检测系统一般由单片机组成控制系统,为了降低成本,这些小型系统中的显示一般采用数码管(LED)组成。

常见的数码管有7段、8段和16段。

数码管实际上就是八个发光二极管,它们以两种方式连接,如果将其阴极连接在一起,这种方式构成的数码管成为共阴数码管;如果将其阳极连接在一起,这种方式构成的数码管为共阳数码管。

 

 

图3.6共阴数码管原理图

图3.7共阳数码管原理图

YD0562R0数码管内部

根据电路图所设计的不同,那么所选择的数码管也有所差异。

对于结构及其各个引脚所对应的端口的作用如图3.8所示:

图3.8数码管示意图

4系统设计

4.1单片机最小系统设计

AT89C51单片机的最小系统设计如图4.1,4.2所示。

 

 

图4.1时钟电路

图4.2复位电路

51单片机的最小系统由单片机、

晶振电路、复位电路和P0的上拉电阻组成。

其介绍如下:

时钟电路:

时钟电路(4.1图)

是由电容C4、C5和12MHz的晶振组成,接在单片机的第

18和19脚(即XTAL1和XTAL2端)。

因其采用的是振荡频率12MHz的晶振,所以其软件的一个

机器周期为1us。

复位电路:

C1和R2构成了复位电路。

刚开始上电时时,

C1瞬间相当于短路,C1两端

保持0V电压,VCC的电源电压就都加在了

R2上,因此在单片机

9脚RST上变成了高电平,此

后C1上逐渐充电,即在C1上出现电压,

R2上的电压开始下降,

最后单片机9脚RST上变成

 

了低电平。

在此过程中只要满足单片机

9脚RST上的高电平持续24个振荡周期即可使单片机

复位。

4.2红外线检测电路

4.2.1红外线设计电路

 

图4.3红外线检测部分

如图4.3所示,红外线检测部分采用一对红外发送接收管完成,当电路正常工作时,无障碍物遮挡,红外接收头有红外线照射,这时,红外接收头的电阻很小,大部分电压都加在

R3上,这正是电压比较器LM393N的正向输入电压,而负向输入电压由R4和R5分压得到

平;当在红外发射接收管间有一不透光的障碍物时,,红外接收头无红外线照射,这时红外接收头的电阻很大,大部分电压都加在红外接收头上,这也是电压比较器LM324的正向输入电

压,而负向输入电压也是由R4和R5分压得到,和原来电压一样,这时,R3分得的电压要小于此基准电压值,故这时电压比较器LM393N输出低电平。

4.3计数显示部分

计数显示部分由单片机AT89C51控制完成,显示有2个8段数码管完成。

基本原理为当红外检测部分检测到有产品经过时,红外接收电路LM393N芯片的8输出口将产生一个低电平

信号,这个信号将供给单片机进行计数控制;显示部分是通8位LED数码显示管显示。

如图

4.4所示,为数码管的电路连接图。

图4.4数码管的电路连接图(a-dp接P0口)

4.4蜂鸣器报警电路

本设计采软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。

每当红外线检

测到物体是数据加并报警一次,如4.5图所示,为报警电路原理图。

4.5按键控制电路

本设计采用三个独立按键完成控制系统,三个按键K1、K2、K3分别表示,开始计数、停

止计数、计数清零的控制。

如4.6图所示,为按键控制电路连接。

 

图4.6按键控制电路连接图

5.红外线计数器程序设计

AT89C51单片机可以用汇编语言和C语言进行编程。

汇编语言与机器指令一一对应,所以用汇编语言编写的程序在单片机里运行起来效率较高,而且对于红外计数器数据的读写上,所用到的语句比较简单易懂。

而C语言程序可读性高,更便于理解。

本设计使用C语言编程。

5.1主程序设计

第一次开机,系统进入初始化两个数码管显示为0,当按下K3(开始计数)的时候,单

片机对红外线检测输入的信号进行处理,并显示到8段数码管上面。

每一次检测到有信号输入数码管上的数累计加一,蜂鸣器报警一次。

累计加的99,数字自动清零。

或者按下K1(数

据清零)手动清0。

在单片机计数过程中如果按下K2(停止计数)将不再对输入信号进行处

理。

当再按下K3数码管重新开始计数。

图5.1主程序流程图

voidmain()

{

EA=1;

//EX1=0;

IT1=1;//设置外部中断方式while

(1)

{

show();

key_poce();

if(state==1)//控制计数状态{

EX1=1;

}else

{

}

5.2子程序设计

5.2.1LED显示程序设计

用PNP三极管驱动LED数码管动态显示电路,编程就是利用人视觉的暂留性,不断地轮流输出每个数码管位的数据,达到不闪烁的效果,编程上还是比较简单的。

其难点就在把2位一体共阴数码管分成两部分并且能够进行0~99的计数,这么做是为了能

cs1=0;

cs2=1;

P0=sis[shu/10%10];

delay(100);

P0=0xff;//消隐}

s=!

s;

//数据清零

该实验采用3个独立按键来控制整个系统,按键分别是K1、K2、K3。

按键主要功能,当

计数)将不再对输入信号进行处理。

当再按下

voidkey_poce()

{

if(key_1==0)

{

delay(666);//

if(key_1==0)

{

while(key_1==0)//show();

state=1;

}

}

if(key_2==0)

{

delay(666);

if(key_2==0)

{

while(key_2==0)

show();

state=0;

}

}

if(key_3==0)

{

delay(666);

{

while(key_3==0)

show();

shu=0;

}

}

}

6、总结

经过这段时间的学习,我对单片机原理与运用也有了更深层次的了解。

同时也对过去所学的知识进行了温习,对我设计的课题《单片机0~99计数器》所用到的知识也进行了专门的梳理和消化。

在学习中,我收获了很多。

我发现学习单片机不仅仅需要软件的知识,还需要硬件的知识。

在这个过程中,对于一些不懂的问题,老师也会耐心地给我们相应的指导。

通过这个项目实践,我真正学到了我以前所没有接触到的一些知识。

有的是书本上没有的,有的是书上不容易理解的⋯这样,既巩固了旧知识,又掌握了新知识。

通过这次自主创新我知道了单片机应用系统开发设计的步骤和方法,也知道如何使用Proteus7.6设计系统硬件电原理图以及KeiluV2进行单片机应用软件设计与调试。

通过自主创新期间所做的课题,我更加了解了单片机的知识,让自己的专业知识得以进一步提升,同时通过实际调试过程,考验了自己各方面的能力。

通过自主创新实践,我也知道了自己的不足。

书本上的知识是死的,只有通过实践和具体的实例运用,才能真正掌握知识、取得进步。

这次自主创新实践的经历也会使我终身受益,我感受到做任何事情都是要真正用心去做的,也是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫创新实践了。

希望这次的经历能让我在以后学习中激励我继续进步。

受益匪浅!

专心做自己的事,是一种乐趣;互相交流,是大家一起进步的必要过程;上网查阅资料,是获得所需信息的有效途径。

我想,这些练习和经验都将是我一种宝贵的财富!

感谢期间给与我无私帮助的人。

我会在以后的学习中更加努力,朝着自己的目标不断奋进。

7、参考文献

[1]

1998

李朝青.单片机原理及接口技术(简明修订版).杭州:

北京航空航天大学出版社,

[2]李广弟.单片机基础[M].北京:

北京航空航天大学出版社,1994

[3]阎石.数字电子技术基础(第三版).北京:

高等教育出版社,1989

[4]廖常初.现场总线概述[J].电工技术,1999

附录1:

完整电路图

 

附录2:

源程序

//红外线计数用外部中断

1对输入的光电信号计数三个按键分别控制计数

开始计数停止清零

//12MKz时间:

2015-12-26

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitcs1=P2^1;

//第一位数码管引脚

sbitcs2=P2^0;

//第二位数码管引脚

sbitalarm=P1^0;

//蜂鸣器引脚

sbitkey_1=P3^4;

sbitkey_2=P3^5;

sbitkey_3=P3^6;

sbitint1=P3^3;

//外部中断1接口

ucharcodesis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管的段码

ucharshu=00;

bits,state=0;

//计数状态控制

voiddelay(uintT){

while(T--);

}

voidshow()

//数码管显示程序

{

if(s==0)

//第一位数码管显示

{

cs1=0;

cs2=1;

P0=sis[shu%10];delay(100);

P0=0xff;

}else

{

cs2=0;

cs1=1;

P0=sis[shu/10%10];delay(100);

P0=0xff;

}

s=!

s;

}

voidkey_poce()

{

if(key_1==0)

{

delay(666);

if(key_1==0)

{

while(key_1==0)

show();

state=1;

}

}

//延时点亮

//消隐

//第二位数码管显示

//消隐

//按键处理程序

//开始计数

//停止计数

if(key_2==0)

//数据清零

//设置外部中断方式

if(key_2==0)

{

while(key_2==0)

show();

state=0;

}

}

if(key_3==0)

{

delay(666);

if(key_3==0)

{

while(key_3==0)

show();

shu=0;

}

}

}

voidmain()

{

EA=1;

//EX1=0;

IT1=1;

while

(1)

{

show();

key_poce();

if(state==1)

//控制计数状态

EX1=1;

}else

{

EX1=0;

}

}

}

inper()interrupt2

{

uchari;

shu++;

if(shu>99)

shu=0;

alarm=0;

for(i=0;i<150;i++)

show();

alarm=1;while(!

int1)show();delay(500);

}

//外部中断1

//计数

//蜂鸣器滴滴响

 

课程设计评语

课程设计成绩

指导教师

(签字)

年月日

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

当前位置:首页 > 经管营销

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

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