大学生毕业设计-基于TEA5767和单片机的数字FM收音机设计_第1页
大学生毕业设计-基于TEA5767和单片机的数字FM收音机设计_第2页
大学生毕业设计-基于TEA5767和单片机的数字FM收音机设计_第3页
大学生毕业设计-基于TEA5767和单片机的数字FM收音机设计_第4页
大学生毕业设计-基于TEA5767和单片机的数字FM收音机设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

摘要本设计是一个数字调频收音机〔FM〕,就是接受频率调制的无线电信号,经过解调复原成原信号的电子设备,利用单片机控制有FM功能的专用芯片,设计一个基于TEA5767模块的数字FM收音机。本设计采用模块化设计,整个系统由控制模块,FM音频模块和功放模块组成。本设计核心采用的是TEA5767芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。TEA5767芯片内集成了完整的IF频率选择和鉴频系统,就可实现FM收音机的全部功能。采用的是Lcd1602液晶显示屏,实现单片机的频率值与模块内部的存放器〔PLL值〕之间的相互转换,从而带动功放的工作。功能:自动收台,手动收台,液晶显示。采用主要模块有:STC89C52单片机模块。Lcd1602显示模块。TEA5767收音机模块。关键词:STC89C52Lcd1602TEA5767模块目录摘要...........................................................21.绪论.........................................................51.1课题背景.....................................................51.2课题概述.....................................................52.设计要求与思路...................................................52.1收音机的设计要求.............................................52.2系统设计整体思路.............................................53.主要电路模块的实现方案比拟及选择.................................63.1控制模块方案选择.............................................73.2液晶显示模块方案选择.........................................73.3无线芯片方案选择.............................................74.系统电路图.......................................................84.1微控制器模块.................................................84.2FM模块.......................................................94.2.1FM模块介绍...............................................94.3工作原理....................................................104.3.1串行总线工作模式........................................104.3.2串行总线根本操作........................................104.3.3数据传送................................................124.3.4、三线总线工作模式.......................................125.系统软件设计....................................................135.1主程序设计..................................................135.2流程图......................................................146.硬件电路测试与检测..............................................146.1硬件装配....................................................146.2系统测试....................................................147.结束语..........................................................158.参考文献........................................................159.致谢............................................................1510.附录...........................................................1610.1电路原理图.................................................1610.2电路PCB图.................................................1610.3电路实物图.................................................1710.3元器件清单.................................................1811.操作框图.......................................................19程序框图.......................................................2012.程序...........................................................2112.1主程序.....................................................2112.2I2C总线....................................................2612.3Lcd1602程序................................................29基于TEA5767模块的数字FM收音机设计一.绪论1.1课题背景随着科学技术的不断开展,新颖的调频收音机的不断出现,技术不断的提高,设计出来的收音机外型精致和小巧。从别离元件到集成电路,这标志着收音机的内部电路简单。用一个集成块就能完成所有的工作。从早期的调幅收音机到现在的调频收音机,我们可以想象收音机的不断的改良和不断创新,使收音机的开展空间愈来愈大。现在,出现了新一代高科技产品——数字调频收音机,功能强大,性能优良,设计精巧耐用。1.2课题概述收音机的接收原理就是把从天线接收到的高频信号经检波〔解调〕复原成音频信号,送到耳机变成音波。由于播送事业开展,天空中有了很多不同频率的无线电波。如果把这许多电波全都接收下来,音频信号就会象处于闹市之中一样,许多声音混杂在一起,结果什么也听不清了。为了设法选择所需要的节目,在接收天线后,有一个选择性电路,它的作用是把所需的信号〔电台〕挑选出来,并把不要的信号“滤掉〞,以免产生干扰,这就是我们收听播送时,所使用的“选台〞按钮。选择性电路的输出是选出某个电台的高频调幅信号,利用它直接推动耳机〔电声器〕是不行的,还必须把它恢复成原来的音频信号,这种复原电路称为解调,把解调的音频信号送到耳机,就可以收到播送。二.设计要求与思路2.1收音机的设计要求:可对无线接收机的频率进行控制。通过键盘可以设置接收频率,接收频率在88-108MHz内自选20M的带宽。2.2系统设计整体思路〔1〕硬件局部:整体由52单片机控制,组成由液晶显示屏、功放模块、TEA5767收音机模块、按键。如下列图所示:图为:系统方案设计框图三、主要电路模块的实现方案比拟及选择AM:改变载波的振幅称振幅调制。AM是指对信号进行幅度调制。一般做法就是先在原信号上叠加一个直流信号以保证信号f(t)+A>0,然后乘上一个高频的余弦信号,即得到g(t)=[f(t)+A]coswt。在频域上的效果就是将原信号的频谱移动到w处,以适合信道传输的最正确频率范围。g(t)的包络线即f(t)+A,用一个简单的包络检测电路就可以接收并复原信号了。FM:改变载波的频率称频率调制。音频信号的改变往往是周期性的。与“FM无线电波〞相同,“FM合成理论〞同样也有着发音体〔载体〕和调制体两个元素。发音体或称载波体,是实际发出声音的频率振荡器;调制体或称调制器.本次方案选用的是FM调制。理由有以下几点:在同样的频率、功率等条件下,用调频方式传输信号比调幅方式要远得多。因为调幅方式的载频电平要高出噪声电平三四十分贝才能得到良好的图像指标,而调频方式只要高出噪声电平几分贝即可。调频比调幅抗干扰能力强:外来的各种干扰、加工业和天电干扰等,对已调波的影响主要表现为产生寄生调幅,形成噪声。调频制可以用限幅的方法,消除干扰所引起的寄生调幅。而调幅制中已调幅信号的幅度是变化的,因而不能采用限幅,也就很难消除外来的干扰。另外,信号的信噪比愈大,抗干扰能力就愈强。而解调后获得的信号的信噪比与调制系数有关,调制系数越大,信噪比越大。由于调频系数远大于调幅系数,因此,调频波信噪比高,调频播送中干扰噪声小。调频波比调幅波频带宽。3.1控制模块方案选择:方案:控制核心选择STC89C52单片机,该单片机有一个8位的微处理器,与通用的微处理器根本相同,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。优势为结构简单,价格不高,易于购置。缺点为缺少AD转换功能,运行速度较慢。由于方案的单片机使用较为广泛,功能较为了解。故采用此方案作为控制模块。3.2液晶显示模块方案选择:方案:用Lcd1602显示屏,该显示屏具有2行16个字符。Lcd1602具有体积小、重量轻、功耗低、寿命长、无辐射、无污染等优点,低压、微功耗极低的工作电压,只要2V-3V即可工作,而工作电流仅几个微安即每个显示字符只有几个微安。优势为结构简单,价格不高,易于购置。实际中应用到的时机比拟大。通过自己所掌握的知识与能力,由于对Lcd1602的使用比拟了解。故采用此次模块。3.3无线芯片方案选择:TEA5767芯片,通过I2C接口与单片机进行通信。单片机按键对TEA5767进行初始化输入接收频段的频率,TEA5767内部对信号滤波、放大、解调处理,输出信号经过功放进行放大,插上耳麦即可收听到电台节目,接收频率为87M~108MHz。方案〔1〕采用无线芯片TEA5767,自己设计外围电路。方案〔2〕采用相关厂家生产的TEA5767模块来实现。很显然,第一种方案需要自己设计电路、画PCB和焊接,而TEA5767采用的是FVQFN40〔耐热的薄型四脚扁平封装〕封装,在短时间内和有限的条件下实现硬件功能的难度相当大。所以本设计采用第二种选择方案——使用现成的模块。四、系统电路图4.1微控制器模块单片机是控制单元的核心,起着控制收音机所有运行状态的作用。单片机控制模块使用的是STC89C52,使用该芯片很容易实现对其他模块的控制。通过对单片机STC89C52写入程序,可以方便的用软件来控制整个过程。STC89C52单片机,支持USB口或者是串口两种下载程序方式,不用另买烧写器,编程器等产品,可以方便的烧写程序到单片机里;单片机内部有P0、P1、P2、P3个八位双向I/O口,外设与这些端口可以直接相接,无需另外的接口芯片。P0-P3既可以按字节输入或输出,也可以按进位进行输入输出,共32条口线,其控制十分灵活方便。单片机特点:集成度高,体积小,可靠性高〔2〕控制功能强〔3〕低电压,低功耗〔4〕性价比高图4.1单片机最小系统P1口负责控制LCD液晶显示。通过软件模拟SPI总线控制显示内容。P2.6接TEA5767模块的DAT线。P2.7接TEA5767模块的CLK线。RET接复位端的RST P3.0接下载线的RXDP3.1接下载线的TXDP3口负责扫描按键。P3.2接按键1。P3.3接按键2。P3.4接按键3。P3.5接按键4。P3.6接按键5。P3.7接按键6。4.2FM模块图4.2FM模块原理图DAT线接微控制器模块P2.6引脚。CLK线接微控制器模块P2.7引脚。DAT和CLK线组成IIC总线与微控制器通信。OUTL输出左声道。OUTR输出右声道。4.2.1FM模块介绍在方案设计时就已经确定FM局部采用按照datasheet推荐的应用设计电路图生产的模块。本设计FM模块采用B20C封装的完整版收音机模块,外接引脚只有10个,开发者只需要关注引脚而不需要关注模块的内部结构,开发方便简单,使用过程简单。4.3工作原理:由于TEA5767收音机模块,必须要由单片机通过控制总线向芯片内的存放器写入控制字才能正常工作。而TEA5767收音机模块的控制总线有I2C和3-wire两种。在设计过程中,我们把模块的8脚〔MODE〕接地,因此,我们采用I2C总线方式。我们通过往单片机写入相关程序,然后通过I2C总线,实现单片机与TEA5767模块之间的双向转。利用不同的按键操作,实现频率的各种改变。在手动搜索模式下,通过按键的操作,增加〔减少〕频率值,然后通过I2C总线,传送数组到模块的存放器中,转化为内PLL值。而在自动搜索模式中,我们通过按键控制模块内部PLL值的增加〔减少〕,然后通过读取模块内部的数组,通过计算,得出频率值,显示在数码管上,以带动蜂鸣器的工作。4.3.1.串行总线工作模式:串行总线在传送数据过程中共有三种类型信号,它们分别是:开始信号,结束信号和应答信号。开始信号:CLOCK为高电平时,DATA由高电平向低电平跳变,开始传送数据;结束信号:CLOCK为高电平时,DATA由低电平向高电平跳变,结束传送数据;应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。4.3.2串行总线根本操作:⑴串行规程运用主/从双向通讯。器件发送数据到总线上,那么定义为发送器,器件接收数据那么定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件〔通常为微控制器〕控制,主器件产生串行时钟CLOCK控制总线传输方向,并产生起始条件和停止条件。DATA线上的数据状态仅在CLOCK为低电平的期间才能改变,CLOCK为高电平的期间,DATA状态的改变被用来表示起始和停止条件。参见下列图:⑵控制字节:在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符接着三位为片选位,前7位结合起来表示芯片地址位〔CS3667地址固定为1100000〕,最后一位为读写位,当为1时为读操作,为0时为写操作。如下列图所示:⑶写入模式:写入多个字节时,收到每个字节后发出一应答信号〔一个时钟长度低电平脉冲〕。控制器收到应答信号后,根据实际情况作出是否继续传递信号的判断〔也就是说是否发出传输停止信号〕。假设未收到应答信号,由判断为受控单元出现故障。写入模式时,应答信号都由被接收数据IC发出。⑷读取模式读取模式时,当IC接受到控制器发送的地址和读操作后产生一低电平脉冲应答信号后,被读IC发送第1字节数据,发送完,等待由控制芯片发出低电平脉冲应答信号,收到后继续发送第2字节数据……,在最后一个字节读操作的第9个周期,为了结束读操作,控制器必须在第9个周期时发出停止条件者在第9个始终周期内保持DATA为高电平,然后发出停止条件。4.3.3数据传送:数据序列:address,byte1,byte2,byte3,byte4,byte5address中Bit0〔LSB〕=0表示对CS3667的写操作,Bit7为每字节的最高位〔MSB〕,做为传输每字节第一位。每位数据在CLOCK下跳沿产生,一直稳定到CLOCK上升沿后,任何一个字节后发出的停止条件可以缩短传输时间。当写入数据时,在还没完成所有字节传送之前发出停止条件:1)还未被写入的字节将保持原值。2)如果第一个数据字节没有被写完,那么已写位被写入值覆盖,但不执行新的锁台信息。4.3.4、三线总线工作模式:三线总线通过控制W/R,CLOCK,DATA三信号线进行操作。最大工作时钟频率为400kHz。⑴数据传送数据序列:byte1,byte2,byte3,byte4,byte5写入信号:CLOCK为低电平时,W/R由低电平向高电平跳变,开始写入数据。读取信号:CLOCK为低电平时,W/R由高电平向低电平跳变,结束读取数据当CLOCK为低电平时,W/R由低电平向高电平跳变,开始写入数据。数据在CLOCK上升沿时必须稳定,数据可以在CLOCK低电平时变化,在紧接着的CLOCK上升沿数据被写入。更换锁台信息,在新锁台数据的前两字节传送完后,或其后字节传完后可以发出传输停止条件。当CLOCK为低电平时,W/R由高电平向低电平跳变,结束读取数据。伴随着下跳沿,BYTE1的最高位已经被读取到DATA上,被读取数据在每个CLOCK下跳沿产生,在CLOCK上升沿从总线上被读走。如果做连续的写入或者读取操作,PINW/R至少要被触发一个时钟周期。五.系统软件设计按照总体设计,收音机的控制器使用STC公司生产的单片机,因为在程序中不需要涉及精确实时操作,所以我们使用C语言进行软件编写,这样可以大大提高程序编写时的效率。程序主要是单片机主控制程序,通过不同按键的操作,经过单片机的编译、识别,来实现收音机不同功能的操作。我们设计可调频收音机时采用Keiluvision4来编译程序,再借助于串口线,下载编译完成的<C语言程序>HEX文件到单片机,接下来就要对收音机进行程序调试。5.1主程序设计:定义按键控制端口:按键控制端口:P2.0~P2.5P2.0=1时自动向上搜索频率P2.1=1时自动向下搜索频率P2.2=1时以0.01MHZ的频率增加P2.3=1时以0.01MHZ的频率减少P2.4=1时电平转换5.2流程图:六.硬件电路测试与检测6.1硬件装配设计就采用普通的万用版进行装配,在装配时要注意以下几点:〔1〕晶振局部要紧靠着芯片引脚,导线要尽量粗,在焊接时采用用焊锡铺粗来处理〔2〕电源输入一定要添加去耦电容〔3〕TEA5767模块和单片机引脚的距离尽量靠近,SDA线和CLK线业尽量铺粗。〔4〕天线安装尽量靠近芯片引脚,一定要加上匹配电容6.2系统测试硬、软件设计完成后就进入到系统测试阶段,将调试好的程序下载到单片机,插入插座,接上+5V直流电源,插上收音耳机。发现显示屏有显示设定频率,TEA5767工作正常。顺利的是,调试好的程序能够正常工作,调频按钮能够正常调整频率。经调试,系统能够搜索的频率范围为87.5~108MHz,能够接收到10~12电台,由于没有专用天线,电路板质量也不高,再加上电台本身信号强度的问题,有4~5个电台的音质效果不是很好,干扰很大。尽管有不尽人意之处,但总体设计要求已经到达,是一个成功的设计。七.结束语单片机控制的数字FM收音机的总体测试效果已经到达设计要求,是一个根本成功的设计。总结设计过程,本设计的关键是对单片机的了解,以及对TEA5767芯片的学习,进行相关操作,设定其工作参数,这个设计我学到了一下几点:能熟练阅读芯片数据手册。学会通过软件模拟I2C总线通信协议。和学期中课程设计相比,更能够注重硬件焊接中的细节问题。同时找到了自己的缺乏之处,硬件焊接过程中屡次出错,对小型元器件焊接不熟练,屡次导致短路,编程能力也有待加强,在今后的工作中要加强学习!八.参考文献[1]刘瑞新。单片机原理及应用教程[M].北京:机械工业出版社,2003.7.

[2]康华光。电子技术根底〔模拟局部〕[J].北京:高等教育出版社,2006.1.

[3]康华光。电子技术根底〔数字局部〕[M].北京:高等教育出版社,2000.1.[4]谭浩强。C程序设计[M].北京:清华大学出版社,2005.7.

[5]李朝青。单片机原理及接口技术[M].北京:北京航空航天大学出版社,1993.4[6]阮维国,黄建宇。电子技术实验[M].北京:兵器工业出版社,2006.12.九.致谢在论文结束之际,我要感谢那些在我学习过程中给予我大量帮助的老师,同学门。首先,我要感谢教育和培养我的所有老师,从他们身上,我不仅学习到了大量的珍贵知识,更学到了做人原那么。其次,我要感谢吴老师。本论文是在吴老师的指导下完成的,从论文的选题到论文的写作无不凝结的吴老师的心血。在我们设计的过程中,不断给与我们解释,分析,启发,引导等帮助。让我们补充了理论的知识和实践上的经验。在他的身上,我看到了严谨的态度和务实的精神。再次感谢吴老师严谨的工作作风和专业的学术知识,帮我克服了许多技术和理论上的困难。同时感谢我院、系领导对我们的教导和关注;感谢大学三年传授我们专业知识的所有老师。谢谢他们呕心沥血的教导。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次毕业论文的完成将变得困难。他们在我设计中给了我许多珍贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。十.附录10.1电路原理图:10.2电路PCB图:10.3电路实物图:10.4元器件清单:序号名称型号数量序号名称型号数量1排针2002电解电容100UF/16V13电容10454电容30PF25电容10UF56电容10UF57电容0.1UF18电阻10K99电阻620R110电阻4.7K811电阻220R112电阻1K113晶振12M114按键两脚按键715按键六脚按键716芯片STC89C52RC117模块TEA5767118芯片TDA2822219发光二极管120蜂鸣器PHONELACK2121插座122显示屏LCD16021十一.操作框图开始开始指示灯亮,屏幕初始化指示灯亮,屏幕初始化·按下按键5按下按键5电平改变电平改变按下按键4按下按键3按下按键2按下按键1按下按键4按下按键3按下按键2按下按键1以0.01MHZ向下减少以0.01MHZ向上增加自动向下搜索电台自动向上搜索电台以0.01MHZ向下减少以0.01MHZ向上增加自动向下搜索电台自动向上搜索电台是否搜索到台是否搜索到台是否搜索到台是否搜索到台是否搜索到台是否搜索到台是否搜索到台是否搜索到台否否否否否否否否是是是是是是是是继续继续功放发出声音,显示屏显示频率功放发出声音,显示屏显示频率停止停止结束结束程序框图开始开始开关键按下开关键按下单片机初始化单片机初始化LCD显示LCD显示N功能键是否按下N功能键是否按下Y自动搜台Y自动搜台判断按键功能判断按键功能发送命令字发送命令字手动搜台发送频率手动搜台发送频率发送命令字等待50ms发送命令字等待50ms读取TEA5767模块数据读取TEA5767模块数据发送频率发送频率是否搜索到台是否搜索到台N是否搜索到台N是否搜索到台读出频率,更新在LCD上读出频率,更新在LCD上功放发出声音功放发出声音结束结束十二.程序12.1主程序:#include<reg52.h>#include<intrins.h>#include"TEA5767.h"#include"I2C.h"#include"Lcd1602.h"///////////端口定义////////////////////////sbitKey1=P2^0;sbitKey2=P2^1;sbitKey3=P2^2;sbitKey4=P2^3;sbitKey5=P2^4;sbitKey6=P2^5; ////////////////////////////////////////////////////////////////////////////////////// #definemax_freq108000//108Mhz89800;#definemin_freq87500//87.5Mhz#definemax_pll0x339b//108MHz时的pll.#definemin_pll0x299d//87.5MHz时的pll.#defineAdd_Freq1#defineDec_Freq0#defineREFERENCE_FREQ32.768 //TEA5767晶振unsignedcharradio_write_data[5]={0x2A,0x9E,0xC0,0x17,0x00};//初始化存放器配置89.6MHZunsignedcharrdata[5]={0x2A,0x9E,0xC0,0x17,0x00};//89.6unsignedcharradio_read_data[5];unsignedintPll_Data; //定义频率unsignedlongFrequency_Data=89600;//设置初始频率为87.6MHzunsignedcharindex=1;//天线感应信号的能力,/////////////////////////////////////////////延迟程序,@12.000MHz,50ms////////voidDelay() { unsignedchari,j; i=98; j=67; do { while(--j); }while(--i);}/////////////////////////////////////////////////////////频率显示地址///////////voidLCDshow(void){ unsignedcharstr[8]; unsignedcharnum1,num2,num3,num4,num5; num1=(Frequency_Data/100000)%10; num2=(Frequency_Data/10000)%10; num3=(Frequency_Data/1000)%10; num4=(Frequency_Data/100)%10; num5=(Frequency_Data/10)%10; str[0]=num1+'0'; str[1]=num2+'0'; str[2]=num3+'0'; str[3]='.'; str[4]=num4+'0'; str[5]=num5+'0'; str[6]='\0'; LcdShowStr(0,1,str);}///////////////////////////////////////////////////读TEA5767状态,并转换成PLL值//////voidRadio_Read(void){unsignedchartemp_l,temp_h;Pll_Data=0;ATIICxx_PRead(&radio_read_data[0],5);temp_l=radio_read_data[1];//PLL值temp_h=radio_read_data[0];//PLL值temp_h&=0x3f;Pll_Data=temp_h*256+temp_l;Get_Frequency();}//////////////////////////////////////////由PLL计算频率voidGet_Frequency(void){unsignedcharhlsi;unsignedintnpll=0;npll=Pll_Data;hlsi=radio_read_data[2]&0x10;if(hlsi)Frequency_Data=(unsignedlong)((float)(npll)*(float)REFERENCE_FREQ*(float)0.25-225);elseFrequency_Data=(unsignedlong)((float)(npll)*(float)REFERENCE_FREQ*(float)0.25+225);}//由频率计算PLLvoidGet_Pll(void){unsignedcharhlsi;hlsi=radio_read_data[2]&0x10;if(hlsi)Pll_Data=(unsignedint)((float)((Frequency_Data+225)*4)/(float)REFERENCE_FREQ);//频率单位:kelsePll_Data=(unsignedint)((float)((Frequency_Data-225)*4)/(float)REFERENCE_FREQ);//频率单位:k}///////自动搜台,mode=1,频率增加搜台;mode="0:频率减小搜台"./////////voidAuto_Search(unsignedcharmode){ LcdShowStr(10,0,"Auto"); //当搜索时,显示Autoif(mode) //mode=1,自动向上搜索{ switch(index) //电平转换 { case0: radio_write_data[2]=0xA0;//低电平低本振立体声非静音 break; case1: radio_write_data[2]=0xC0;//中低电平低本振立体声非静音 break; case2: radio_write_data[2]=0xE0;//高电平低本振立体声非静音 break; } if(Pll_Data>max_pll) //当频率处于最高时, { Pll_Data=min_pll; //自动转为最低频率 }}else//向下搜索{ switch(index) { case0: radio_write_data[2]=0x20;//低电平 break; case1: radio_write_data[2]=0x40;//中低电平 break; case2: radio_write_data[2]=0x60;//高电平 break; } if(Pll_Data<min_pll) { Pll_Data=max_pll; }}//////////调用I2C总线的写模式////////ATIICxx_PWrite(&radio_write_data[0],5); Delay();//延时 Radio_Read(); LCDshow(); while(!(radio_read_data[0]&0x80))//RF电台就绪标志假设RF=1那么发现了一个电台或搜索到头;假设RF=0未找到电台{ Delay();//延时 Radio_Read(); if((radio_read_data[0]&0x40)==0x40)//搜索到头 { if(mode) { //ATIICxx_PWrite(&rdata[0],5);//初始化TEA5767(89.8Mhz) } else { //ATIICxx_PWrite(&radio_write_data[0],5);//初始化TEA5767(89.8Mhz) } } LCDshow(); } LcdShowStr(10,0,"Normal");} /////////////微调程序///////////////////////voidSearch10(unsignedcharmode){ LcdShowStr(10,0,"hand"); Delay();//延时 if(mode) { Frequency_Data+=10; if(Frequency_Data>max_freq) Frequency_Data=min_freq; radio_write_data[2]=0xA0;//低电平低本振立体声非静音 } else//向下搜索 { Frequency_Data-=10; if(Frequency_Data<min_freq) Frequency_Data=max_freq; radio_write_data[2]=0x20;//低电平,向下搜索模式 } Get_Pll(); radio_write_data[0]=Pll_Data/256; radio_write_data[1]=Pll_Data%256; radio_write_data[3]=0x17;//去噪 radio_write_data[4]=0x00; ATIICxx_PWrite(&radio_write_data[0],5); LCDshow(); LcdShowStr(10,0,"Normal");}/////////////////////////////////////////////////抖动延迟程序///////////////////voiddelay15ms(void)//误差0us{unsignedchari,j; i=30; j=43; do { while(--j); }while(--i);}///////////////////////////////////////////////////////按键功能///////////////////voidKey(){ unsignedcharstr[3]; if(Key1==0) { delay15ms(); while(Key1==0);//自动频道+ Auto_Search(Add_Freq); } elseif(Key2==0)//自动频道- { delay15ms(); while(Key2==0); Auto_Search(Dec_Freq); } elseif(Key3==0)//手动微加0.01 { delay15ms(); if(Key3==0) { Search10(Add_Freq); } } elseif(Key4==0)//手动微减0.01 { delay15ms(); if(Key4==0) { Search10(Dec_Freq); } } elseif(Key5==0)// { delay15ms(); while(!Key5); if(index<2) { index++; } else { index=0; } str[0]=index+'0'; str[1]='\0'; LcdShowStr(15,1,str); }}///////////////////////////////////////////////////屏幕初始化/////////////voidInitLCD(){ unsignedcharstr[3]; str[0]=index+'0'; str[1]='\0'; LcdInit(); LcdShowStr(0,0,"FMradio"); LcdShowStr(7,1,"MHZ"); LcdShowStr(10,0,"Normal"); LcdShowStr(15,1,str);}//////////////////////////////////////voidmain(void){ InitLCD();//屏幕设置 ATIICxx_PWrite(&radio_write_data[0],5);//初始化TEA5767(89.8Mhz) Delay(); Radio_Read();//把输入TEA5767的地址转换为频率 LCDshow(); //在屏幕上显示出来 while(1) //按键的不同操作 { Key(); }}12.2I2C总线程序:#include<reg52.h>#include<intrins.h>#include"I2C.h"/*******************************************************************//*IIC读写程序芯片型号*//*******************************************************************/sbitI2C_SCK=P0^0;/*实时时钟时钟线引脚*/sbitI2C_SDA=P0^1;/*实时时钟数据线引脚*//*******************************************************************/#defineATIIcxxDriverAddressW0xC0#defineATIIcxxDriverAddressR0xC1#define_Nop()_nop_(),_nop_(),_nop_(),_nop_(),_nop_()/*定义空指令*///1us/*******************************************************************/structbytedata_2{unsignedcharByteH;unsignedcharByteL;};unionint2byte{unsignedintIntData;structbytedata_2ByteData;};/*******************************************************************///启动I2C总线,退出时SCL为低voidI2C_Start(void){I2C_SDA=1;/*发送起始条件的数据信号*/_Nop();I2C_SCK=1;_Nop();/*起始条件建立时间大于4.7us,延时*/_Nop();_Nop();_Nop();_Nop();I2C_SDA=0;/*发送起始信号*/_Nop();/*起始条件锁定时间大于4μs*/_Nop();_Nop();_Nop();_Nop();I2C_SCK=0;/*钳住I2C总线,准备发送或接收数据*/}//*停止I2C总线voidI2C_Stop(void){I2C_SCK=0;I2C_SDA=0;/*发送结束条件的数据信号*/_Nop();/*发送结束条件的时钟信号*/I2C_SCK=1;/*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();I2C_SDA=1;/*发送I2C总线结束信号*/}//MCU等待应答位(返回0表示应答)bitI2C_WaitAck(void){unsignedcharucErrTime=200;//因故障接收方无ACK,超时值。I2C_SCK=0;I2C_SDA=1;_Nop();I2C_SCK=1;while(I2C_SDA){ucErrTime--;if(ucErrTime==0){I2C_Stop();return0;}}I2C_SCK=0;return1;}//MCU应答信号voidI2C_Ack(void){I2C_SCK=0;I2C_SDA=0;_Nop();_Nop();_Nop();_Nop();_Nop();I2C_SCK=1;_Nop();_Nop();_Nop();_Nop();_Nop();I2C_SCK=0;}//MCU发送非应答信号voidI2C_Noack(void){I2C_SCK=0;I2C_SDA=1;_Nop();_Nop();I2C_SCK=1;_Nop();_Nop();I2C_SCK=0;}voidI2C_Send_Byte(unsignedcharsendbyte){unsignedchari=8;while(i--){I2C_SCK=0;_Nop();//_Nop();if(

温馨提示

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

评论

0/150

提交评论