基于51单片机学习板的简易电子琴(26页).doc

上传人:1595****071 文档编号:37154948 上传时间:2022-08-30 格式:DOC 页数:26 大小:237.50KB
返回 下载 相关 举报
基于51单片机学习板的简易电子琴(26页).doc_第1页
第1页 / 共26页
基于51单片机学习板的简易电子琴(26页).doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《基于51单片机学习板的简易电子琴(26页).doc》由会员分享,可在线阅读,更多相关《基于51单片机学习板的简易电子琴(26页).doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-基于51单片机学习板的简易电子琴-第 26 页中国矿业大学徐海学院技能考核培训姓 名: 申鹏飞 学 号: 22120768专 业: 信息12-2班 题 目: 基于单片机的技能考核 专 题: 简易的电子琴制作,数据收发 指导教师: 有鹏 设计地点: 电工电子实验室 时 间: 2015 年 6 月 通信系统综合设计训练任务书学生姓名 申鹏飞 专业年级 信息12-2班 学号 22120768 设计日期: 2015 年 6 月 20 日 至 2015 年7 月3日设计题目:设计专题题目: 设计主要内容和要求:1. 主要内容:(1)系统硬件设计及说明(2)系统硬件设计及说明(3)单片机学习板主要功能介

2、绍(4)系统软件设计2. 功能扩展要求(1)2.4GHz射频收发芯片nRF2401及其应用(2)简易的电子琴制作的步骤和功能指导教师签字:摘要:随着电子技术的发展,电子技术与音乐的结合不断加深。由此而产生的电子琴在这种形势下,因其体积小,易于携带,经济适用,是一般家庭都能承受得了的经济投入。而且电子琴键盘操作直观易于掌握。这样对初学者,尤其对识谱的人来说是很容易弹奏的,一首简单的曲子灵感好的人甚至不用很多的练习和教师的指导就能很快的弹奏出来。这样就强烈地激发了学习者的学习兴趣,迅速地提高了电子琴的普及率。关键词:51单片机,电子琴 ,数据收发目录第一章 前言61.1 系统开发背景61.2 系统

3、开发意义6第二章 设计任务及要求7第三章 系统硬件设计及说明83.1系统组成及总体框图8第四章 单片机学习板主要功能介绍94.1AT89S52简介94.1.1功能特性:104.1.2主要性能114.1.3管脚说明114.2 LED数码管124.3显示电路134.4键盘扫描模块电路图134.5数码管显示模块电路原理图144.6电源模块电路原理图15第5章 系统软件设计165.1音乐相关知识165.2如何用单片机实现音乐的节拍165.3如何用单片机产生音频脉冲165.4系统总体功能流程图18第六章2.4GHz射频收发芯片nRF2401 模块介绍216.1芯片结构216.2引脚说明216.3工作模式

4、236.3.1收发模式236.3.2直接收发模式246.3.3配置模式256.3.4空闲模式256.3.5关机模式256.4.器件配置256.5.应用电路266.6无线音频系统27第七章 51单片机与NRF24L01模块融合28第八章 收获与总结29第九章 参考文献30附录一31附录二43第一章 前言1.1 系统开发背景随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、

5、音乐转盘以及音乐童车等等。并且可以进行一定的功能扩展。鉴于传统电子琴可以用键盘上的“k1”到“k7”键演奏从低So到高DO等7个音,从而可以用来弹奏喜欢的乐曲。1.2 系统开发意义该设计具有以下优点:(1)可以随意弹奏想要表达的音乐;(2)制作简单,成本低。第二章 设计任务及要求1. 设计51单片机最小系统,实现简易电子琴操作的电路;2. 设置至少7个按键,能发出do re mi fa sol la SI DO;能播示范曲;3. 能够调节低音、高音和中音。4.说明系统工作原理,对系统进行调试。第三章 系统硬件设计及说明3.1系统组成及总体框图硬件设计的任务是根据总体设计要求,在选择的机型的基础

6、上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。该设计要实现一种由单片机控制的电子琴,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。该设计具有11个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。键盘扫描AT89S52数码管显示扬声器播放音乐电源

7、部分图3-1 系统结构图第四章 单片机学习板主要功能介绍4.1AT89S52简介AT89S52 是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚(引脚图如图3-1所示),4k Bytes F

8、lash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。4.1.1功能特性:AT89S52是一种低功耗、高性

9、能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支

10、持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。4.1.2主要性能MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。4.1.3管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双

11、向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL

12、门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(IL

13、L)这是由于上拉的缘故。P3口也可作为AT89C52的一些特殊功能口,如下表所示:管脚备选功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输

14、入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储

15、器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。4.2 LED数码管本次毕业设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而流过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器

16、(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来。 (a)外形 (b)共阳极 (C)共阴极4.3显示电路本次毕业设计的显示电路采用LED数码管显示,由于 LED是属于电流控制器件,使用时必须加限流电阻。通过单片机查表得出数码管显示编码,传送给数码管显示,以此来实现按键与显示程序的一致性。4.4键盘扫描模块电路图对

17、键盘扫描电路的扫描方式有行扫描法和线反转法,在此次程序编写中,采用行扫描法,通过在p20p23上循环送出0扫描信号,p24p27输入按键上的高低电平信息给单片机,经处理程序,判断出是哪个开关按下,并送主程序以实现不同功能。图3-8 键盘扫描模块电路图4.5数码管显示模块电路原理图数码管显示模块核心是共阳级数码管,通过来自单片机I/O口的电平高低来点亮和熄灭数码管上的发光二极管,通过单片机送来的数码管显示编码可以在数码管上显示数字和字符,使应用人员可以很容易的理解按键按下所对应的音符。图3-9 数码管显示模块电路原理图3.4.4蜂鸣器模块电路图4.6电源模块电路原理图由于本次设计的芯片的工作电压

18、都为5V,为了排除因为电压不稳定或者不准确影响电路的工作和软件的调试,本次设计单独用LM7805设计了一个输出5V的电压的电路,如图3-11所示,其中J0为一变压器插排接口,输出电压在7.5V,为交流电压,经过整流桥进行整流,电容滤波,再经过LM7805稳压后,得到本次设计所需的5V直流电源。图3-11 电源模块电路原理图第5章 系统软件设计本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由16个音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。5.1音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高

19、低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。5.2如何用单片机实现音乐的节拍除了音符以外,节拍也是音乐的关键组成部分。节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1

20、/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(C调)具体如下表:表4-1 音乐节拍表曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms5.3如何用单片机产生音频脉冲了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非

21、常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表:表4-2 音符频率与计数值T的对照表音符频率(HZ)计数值(T值)音符频率(HZ)计数值(T值)低1DO26263628#4FA#74064860#1DO#27763737中5SO78464898低2RE29463835#5SO#83194934#2RE#31163928中6LA8806

22、4968低3MI33064021#6LA#93264994低4FA34964103中7SI96865030#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#149065198#1DO#55464633高5SO156865217中2RE58764633#5SO#166165235#2RE#62264884高6

23、LA176065252中3MI65964732#6LA#186565268中4FA69864820高7SI196765283T的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%256一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。 若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,

24、每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。 利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式(如式4-1所示)是: Nfi2fr 4-1式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi

25、2fr 例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr65536500000/fr 低音DO的T65536500000/26263627 中音DO的T65536500000/52364580 高音DO的T65536500000/1046650595.4系统总体功能流程图N定时器初始化数码管显示0主程序开始循环检测按键Y数码管显示蜂鸣器出声按键子程序流程图如下:S1键按下S2键按下S3键按下S4键按下K5键按下K6键按下K7键按下数码管显示1,并播放DO的低

26、音数码管显示2.,并播放RE的低音数码管显示3.,并播放MI的低音S13键按下数码管显示4.,并播放fa的低音数码管显示5.,并播放SO的低音数码管显示6,并播放LA的中音数码管显示7,并播放SI的中音发送键图5-2 键盘子程序第六章2.4GHz射频收发芯片nRF2401 模块介绍6.1芯片结构nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。QFN24引脚封装, 外形尺寸只有55mm。nRF2401的功能模块如图1所示。6.2引脚说明6.3工作模式nRF2401有工作

27、模式有四种: 收发模式、配置模式、空闲模式和关机模式。nRF2401的工作模式由PWR_UP 、CE、TX_EN和CS三个引脚决定,详见表2。6.3.1收发模式nRF2401的收发模式有ShockBurstTM收发模式和直接收发模式两种,收发模式由器件配置字决定,具体配置将在器件配置部分详细介绍。(1) ShockBurstTM收发模式ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。 这种做法的好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射)

28、;数据在空中停留时间短,抗干扰性高。 在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。(2) ShockBurstTM发射流程接口引脚为CE,CLK1,DATAA.当微控制器有数据要发送时,其把CE置高,使nRF2401工作;B.把接收机的地址和要发送的数据按时序送入nRF2401;C.微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;D.nRF2401的ShockBurstTM发射E.给射频前端供

29、电;F. 射频数据打包(加字头、CRC校验码);G.高速发射数据包;H.发射完成,nRF2401进入空闲状态。(3) ShockBurstTM发射流程 接口引脚为CE,CLK1,DATAA.当微控制器有数据要发送时,其把CE置高,使nRF2401工作;B.把接收机的地址和要发送的数据按时序送入nRF2401;C.微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;D.nRF2401的ShockBurstTM发射E.给射频前端供电;F. 射频数据打包(加字头、CRC校验码);G.高速发射数据包;H.发射完成,nRF2401进入空闲状态。6.3.2直接收发模式 (1)直接发送模

30、式接口引脚为CE、DATAA.当微控制器有数据要发送时,把CE置高;B.nRF2401射频前端被激活;C.所有的射频协议必须在微控制器程序中进行处理 (包括字头、地址和CRC校验码) 。(2)直接接收模式接口引脚为CE、CLK1和DATAA.一旦nRF2401被配置为直接接收模式,DATA引脚将根据天线接收到的信号开始高低变化(由于噪声的存在);B.CLK1引脚也开始工作;C.一旦接收到有效的字头,CLK1引脚和DATA引脚将协调工作,把射频数据包以其被发射时的数据从DATA引脚送给微控制器;D.这头必须是8位;E.DR引脚没用上,所有的地址和CRC校验必须在微控制器内部进行。 在直接收发模式

31、下,nRF2401如传统的射频收发器一样工作。6.3.3配置模式在配置模式,15字节的配置字被送到nRF2401,这通过CS、CLK1和DATA三个引脚完成,具体的配置方法在后面的器件配置部分。6.3.4空闲模式nRF2401的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关,如外部晶振为4MHz时工作电流为12uA,外部晶振为16MHz时工作电流为32uA。在空闲模式下,配置字的内容保持在nRF2401片内。6.3.5关机模式在关机模式下,为了得到最小的工作电流,一般此时的工作电流

32、小于1uA。关机模式下,配置字的内容也会被保持在nRF2401片内,这是该模式与断电状态最大的区别。6.4.器件配置nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。nRF2401一般工作于ShockBurstTM收发模式,这样,系统的程序编制会更加简单,并且稳定性也会更高,因此,下面着重介绍把nRF2401配置为ShockBurstTM收发模式的器件配置方法。ShockBurstTM的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作

33、的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。ShockBurstTM的配置字可以分为以下四个部分: 数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码; 地址宽度:声明射频数据包中地址占用的位数。 这使得nRF2401能够区分地址和数据; 地址:接收数据的地址,有通道1的地址和通道2的地址; CRC:使nRF2401能够生成CRC校验码和解码。当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。 nRF2401配置字的各个位的描述如表3所示。在配置模式下,注意

34、保证PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401。在 CS引脚的下降沿,新送入的配置字开始工作。6.5.应用电路单片机与nRF2401芯片的接口电路6.6无线音频系统 nRF24Z1能够以高达1.54Mbit/s的速率处理音频流,音频数据的输入/输出、射频协议和射频连接等工作由片内的硬件完成。图1所示为使用nRF24Z1的无线音频系统的结构框图,在该系统中,只需使用简单的或低速的微控制器或DSP(数字信号处理器)即可完成系统的控制,微控制器通常通过串行口或并行口控制一些简单的任务,如音量调节等。由图可见,音频数据的传输是由一对nRF24Z1实现的,音频

35、数据最终提供给接收端的立体声DAC(数模转换器)。nRF24Z1的初始配置由微控制器通过SPI或I2S接口进行控制。在接收端,外围电路如DAC的控制可以由发送端的nRF24Z1通过控制信道进行控制1。如果设计中没有使用微控制器,则配置数据可以通过片外的EEPROM/FLASH存储器进行加载。在无线音频流处理系统中,音频数据的流向总是从声源(如CD播放器)到声宿(如扬声器)。本系统中,在声源端使用nRF24Z1进行音频数据的发送,在声宿端使用nRF24Z1进行音频数据的接收。鉴于上述的收发差异性,nRF24Z1可能通过MODE引脚设置其工作于发射器模式或接收器模式,这两种模式下,nRF24Z1片

36、内工作的模块和I/O引脚功能都有很大差异。第七章 51单片机与NRF24L01模块融合因为学习板用的是5v的USB供电,而NRF24L01 大致在1.9v-3.6v左右。所以两个之间需要连接二极管分压。最终电路如图所示第八章 收获与总结通过这次课程设计,使我加深了大一学的C编程知识的学习。让我们能够充分利用所学过的理论知识,同时也增强了自己调试、分析程序、设计聊天软件功能及页面美化的能力。通过上网查询和查阅相关书籍资料,让我知道了大量关于单片机功能及工作原理,同时体会到团队合作的重要性。从而让我更深一步提高了对VB编程的掌握,学会了做课程设计的一般步骤。通过各方面努力,本次设计任务完成,系统部

37、分功能已实现。可以随意演奏一首喜欢的曲子,并可以显示在数码管上。可以通过NRF24L01模块发送到对方,对方的蜂鸣器也能相应的聆听音乐。基本达到预定的效果。毕业设计是专科学习阶段一次非常难得的理论与实践相结合的机会,通过这次系统的项目设计提高了我运用所学的专业基础知识来解决面临实际问题的能力第九章 参考文献1 赵鑫,蒋亮,齐兆群数字电路设计M北京机械工业出版社,2005年 6月第一版2 苏家健,曹柏荣,汪志锋单片机原理及应用技术M高等教育出版社3 李朝青单片机原理及接口技术M北京:北京航天航空大学出版色,20014 胡汉才单片机原理及其接口技术M北京:清华大学出版社,2004 5 张靖武,周灵

38、彬单片机原理、应用与PROTEUS仿真,20088 6 百度文附录一 基于51单片机简易电子琴音乐设计程序如下#include #include #define uchar unsigned char#define dispseg P0#define dispbit P2#define TX_ADR_WIDTH 5 / 5字节宽度的发送/接收地址#define TX_PLOAD_WIDTH 1 / 数据通道有效数据宽度sbit beer=P25;/蜂鸣器int num,count;uchar keyvalue;uchar temp_TL0;uchar temp_TH0;int code lab

39、=63826,63835,64021,64103,64260,64400,64524,64580;unsigned char code showtab= 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0x88,/*A*/ 0x83,/*b*/ 0xC6,/*C*/ 0xA1,/*d*/ 0x86,/*E*/ 0x8E,/*F*/unsigned char code showbit=0xf7,0xfb,0xfd,0xfe;u

40、char code TX_ADDRESSTX_ADR_WIDTH = 0x34,0x43,0x10,0x10,0x01; / 定义一个静态发送地址uchar RX_BUFTX_PLOAD_WIDTH;uchar TX_BUFTX_PLOAD_WIDTH;/uchar DATA = 0x01;uchar key;uchar bdata sta;sbit RX_DR = sta6;sbit TX_DS = sta5;sbit MAX_RT = sta4;bit transflag;函数: init_io()描述: 初始化IOvoid init_io(void)CE = 0; / 待机CSN = 1

41、; / SPI禁止SCK = 0; / SPI时钟置低IRQ = 1; / 中断复位dispbit = 0xff;/ 关闭指示灯void delayus(unsigned char us)/delay us while(-us);函数:delay_ms()描述: 延迟x毫秒void delayms(unsigned char ms)/delay Ms while(-ms) delayus(250); delayus(250);函数:SPI_RW()描述: 根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01读出一字节uchar SPI_RW(uchar byte)uchar

42、i; for(i=0; i8; i+) / 循环8次 MOSI = (byte & 0x80); / byte最高位输出到MOSI byte = 1; / 低一位移位到最高位 SCK = 1; / 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据 byte |= MISO; / 读MISO到byte最低位 SCK = 0; / SCK置低 return(byte); / 返回读出的一字节函数:SPI_RW_Reg()描述: 写数据value到reg寄存器uchar SPI_RW_Reg(uchar reg, uchar value)uchar status; CSN = 0; / CSN置低,开始传输数据 status = SPI_RW(reg); / 选择寄存器,同时返回状态字 SPI_RW(value); / 然后写数据到该寄存器 CSN = 1; / CSN拉高,结束数据传输 return(status); / 返回状态寄存器函数:SPI_Read()描述: 从reg寄存器读一字节uchar SPI_Read(uchar reg)uchar reg_val; CSN = 0; / CSN置低,开始传输数据 SPI_RW(reg); / 选择寄存器 reg_val = SPI_RW(0);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁