51单片机FM收音机课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微处理器系统综合设计51单片机FM收音机课程设计报告姓名:朱洪涛学号:311309020430学院:计算机科学与技术学院班级:通信13041微处理器系统综合设计1设计要求51单片机FM收音机分为硬件电路和程序设计两个方面。从硬件电路来说,主要是实现所需电压值、稳压、搜台、控制和频率显示等方面;从系统程序来说,主要是通过软件来实现RDA5807模块的功能,最后将程序经过编译后所生成的后缀为.HEX的文件烧录到单片机芯片中,使用IIC总线方式调台,并且得到当前的频率,处理并实现频率转换、显示。2项目概述2.1主要功能该项目实现的主要功能及参数:(1)采用液晶作为显示器。(2)可接收87.5~108MHz范围内的调频广播电台。(3)立体声,耳机输出声音。(4)按键可实现音量调节和自动搜台两个功能。2.2设计方案项目采用“电子积木+底板”的形式,通过电子积木拼接,实现项目功能。主要积木包括:51单片机核心板、独立按键模块、FM模块、LCD1602液晶模块。系统框图2微处理器系统综合设计51单片机FM收音机实物图初始化LCD显示初始值检测是否有按键按下模块进行搜索频道和音量的相关变化LCD显示当前频率值和音量值结束程序框图3微处理器系统综合设计3硬件电路FM接收模块该模块采用RDA5802E芯片为核心的,新一代数字调频收音机模块。具有比传统模拟制式收音机模块更突出的性能表现,音质极佳,噪音极少,功耗更低,集成度高,接收灵敏度高、中频选择性好、通用I2C总线控制、外围应用元件少、噪声系数低。创新平台底板该底板采用标准定位孔的设计,并集成有5V直流电源接口及自锁电源开关、3.3V电源、8路LED显示、外接接口拓展等。在课程设计中,为各模块提供固定、供电和接口转换功能。51单片机核心模块4微处理器系统综合设计51单片机核心板即CORE51-BOARD模块。该模块为51单片机最小系统板,采用标准定位孔的设计,支持JTAG和串口两种下载方式,四组I/O口全部引出,可广泛用于单片机基础学习和电子创新等电子电路的微控制系统。LCD1602液晶模块LCD1602液晶模块,即LCD1602-BOARD板。该模块以工业液晶LCD1602为核心,采用标准定位孔的设计,在原有液晶的基础上增加了背光控制功能。该模块能够同时显示2行16列共计32个字符。8位独立按键模块本模块共8个独立按键,分别分为“上”、“下”、“左”、“右”键和A、B、C、D四个功能键,每个按键对应一个输出端口。输出端默认高电平,当对应按键按下时,输出低电平。4软件程序4.1程序流程本项目采用C51语言开发,在集成开发环境KEIL中编写完成。5微处理器系统综合设计(1)初始化开机后,完成的初始化包括:1、串口初始化。串口初始化之后,可通过printf语句通过串口打印信息。可以作为程序调试的方法。2、液晶初始化。液晶LCD1602初始化,并显示“开机界面”,然后再清屏。(2)主循环1、显示当前频率及音量信息。调用Lcd_Display(),根据变量frequency及volume显示。2、根据键值,执行相应程序。如果4个按键有按下的,分别会执行:自动搜台加减和音量加减。4.2主要函数(1)库函数I2C.h该文件包括了I2C总线驱动的一些基本函数。主要包括:1、I2C启动函数,I2C_start();2、I2C停止,I2C_stop();3、写单字节,I2C_write_byte(unsignedcharindata);4、读单字节,I2C_read_byte(unsignedcharack)。(2)LCD1602液晶驱动液晶LCD1602的驱动主要由:1、测试LCD遇忙检测,BOOLlcd_bz();2、写入指令数据到LCD,voidlcd_wcmd(BYTEcmd);3、设定显示位置,voidlcd_pos(BYTEpos);4、写入字符显示数据到LCD,voidlcd_wdat(BYTEdat);5、LCD初始化设定,voidlcd_init()。几个构成,调用时,通过下面例程,实现显示。lcd_pos(0x00);//设定显示位置为:第一行第一个for(i=0;i16;i++){lcd_wdat(logo1[i]);6微处理器系统综合设计}(3)FM模块相关函数FM模块与单片机通过I2C总线通信,相关函数有:1、写数据,RDA5807_write_reg(void);2、读数据,RDA5807_read_reg(uchar*buff);3、自动搜台,RDA5807_FM_seek(void);4.3主程序/********************************************************************************程序功能:FM收音机功能,其中,T,D键为频率设置,L,R键为音量设置*硬件连接:1.LCD1602,P0接D0-D7,RS-P2.2,RW-P2.1,E-P2.22.FM模块,SDA-P3.7,SCL-P3.63.按键:T-P1.3(自动搜索频率加),D-P1.2(自动搜索频率减)L-P1.1(音量加),R-P1.0(音量减)*******************************************************************************/#includereg52.h#includestdio.h#includestdlib.h#includestring.h#includeintrins.h#includerda5807.h#includedelay.h#includelcd1602.h#defineucharunsignedchar#defineuintunsignedint#defineGPIO_DIGP2sbitK1=P1^3;//K1接P1.3口,自动搜索频率加sbitK2=P1^2;//K2接P1.2口,自动搜索频率减sbitK3=P1^1;//K3接P1.2口,音量加sbitK4=P1^0;//K4接P1.0口,音量减sbitled1=P1^7;//led灯1sbitled2=P1^6;//led灯2sbitvoice=P1^4;//蜂鸣器接口/****************数码管**********************/7微处理器系统综合设计charled_mod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管显示编码unsignedchardistab[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};charled_bit[]={0x07,0x0B,0x0D,0x0E};/*位选信号编码*/unsignedintDisplayData[4]={0,0,0,0};//**************************************************************//串口初始化voidUART_init(){TMOD=0x20;//定时器1工作于8位自动重载模式,用于产生波特率TH1=0xFD;//波特率9600TL1=0xFD;SCON=0x50;//设定串行口工作方式PCON&=0xef;//波特率不倍增TR1=1;//启动定时器1IE=0x0;//禁止任何中断TI=1;}/***********************************************/voiddelay1ms(unsignedintms){unsignedchark;while(ms--){for(k=0;k120;k++);}}/*************蜂鸣器************************/voidring(){inti;for(i=0;i100;i++){voice=0;//蜂鸣器开delay1ms(1);voice=1;//蜂鸣器开delay1ms(1);}}//**************************************************************//主函数voidmain(void)8微处理器系统综合设计{unsignedlongfrequency=87000;//设置当前频率为87MHZunsignedintvolume=9;//设置当前音量值为9UART_init();printf(UARTtest!\n);lcd_init();displogo();delayms(10000);lcd_init();RDA5807_power();while(1){led1=1;led2=1;Lcd_Display(frequency,volume);show(frequency);if(K1==0)//自动搜索频率加{led1=0;delayms(20);if(K1==0){ring();while(K1==0);RDA_reg_data[0]|=(11);//SEEKUPfrequency=RDA5807_FM_seek();printf(frequency:%ld\n,frequency);}}if(K2==0)//自动搜索频率减{led1=0;delayms(20);if(K2==0){ring();while(K2==0);RDA_reg_data[0]&=~(11);//SEEKDOWN9微处理器系统综合设计frequency=RDA5807_FM_seek();printf(frequency:%ld\n,frequency);}}if(K3==0)//音量加{led2=0;delayms(20);if(K3==0){ring();while(K3==0);if((RDA_reg_data[7]&0x0f)0x00){RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA_reg_data[3]&=~(14);RDA_reg_data[7]--;//音量递减RDA5807_write_reg();volume=RDA_reg_data[7]&0x0f;printf(volume:%d\n,volume);}}}if(K4==0)//音量减{led2=0;delayms(20);if(K4==0){ring();while(K4==0);if((RDA_reg_data[7]&0x0f)0x0f){RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;10微处理器系统综合设计RDA_reg_data[3]&=~(14);RDA_reg_data[7]++;RDA5807_write_reg();volume=RDA_reg_data[7]&0x0f;printf(volume:%d\n,volume);}}}}}//***************************************************************5拓展功能在本项目的基础上增加功能,参考FM收音机设计,可用数码管直接显示当前频率。数码管显示主程序如下:/********************************************************数码管显示*/voidshow(unsignedlongf){unsignedinti;unsignedintj;DisplayData[0]=f/100000;//取百位DisplayData[1]=(f%100000)/10000;//取十位DisplayData[2]=((f%100000)%10000)/1000;//取个位DisplayData[3]=(((f%100000)%10000)%1000)/100;//取小数点后一位i=0;while(i4){P

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功