光电系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
七段数码管计数器显示程序