基于单片机的RDS接收控制设计.doc

上传人:laozhun 文档编号:2395332 上传时间:2023-02-17 格式:DOC 页数:46 大小:183.50KB
返回 下载 相关 举报
基于单片机的RDS接收控制设计.doc_第1页
第1页 / 共46页
基于单片机的RDS接收控制设计.doc_第2页
第2页 / 共46页
基于单片机的RDS接收控制设计.doc_第3页
第3页 / 共46页
基于单片机的RDS接收控制设计.doc_第4页
第4页 / 共46页
基于单片机的RDS接收控制设计.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《基于单片机的RDS接收控制设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的RDS接收控制设计.doc(46页珍藏版)》请在三一办公上搜索。

1、目 录摘 要1Abstract2第1章 方案设计31.1 基于nRF401的接收控制设计31.2 基于RDS功能的接收控制设计4第2章 接收模块设计62.1接收模块硬件设计62.1.1 FM接收电路设计62.1.2 单片机控制电路的设计72.1.3音频放大电路的设计82.2 接收部分软件设计92.2.1 QN8035的源程序92.2.2 12864源程序212.2.3 单片机控制QN8035的程序322.2.4 I2C总线的源程序36结 论43参考文献44附 录45摘 要 现代社会中,基于单片机的RDS接收控制模块是我们在生活、学习等各方面普遍接触到的商品的重要组成部分之一,如无线对讲机、收音

2、机等。它有效地为我们的生活提供了便利。 本文主要设计一个基于单片机的RDS接收控制模块。采用嵌入式处理器芯片STC89C52RC控制,使用FM接收芯片QN8035接收信息。本系统设计分为硬件设计和软件设计两部分。硬件设计部分包含FM接收电路设计、单片机控制电路设计和音频放大电路设计;软件设计部分包含QN8035的源程序、12864源程序、单片机控制QN8035的程序和I2C总线的源程序。然后通过Protel进行仿真,实现本次系统设计的功能。关键词: 单片机STC89C52RC 、QN8035、接收控制、RDS功能Abstract In modern society, based on sing

3、le chip microcomputer RDS reception control module is our life, study and so on various aspects in common exposure to one of the important component of the goods, such as radio, radio, etc. It effectively provides a convenience to our lives. In this paper, we design a RDS receiver based on single-ch

4、ip microcomputer control module. Using embedded processor chip STC89C52RC control, the use of FM receiver chip QN8035 receiving information. This system is divided into hardware design and software design two parts. Hardware design part contains an FM receiver circuit design, the MCU control circuit

5、 design, and audio amplifier circuit design; Software design section contains QN8035 source program, 12864 source program, single-chip microcomputer control QN8035 programs and source code of the I2C bus. Then simulation by Protel, can realize the function of the system design.Keywords: SCM ,STC89C5

6、2RC and QN8035, receives the control, the RDS function 基于单片机的RDS接收控制设计第1章 方案设计1.1 基于nRF401的接收控制设计 nRF401是Nordic公司研制的单片UHF无线收发芯片,工作在433MHz ISM(Industrial, Scientific and Medical)频段。它采用FSK调制解调技术,抗干扰能力强,并采用PLL频率合成技术,频率稳定性好,发射功率最大可达10dBm,接收灵敏度最大为105dBm,数据传输速率可达20Kbps,工作电压在+35V之间。nRF401无线nRF401无线收发芯片所需外围

7、元件较少,并可直接接单片机串口。 nRF401芯片内包含有发射功率放大器(PA)、低噪声接收放大器(LNA)、晶体振荡器(OSC)、锁相环(PLL)、压控振荡器(VCO)、混频器(MIXFR)、解调器(DEM)等电路。在接收模式中,nRF401被配置成传统的外差式接收机,所接收的射频调制的数字信号被低噪声效大器放大,经混频器变换成中频,放大、滤波后进入解调器,解调后变换成数字信号输出(DOUT端)。在发射模式中,数字信号经DIN端输入,经锁相环和压控振荡器处理后进入到发射功率放大器射频输出。由于采用了晶体振荡和PLL合成技木,频率稳定性极好;采用FSK调制和解调,抗干扰能力强。50的单端天线通

8、过差分转换匹配网络连接到nRF401的ANT1和ANT2引脚。使用nRF401的ANT1和ANT2引脚是接收时低噪声接收放大器LNA的输入,以及发送时发射功率放大器PA的输出。连接nRF401的天线可以以差分方式连接到nRF401,一个50的单端天线也可以通过一个差分转换匹配网络连接到nRF401。环形天线nRF401,整个环形天线可以做在PCB上,对比传统的鞭状天线或单端天线,不仅节省空间和生产成本,机构上也更稳固可靠,图1.1 基于nRF401无线收发设计的框图。 话 筒功效前置放大nRF401单片机图1.1 基于nRF401无线数字对讲系统设计的框图1.2 基于RDS功能的接收控制设计调

9、频发射部分:与QN8035接收机模块配对的是以QN8027芯片为中心的发射模块,可以实现音频和RDS的发射。单片机我们使用开发板,这样解决了我们编写软件时没有硬件的问题,并且开发板每个管脚可以用跳线引出,接线方便。QN8027是一颗高性能、低能耗、全功能的立体声调频发射单芯片,主要适用于便携式音频和视频播放器、汽车配件、手机及GPS个人导航设备等。QN8027集成了完整的FM发射、空台扫描,以及天线自动调谐等功能。先进的数字架构使变量输入增益可编程,可选预加重,提供了精确的MPX 立体声编码,基于PLL的低噪声调制以及纯净的频谱。QN8027凭借其体积小巧,所需外部元件数量少,并且支持多个时钟

10、频率,很容易被集成到多种小型低功耗便携式应用中。QN8027集成了稳压器使它可以直接连接电池,并提供高电源纹波抑制比可以更高效地抑制噪声。具有低功耗待机模式,能充分延长电池使用时间。所有管脚都有静电保护。QN8027应用高可靠性的CMOS制程制造。 调频接收机:在众多的FM接收模块中我们选择使用QN8035芯片为中心的模块。QN8035 是一颗高性能、低能耗、全功能的立体声调频接收单芯片,主要适用于手机、MP3播放器及便携式收音机等。QN8035支持RDS/RBDS数据接收。接收射频信号首先由一个低噪声放大器,然后向下转换为一个中间频率传给正交混频器。为了改善音质,抑制噪音,正交混频器可被编程

11、在高端或低端注入。每个通道使用滤波器抑制干扰信号。它还可以接收RDS信息,内容可以通过LCD显示。高功率32负载音频输出,直接耳机驳接,无需外接音频放大,图1.2 基于QN8027、QN8035无线收发系统设计框图。FM射频放大话筒8027前置放大单片机8035音频功放扬声器单片机图1.2 基于QN8027、QN8035无线数字对讲系统设计框图综上比较两种方案,考虑系统的便携性,效率以及成本问题nRF401虽然可以符合设计要求,所需外围较少,可直接与串口相接,但是QN8035开发板每个管脚可以用跳线引出,接线方便,QN8027应用高可靠性的CMOS制程制造,更加适合本设计的要求,因此采用方案二

12、来实现这个系统。第2章 接收模块设计2.1接收模块硬件设计2.1.1 FM接收电路设计QN8035 是一颗高性能、低能耗、全功能的立体声调频接收单芯片,主要适用于手机、MP3播放器及便携式收音机等。QN8035支持RDS/RBDS数据接收。支持全球 FM 波段发射;76 MHz 108 MHz全波段调步长50/100/200 kHz;50/75s 去加重;易于集成;小封装,提供 2.5 x2.5mm QFN16 和 3x3 MSOP10两种封装;支持32.768 kHz MHz的时钟输入;I2C控制接口;低功耗;典型值 13 mA;VCC: 2.75.0V,集成稳压器,可直连电池;VIO: 1

13、.63.6V, VCC: 2.75.0V;省电和待机模式;极小关断电流;提供1.63.6V 数字接口;高性能;优越的灵敏度,优于 1.5VEMF;63dB 立体声信噪比, 0.03% THD;集成了音频处理 (SNC, HCC, SM);改进了自动搜台功能;L/R声道分离 45dB;RDS/RBDS 接收机;支持美国和欧洲的数据服务;稳健运行;在-250C 到 +850C 范围内运;所有输入和输出管脚都有静电保护。图2.1.1是QN8035FM接收电路框图。图2.1.1 QN8035接收电路内部图2.1.2 单片机控制电路的设计 STC89C52单片机具有以下特点:增强型8051 单片机,6

14、时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.2;工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机);工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz;用户应用程序空间为8K 字节;片上集成512 字节RAM;通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻;ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3

15、.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片;具有EEPROM 功能;具有看门狗功能;共3个16位定时器/计数器。即定时器T0、T1、T2;外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒;通用异步串行口(UART),还可用定时器软件实现多个UART;工作温度范围:-40+85(工业级)/075(商业级);PDIP 封装。图2.1.2是STC89C52RC控制QN8035的电路图。图2.1.2 STC89C52控制QN8035电路2.1.3音频放大电路的设计由于QN8035与QN8027均是双信道接收机,所以音频放大的时

16、候也要选择双信道音频放大。音频放大电路主要用来向扬声器中送去驱动信号,它可以将功率进行放大。图2.1.3是音频放大电路。图2.1.3 音频放大电路2.2 接收部分软件设计2.2.1 QN8035的源程序/*QN8035.h*/#ifndef _QN8035_H_#ifndef _QN8035_H_#include #define uint unsigned int#define uchar unsigned char/*一级指令*/#define clear 0#define turn_on 1#define turn_off 2#define action_on3 #define actio

17、n_off 4#define send_rds5#define change_fm6/*从机开关二级指令*/#define area11#define area22#define area33#define area44#define area55#define area66#define area77#define area88#define area99#define area_all10#define area_single11/*从机动作二级指令*/#define yu_cun5#define man_set4#define feng_mq3#define ji_dq2#define

18、zhi_sd1uint fm=9000; /接收频率初始值uchar vol=0x0f; /音量初始值最大sbit RSSI_ZS = P37;bit Mute_flag=1;bit RDS_flag=0; /RDS标志位extern uchar Init_Riss;extern uchar Init_Volue;extern uchar defu_mute;/定义操作QN8035数据区unsigned char idata QN8035_Send9;unsigned char idata QN8035_Read9;unsigned char idata buffer36=0,1,2,3,4,

19、5,6,7,8,9,0,1,2,3,4,5,6,7,8,9;void QN8035_delay(unsigned int count);void QN8035_Init(void);bit RDS_check();void RDS_Init();unsigned char QN8035_Rssi_Read();void QN8035_Write_Freq(unsigned int Frequnt);void QN8035_Vol_Set(unsigned char ucLevel);void QN8035_Mute_ctr(bit Mute_flag);void QN8035_set();un

20、signed int QN8035_Auto_Seek(unsigned int Str_Freq);unsigned int QN8035_Auto_Seek_ll(unsigned int Str_Freq);#endif/*函数功能:定义软件延时函数名:QN8035_delay入口参数:count出口参数:无*/void QN8035_delay(unsigned int count)unsigned int i,j;for(i=count; i0; i-)for(j=111; j0; j-);/*函数功能:初始化QN8035模块函数名:QN8035_Init入口参数:无出口参数:无*/

21、void QN8035_Init(void) QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x81; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x18; QN8035_Send0x01 = 0x10; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x2F; QN8035_Send0x01 = 0x90; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x

22、00 = 0x40; QN8035_Send0x01 = 0x01; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x46; QN8035_Send0x01 = 0x05; QN8035_Send0x02 = 0xD0; QN8035_Send0x03 = 0xA8; I2C_Data_Write(0x20, &QN8035_Send0, 4); QN8035_Send0x00 = 0x4A; QN8035_Send0x01 = 0x18; I2C_Data_Write(0x20, &QN8035_Send0, 2); Q

23、N8035_Send0x00 = 0x14;QN8035_Send0x01 = 0xC6; QN8035_Send0x02 = 0x00; QN8035_Send0x03 = 0x02; QN8035_Send0x04 = 0x20; I2C_Data_Write(0x20, &QN8035_Send0, 5); QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x51; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_delay(1000); QN8035_Send0x00 = 0x00; QN8035_Sen

24、d0x01 = 0x01; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x11; QN8035_Send0x02 = 0x49; I2C_Data_Write(0x20, &QN8035_Send0, 3);QN8035_delay(279);/*函数功能:读取Rssi信号,用来控制静音,防止噪音,也可实现电源控制函数名:QN8035_Rssi_Read入口参数:无出口参数:QN8035_Read0*/unsigned char QN8035_Rssi_Read()I2C_

25、selset_Read(0x20, 0x03, &QN8035_Read0, 1);/,读取Rssi信号,用来控制静音,防止噪音/return QN8035_Read0;if(QN8035_Read0-46) = Init_Riss)/理想的信号强度,开启声音,(启动电源) if(defu_mute)/静音时能 QN8035_Send0x00 = 0x14;QN8035_Send0x01 = 0x40|Init_Volue;I2C_Data_Write(0x20, &QN8035_Send0, 2);RSSI_ZS=0;defu_mute=0; else/-/信号强度不够,使能静音,关闭电源!

26、 if(!defu_mute) /没有静音 QN8035_Send0x00 = 0x14;QN8035_Send0x01 = 0xC6;I2C_Data_Write(0x20, &QN8035_Send0, 2);RSSI_ZS=1;defu_mute=1; /*函数功能:向QN8035模块写入一个频率,手动设置频率函数名:QN8035_Write_Freq入口参数:Frequnt 需要写入的频率出口参数:无*/void QN8035_Write_Freq(unsigned int Frequnt) QN8035_Send0x00 = 0x07; QN8035_Send0x01 = (Freq

27、unt - 6175)/5; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x0A; QN8035_Send0x01 = (Frequnt - 6175)/5 8) | 0x60; I2C_Data_Write(0x20, &QN8035_Send0, 2);/*函数功能:软件音量调节函数名:QN8035_Write_Freq入口参数:ucLevel 需要写入的声音大小出口参数:无*/void QN8035_Vol_Set(unsigned char ucLevel)QN8035_Send0x00=0x14;QN8035_

28、Send0x01=0x40|(ucLevel);I2C_Data_Write(0x20, &QN8035_Send0, 2);/*函数功能:手动静音控制,如果Mute_flag=1静音,否则不静音,函数名:QN8035_Mute_ctr入口参数:Mute_flag 出口参数:无*/void QN8035_Mute_ctr(bit Mute_flag)if(Mute_flag)QN8035_Send0x00 = 0x14;QN8035_Send0x01 = 0xC6;I2C_Data_Write(0x20, &QN8035_Send0, 2);elseQN8035_Send0x00 = 0x14

29、;QN8035_Send0x01 = 0x40|vol;I2C_Data_Write(0x20, &QN8035_Send0, 2);/*函数功能RDS 初始化*/void RDS_Init() QN8035_Send0x00 = 0x17; /RDS使能 QN8035_Send0x01 = 0xA0; I2C_Data_Write(0x20, &QN8035_Send0, 2);QN8035_Send0x00 = 0x00; /开启RDS QN8035_Send0x01 = 0x19; I2C_Data_Write(0x20, &QN8035_Send0, 2); bit RDS_check

30、() uchar i,j,k;uchar bian=0,old=0;i=150;while(i-) I2C_selset_Read(0x20,0x13,&QN8035_Read0x00,1);QN8035_Read0x00&=0x9f;if(QN8035_Read0x00=16|QN8035_Read0x00=144) if(old!=QN8035_Read0x00) bian+;old=QN8035_Read0x00; Delay_1ms(5); /*观测用*/wr_string(0,2,变化次数:);/wr_int(5,2,bian);if(bian3)return 1;else retu

31、rn 0;void QN8035_set()bit flag; QN8035_Init(); /QN8035初始化QN8035_Write_Freq(fm); /设置频率RDS_Init(); /RDS初始化/flag=RDS_check();/if(flag)Mute_flag=0;RDS_flag=1; /else Mute_flag=1; RDS_flag=0; /QN8035_Mute_ctr(Mute_flag);QN8035_Vol_Set(vol); /设置音量/*函数功能:QN8035模块实现自动搜索函数名:unsigned int QN8035_Auto_Seek(unsig

32、ned int Str_Freq)入口参数:Str_Freq出口参数:搜索到的频率*/unsigned int QN8035_Auto_Seek(unsigned int Str_Freq)unsigned int scan_freq,Read_Freq,Send_freq;unsigned char Freq_H;scan_freq=Str_Freq; rescan: QN8035_Send0x00 = 0x08; QN8035_Send0x01 = (scan_freq - 6175)/5; QN8035_Send0x02 = 0x9D; QN8035_Send0x03 = (scan_f

33、req - 6175)/5 6) | 0x70; I2C_Data_Write(0x20, &QN8035_Send0, 4); QN8035_Send0x00 = 0x01; QN8035_Send0x01 = 0x7D; /75 I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x10; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x12; I2C_Dat

34、a_Write(0x20, &QN8035_Send0, 2);QN8035_delay(500); I2C_selset_Read(0x20, 0x0a, &QN8035_Read0, 1); Freq_H=(QN8035_Read0&0x03); I2C_selset_Read(0x20, 0x07, &QN8035_Read0, 1); Read_Freq=Freq_H*256+QN8035_Read0; Send_freq=(Read_Freq)*5+6175; if(Send_freq=10800) scan_freq=8760; goto rescan; else return (

35、Send_freq); /*/-QN8035程序完-/*/*函数功能:QN8035模块实现自动搜索,反向收缩函数名:unsigned int QN8035_Auto_Seek(unsigned int Str_Freq)入口参数:Str_Freq出口参数:搜索到的频率*/unsigned int QN8035_Auto_Seek_ll(unsigned int Str_Freq)unsigned int scan_freq,Read_Freq,Send_freq;unsigned char Freq_H;scan_freq=Str_Freq; rescan_ll:QN8035_Send0x00

36、 = 0x08;QN8035_Send0x01 = (scan_freq - 6175)/5; QN8035_Send0x02 = 0x0D;/9d QN8035_Send0x03 = (scan_freq - 6175)/5 6) | 0x60; I2C_Data_Write(0x20, &QN8035_Send0, 4); QN8035_Send0x00 = 0x01; QN8035_Send0x01 = 0x59; I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x10;

37、 I2C_Data_Write(0x20, &QN8035_Send0, 2); QN8035_Send0x00 = 0x00; QN8035_Send0x01 = 0x12; I2C_Data_Write(0x20, &QN8035_Send0, 2);QN8035_delay(500); I2C_selset_Read(0x20, 0x0a, &QN8035_Read0, 1); Freq_H=(QN8035_Read0&0x03); I2C_selset_Read(0x20, 0x07, &QN8035_Read0, 1); Read_Freq=Freq_H*256+QN8035_Read0; Send_freq=(Read_Freq)*5+6175; if(Send_freq=8800) scan_freq=10850; goto rescan_ll; else return (Send_freq); /*/-QN8035程序完-/*2.2.2 12864源程序/*12864c.h*/设定wr为P24/设定en为P23/在main()中开输出/*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号