基于单片机的小功率数控调频发射器设计
摘要:自无线通信技术实现以来,其极大的改变了人们的生活方式,加快了人类文明进程的发展,通信质量越来越高,成本也越来越低。本文设计的小功率数控调频发射器以单片机为控制核心,并通过模拟调频技术实现80.0MHz至109.9MHz范围内的调频发射功能,系统可以通过键盘预设多个频道,发射频率最小调整值为0.1MHz,同时可实现单声道/立体声控制。本系统具有结构简单、调试升级方便等特点,可广泛应用于学校无线广播、电视现场导播、汽车航行和无线演说等现场。
关键词:单片机;调频发射器;BH1415
Design of low power CNC frequency modulation transmitter based on SCM
Abstract:Since the implementation of wireless communication technology, it has greatly changed people's way of life, accelerate the development of human civilization, communication quality is getting higher and higher, the cost is getting lower and lower. The low-power CNC FM transmitter designed in this paper takes single-chip microcomputer as the control core, and realizes the FM transmitting function in the range of 80.0mhz to 109.9mhz through analog FM technology. The system can preset multiple channels through the keyboard, and the minimum adjustment value of the transmitting frequency is 0.1mhz. At the same time, it can realize mono/stereo control. The system has the characteristics of simple structure, convenient debugging and upgrading, and can be widely used in school radio broadcast, TV broadcast, car navigation and wireless speech and other sites.
Keywords: single chip microcomputer;FM transmitter;BH1415
目 录
摘要 I
Abstract II
1 绪论 1
1.1课题研究背景 1
1.2广播通信发展现状 1
1.3本文主要内容 2
2 系统总体设计 3
2.1系统总体设计 3
2.2主控制器方案选择 3
2.3无线调频发射电路设计方案选择 4
3 系统硬件电路的设计 5
3.1单片机控制电路 5
3.2调频调制发射电路 7
3.3电源供电电路 9
3.4矩阵按键电路 10
3.5显示电路 10
4 系统程序的设计 12
4.1软件开发环境 12
4.2主程序设计 12
4.3LCD显示程序设计 13
4.4控制命令合成子程序 14
4.5按键检测程序设计 15
5 系统调试 17
5.1硬件调试 17
5.2软件调试 17
结 论 20
参考文献 21
致 谢 23
1 绪论
1.1课题研究背景
现如今,调频广播作为广播应用中的重要形式,解决了调幅广播信噪比差、串台严重、频带少的问题,能够提高保真度、优化信噪比、拓宽动态范围。调频广播凭借音质优越且抗干扰性强的优势,成为城市广播的主要形式。在城市化进程不断扩大的过程中,调频发射台的功率也逐渐增大,广播发射天线的高度也在逐渐增多,目前已经形成高塔大功率覆盖的整体格局[1]。从专业角度来看这一覆盖模式主要能够优化格局建设,减少资源支出,提高应用效果。但是同时也会带来一定的负面影响,由于调频广播在米波段进行工作,受到高大建筑物以及其他物体反射会形成多径干扰的情况。在高山和低谷等地势影响下,会出现信号接收不良的阴影区[2]。系统频谱整体利用率较低,长距离范围内交通线连续覆盖问题得不到解决。任何一个地区、一个城市都需要有很多专业的服务及新闻宣传,如交通信息咨询、健康咨询、股市信息咨询等,广播又是大众最灵活的信息接受媒体,这需要建立很多的广播电台,而作为一个国家的频率资源是严格控制和有限的,因此,小调频广播就成了未来广播的另一种主要形式,它是广播发展的其中一个方向,是数字音频广播(DAB)、网络广播的有力补充,既节约了频谱资源,又实现了广播功能[3]。
1.2广播通信发展现状
从发展来看,资源的浪费导致无效辐射的出现,大功率调频发射台为建设环境造成地区污染,同时对航空航天无线电业务的正常运行造成一定的干扰。随着对电磁环境干扰的认识逐渐加深,为了提高频率资源的使用效率,我国已经对广播频率使用范围进行严格限制[4]。为了解决这一问题,广播技术研发人员开创了小调频同步广播的技术形式,能够利用现有的调频技术实现多布点、小功率的广播工作,基本实现同步的应用需求,利用微波、有线、卫星灯箱是实现信号传输。面对实际应用中多径干扰的问题,由于采用小功率按需布点的应用形式,降低了单台发射机的功率,减少反射波场强度的影响。多布点的形式降低环境的干扰,采用同步补点的形式解决阴影区信号接收不良的问题。小调频同步广播在系统规划上更为简单,提高频谱的使用效率。此种模式可建成单频网,实现整个交通线路上的全覆盖,确保斯基在行驶过程中信号的不间断接收,这一应用形式不仅能够实现节约资源的设计目的,同时能够降低对航空频段的干扰,满足绿色环保的电磁环境卫生标准[5]。
1.3本文主要内容
本次小功率数控调频发射器的设计,是采用了单片机,BH1415F调频控制模块,液晶等器件实现无线信号调频和发送功能,在设计的过程中将全文分成了以下几个章节:第一章是针对小功率数控调频发射器课题,进行资料的归纳和总结,分析已有的类似课题中研究状况,并借此阐述本次写作的必要性。第二章则是定调整个小功率数控调频发射器系统的设计方案,并就其中涉及到的单片机技术,器件选型等进行分析。第三章是小功率数控调频发射器的电路设计,对课题中涉及到的单片机,调频发射器等进行接口电路设计,并论述设计的依据和原理。第四章是小功率数控调频发射器的程序编写部分,针对功能实现中需要的调频发射控制程序,液晶显示等程序分别进行阐述。第五章则是结合软硬件的设计,对系统进行调试,详细的论述整个验证过程。
2 系统总体设计
2.1系统总体设计
在无线信息传输中,主要有调频,调幅等多种信息的调制方式,调幅方式电路简单,传播距离远,但是抗干扰性差。而调频方式,虽然电路复杂,但是抗干扰性好,因此可以较好的保持原来的信息,被广泛使用,因此在此采用的是调频的方式来设计。
本次小功率数控调频发射器设计,整体架构如图2-1所示,整个系统包括矩阵键盘,LCD液晶,STC89C52主控制器,BH1415F调频调制模块,供电电源等硬件电路,其可以实现在 80.0MHz---109.9MHz 范围内任意设置发射频率的控制,而且发射频率稳定易于实现,整个系统可以通过键盘预设多个频道,发射频率最小调整值为0.1MHz。
图2-1 系统整体框图
2.2主控制器方案选择
方案一:选择STC89C52单片机作为主控制器,该型号的单片机是采用经典的MCS-51的指令,由我国宏晶科技有限公司自主开发的控制器,在管脚配置和定义上与传统的AT89系列相一致,其价格更低,性能更好[6]。整个STC89C52单片机集成了Flash数据存储,串口通信,定时器等多种功能,方便用户进行使用,目前很多高校都针对该型号的单片机进行教学,具有非常重要的参考意义。该单片机,支持C语言和汇编语言两种方式进行程序的编写,其执行效率高,并且具有加密功能,通过加密功能的设计可以保证设计人员的代码安全性和用户数据的隐私,并且其处理速度达到1M/s,可以满足大部分低俗应用场合,成本低,可靠性高[7]。
方案二:选择STM32F103,该单片机是市场上广泛使用的一种低成本高速单片机,其内部自带倍频电路,通过软件配置可以将其内部最高运行速度达到72MHZ,并且可以通过软件来进行修改。STM32单片机目前在我国使用的非常广泛,在当其的半导体产能缩减情况下,该系列单片机的价格也涨的非常贵,有些型号价格已经涨了好几倍。在硬件上,其采用ARM3内核,主要采用C语言进行开发,并且可以加入操作系统,另外还可以借助CUBEMX工具来进行图形化开发,通过该工具可以完成初始的各个功能引脚的配置,节约开发人员时间,其内部支持SPI协议,ADC模数转换,串口通讯,I2C通信,CAN通信等多种功能,用户通过配置合理的寄存器可以快速使用,并且I/O管脚众多,方便外接设备[8]。
通过分析,ST89C52单片机价格便宜,性能较差,但是在本次设计中需要的控制器性能并不高,因此方案一足够使用。
2.3无线调频发射电路设计方案选择
方案一:采用单片调频发射集成电路组成芯片MC2833。它可构成发射高频率信号的功率放大器。电路由音频放大器、可变电抗器、射频振荡器、输出缓冲器以及放大电路构成。但由于该芯片涉及到的谐振回路较多,不易统调,因而频率不易控制,导致信号不稳定,容易跑台,实现较为困难[9]。
方案二:采用集成芯片BH1415F及相关电路构成。BH1415F是将预加重电路、限幅电路、低通滤波电路一体化,使音频信号的质量比分立元件的电路有很大改进。此电路可实现立体声调频发射,采用了MCU 数据直接频率设定,可设定70-120MHz频率,由于采用了锁相环锁频并与调频发射电路一体化,使发射的频率非常稳定,并且可靠性好,抗干扰能力强,容易实现调频的要求[10]。
综上所述,为了实现中心频率的控制和系统设计的功能要求,本设计选择方案二,即采用集成芯片BH1415F及相关电路构成音频无线发射电路。
3 系统硬件电路的设计
3.1单片机控制电路
在本次小功率数控调频发射器设计中,经过对市场上的控制器进行分析,最终选择了型号为STC89C52单片机,该型号单片机采用经典的51内核,其内部集成了I/O管脚,Flash存储器, RAM数据存储器,数据总线等众多器件,通过多种工艺结合将其集成到一块硅芯片上,然后对其进行封装方便客户进行开发使用[11]。单片机控制器,经过几十年的发展,其应用已经深入到各个领域,从过去的国外完全垄断,到现在的国内的自主设计,自主生产,我国在单片机控制器设计生产领域已经得到了迅速的发展,尤其是近几年美国对我国进行卡脖子后,我国大力发展半导体事业,进一步缩小了差距[13]。
图3-1 单片机引脚图
本次采用的STC89C52单片机,在外观上主要有DIP双列直插方式和PTQFP方形封装,其管脚数量相同,前者主要体积较大,方便用于教学实验等场合,后者体积小,但是焊接麻烦,主要用于工业或者商业使用[15]。在本次设计中,选择的是DIP封装的STC89C52单片机,这种形式在设计中会更加容易接线,节约大量时间。在引脚上,其主要有40个管脚,包括了VCC电源正,GND电源地,晶振引脚,复位引脚,P0到P3的输入输出管脚等等。其中,PO管脚是OC集电极输出管脚,这种结构的管脚需要加入上拉电阻,否则无法输出高电平,P3管脚则具有复用功能,除了可以将其当做普通的I/O管脚外,还可以通过内部的配置寄存器对其进行修改,如P30和P31可以作为串口通信管脚,P34和P35可以作为定时器管脚等等。除了这些基本的管脚使用,还需要为其配置相应的晶振电路,复位电路,电源供电,否则单片机将无法可靠工作,如图是单片机部分的整体原理图。
图3-2 晶振电路
对于晶振的选择,首先需要考虑到晶振的类型,一般晶振分为有源晶振和无源晶振,有源的是指需要电源供电的晶振,这种晶振在供电后会直接输出固定的频率给到控制器,这种方式稳定性高但是价格也贵,通常是应用在高频场合。而无源的则不需要供电,会结合单片机内部的电路来共同产生一个震荡频率,在STC89C52单片机中,采用的是无源晶振的方式,并且在晶体的频率上,选择的是如图12MHz,并且匹配了两个pF级别的小电容来增强系统的稳定性。对于单片机来说,晶振频率的大小与其程序运行的速度是正相关的,如本次选择的12MHZ晶振,在经过其内部进行12分频后,其运行一条单周期指令需要的用时大概就是1us,因此这也就限制了他的应用范围,如果需要应用的场合需要高速数据,那么其就无法满足,但是在本次设计中,处理的数据并不是高速的,所以采用12MHZ的晶振可以满足使用需求,其电路如图所示。
图3-3复位电路
在完成对晶振电路的设计之后,单片机的复位电路也需要进行设计,所谓复位是指,让单片机重新运行整个系统。对于复位包括上电复位和按键复位两种形式,对于上电复位是指,当整个系统上电时,会自动进行复位,使得程序重新开始运行。而这么做的目的就是,单片机在上电的初期,由于供电不足可能导致程序运行错乱,所以在上电时,通过电容延时,使得RST管脚进行复位使得单片机自动重新运行程序,从而保障程序的正常运转。而按键复位,则是预留人工复位的方式,当用户按下按键时,单片机的RST管脚会被拉高,从而使得单片机进入复位状态,当用户按键松开时,RST管脚变低,从而程序继续运行,其整个电路如图所示。
3.2调频调制发射电路
本系统调频调制发射部分电路采用了ROHM公司的调频发射专用集成电路BH1415F。BH1415F是一种无线音频传输集成电路,它可以将计算机声卡、游戏机、CD、DVD、MP3、调音台等立体声音频信号进行立体声调制发射传输,配合普通的调频立体声接收机就可实现无线调频立体声传送[16]。适合用于生产立体声的无线音箱、无线耳机、CD、MP3、DVD、PAD、笔记本计算机等的无线音频适配器开发生产。这个集成电路是由提高信噪比(S/N)的预加重电路、防止信号过调的限幅电路、控制输入信号频率的低通滤波电路(LPF)、产生立体声复合信号的立体声调制电路、调频发射的锁相环电路(PLL)组成。
图3-4 BH1415F电路图
表3-1 BH1415F 关键引脚功能
引脚编号
引脚功能
8,12
电源正引脚
6,10
电源地引脚
1,22
左右两个声道的音频输入引脚
2,21
预加的延时设置引脚
9,11
信号发射引脚
15,16,17
控制引脚,与单片机连接
13,14
晶振引脚,一般接7.6M晶振
音频信号从第1脚和第22脚输入后通过预加重电路、限幅电路和低通滤波电路后送到混合器中,另外由第13、14脚接入7.6MHz晶体的振荡电路通过200分频后产生的38KHz副载波信号,同时38KHz副载波通2分频产生的19KHz导频信号。音频信号和38KHz的副载波信号被多路复合器进行了平衡调制,产生了一个主信号和一个通过DSB调制的38KHz副载波信号,并与19KHz导频信号组成复合信号从第5脚输出。FM发射电路采用稳定频率的锁相环系统。这一部分由高频振荡器、高频放大器及锁相环频率合成器组成。调频调制由变容二极管组成的高频振荡器实现,高频振荡器是一个锁相环的VCO,立体声复合信号通过它直接进行调频调制[18]。
3.3电源供电电路
目前电网采用的主要还是220V的交流电,所以在本次设计中其设计输入电压采用的是220V交流电,因此必须设计相应的整流滤波电路进行转换,这样才能方便后级电路进行处理。在进行整流电路的设计过程中,首先要做的是进行整流拓扑结构的选择,通常来说有全桥整流,同步整流等方式,在一些对效率敏感的场合可以采用同步整流的方式,其通过四个MOS开关管来代替传统的二极管,由于MOS管本身的通态阻抗比二极管更小,带来的损耗也会更低,但是其需要进行控制,控制电路会比较麻烦。而采用二极管的全桥整流电路则要简单的多,其不需要进行软件控制,输入的交流电通过电路整流后直接进行输出,在此考虑到设计的方便性,选择的是采用二极管为核心器件的全桥整流电路,这种方式也最为常见。
图3-5 电源供电电路图
由于STC89C52单片机的VCC电源引脚需要采用5V直流电来进行供电,而电压转换通常有两种方式可以实现。一种是采用开关电源的拓扑结构,这种方式效率高,但是纹波大,并且其外围电源电路复杂。另一种则是采用线性电源的拓扑,这种方式虽然效率低,但是纹波小并且电路结构简单,本次采用的是后者线性电源的方式,其电源电路如图所示,主要采用的是LM7805电源芯片,只需要将输入电压接入到VIN引脚,然后通过加入滤波电容就可以在其输出端VOUT引脚得到5V的输出电压,使用非常方便[19]。
3.4矩阵按键电路
本次小功率数控调频发射器需要实现多种命令信息的输入,因此必须设计相应的按键电路,按键电路不仅可以帮助用户进行信息的输入,还可以方便产品工程开发人员进行系统的维护和升级。在平时所使用的的电子产品中,按键几乎是随处可见的,如电脑键盘,电视机遥控器等等,其都设置了相应的按键电路,方便用户进行指令的输入。对于按键,虽然看起来简单,但是其也分为很多种,如电容按键,机械按键等等,通常在材质上有金属或者聚乙烯的,在按键的触发状态效果上,有自锁效果,也有单次触发效果。
图3-6 矩阵按键电路
在本系统的设计中,由于输入的信息比较多,因此采用的是矩阵键盘的形式,矩阵形式的键盘是一种非常节约IO管脚的方式,比如16个按键采用独立按键的方式需要使用16个单片机管脚,而这会极大的增加电路复杂度,而采用矩阵的形式则只需要8个单片机管脚,极大的节约了资源。对于矩阵键盘的电路连接方式,其如图所示,主要分为垂直方向和水平方向,按键的一个脚连接到垂直方向,另一个脚连接到水平方向,然后通过软件算法就可以完成对每个按键按下的检测,实现单片机引脚资源的节约。
3.5显示电路
本次系统设计过程中,需要实现当前频道等参数的显示,因此必须设计相应的显示电路,而针对显示电路的设计,首先需要明确的就是显示设备的选择。常用来说显示设备有数码管,LCD,TFT等多种形式,其各自有相应的特点,如数码管价格便宜但是显示信息少,TFT显示信息丰富但是价格又昂贵,因此在显示器的选择中需要考虑多种的因数。本次选择的是LCD1602液晶显示器,其采用的是液晶显示原理来完成信息的显示,液晶是一种特殊的物质,在通过人为的划分区域后,对其施加固定的电压器相应的部分就会发生颜色的变化,因此也就实现了基础的液晶显示功能。
图3-7 液晶LCD1602电路图
在本次设计中,采用的是LCD1602液晶模块,因此单片机并不需要直接去控制液晶本身,只需要完成对液晶模块的控制就行。在显示效果上,其可以实现2行16列的数据显示,在数据中因为其集成了自带的库,因此主要是可以显示自带的阿拉伯数字,英文以及部分特殊字符。该LCD液晶模块对外接口一共有16个管脚,这16个管脚包括了显示数据通信管脚D0~D7,控制管脚RW,RW,EN,背光供电管脚A,K,电源供电管脚VCC,GND,对比度调节管脚VO。其电源供电主要采用的是3-5V进行供电,尤其需要注意的是,其对比度调节VO必须调节到合适的位置,否则无法正常显示数据信息,所以通常会采用可调电阻分压的形式来进行该部分电路的设计,以便客户进行调节。所以在电路设计中,需要分别对各个引脚的电路进行连接。
4 系统程序的设计
4.1软件开发环境
在开发过程中,往往涉及到软件程序的编写,当代的控制系统都是采用可编程控制器来进行开发,这种方式极大的简化了电路设计复杂度,通过软件的编程的方式用户可以更加灵活的进行设计。在本次设计中,采用的是单片机来作为控制器,通过查阅资料,该单片机可以在多种平台上进行软件开发,如Keil,IAR等等,由于市场上主流采用的是Keil,因此本系统也采用了Keil进行软件开发。Keil平台其自带了很多软件的库文件,包括了市面上主流的PIC单片机库文件,51或者stm32单片机库文件,用户在使用时非常方便,可以直接调用内部文件,并且自带Debug调试模式,可以在调试软件时进行在线实时调试,通过单步运行等手段逐个分析软件的错误,以便及时处理问题,其开发页面如图所示[20]。
图4-1 KEIL界面图
4.2主程序设计
首先,进行整个程序的初始化及清屏,预制发射频率为88MHz,送入BH1415F,然后进入查键和显示函数的循环。当有按键按下时,程序判断是哪个键被按下,然后执行相应的按键功能,并调用数码显示,显示所设置的发射频率;当没有键按下时,返回键盘扫描,再判断是否有键被按下。本次程序设计的整体流程图,如图4-2所示。
4.3LCD显示程序设计
在此采用的液晶型号是LCD1602,其控制引脚包括了8位数据引脚D0-D7和3个指令引脚,编写程序时主要就是实现对这些引脚的控制,首先初始化整个液晶的当前状态,然后写入配置指令,再写入需要显示的数据,写完后再接着写入下一个信息,如此往复,直到把所有需要显示的信息全部写完,其具体流程如下。
图4-3 LCD显示程序流程图
4.4控制命令合成子程序
BH1415F的频率控制字为两个字节。两个字节中低11位为频率数据,即为BH1415F 的输出频率。高5位为控制位。按照BH1415F字节传送要求,按低位先送、低字节先送的原则。传送的延时应精确,程序流程图如图4-4所示。
4.5按键检测程序设计
按键作为人机交互的关键一部分,其存在几乎是必须的,用户可以通过按键来进行不同的功能切换。对于按键电路,有矩阵形式的,有独立按键等等,不同形式在软件处理上的要求就不一样。本次采用的是独立按键形式,其软件检测比较简单,系统会一直检测按键是否按下,如果检测按下了,则进行延时去抖动,然后再检测按键还是按下的,则判定为按键按下,然后根据设置进行操作,其流程如下。
图4-5 按键检测的流程图
4.6软件调试
在此采用的是单片机控制器是建立在Keil平台进行软件开发的,在完成系统的软件程序代码编写后,就需要对编写的C语言代码进行验证分析,逐个调试软件的功能,以进行验证。Keil平台上集成了在线调试系统,因此在调试过程中一般都会采用这种方式来对软件的功能进行在线调试,如图4-6所示,在完成单片机硬件和电脑的硬件电路连接后,通过工具栏选择Start/Stop Debug Session,系统就会进入在线调试模式。
图4-6调试一
进入在线调试模式后,用户可以实现单步运行,全速运行等多种模式,并且可以随时观察程序中每个寄存器的变化,甚至包括观测单片机寄存器内部的数据变化,用户通过选择WatchWindow写入需要观察的变量名就可以直观的进行寄存器数据的监控,如图4-7所示。
图4-7调试二
当通过下载线将软件和单片机硬件系统链接之后,进入Debug模式就可以进行在线调试,可以对程序中的每一个语句进行单步执行,持续执行,进入循环等多种操作,以实时监测整个调试的运行状态,通过观察内部寄存器参数的编化来进一步优化程序如图4-8所示。
图4-8 调试三
通过反复对程序的调试之后,就可以通过Keil软件的最终编译来生成HEX可下载程序文件,并且将其通过STC-ISP下载软件将文件下载到单片机中进行运行。
结 论
本文完成了小功率数控调频发射器的设计,整个系统包括矩阵键盘,LCD液晶,单片机,BH1415F调频调制模块,供电电源等硬件电路,其可以实现在 80.0MHz---109.9MHz 范围内任意设置发射频率的控制,而且发射频率稳定易于实现,整个系统可以通过键盘可预设多个频道,发射频率最小调整值为0.1MHz。在设计上采用Altium软件进行了原理图的开发,并完成的了相应的库文件的绘制及整个系统的原理图设计。在软件程序的编写上,完成了调频调制程序,液晶显示程序等各个模块的程序编写,通过模块化的编程思维逐个进行完成,最终整合在一起。通过本次小功率数控调频发射器设计,我对调频发射技术,单片机技术等相关的知识有了更为深刻的了解,也对一个项目的开发流程有了更为清晰的思路。本文将书本知识与实际应用操作相结合,基本上实现了与其设计需求,但是由于个人研究水平有限,整个小功率数控调频发射器系统存在一些问题需要在日后的研究学习中进一步进行系统的优化和改进。主要可以从降低系统耗能、增加精度等层面进行深入研究,这也能够为小功率数控调频发射器系统在生产生活中进一步普及做好坚实的技术支持。
参考文献
[1] 江涛.嵌入式可调频率立体声发射器设计[J].电子设计工程.2020(11):56-58.
[2] 崔群超,荆文芳.卫星转发系统载波发射频率准确性分析与测量[J].电子设计工程.2019(16):7-9.
[3] 张永亮.单片机技术在网络通信中的应用[J].数字通信世界.2021(01):60-66.
[4] 李合军.基于单片机的网络覆盖控制技术[J].电子技术与软件工程.2017(06):17-19.
[5] 梅蓉.单片机技术在网络通信中的应用探析[J].中国新通信.2021(17):6-8.
[6] 王艳芳,李莉.基于物联网环境的单片机技术发展分析[J].信息与电脑(理论版).2019(24):20-23.
[7 ]翟伟良,李哲.基于WiFi无线传输远程视频监控的研究[J].电子科技.2016(09):43-45.
[8] 侯向丽.改善调频广播传输发射系统响度的措施[J].中国新技术新产品.2016(13):89-90.
[9] 程瑾.浅谈调频广播发射技术存在的问题[J].通讯世界.2016(05):40-42.
[10] 刘伟.音频发射器在大学生生产实习中的应用[J].山东化工.2015(23)
[11] 汪丽娜.音频信号采集系统中数字滤波器的研究与设计[D].兰州交通大学.2014
[12] 张志军.浅谈数字化技术在调频广播发射系统中的应用[J].传播力研究.2019(27)
[13] 高利和.数字化技术在调频广播发射系统中的运用[J].科技传播.2018(13)
[14] 郭令鹤.探究多工器在调频广播发射系统中的应用及维护[J].电子元器件与信息技术.2020(05)
[15] 石信元.边远山区中小型调频广播发射系统与覆盖的规划和设计[J].西部广播电视.1997(06)
[16] 赫健.调频广播发射系统在应急广播中的应用研究[J].通讯世界. 2020(04)
[17] 江涛.嵌入式可调频率立体声发射器设计[J].电子设计工程,2020,28(11):189-193.
[18] 李晓林.基于单片机的小功率无线调频发射器设计[J].电子世界,2017(08):176-178.
[19] 吴叶兰,范卫萍,罗旭,廉小亲,高幼元,杨兵红.可调频手持发射器的倍频和音量控制电路设计[J].测控技术,2016,35(08):62-65.
[20] 谢三毛.基于单片机的数控调频发射器设计[J].煤矿机械,2019,31(03):246-248.
[21] 周贻春,楼然苗.小功率数控调频发射器的设计[J].科技创新导报,2018(07):49-50.
[22] 李韶文.小调频发射点(站)的设计和建设[J].广播与电视技术,2018(02):109-111.
[23] Sean E. Whitehall,Carlos E. Saavedra. Compact 640 μW frequency-modulated ultra-wideband transmitter[J]. IET Circuits, Devices & Systems,2018,12(3):20-22.
致 谢
时光荏苒,转眼间的毕业季让我感慨万千。本科学习生涯即将结束,我十分感谢所有教育过我的老师、朝夕相伴的同学、默默付出的家人,我们一起走过风雨,一起留下了难忘的回忆。首先,我最需要感谢的是我的论文指导老师,在论文写作过程中,为我的论文指明大概方向,并从理论层面开始指导我,解决了论文写作过程中各项棘手的问题,老师为我的论文提出了宝贵的修改意见。在此,需要对老师道一声感谢,师恩难忘。其次,我要对陪伴我四年学习生活的同学说一声谢谢,我们一起生活、一起学习,我们收获了知识,我们收获了友谊,未来的日子,希望你们前程似锦。最后衷心感谢我的父母,我能安心完成学业,是你们在背后的默默支持与鼓舞,我会继续秉持初心,直面挑战。
附 录A
附 录B
#include <reg52.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include "1602.h"
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
sbit BH1415_SDA=P1^1; //接在BH1415的数据端口 自行更改端口适用于自己的开发板
sbit BH1415_SCL=P1^0; //接在BH1415的时钟端口
sbit KEY1=P3^3; //频率增加按键端口
sbit KEY2=P3^4; //频率减小按键端口
unsigned char BH1415_temp[16];//定义显示区域临时存储数组
unsigned char radio_write_data[5]={0x30,0x50,0x70,0x16,0x80}; //要写入BH1415的数据,101.1M
unsigned long frequency=101100; //开机初始化的电台频率为101.1MHz
unsigned int pll=101100; //计算频率合成时用的变量
unsigned char lv;
void Delayus(unsigned char x) //延时函数
{
for(;x>0;x--);
}
void iic_start() //起始信号
{
BH1415_SDA=1;
Delayus(4);
BH1415_SCL=1;
Delayus(4);
BH1415_SDA=0;
Delayus(4);
BH1415_SCL=0;
Delayus(4);
}
void iic_stop() //停止信号
{
BH1415_SCL=0;
Delayus(4);
BH1415_SDA=0;
Delayus(4);
BH1415_SCL=1;
Delayus(4);
BH1415_SDA=1;
Delayus(4);
}
void iic_ack() //应答对应
{
BH1415_SDA=0;
Delayus(4);
BH1415_SCL=1;
Delayus(4);
BH1415_SCL=0;
Delayus(4);
BH1415_SDA=1;
Delayus(4);
}
bit iic_testack() // 检测对方回答
{
bit ErrorBit;
BH1415_SDA=1;
Delayus(4);
BH1415_SCL=1;
Delayus(4);
ErrorBit=BH1415_SDA;
Delayus(4);
BH1415_SCL=0;
return ErrorBit;
}
void iic_write8bit(unsigned char input) //写8位串行数据
{
unsigned char BH1415_temp;
for(BH1415_temp=8;BH1415_temp>0;BH1415_temp--)
{
BH1415_SDA=(bit)(input&0x80);
Delayus(4);
BH1415_SCL=1;
Delayus(4);
BH1415_SCL=0;
Delayus(4);
input=input<<1;
}
}
void delays (unsigned char b) //按键消抖用的延时程序
{
unsigned char i;
for(b;b>0;b--)
for(i=0;i<250;i++);
}
void radio_write(void) //收音机写数据
{
unsigned char i;
iic_start();
iic_write8bit(0xc0); //BH1415写地址
if(!iic_testack())
{
for(i=0;i<5;i++)
{
iic_write8bit(radio_write_data[i]);
iic_ack();
}
}
iic_stop();
}
//将显示的频率算好后写到BH1415芯片里面实现调节,不用考虑BH1415用于搜台的相关位:SM,SUD
void search() //搜台
{
pll=(unsigned int)((float)((frequency+225))/(float)8.192); //计算合成频率数据,频率单位:k
radio_write_data[0]=pll/256; //将算好的频率高位数据写入BH1415
radio_write_data[1]=pll%256; //将算好的频率低位数据写入BH1415
radio_write_data[2]=0x70; //这是BH1415开立体声,关静音
radio_write_data[3]=0x16; //中国制式,采用32768晶振,软静音关,立体声消噪声开
radio_write_data[4]=0x80; //6.5M锁相环开,去加重时间75US
radio_write();
}
void display(uint frq) //显示函数
{
sprintf(BH1415_temp," %5.1f MHz",((float)frq)/10);//浮点型显示,带一位小数点,首先把int类型强制变为float型,然后除以10运算
LCD_Write_String(0,1,BH1415_temp);//显示第一行
}
//发送十六进制字节数据
void SendByte(unsigned char dattt)
{
SBUF = dattt;
while(!TI);
TI = 0;
}
void main() //主函数
{
unsigned char shiwei,gewei;
/* 系统初始化 */
TMOD = 0x20; //定时器T1使用工作方式2
TH1 = 0xFD; // 设置初值
TL1 = 0xFD;
TR1 = 1; // 开始计时
SCON = 0x50; //工作方式1,波特率9600bps,允许接收
ES = 1;
EA = 1; // 打开所以中断
TI = 0;
RI = 0;
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear(); //清屏
LCD_Write_String(0,0," FM BH1415 ");//显示第一行
search();
radio_write(); //写入初始化电台频率
lv=0;
while(1)
{
shiwei= frequency /1000;
gewei= frequency /100%10;
SendByte(shiwei) ;
SendByte(gewei) ;
if((!KEY1)||(lv==1)) //手动设置频率,+0.1MHz;
{
delays(250); //延时消抖
if((!KEY1)||(lv==1))
{
frequency+=100;
if(frequency>108500) //频率如果大于108.5MHz
frequency=87500; //频率设定为87.5MHz
search();
display(frequency/100); //调用显示
BH1415_temp[15]=lv+'0';
lv=0;
}
}
if((!KEY2)||(lv==2)) //手动设置频率,-0.1MHz;
{
delays(250); //延时消抖
if((!KEY2)||(lv==2))
{
frequency-=100;
if(frequency<87500) //频率如果小于87.5MHz
frequency=108500; //频率设定为108.5MHz
search();
display(frequency/100); //调用显示
BH1415_temp[15]=lv+'0';
lv=0;
}
display(frequency/100); //调用显示
}
}
}
void RSINTR() interrupt 4 using 2
{
extern unsigned char lv;
if(RI==1) //接收中断
{
RI=0;
switch(SBUF)
{
case 'a':
lv=1;
SBUF=0;
break;
case 'b':
lv=2;
SBUF=0;
break;
}
}
}