基于激光通信技术语音传送装置本科毕业设计_第1页
基于激光通信技术语音传送装置本科毕业设计_第2页
基于激光通信技术语音传送装置本科毕业设计_第3页
基于激光通信技术语音传送装置本科毕业设计_第4页
基于激光通信技术语音传送装置本科毕业设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、编号编号 本科生毕业设计 基于激光通信技术的语音传送装置 laser-based transmission of voice communication technology devices 20082008 年年 月月 摘摘 要要 激光通信是以激光光波为载波, 并用脉冲数字编码来调制这一载波的通信 方法激光具有扩散小、相干性和方向性好、光束功率密度大等优点, 因而适合 于保密通信和航天通信与无线电微波通信相比, 激光通信由于其通信容量大, 发射天线体积小,抗射频, 抗电磁脉冲干扰以及反窃听性能好, 特别是抗核破 坏能力强等优点而倍受军事和航天领域的青睐。 本文介绍了大气激光通信的原理,以及激

2、光通信系统的组成等。简要的介 绍了单片机 atmega32 的结构特点和其引脚配置,简单说明它对音频设置的实现。 从而设计一款基于激光通信系统的语音传送装置。该论文介绍了系统的总体设 计,并着重说明该设计的硬件、软件的设计,然后简单描述了调试,分析的结 果以及设计中的不足之处。 关键词:关键词:激光通信激光通信 atmega32atmega32 uartuart abstract laser communication is based on laser light for the carrier, and digital pulse code modulation of the carrie

3、r to the communication method of the laser with the proliferation of small, coherent and directional, and the beam power density, etc., thus suitable for secure communications and space communications and radio compared to microwave communications, laser communications as a result of its communicati

4、ons capacity to launch anti-small rf antenna, anti- electromagnetic pulse interference, as well as good anti-wiretapping, anti-nuclear damage in particular the advantages of strong and popular military and space of all ages. this paper introduces the principle of atmospheric laser communications, as

5、 well as laser communication system。brief introduction of the structural characteristics of single-chip atmega32 and its pin configuration, a brief description of the achievement of its audio settings so as to design a laser-based communications system of voice transmission device. this paper introd

6、uces the system design, and highlights the design of hardware, software design, and then a brief description of the debugging, analysis, and design deficiencies. keywords:keywords: laserlaser communicationcommunication atmega32atmega32 uartuart 目目 录录 第一章第一章 绪论绪论.- - 1 1 - - 1.1 激光通信简介 .- 1 - 1.2 国内外

7、发展现况 .- 2 - 第二章第二章 课题设计原理课题设计原理.- - 3 3 - - 2.1 大气激光通信系统 .- 3 - 2.1.1 激光器.- 3 - 2.1.2 光的调制.- 4 - 2.1.4 光接收系统.- 5 - 2.2 atmega32 简介.- 6 - 2.2.1 引脚说明.- 6 - 2.2.2 特点及功能.- 7 - 第三章第三章 硬件电路电路设计硬件电路电路设计.- - 8 8 - - 3.1 总体方案设计 .- 8 - 3.2 硬件电路设计 .- 9 - 第四章第四章 软件设计软件设计.- - 1313 - - 4.1 半双工软件 uart .- 13 - 4.2

8、发送子程序 .- 14 - 4.3 接收子程序 .- 17 - 4.4 程序设计 .- 19 - 4.4.1 测试程序.- 19 - 4.4.2 音频发送程序.- 19 - 4.4.3 语音接收程序.- 20 - 4.5 音频设置 .- 20 - 结结 论论.- - 2121 - - 参考文献参考文献.- - 2222 - - 致致 谢谢.- - 2323 - - 第一章第一章 绪论绪论 信息高速公路的发展需要建立传输速率快、信息量大、覆盖空间光的通信 网路系统。随着国家信息基础设施 nni 和全球信息基础设施 gii 的提出,对通 信的要求越来越高,而目前卫星通信所采用的微波通信技术将受到体

9、积、重量、 功耗等方面的严格限制不能无限制地提高传输速率与容量。在卫星通信日益拥 挤的今天,采用光频波段通信有极大的潜力,是实现高速大容量通信的最佳方 案,这已经取得了通信领域许多专家的共识。 1.1 激光通信简介激光通信简介 所谓激光通信, 是以激光光波为载波, 并用脉冲数字编码来调制这一载波的 通信方法激光具有扩散小、相干性和方向性好、光束功率密度大等优点, 因而 适合于保密通信和航天通信与无线电微波通信相比, 激光通信由于其通信容量 大, 发射天线体积小,抗射频, 抗电磁脉冲干扰以及反窃听性能好, 特别是抗核 破坏能力强等优点而倍受军事和航天领域的青睐。 激光通信技术将激光与电子很好地结

10、合在一起,与以往的通信技术相比, 具有四个显著的特点。 (1) 通信容量大。通信容量的大小,通常指一对电线(或电缆)上能通 多少路电话,激光可用的频率范围为 1107-1109 兆赫,比微波频率高 10 万 -100 万倍,一束激光可容纳 100 亿路电话。如果全球人口按 60 亿计算,则全世 界的人同时利用一束激光通信还绰绰有余。 (2)通信质量高。且 f 指抗干扰性强,信噪比高,失真度小。激光通信能 有效地满足这些要求:通电话声音清晰;传输数据准确无误;传递图像色彩逼 真。 (3)保密性好。由于激光几乎是一束平行而准直的细线,在空间传播时它 的发散角很小,加之用以传输信息的激光大多是不可见

11、的红外光,所以想截获 激光非常困难。 (4) 原料足,价格低。制造光纤的原料是地球上取之不尽的石英,只要 几克石英就能制出一公里长的光纤。因而用光纤代替普通金属导线可以节约大 量宝贵的有色金属铜和铝。由于光导纤维的传输损耗低,因此中继站距离长。 一般同轴电缆每隔 3 千米就要设一个中继站,距离可超出 30 千米,这就意味着 采用光纤通信的投资可以大大降低。 1.2 国内外发展现况国内外发展现况 激光问世后,将激光应用于通信的想法就随之产生了。在国际上,美国、 英国,日本、前苏联等国家,广泛开展了对激光大气通信的深入研究。 早在二十世纪 70 年代,人们就开始了激光大气通信技术的研究,但由于当

12、时光纤通信较为成功,激光自由空间的通信未能得到充分重视。近几年来,由 于移动通信的需要和微波通信的带宽限制,光自由空间的通信取得了很大的进 展。美国朗讯公司采用 1.55m 波段的半导体激光器加光纤放大器(edfa)作 为发射光源,并采用波分复用结构,实现 10gbps 容量的空间光通信。本、欧洲 等国家也报道了几种空间激光通信装置。我国电子科技大学采用二氧化碳激光 器(10.6m 波长,内腔式) ,实现定点双工四线制三路电话的大气通信(技术 成果编号 88210414) ;中山大学激光与光谱学研究所采用音频或数字信号的调 幅激光制式工作实现大气通信传输(技术成果编号 89209283) 。但

13、它们都因通 信容量低,在通信系统的结构上,没有与其他通信设备(包括光纤通信、微波 通信)的接口,故实用价值小。为解决上述问题,中国科学院上海光学精密机 械研究所报导了一种无线激光通信端机实现了与其它通信设施的接口(技术成 果编号 00217069.8) ,但由于该端机设备昂,未能得到广泛应用。 本课题便是以一种能实现语音通信的大气激光通信系统为例,目的在于提 供一种价格便宜、携带方便、同机具有激光信号发射和接收装置。该设备发射 装置发出调制激光信号可在自由空间传输。 第二章第二章 课题设计原理课题设计原理 2.1 大气激光通信系统大气激光通信系统 调 制 器 激 光 器 发 射 天 线 接 收

14、 天 线 光 电 转 换 解 调 器 发 端 控 制 系 统 信 息 输 入信 息 输 出 收 端 控 制 系 统 图 21 大气通信系统框图 大气激光通信是以大气作为激光光束传播介质的激光通信, 可传送电话、 数据、传真、电视和可视电话等由于 co2 激光器发射的 10.6 微米激光大气传输 性能好, 因此目前的大气激光通信系统多采用 co2 激光器,大气激光通信原理 框图如图所示。 放大后的输人信号经调制器调制, 输出一系列调制脉冲这些脉冲进人激励 器并激活激光器, 使激光器喷射出一束束载有信息的激光。这些光束由发射天 线定向发射出去。接收端收到的光信号经多层滤光器滤出杂散光, 然后进人光

15、 电倍增管, 转换成电信号将这些电信号解调放大, 送人信息输出装置, 从而完 成通讯。 2.1.1 激光器激光器 激光器是光通信的关键部件,目前使用的光源有:co2 激光器、he-ne 激光 器、nd : yag 激光器、准分子激光器、半导体激光器,其中 caas 半导体激光器 应用最多,它结构简单、抗震动、体积小、寿命长。 2.1.2 光的调制光的调制 调制就是把信号叠加到载波上。调制器是一种电光转换器,它使输出光束的 某个参数(强度、频率、相位、偏振等) 随电信号变化,完成光的调制过程。调 制方式有内调制和外调制两种。把被信息信号调制了的电信号直接加到光源(或 电源) 上,使光源发出随信息

16、信号变化的光信号称为内调制。把调制元件(如光 电晶体等) 放到光源之外,使被信息信号调制了的电信号加到调制晶体上,当光 束通过晶体后,其光束中的某个参数(强度、相位、频率、偏振等) 随电信号变 化而变化,从而成为载有信息的光信号称为外调制。无论是外调制还是内调制, 每一种调制方法都有各种不同的调制形式。下面介绍调制中激光二极管通信中 的几种脉冲调制形式,如图所示。 (1) 脉冲调幅:使激光脉冲的幅度(强弱) 按照信号的变化规律来变,如图 2b 所示。 (2) 脉冲调宽:使激光脉冲的宽度随信号的强弱变化而变化,信号越强,脉 冲的宽度越大,如图所示。 (3) 脉冲调频:激光脉冲随信号的强弱而改变其

17、疏密程度,如图所示,信号 越强,激光脉冲就越密。这种调制方式对于激光二极管来说较易实现,通信质量 较好,受干扰影响小,接收后进行解调也很方便,采用普通的积分电路即可完成。 此外直接调制还有编码调制等。在外调制中,有振幅调制、频率调制、脉码调制、 偏振调制等。 (b)脉脉冲冲调调幅幅 (a)音音频频波波 (c)脉脉冲冲调调宽宽 (d)脉脉冲冲调调频频 图 22 几种脉冲调制的形式 2.1.4 光接收系统光接收系统 光接收是把从远处传来的已被调制的光信号通过光学接收透镜汇聚,滤波器 滤波,光电探测器进行光电转换的过程。接收方式有直接检测接收和外差检测接 收。直接检测接收是利用光学系统和光电探测器把

18、光信号直接转换成电信号的 过程,它是一种简单而实用的接收方式,如砷化镓激光通讯就是直接检测接收,缺 点是灵敏度低、信噪比小。 外差检测接收的原理与无线电波的外差检测接收相似。光学系统接收到频 率为 f c 的光信号,经滤波器和有选择反射镜到光混频器的光敏面上;同时本 振激光器所产生的频率为 f 0 的激光通过反射镜也反射到混频器的光敏面上。 混频器就是一个光电检测器,它对两束叠加的光波起检测和混频作用。输出差 频 fm = f 0 - f c 中频信号。经中心频率为 fm 的带通滤波器还原成电信号。这 种接收方式灵敏度高,信噪比大,但设备复杂,技术难度大。 光电检测器(或光电探测器) 也是激光

19、通信的核心部件,用于光信号接收转 换。目前常用的光电探测器有:光电子发射型光电倍增管;光生伏特型 pin 光 电二极管和雪崩光电二极管(apd) ;光电导型碲镉汞检测器等。它们可用于半 导体激光通信、nd : yag 激光通信和 co2 激光通信等系统。 2.2 atmega32 简介简介 设置音频传输需要使用两个 mega32 芯片。atmega32 是基于增强的 avr risc 结构的低功耗 8 位 cmos 微控制器。由于其先进的指令集以及单时钟周期 指令执行时间,atmega32 的数据吞吐率高达 1 mips/mhz,从而可以缓减系统 在功耗和处理速度之间的矛盾。 2.2.1 引脚

20、说明引脚说明 vcc : 数字电路的电源 gnd : 地 端口 a(pa7.pa0) :端口 a 为 a/d 转换器的模拟输入端。端口 a 为 8 位双 向 i/o 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性, 可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部 电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 a 于高 阻状态。 端口 b(pb7.pb0) :端口 b 为 8 位双向 i/o 口,具有可编程的内部上拉 电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为 输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电

21、流。在复 位过程中,即使系统时钟还未起振,端口 b 处于高阻状态。 端口 b 也可以用做其他不同的特殊功能。 端口 c(pc7.pc0): 端口 c 为 8 位双向 i/o 口,具有可编程的内部上拉 电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入 使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过 程中,即使系统时钟还未起振,端口 c 处于高阻状态。如果 jtag 接口使能, 即使复位出现引脚 pc5(tdi)、 pc3(tms)与 pc2(tck)的上拉电阻被激活。除去 移出数据的 tap 态外, td0 引脚为高阻态。端口 c 也可以用做其他不同的特

22、 殊功能。 端口 d(pd7.pd0) :端口 d 为 8 位双向 i/o 口,具有可编程的内部上拉 电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入 使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位 过程中,即使系统时钟还未起振,端口 d 处于高阻状态。端口 d 也可以用做其 他不同的特殊功能。 reset :复位输入引脚。持续时间超过最小门限时间的低电平将引起系统 复位。门限时间见 p35table 15 。持续时间小于门限间的脉冲不能保证可靠复 位。 xtal1 :反向振荡放大器与片内时钟操作电路的输入端。 xtal2 :反向振荡放大器的输出端。

23、avcc : avcc 是端口 a 与 a/d 转换器的电源。不使用 adc 时,该引脚应 直接与 vcc 连接。使用 adc 时应通过一个低通滤波器与 vcc 连接。 aref : a/d 的模拟基准输入引脚。 2.2.2 特点及功能特点及功能 avr 内核具有丰富的指令集和 32 个通用工作寄存器。所有的寄存器都直 接与算逻单元(alu) 相连接,使得一条指令可以在一个时钟周期内同时访问两 个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的 cisc 微 控制器最高至 10 倍的数据吞吐率。 atmega32 有如下特点:32k 字节的系统内可编程 flash(具有同时读写的能

24、力,即 rww),1024 字节 eeprom, 2k 字节 sram,32 个通用 i/o 口线,32 个 通用工作寄存器,用于边界扫描的 jtag 接口,支持片内调试与编程,三个具 有比较模式的灵活的定时器/ 计数器(t/c), 片内/ 外中断,可编程串行 usart,面向字节的两线串行接口, 8 路 10 位具有可选差分输入级可编程增 益(tqfp 封装) 的 adc ,具有片内振荡器的可编程看门狗定时器,一个 spi 串 行端口,以及六个可以通过软件进行选择的省电模式。 工作于空闲模式时 cpu 停止工作,而 usart、两线接口、a/d 转换器、sram、t/c、spi 端口以及中断

25、 系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复 位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个 时间基准,而其余功能模块处于休眠状态; adc 噪声抑制模式时终止 cpu 和 除了异步定时器与 adc 以外所有 i/o 模块的工作,以降低 adc 转换时的开关 噪声; standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状 态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展 standby 模式 下则允许振荡器和异步定时器继续工作。 第三章第三章 硬件电路电路设计硬件电路电路设计 3.1 总体方案设计总体方案设计 麦 克 风

26、连接 ad uart atmega32 端 口 uart atmega32 dac 扬 声 器 连接连接 激激光光发发射射器器 激激光光接接收收 图31 总体方案设计图 如上图 4.1(a)所示,该系统可以发送 27.7kbps 波特率的任意数据。如 上所述,该系统设置为传送语音数据。麦克风的输入是有一定条件的,即放大 和偏置 ,这样以便充分利用 8 位范围内的模拟数字转换器。为了尽量减少出现 间歇振荡,并且还要最大限度地保证音质,因此要花费大部分的时间为麦克风 的输入优化放大器。 模拟信号一旦通过 adc 得到数字信号,微控制器便把信号传递给uart。根 据串行协议,在异步传输引脚上设置一个

27、高低。具备这些条件的信号就能确保 恒定电流给激光。 在接收端,用光敏三激管来读取信号,然后即将被关闭的信号经过了晶体 管的比较,产生了适当的高,低信号。这些信号是通过异步读取的,并根据串 行协议产生一个字节,这字节在端口通过数模转换器发送,最后应用于扬声器。 3.2 硬件电路设硬件电路设计计 123456 a b c d 654321 d c b a title numberrevisionsize b date:8-jun-2009 sheet of file:d:program filesprotel 99se三三三examplesbackup of tongtong41.ddbdrawn

28、 by: 3 2 1 84 a lf353 麦克风 图 32 麦克风放大器 第一步是将传输的声音进行数字化声波 。为此,我们选择使用驻极体传声 器。从麦克风输出来的信号直接由模拟数字转换器来阅读太低,所以需要有一 个放大器。在放大器处理信号之前,首先要通过电容删除直流,然后通过一个 分压器适当的偏置信号。lf353 运算放大器用来提高信号,电阻调整其增益。 麦克风的增益约为 50-100。 123456 a b c d 654321 d c b a title numberrevisionsize b date:8-jun-2009 sheet of file:d:program filesp

29、rotel 99se三三三examplesbackup of tongtong2.ddbdrawn by: 三三三三三 图 33 激光驱动器 由 a / d 转换器将麦克风输出的信号转换成 8 位,单片机产生相应的位去 传送(包括启动和停止位) ,并将其应用于 5v 和 0v 信号的激光驱动电路。该 晶体三极管在这个电路为 5v ,并根据二极管和电阻值提供适当的电流。 123456 a b c d 654321 d c b a title numberrevisionsize b date:8-jun-2009 sheet of file:d:program filesprotel 99se三

30、三三examplesbackup of tongtong3.ddbdrawn by: 三三三三三 3 2 1 411 a lm 339 图 34 接收器 光电二极管在不同的(遥远的)的位置检测激光脉冲。信号通过比较器得 到确定的 5v 和 0v 电压值,然后被接给单片机上的接收引脚。 123456 a b c d 654321 d c b a title numberrevisionsize b date:8-jun-2009 sheet of file:d:program filesprotel 99se三三三examplesbackup of tongtong4.ddbdrawn by:

31、3 2 1 84 a lm c 711 图 35 激光驱动器 一旦信号通过数模转换器(未显示,它是一个简单的过程) ,便被升高电 压然后再由低通滤波器滤波(以优化音质) 。 第四章第四章 软件设计软件设计 4.1 半双工软件半双工软件 uart 为了接收和发送文字和音频数据,我们决定实施一个效仿硬件 uart 的的工 作方式的软件议定书。这意味着我们将发送的信息以数字形式通过串行数据链 路。激光将基本上构成了“电线”连接在两个 uart 软件的接口。我们可以很容 易地为我们的软件 uart 引脚保留接收和发送两个端口(最后文本中的代码引脚 d.0 和 d.1 分别为接收和发射)。这些工作都由接

32、收子程序和传送子程序执行 并且实现的。这些子程序的发展说明如下。 通用非同步收发传输器( uart)运行的前提是可以通过单线连接传送一个 8 位的(有时 9 位)数据电文,并且在来源和目的地之间没有时间同步。因为 8bit 信息是串联传送,所以由此产生的单线连接称为串行数据链路。uart 的异 步部分(这是在我们的软件里最吸引我们仿效 uart 的地方)是通过发送已知的 位来表示数据电文的开头和结尾。这些位在 uart 协议里分别被称为启动位和停 止位它们分别是 0 和 1。当 uart 没有传送一个保持逻辑高( 1 )的数据,则 一个逻辑低( 0 )便开始传输,接收端便知道该邮件被转发,并开

33、始“关注” 。8bits 开始位的后面是讯息的内容。8bits 始终跟着逻辑高( 1 )停止位。 (我们的目的是忽略更加复杂的 1 个奇偶校验位的实现) 。在 uart 的硬件实 施 中大多数 atmel 公司的 uart 芯片的样品能在信息位中间 3 次收到比特值, 并根据“多数决定原则”确定比特值。相比之下,我们的软件 uart 样品只有一 次在中间收到 bits,以确定其比特值。 此外,另一个关键的区别是我们的软件 uart 和大多数硬件 uart 是一个半 双工的 uart 。这就是说,在任何特定时间它只能传送或接收,而不是在同一 时间发送和接收(全双工) 。全双工的 uart 软件将

34、更为复杂,我们没有应用 的必要。 由uart通过串行数据链路传送的比特的速率称为波特率. 此外,数据传输 率 300baud 与 300 bps 相似 。这种数据传输速率是非常重要的,其原因有两 个:它决定了通话时 uart 的传送必须保持比特值的时间,并决定 uart 的接收 必须等待采样比特之间的时间。这两个时间实际上是相同的,并且也是我们的 uart 软件实施软件延迟调用的时间。 要计算的时间长度,我们需要拖延到最后,我们必须知道进入每个发送和 接收的子程序后要实施必要的措施以改变位值并且确定是否收到位值共约 1s,所以我们必须从我们的最终结果减去这一数额。 我们首先必须计算时间长一点的

35、理想波特率: 1 1000000/ (4.1) 在 s 时期: = 1 = 1 / (4.2) 然后,我们这一轮的结果减去 1s。 最后的 delay: = ( 1 1000000) 1 (4.3) 注:delay:最终延迟; baud:波特率; 在最后的代码中这个拖延是表示为“ buadnum ”。我们还需要接收器的“ halfbuadnum ”(buadnum / 2 的结果可作为一个经验法则,除非 buadnum 是 奇数) 。无论什么时候与这些计算有关的误差只持续 8 位,因为信息只有 8 位 长。这样的错误将在下一个传送开始的时候被“重设”,因此我们发现,该软 件 uart 不能对错

36、误敏感到微秒(特别是在较低 bauds ) 。 应当指出的是,我们为 avr 8-bit risc 微控制器系列用于创建我们的软件 uart 的许多概念是来自半双工的小型软件 uart 的 atmel 应用说明。提供的代 码与此应用程序的书面说明完全是汇编语言,.所以我们又提出一个任务是执行 一个 c 版模仿其运作。 4.2 发送子程序发送子程序 为了在串行数据链路上传输一个字节, ( 8 位)我们制定了一个发送子程 序。这个子程序将 8bits 赋给字符变量 txbyte,然后在 lsb 开始的时候在每次 转移一个位到串行数据链路上的。数据字节等待着被发送置于 txbyte,并且然 后为了发

37、送这个数据必须调用 put 函数。要重要注意的是,要用一个指令把 txbyte 的内容破坏。 我们认为当我们向右移位(是 0 )看起来就像 1 值的停止位时,为了把位 值转移到 txbyte,最好的办法就是在 put 子程序开始的时候就颠倒 txbyte,也 就是将所有的 0 变 1,1 变 0,这就在子程序结束时消除了一些逻辑作作停止位。 我们也设一个变量名为 carry 的变量,它基本记录着从 txbyte 转移出的最后一 位,并且这个变量代表目前正在发送的位值。最后,我们有一个名为 bitcnt 的 变量,它记录目前我们正在发送的比特数。在该子程序开始的时候,我们把它 设置为 9 +sb

38、,每次发送一位递减(sb 是数量停止位,代码的最后版本中用 sb 作为 1) 。 我们首先要做的三件事是设置 bitcnt ,颠倒 txbyte ,并设置 carry 为 1 (开始位应为 0 ) 。然后我们进入一个 while 循环,当 bitcnt 达到 0 时该循 环终止。我们一进入循环就发送当前位,这是采用通过设定 carry 的相反值给 传输引脚( portd.1 ) ,然后,我们要保持这个引脚的值适量的时间(取决于 需要多少波特率) ,所以我们时延 baudnum s 。然后,我们设置 carry 值 作为 txbyte 的 lsb 的值,我们再向右移 txbyte 值 1 位然后

39、我们递减 bitcnt 因为我们已经发送了 1bit,在此循环重复,直至 bitcnt 达到 0,停止位已发送。 应注意,在循环中进行的任何逻辑,分支,转移,或其他计算所花费的时都作 为延滞(减去 1s) 。 这个子程序的流程图可以看到如下: 开始 bitcnt=9+sb 颠倒txbyte carry=1 carry=? portd.0portd.1 延迟到us (baudnum) carry=txbyte的lsb txbyte右移一位 bitcnt递减 bitcnt=0? 返回 yes 0 1 no 图 41 put 子程序流程图 4.3 接收子程序接收子程序 为了从串行数据链路接收数据字节

40、,我们制定了一个子程序称为接收子程 序。这个子程序等待启动位,然后当其中一个被检测,便从串行数据链路上每 次收到一个 bits,并且在 lsb 开始的时候把它们转移到字符变量 rxbyte 中。 当收到所有的 8 位信息后,rxbyte 的内容代表着全部的收到的字节。要重要注 意的是之后让收到的下一个字节覆盖 rxbyte 的内容。 时间在接收子程序中是非常重要的,因为我们必须在适当的时候轮询接收 引脚( pind.0 )以收到正确的比特值。为此,我们必须计算出两种不同的延 迟值:一个是全位拖延时间被命名为 buadnum,另一个是半位拖延时间被命名 为 halfbuadnum 。 在该程序里

41、我们做第一件事是设置 bitcnt 至 8 +sb。我们在这用 8 而不是 9 的原因是当我们开始递减 bitcnt 时我们就已经越过启动位,然后,我们进入 一个 while 循环,它不断轮询接收引脚( pind.0 )零位调整 (即开始位) 。 因此,子程序只能执行一次已被检测的启动位(因此程序必须要在收到开始位 前被设定)开始位被检测,我们然后用指令 delay_us ( halfbaudnum )延迟 半位到启动位的中间,此时,我们进入一个 while 循环直到 bitcnt 达到 1。在 进入这一循环,我们用指令 delay_us ( buadnum )延迟整个位到第一个位的 中间(每

42、个连续位反复循环)。.延迟之后我们将 rxbyt 右移 1 位。然后我们根 据我们接受引脚 pind.0 的接受设置 rxbyte 的 msb(是否 0 收到 0,是否 1 收 到 1)。然后,我们递减 bitcnt ,因为我们已经收到 1 位。当 bitcnt 到 1 时 while 循环终止(发送子程序时是 0)因为我们不希望转入 rxbyte 的停止位不 是部分数据,但是我们仍然必须在 while 循环越过停止位后延迟 1 位, 正如像 在 put 里要求逻辑,分支和转移的时间,在 get 里他们也被作为延时. 这个子程序的流程图可以看到如下: 开始 bitcnt=sb+8 portd.

43、0=0 txbyte的最高有效位 为零 延迟到us (halfbaudnum) txbyte右移一位 bitcnt递减 bitcnt=1? 返回 yes 延迟到us (baudnum) portd.0=? txbyte的最高有效位 为1 延迟到us (baudnum) yes no yes yes no 图 42 get 子程序流程图 4.4 程序设计程序设计 为了测试我们的软件 uart 和我们的硬件安装程序,我们写 3 个程序,一个 是用来测试从发送端发送和接收文本数据的系统能力。这个程序被称为测试程 序,它包括发送子程序和接收子程序。另外两个程序,用来测试我们发送和接 收音频系统的能力,

44、。该程序传输音频被称为音频发送程序,它包括发送子程 序。收到音频的程序被称为语音接收程序,它包括接受子程序。简要说明该程 序。 4.4.1 测试程序测试程序 正如所说的该程序采用了发送和接收子程序,其方法很简单的。首先我们 正确的设置 portd 引脚的数据流向。我们简要说明了 1 停止位的使用,然后, 我们发送 ascii 0 x12 以清除 hyperterm 窗口。最后,我们进入一个执行接收子 程序的无限循环,然后将收到的字节 rxbyte 传输给传输字节 txbyte ,然后执 行一个发送子程序。 实质上无论什么回声都是被软件 uart 收到的。我们的测 试程序是用此程序安装 2 个

45、atmega32。我们将一个 mega32 的软件 uart 的接收 引脚连接(通过 rs232 )到运行 hyperterm 会议的计算机,传输引脚连接到激 光发射器电路。然后我们将连接第二个 mega32 的 uart 软件的接收引脚接到光 电二极管电路,软件 uart 的传输引脚连接(通过 rs232 )到运行 hyperterm 会议的计算机。用户在第一个 hyperterm 会议输入的信息,可以在第二个 hyperterm 会议看到出现。 4.4.2 音频发送程序音频发送程序 该音频发送程序负责两件事。首先是在一个期望的频率上采样麦克风电路 的输出电压,二是在串行数据链路上发送 8

46、位结果。这一过程中采用 mega32 的 两种功能:定时器/计数器 0 和模拟数字转换器( adc ) 。定时器/计数器 0 基本上用来(通过使用溢出中断)控制 adc 转换麦克风电压的频率。两个中断 都参与了这一过程:定时器/计数器 0 溢出中断和 adc 转换完成中断。定时器/ 计数器 0 时钟分频器被设置为 256 个,它有效地产生一个时钟周期的: s16 62500 1 256 16000000 1 该增值是 256-21 。因此,每定时器/计数器 0 溢出: s3361621 另外一个任务则是( task1 ) 有效执行定时器/计数器 0 的每一个 t1 溢 出。这项任务命令 adc

47、 在 adcsr 寄存器中由置位 6( adsc )开始单程转换 (即采取样本)。如果我们想要约 3khz 的采样频率,就要让 task1 执行定时器 /计数器 0 的每次溢出,然后设置 t1 至 1 。当 adc 完成转换,adc 转换便完全 中断。在中断服务例程中,为了这个中断我们传送 8 位麦克风的电压结果(在 adch )给传输字节 txbyte ,然后执行在串行数据链路上一个发送子程序来传 送 8 位电压。因为被设置给 adc 的参考电压are是 5v 的,所以 adc 所产生的 8 位电压值介于 0 和 5v 之间。 分别完成定时器/计数器 0 的初始化、adc 寄存器,并说明 1

48、 停止位的使用 后,我们进入了无限的 while 循环。 4.4.3 语音接收程序语音接收程序 该音频接收程序也非常简单,不需要使用任何定时器或模数转换器。其唯 一的责任是从串行数据链路上接收 8 位电压值并且每次通过一个端口破坏掉掉 dac电路上的 8 位信息。由于这个语音接收程序只需要接收子程序。初始化后我 们就进入一个不断执行接收子程序的无限 whlie 循环。接受子程序执行前会等 待开始位的传输。接受子程序执行后,下一个 程序指令前,我们通过 portb 破 坏掉 dac 电路上收到的字节 rxbyte。 4.5 音频设置音频设置 设置音频传输需要使用两个 atmega32 芯片。其中一个芯片由发射机代码音 频程序编程,另一个由接收器代码测试程序编程.发射器通过 adc 输入引脚( porta.0 )连接到麦克风电路,并且通过软件异步传输引脚( po

温馨提示

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

评论

0/150

提交评论