光通信课程设计_第1页
光通信课程设计_第2页
光通信课程设计_第3页
光通信课程设计_第4页
光通信课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、光通信技术课程设计一、系统功能描述此系统是一个通过红外通信进行简单信号传输的装置,分为发送和接收两部分。发送装置接有简易键盘,按下按键后,单片机采集信号处理后通过红外发送出去。接收装置收到信号后,进行解析,然后通过数码管显示出相应的码型。二、系统所用元器件及设备发送端:AT89C52×1、红外发射二极管×1、8050×1、按键开关×10、11.0592M晶振×1电容:10F×1、20pF×2电阻:1k×2、100×1接收端:74LS273×1、AT89C52×1、按键开关×1

2、、7段共阳极数码管×2、8550×2、11.0592M晶振×1、红外接收器SM0038×1电容:10F×2、20pF×2电阻:100×2、1k×1、4.7k×2设备:稳压电源5v 示波器三、系统实现功能原理发送端:输入方式采用3×3阵列(9按键)键盘,一共6根信号线,接入单片机P1口。每个按键在单片机P1口上对应唯一8位2进制值。当按下键盘上的不同按键时,通过编码器产生与之相应的特定的二进制脉冲码信号。将此二进制脉冲码信号先调制在38KHz的载波上,经过放大后,激发红外发光二极管转发成波长940

3、nm的红外线光传输出去。接收端:红外接收器采用一体化红外遥控接收器SM0038,红外线数字信号则经过红外接收器取出数字信号数据经单片机译码,最后送到显示电路。主要芯片AT89C51: 引脚图:功能介绍:AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4K BYTES的可反复擦写的只读程序存储器(PEROM)和128 BYTES的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。AT89C51是一个低功耗高性

4、能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和FLASH存储器结合在一起,特别是可反复擦写的FLASH存储器可有效地降低开发成本。管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,

5、此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位

6、。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.

7、4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。/ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的

8、输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

9、XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。四、系统原理图及说明见附1五、程序流程图发射端:NYNY键按下逐行扫描,按P口值查 键号按键号转至相应的发射程序装入发射脉冲个数到(R1)发3ms脉冲停发1ms(R1)-1=0?发1ms脉冲停发1ms开始发射初始化扫描键盘延时消抖结束 图5.1:发射主程序流程图 图5.2:发射程序流程图 图5:发射流程图接收端:NYNYNY初始化低电平脉宽>2ms?接收并对低电平脉冲计数高电平脉冲宽>3ms?按脉冲个数至对应功能程序中断返回中断开始开始是否有中断?调中断子程序按照按键数显示图6.1:接收主程

10、序流程图 图6.2:中断子程序流程图图6:接收流程图六、系统源程序见附2七、系统性能发射部分:接入电源后,3×3键盘对P1.7没有调制作用,P1.7输出波形为正弦波。接收部分:经38KHz光源信号,显示器不亮。P3.2管脚波形变化,说明接收到信号。八、改进方案发射部分:改变单片机程序,使P1.7管脚输出方波,通过摄像头观察红外发射二极管变化,发现二极管明暗变化,说明输出方波。接收部分:改变单片机程序,使得红外接收器接收到信号时共阳极数码管显示数字变化。设置数码管初始读数为77,接收到信号后变为11。延迟设置过大,不能进行循环,可通过复位键重置数码管显示数字77。九、结束语 在过去的1

11、4周里,我们以红外通信为基础,经过了理论课、方案设计、元件选择、焊接电路、成品测试过程,最终完成了简单的红外通信装置。还记得理论课开始时的茫然无措,完全不知道如何进行后续的工作,经过网上查找资料等,确定最终的设计方案时,又觉得一切尽在掌握。但在选择元件时才发现,我们对方案的原理、需要的器件等几乎一无所知,经过简单的了解后就开始了电路焊接,经过几周的电路焊接后,才隐隐觉得最终成品能否正常工作还是一个大问题。完成电路焊接后接着要下载程序到芯片,这时才发现程序是用汇编语言写的,难以理解,如果程序有错误修改起来会特别困难。还好在程序下载中没有遇到困难。但在最终的测试时,由于对汇编语言的不熟悉,发射端无

12、法正常工作的原因也很难找到,只能修改成简单的程序。而在接收端测试时,数码管不亮的错误原因也草率的定为程序错误,没有仔细检查电路,在破坏原始电路后发现芯片管脚没有与电路连接(电路板内置线路利用错误),只好放弃原电路,重新编写程序测试电路。经过14周的努力最终完成了红外通信装置,但成品与预期差距巨大。这暴露了我学习过程中的许多问题,例如初期确定方案时草率,没有考虑后续的电路工作、程序修改的问题;学习中不积极思考、遇到问题消极对待,不从自身找问题,电路错误时第一时间归为程序原因,而没有仔细检查电路。同时,在实际的设计电路、完成成品的过程中,我们也学到了许多课本上学不到的知识,让我们明白理论与实际的差

13、距,学会了程序的编译下载、熟悉了电路焊接、巩固了模电知识、对单片机有了切实的认识。总之,这一次的课程设计让我们学到了很多东西,也暴露了我们自身存在的问题,这对以后的学习、生活有巨大的裨益。非常感谢周老师能为我们提供这样的机会。附1:原始原理图:Send:Receive:附2:初始程序代码:发射程序;主程序和中断程序入口ORG 0000H AJMP STARTORG 0003H RETIORG 000BH RETI ORG 0013H RETI ORG 001BH ;定时器T1中断入口地址 LJMP INTT1 ;初始化程序 CLEARMEMIO: CLR A DEC A MOV P0,A MO

14、V P1,A MOV P2,A MOV P3,A CLR P1.7 MOV IE,#00H ;关所有中断 MOV TMOD,#20H ;方式2 MOV TH1,#0F5H ;定时初值 MOV TL1,#0F5H SETB EA RET;主程序START: LCALL CLEARMEMIO MAIN: LCALL KEYWORK LJMP MAIN ;中断服务程序INTT1: CPL P1.7 ;38.5KHZ红外遥控信号 RETI KEYWORK: MOV P1,#0FFH ;置P1口为输入状态 CLR P1.7 CLR P1.6 CLR P1.0 ;扫描第1行 MOV A,P1 ANL A,

15、#38H CJNE A,#38H,KEYCON SETB P1.0 ; 扫描第2行 CLR P1.1 MOV A,P1 ANL A,#38H CJNE A,#38H,KEYCON SETB P1.1 ;扫描第3行 CLR P1.2 MOV A,P1 ANL A,#38H CJNE A,#38H,KEYCON SETB P1.2 ;结束扫描 RET KEYCON: LCALL DELAY ;延时去抖动 MOV A,P1 ;读入P1口值 ANL A,#38H CJNE A,#38H,KEYCHE ;确有键按下KEYOUT: RETKEYCHE: MOV A,P1 MOV B,A LOOP: MOV

16、 A,P1 ANL A,#38H ;低3位为0 CJNE A,#38H,LOOP ;列选全为1(键按着) MOV R7,#00H ;放键,查表次数为0 MOV DPTR,#KEYTABCHELOOP: MOV A,R7 MOVC A,A+DPTR XRL A,B ;查表值与P1口值比较 JZ KEYOK INC R7 CJNE R7,#09H,CHELOOP RETKEYOK: MOV A,R7 MOV B,A RL A ADD A,B MOV DPTR,#KEYFUNTAB ;散转功能程序首址 JMP A+DPTR ;散转至对应功能程序标号KEYFUNTAB: LJMP KEYFUN00 ;

17、跳到键号对应功能程序标号 LJMP KEYFUN01 LJMP KEYFUN02 LJMP KEYFUN03 LJMP KEYFUN04 LJMP KEYFUN05 LJMP KEYFUN06 LJMP KEYFUN07 LJMP KEYFUN08 RETKEYTAB: DB 36H,35H,33H,2EH,2DH,2BH,1EH,1DH,1BH,0FFHKEYFUN00: MOV A,#02H ;发送2个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN01: MOV A,#03H ;发送3个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN02: MOV A

18、,#04H ;发送4个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN03: MOV A,#05H ;发送5个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN04: MOV A,#06H ;发送6个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN05: MOV A,#07H ;发送7个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN06: MOV A,#08H ;发送8个脉冲 LCALL REMOTE ;转发送程序 RET KEYFUN07: MOV A,#09H ;发送9个脉冲 LCALL REMOTE ;转发送程序 R

19、ET KEYFUN08: MOV A,#0AH ;发送10个脉冲 LCALL REMOTE ;转发送程序 RET ;编码发射程序REMOTE: MOV R1,A ;装入发射脉冲个数 LJMP OUT3 OUT: MOV R0,#75H ;1MS宽低电平发射数据 OUT1: SETB ET1 ;开T1中断 SETB TR1 ;开定时器T1 NOP NOP NOP NOP DJNZ R0,OUT1 MOV R0,#32H ;1MS宽高电平间隙控制数据 OUT2: CLR TR1 ;关定时器T1 CLR ET1 ;关中断 CLR P1.7 ;关脉冲输出 NOP NOP NOP NOP NOP NOP

20、 NOP NOP NOP NOP NOP NOP NOP DJNZ R0,OUT2 ;时间不到,转OUT2再循环 DJNZ R1,OUT ;脉冲未发完,转OUT再循环发射 LCALL DL500MS RET OUT3: MOV R0,#0FFH ;装发射3MS宽控制数据 LJMP OUT1DELAY: MOV R2,#0FFHDELAY1: DJNZ R2,DELAY1 RET ;10MS延时 DL10MS: MOV R3,#14HDL10MS1: LCALL DELAY DJNZ R3,DL10MS1 RET;500MS延时程序 DL500MS: MOV R4,#32H DL500MS1:

21、LCALL DL10MS DJNZ R4,DL500MS1 RET END接收程序;主程序和中断程序入口ORG 0000H AJMP STARTORG 0003H ;外部中断0中断入口 LJMP INTEX0ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI ;初始化程序 CLEAR: CLR A DEC A MOV P0,A MOV P1,A MOV P2,A MOV P3,ACLEARMEM: MOV IE,#00H ;关所有中断 SETB EX0 ;开外中断 SETB EA ;总中断允许 R

22、ET START: LCALL CLEAR SJMP $;遥控接收程序(采用中断接收) INTEX0: CLR EX0 ;关外中断 JNB P3.2,READ1 READOUT: SETB EX0 ;允许外部中断0中断 RETI READ1: CLR A MOV DPH,A ;DPTR清零 MOV DPL,A HARD1: JB P3.2,HARD11 ;P3.2变高电平转HARD11 INC DPTR ;低电平记数 NOP ;1US延时 NOP AJMP HARD1 HARD11: MOV A,DPH ;DPTR高8位放入A JZ READOUT ;为0则脉宽小于(255*8US)2MS退出

23、 CLR A ;否则第一个为宽脉冲(计数器先清0) CLR P3.6 READ11: INC A READ12: JNB P3.2,READ12 ;低电平时等待 MOV R1,#06H READ13: JNB P3.2,READ11 LCALL DELAY ;延时512US DJNZ R1,READ13 ;6次延时 DEC A ;超过3MS判为结束,减1 DEC A JZ FUN0 ;为0执行FUN0(2个脉冲) DEC A JZ FUN1 ;为0执行FUN1(3个脉冲) DEC A JZ FUN2 ;为0执行FUN2(4个脉冲) DEC A JZ FUN3 ;为0执行FUN3(5个脉冲) D

24、EC A JZ FUN4 ;为0执行FUN4(6个脉冲) DEC A JZ FUN5 ;为0执行FUN5(7个脉冲) DEC A JZ FUN6 ;为0执行FUN6(8个脉冲) DEC A JZ FUN7 ;为0执行FUN7(9个脉冲) DEC A JZ FUN8 ;为0执行FUN8(10个脉冲) NOP NOP LJMP READOUT ;出错退出 FUN0: MOV R0,#00H LJMP DISPLAY FUN1: MOV R0,#01H LJMP DISPLAY FUN2: MOV R0,#02H LJMP DISPLAY FUN3: MOV R0,#03H LJMP DISPLAY FU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论