基于C51单片机的校园自助导览仪设计

发布者:码字探险最新更新时间:2011-08-02 关键字:C51单片机  校园自助导览仪 手机看文章 扫描二维码
随时随地手机看文章

  本文采取硬件解码方案,在单片机上实现了MP3的解码,并加入无线功能,使其向产品靠拢,设计成为一种电子产品“校园自助导览仪”。它的功能和导游一样,具备自助和电子的要素。

  本文还对MP3编码进行优化,除了算法优化和高级语言的优化之外,还进行了汇编级优化,大大降低了算法的复杂性。

  1 系统总体设计

  本设计是基于校园的一种电子产品,将旅游景点的解说以MP3格式存储,通过无线形式实现智能控制。该系统能根据观众的位置和需要自动确定解说的语言和内容,使得每个观众不但可以得到每个展位、景点的完整信息,而且能够感受到高清晰、低噪声的音响效果。同时,本设计产品还配有键盘,可以对播放的音频文件进行控制,满足人性化的要求。系统总体框架如图1所示。

  

 

  1.1 MP3编码与实现

  MP3采用的是频域编码,即音乐信号自适应谱感熵编码ASPEC(Adaptive Spectral Perceptual Entropy Coding of High Quality Music Signal)。

  MP3的数据是以帧流的形式存储或传输的,每个帧有帧头和帧尾。为获取较高的数据压缩比,根据音频位流语法,采用了较为复杂的位流结构。MP3码流是由很多帧组成,每一帧由帧头、压缩的音频数据及辅助数据等组成。帧头是一个32位长的数据,它包含输入输出采样率、输出比特率以及单双声道等信息。对每一帧的576(单声道,立体声为1152)个输入音频采样压缩而得到音频数据。具体的压缩后的比特数可以根据下式得到:

  帧内比特数=帧内采样数×位率/采样率 (1)

  图2是MP3音频信号的编码过程。就单声道而言,MP3的一个编码框包含1152个声音取样,每个取样为16位。MP3编码时,首先将原始输入的16位PCM信号经过滤波器分析(filer bank analysis),转换成32个等频宽的子频带信号(subband signal)。然后透过改良式离散余弦转换(Modified I)iscrete CosineTransforln,MDCT),将每个子频带信号再细分为18个次频带,根据第二心理声学模型(Psychoacoustic Mode ID所提供的信噪比(Signal-to-MaskRatio,SMR),对每个子频带信号进行位元分配及量化编码。最后,只要将编码后的资料依照MPEG-I定义的位元串的形式输出即可。

  

 

  数字音频采样通过由两个滤波器组成的滤波器组输入到心理声学模型中,由心理声学模型的输出来控制音频屏蔽等参数,最终通过量化和霍夫曼(Huffman)编码得到输出的比特流。[page]

  1.2 MP3解码与实现

  PCM信号进行MP3压缩时,以1152个PCM采样值为单位,封装成具有固定长度的MP3数据帧(帧是MP3文件的最小组成单位)。在解码时,利用数据帧里的信息就可以恢复出1152个PCM采样值。这1152个采样值被分为2个粒度组,每个粒度组包含576个采样值。一个MP3数据帧分为5个部分:帧头、CRC校验值、边信息、主数据、附加数据。在进行解码时一般包含同步(Synchronization)、找到帧的开始位置、检查错误(CRC)、霍夫曼解码(Huffman decoding)、解包信息、输出量化的频率信息、再量化(Requantize)、用比例系数放大输出信息、再排序(Reorder)、增加频率后重新排序、频率线立体声合成(Stereodecoding)等过程。

  MP3解码器程序设计包括以下内容:

  ①定点算法设计。尽管定点单片机也支持浮点运算,但浮点运算会消耗大量的指令周期和内存,也会降低系统运行速度,不能应用于MP3实时解码。在程序设计中,首先要将MP3浮点C解码算法转换为定点C解码算法。浮点算法转换成定点算法实现过程比较复杂,本文不再多述。

  ②在程序的头部建立正确的运行头(Run Time Header)文件。

  ③内存分页/重叠。与ADSP-218X类似,FD216也是通过设置重叠存储器选择寄存器(PMOVLAY/DMOVLAY)来实现PM(CM)/DM存储器分页/重叠的。

  2 无线模块

  无线遥控装置已广泛应用于车模、航模等领域,用来实现对靶机、驱动电机、玩具等的控制。在空间存在各个频段、强弱变化的无线电波,因此无线遥控器在通信数据传输时容易受到干扰。为了提高通信数据传输的可靠性,必须在发送端对传输的数据进行编码,而在接收端对接收的数据进行解码,以提高抗干扰性。下面先介绍无线收发的特点,再将此无线功能加入MP3中,构成一个有无线功能的MP3,从而完成校园自助导览仪的设计。

  发射器一般由数据输入模块、编码电路、调制电路、驱动电路、发射电路等部分组成。当有数据从输入模块输入时,编码电路产生相应的编码信号(编码指信号对载波进行调制),再由驱动电路进行功率放大后由发射电路向外发射。

  接收器一般由接收电路、放大整形电路、调制电路、数据处理电路、驱动执行电路等部分组成。接收电路接收发射器发送的调制编码信号,经过放大整形电路处理后送至解调电路。解调电路对调制信号进行解调,即还原为编码信号。数据处理电路对编码数据进行解析,并控制执行电路执行相应的操作。

  由上述可知,为了提高数据传输的可靠性,必须对发送数据及发送的脉冲格式进行编码,然后在接收端对这些信号进行解码。现在市场上有很多用于编码和解码的专用芯片,例如PT2262/PT2272,它们都是通过硬件实现编码和解码的。在接收端,由于无线接收模块收到的是脉冲信号,而不同的数据位其宽度不同,所以必须测量每个脉冲的宽度,以判别是哪个数字逻辑。在硬件上采用单片机的两个外部中断INT 0、INT1来捕捉脉冲的上升沿和下降沿,进而计算出脉冲宽度和数字逻辑。图3是设计的校园自助导览仪的无线收发场景。

  

 

  如果旅游者佩戴我们设计的自助导览仪进入校园游览,每次到达校园景点时,会自动接收到校园景点发射的编码信号,自助导览仪进行解码后会播放相应的MP3音频文件进行景点的介绍。

  为了检验自助导览仪设备可靠性,进行了一些野外测试,效果良好:

  ①发射模块距离可调,符合显示各校园景点需要,基本上能通过控制天线长短和电压高低得到理想距离;

  ②误码可能性极低;

  ③通过程序控制很好地实现了自动判断同一景点播放完后是否重新播放。

  3 MP3编码优化

  心理模型的优化可以分为两个方面:心理声学模型算法的优化和心理声学模型定点运算的优化。心理模型对于长窗和短窗的运算均需要进行一系列的包含FFT的复杂运算,耗费大量运算周期。因此我们考虑这样来实现心理声学模型:首先进行窗体类型的判断,依据判断结果,只作对应窗口类型的FFT变换和后续的心理声学模型计算,从而大大减轻运算负担。经过测试统计发现,大多数的情况下,编码器所采用的窗口类型均为长窗,因此在心理模型窗体计算时可以不考虑短窗。

  另外一种优化则是对定点运算进行优化。由于在心理声学模型中涉及到诸多复杂的运算(包括循环控制、对数运算、幂运算等),因此充分利用硬件功能和对运算的优化成为了关键。MP3编码器编码过程中,量化编码需要进行多次量化调整循环,每一次的量化调整都会消耗很多周期,因此通常会占到60%~70%的运算周期。在实现时,为了达到实时的要求,对量化编码模块的循环进行了控制,得到了最佳的量化结果。

  结语

  对MP3的编解码和无线模块的整合,是设计电子产品的一个方向,对电子产品的多样化有一定的推动作用。本文在单片机上通过对MP3的编解码运算实现了MP3的播放,然后对其功能进行扩展,加入了无线模块设计和液晶屏等,最终完成了校园自助导览仪的设计。该系统设计完成后,在西南交通大学进行了多次实验和推广,取得很好的效果。

  虽然我们对编码进行了优化,且对无线模块进行了大量的通信测试,但不一定能达到恶劣环境的要求。可以根据实际的需要,调整无线模块的收发距离。此外,该MP3还可以进行更多的功能扩展,比如做成电子导游、公交报站器等多种电子产品。

关键字:C51单片机  校园自助导览仪 引用地址:基于C51单片机的校园自助导览仪设计

上一篇:基于单片机的指纹考勤管理系统设计
下一篇:基于单片机的智能家居安防系统设计方案

推荐阅读最新更新时间:2024-03-16 12:39

89C51单片机怎么样?89C51单片机过时了吗
89C51单片机是一款8位单片机,最常用的是艾特梅尔产的AT89C51,我在上学时是用的最多的一款单片机芯片,现在来说它早已停产多年了。我认为尽管这样,作为一种性价比很高的芯片非常适合刚接触单片机的小白们学习,我认为在一些低端产品中还是能见到它的“踪影”,下面我来谈谈我的看法。 单片机作为一种控制类芯片,不管其性能是如何发展,现在仍然没有摆脱它的基本架构。我认为作为刚学单片机的新手来说这款芯片并没有过时,俗话说“万仗高楼平地起”,我们学单片机不仅仅是学单片机芯片本身的内部结构,我认为更重要的是学习单片机的一些硬件外设和软件部分。从这一方面来讲选一款经典的低端芯片来学习是我们的明智之举,一来可以增加我们学习的自信心,二来也可以节
[单片机]
基于C51单片机中的通信协议分享
一、基本格式: 通信头-》巴克码-》地址字-》长度字-》命令字-》信息位-》校准字 1.通信头:占1~8个字节,表通信开始(0x00、0xff不能用作通信头); 2.巴克码:占1字节,一般为0x72,表通信头结束; 3.地址字:表终端的地址,占1字节(0x00作为广播地址); 4.长度字:占1字节,表示从地址字到信息位之间的字节数; 5.命令字:占1字节,指示终端的不同操作; 6.信息位:不定长,从0~252字节; 7.校验位:两个字节,采用和校验及CRC校验。 二、应答 1.如果终端接收正确,则应答ACK;如果终端接收错误,则应答NAK; 2.发送方收到ACK,此次通信结束; 3.发送方收到NAK,重发刚才的命令字(最多7次
[单片机]
基于<font color='red'>C51单片机</font>中的通信协议分享
AT89C51单片机系统简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 ? 指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 1.主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三
[工业控制]
采用AT89C51单片机实现动态车辆检测器系统的设计
引言 随着经济的发展,不停车收费系统(ETC)已在我国悄然兴起。不停车收费系统主要是由通讯、监控、收费三大系统组成。整个系统可靠运行的一个重要环节就是车辆检测器。在不停车收费系统中它是检测驶向通讯区域的车辆并命令天线进行通信的传感器,具有进入检测、车速检测、车型判别等功能;它是检测出离开通信区域的车辆、根据ETC车道控制器的判断控制栏杆、路侧显示器的传感器,具有进入检测功能;它具有检测车辆通过,控制清除针对该车辆的路侧显示器的显示内容以及控制针对后续车辆的显示的功能,并命令栏杆关闭的功能。 考虑到性能、价格、技术复杂性、可靠性、维护要求、适用范围等因素,我们这种车辆检测器是基于地感线圈原理研制的。 1、动态车辆检测器设计
[单片机]
采用AT89<font color='red'>C51单片机</font>实现动态车辆检测器系统的设计
C51单片机头文件和启动文件
STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 reg51.h //特殊寄存器的字节地址和位地址,sfr定义字节变量、sbit定义位变量,用通俗名作为变量名,并赋地址值,从而用名称来使用这些特殊寄存器。 intrins.h //定义了一些外部函数,在 C51 单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用 汇编 时一样简便. /*-- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Ele
[单片机]
C51单片机学习——密码锁的实现
说在前面:因为我的板子是液晶屏和数码管不能同时用,所以下面我使用的是液晶屏,下面的代码通俗易懂也有注释,如果有的控件不知到如何使用的可以查看我之前的几篇C51文章,这个密码锁就是基于之前的笔记所写的内容 #include reg52.h //#include intrins.h #define uint unsigned int #define uchar unsigned char #define data1602 P0 #define LED P2 /*******引脚定义*******/ //按键的控制引脚 sbit S1 = P3^7; sbit S2 = P3^6; sbit S3 = P3^5; sbit S4
[单片机]
89c51单片机最小系统,89c51最小系统原理图的功能详解
  单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路、时钟电路、复位电路。单片机最小系统电路原理图。    89c51最小系统原理图的功能详解   1:电源电路   电源电路就是单片机的供电电路,一般是3.3V或者5V,具体多少要参考各种型号的单片机的工作电压,通常情况下是5V,这里是指通常情况下。   2:时钟电路   时钟电路就是晶振电路,一般选择12Mhz的晶振,方便使用定时器、计数器的功能。AT 89C51中有高增益的反相放大器,它是是构成内部振荡器的主要单元,XTAL2和引脚XTAL1分别是该放大器的输出端和输入端。   片外石英晶体或陶瓷谐振器和放大器共同构成
[单片机]
89<font color='red'>c51单片机</font>最小系统,89c51最小系统原理图的功能详解
C语言在C51单片机中的编程和常用c语言有什么异同
通用c语言和C51单片机c语言基本没做什么大的改变?只是要注意下面几点。 1.数据类型的差别(着不同说在不同芯片上所支持的类型是有些差别,用的时候注意看一下) 2.c51对c语言的数据类型做了扩充。 如下: sfr 特殊功能寄存器数据声明,声明一个8位的寄存器。 sfr16 16特殊功能寄存器的数据声明 sbit 特殊功能位声明 bit 位变量声明
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved