光电系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

光电系统设计

—实验报告

实验名称:红外遥控的跑马灯和计数器

姓名:谢雯

学院:行知学院

专业班级:光信息科学与技术111班

学号: 11626105

指导老师:钱惠国

时间:2014.7.05

红外遥控的跑马灯和计数器

——设计部分

摘要: 本设计是以红外技术为基础,可以实现无线遥控,摆脱了信息传递需要导线的性质,而且红外实现方式灵活,得到了广泛的应用。特别是随着芯片技术的发展,红外集成芯片价格的降低,更加扩展了红外的应用范围。本文简单地介绍了红外线遥控发射、接收系统的原理。通过编码发射红外线,然后由通用红外接收芯片实现对红外的接收,同时通过红外遥控控制了跑马灯与计数器的显示。本方案简洁可行。充分利用现有的资源,取得了比较好的效果。 关键词:红外遥控;红外解码;计数器;跑马灯

一、实验原理:

红外发射与接收系统的设计方案: 1 发射电路

信号发射电路如图2.11-2所示,在三极管PNP 的基极上加上数据编码的高

低电平信号可以使红外发光二极管发出调制信号。

图2.11-2 信号发射电路

红外LED

1.1 PNP 型三极管结构

三极管的基本结构是两个反向连结的pn 接面,如图1所示。三个接出来的

端点依序称为射极(emitter,E )、基极(base,B )和集极(collector,C ),名称来源和它们在三极管操作时的功能有关。图中也显示出pnp 三极管的电路符号,

射极特别被标出,箭号所指的极为n型半导体,和二极体的符号一致。在没接外加偏压时,两个pn接面都会形成耗尽区,将中性的p型区和n型区隔开。

图1

2 红外接收模块SM0038的结构和使用

接收模块SM0038的结构和常用使用电路如图2.11-3所示,其接收响应38KHz 的脉冲调制信号,当接收到38KHz的脉冲时输出低电平,否则输出高电平,如图2.11-4所示,其中(a)是接收信号,(b)是输出信号。

38KHz的调制脉冲可以由单片机的计数中断功能实现。

图2.11-3SM0038的结构与电路(a)

(b)

图2.11-4SM0038的接收与输出信号(c)

3 数据的编码与数据帧的建立

发送的数据需要转换成用“0”和“1”来表示的二进制码,最简单的是BCD

编码,如果采用8位BCD编码,“2”可以编码成00000010。其中“1”表示高电平,“0”表示低电平。若使用SM0038模块进行接收,还需要对高电平进行38KHz 的脉冲调制,最终数据“2”的调制发射信号如图2.11-4(c)所示。

为了提高系统的可靠性,通常使发射系统发送的不是单个数据,而是数据帧。本实验数据帧主要由引导码(同步码)、识别码(校验码)、数据码和结束码组成,其结构如图2.11-5所示。其中,引导码包含时长为9ms的高电平和4.5ms的低电平;识别码包含识别数和识别数的取反,设识别数为0x80(10000000)则识别码用二进制表示为1000000001111111;数据码包含数据本身和数据取反;结束码包含0.65ms的高电平和40ms的低电平。其中,识别码和数据码的二进制码采用脉宽调制,“0”用时长为0.65ms的高电平和1.6ms的低电平表示,“1”用时长为0.65ms的高电平和0.56ms的低电平表示。若使用SM0038接收,同样还需要对高电平进行38KHz的脉冲调制。

图2.11-5发送数据帧的结构示意图

4 发射与接收程序的流程图

系统中数据信号的发射与接收都需要由单片机控制完成,发射系统的单片机程序设计流程图如图2.11-6所示,接收系统的单片机程序设计流程图如图2.11-7所示。

图2.11-6发射流程图图2.11-7接收流程图

5 数据接收与解码

需要注意的是,SM0038的输出信号与发射端的信号是反向的,即发射端信号是高电平则SM0038输出低电平。数据接收过程中,先接收到引导码(其特征是一个9ms的低电平和一个4.5ms的高电平),这个引导码可以使程序知道后面开始接收数据。接收数据最关键的是如何识别“0”和“1”。从位的编码可以发现,接收信号中的“0”和“1”都是以0.65ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.6 ms,所以应该根据高电平的宽度辨别“0”和“1”。从0.65 ms的低电平后,对高电平进行计时,直至读到低电平为止,若计时超过0.56 ms为“1”,反之则为“0”。为可靠起见,计时的比较值一般比0.56 ms长些,但不能超过1.6 ms。因为每个数据用8位二进制码表示,所以需用循环和移位的方法读取完整的数据。

6 跑马灯程序设计内容

我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1所示:

7 计数器程序设置内容

七段数码管字型代码与输入的关系如下表:

三、实验原理图

发射原理图

接收原理图

PCB原理图四.程序编码

接收板:

跑马灯程序

Org 0000h

Mov A , 2000H

Add A ,#F0H

MOV 2001H ,A

MOV A ,2000H

ADD A , #0FH

MOV 2002H , A

MOV A , 2001H

ADD A , 2002H

END

org 0000h

loop0:cjne r0 ,#01h,rel,loop0 ;判断开关打开情况

ajmp start;跳转到程序开始

org 0030h;定义起始汇编地址

start: mov a,#0ffh ;

clr c ;

mov r2,#08h ;循环八次。

loop: rlc a ;带进位左移。

mov p0,a ;此时led灯开始有反映了。

call delay ;延时

djnz r2,loop ;循环(djnz条件判断)

mov r2,#07h ;

loop1: rrc a ;带进位右移

mov p0,a ;此时led灯开始有反映了

call delay ;

djnz r2,loop1 ;反复循环

jump start ;回到程序的开头

delay:movr3,#2

d1: mov r4,#20 d2: mov r5,#248 djnz r5,$ djnz r4,d2

ORG 0000H LJMP MAIN ORG 030H

MAIN: MOV P0,#0DBH 化为2进制为11011011--0状态时led灯亮ACALL DELay

MOV P0,#06DH 化为2进制为01101101 ACALL DELay

MOV P0,#0B6H 化为2进制为10110110 ACALL DELay AJMP MAIN delay: mov r7,#255 d1: mov r6,#255 d2: djnz r6,d2 djnz r7,d1 ret

End

七段数码管计数器显示程序

相关文档
最新文档