基于nrf24l01的无线音乐播放器设计毕业论文(编辑修改稿)内容摘要:
,这里就不具体说了,本设计需要显示歌曲目录,用数码管不好显示,用液晶 LCD12864 会使显示屏幕太大,用 LCD1602 可显示歌曲,显示模块也不会太大。 表 42 LCD1602 接口 本科毕业论文 13 5 系统软件设计 概述 系统软件设计总体思路是根据按键选择,再无线发送数据来控制音乐器播播放和歌曲的显示,主要程序模块有无线通信模块、音乐播放模块、显示模块和按键模块。 在设计各个程序模块时,需要对各个模块进行划分。 模块的划分有很大的灵活性,但也不能随意划分,模块划分时应遵循以下原则:( 1)每个模块应具有独立的功能,能产生明确的结果,这就是单模块功能的高内聚性。 ( 2)模 块间的控制耦合应尽量简单,模块间的数据耦合应尽量少,这就是模块间的低耦合性。 ( 3)模块长度适中,模块语句的长度通常在 20~ 100 条的范围较合适。 模块化程序设计是按自上而下的过程进行的,主模块即为总模块,然后是多层次的子模块。 在进行模块划分时,应首先弄清楚每个模块所需完成的功能、数据结构以及与其它模块之间的关系。 其次是对主要任务再进一步细化,把一些专用的子任务再划分给下一级即第二级子模块去完成,这时也需要清楚它们间的相互关系。 按这种方法一直细分成易于理解和实现的小模块为止。 模块说明应包括实现模块功能所用的 基本算法,模块入口算法、出口参数,模块的数据结构及调用子程序等。 一般有了层次图和模块说明后,划分模块的工作也就算完成了。 实际的应用程序一般都由一个主程序(包括若干个功能模块)和多个子程序构成,每个功能程序模块都能完成某一明确的任务,实现具体的某一功能,如显示、打印等。 采用这种模块化的程序设计方法,有下述优点:( 1)单一模块结构的程序功能单一,因而易于编写、调试和修改。 ( 2)便于分工,可有多个程序员同时编写、调试,加快软件研制进度。 ( 3)程序可读性好,便于功能扩充和版本升级。 ( 4)程序的修改可局部进行,而其 它部分则可相对保持不变。 ( 5)使用频繁的子程序可以汇编成子程序库,以便于多个模块调用。 主程序设计 开始时,按发射部分的开始按键才能开始真正工作,显示模块则会显示 wele,再按上翻键或者下翻键,播放上一首歌或者下一首歌,显示模块则会显示英文歌曲名。 单片机发射部分以此调用键盘扫描子程序,无线发射程序,数据发射成功后再返回程序开头循环运行,其发射程序流程图如下: 本科毕业论文 14 图 47 发射程序流程图 单片机接收部 分先调用无线接收程序,数据收到后产生一个外部中断,由单片机的主程序读取接收数据,再做判断是否要调用音乐程序、显示程序。 其中断程序主要是接收到数据后,把数据写入接收缓冲区,再开外部中断。 其接收部分流程图如下: Y 开始 程序初始化 有键按下。 赋值 txbuf[0] 数据发送 清空缓冲 置 txbuf[0]=0x00 数据发完。 N Y N 本科毕业论文 15 图 48 接收程序流程图 无线通信程序 两个模块要通信时,一个要设为发送,另一个接收。 无线通信模块与单片机之间的数据传输是模拟 SPI总线的。 SPI 总线系统是一种同步串行外设接口,它可以使 MCU 与各种外围设备以串行方式进行通信以交换信息。 外围设置 FLASHRAM、 LCD 显示驱动器、 A/D 转换器和 MCU 等。 SPI 总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用 4 条线 : 串行时钟线( SCK) 、 主机输入 /从机输出数据线 MISO、 主机输出 /从机输入数据线 MOSI和低电平有效的从机选择线 SS(有的 SPI 接口芯片带有中断信号线 INT、有的 SPI 接口芯片没有主机输出 /从机输入数据线 MOSI)。 SPI 的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多Y 开始 程序初始化 Temp=0xfc 读取 temp 数据 t 歌曲开始处理 N N 歌曲结束处理 播放上一首 播放下一首 Temp=0xfd Temp=0xff Temp=0xfe Y Y Y N N 读取接收缓冲期值写入到 rx_buf 清除状态标志和缓冲区 赋值 temp=rx_buf[0], 开 外部中断 外部中断程序处理 本科毕业论文 16 个从设备,需要至 少 4 根线,事实上 3 根也可以(用于单向传输时,也就是半双工方式)。 也是所有基于 SPI 的设备共有的,它们是 MOSI(数据输入), MSIO(数据输出), SCK(时钟), CSN(片选)。 ( 1) MOSI– 主设备数据输出,从设备数据输入 ( 2) MISO– 主设备数据输入,从设备数据输出 ( 3) SCLK – 时钟信号,由主设备产生 ( 4) CSN – 从设备使能信号,由主设备控制 其中 CSN 是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。 这 就允许在同一总线上连接多个 SPI 设备成为可能。 接下来就负责通讯的 3 根线了。 通讯是通过数据交换完成的,这里先要知道 SPI 是串行通讯协议,也就是说数据是一位一位的传输的。 这就是 SCK 时钟线存在的原因,由 SCK提供时钟脉冲, MOSI, MISO 则基于此脉冲完成数据传输。 数据输出通过 MISO 线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。 完成一位数据传输,输入也使用同样原理。 这样,在至少 8 次时钟信号的改变(上沿和下沿为一次),就可以完成 8 位数据的传输。 下两副图为 SPI 的读写操作。 图 49 SPI 读操作 图 410 SPI 写操作 通信程序基本上是将单片机数据写入无线模块或者读取无线模块内的数据,在接收部分,无线模块接收到数据后其 IRQ 引脚产生一个低电平,这样,把 IRQ 引脚接到单片机外部中断脚就可以利用中断法来读取数据,提高单片机工作效率。 下面为中断设置,详细程序说明见附录程序。 EA=1。 //中断开启 ET0=1。 //允许定时器 TO IT0=0。 //外部中断为低电平触发 本科毕业论文 17 EX0=1。 //允许外部中断 0 PX0=1。 //外部中断 0 为高优先级 音乐程序 要产生音频脉冲,只要算出某一音频的脉冲( 1/频率),然后将此周期除以 2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就 将输出脉冲的 I/O 反相,然后重复计时此半周期的时间再对 I/O 反相,就可以在 I/O 脚上得到此频率的脉冲。 利用STC80C52RC 的内部定时器使其工作在计数器模式 1 下,改变计数值 TH0 及 TL0 以产生不同频率的方法如下: 例如,频率为 523Hz, 其周期 为 1/523 s=1912us, 因此只要令计数器计时 956us/1us=956,在每计数 956 次时就将 I/O 反接,就可得到中音 DO( 532Hz)。 计数脉冲值与频率的关系公式如下: N=Fi/2/Fr ( N:计数值, Fi:内部计时一次为 1uS,故其频率为 1MHz, Fr:要产生的频率 ) 其计数值的求法如下: T=65536N=65536Fi/2/Fr C 调个音符频率与计数值 T 的对照 表 如下表所示: 表 43 C 调个音符频率与计数值 T 的对照 表 每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍,下表为节拍码的对照。 但如果 1 拍为 秒, 1/4 拍是 秒,只要设定延迟时间就可求得节拍的时间。 假设 1/4 节拍为 1DELAY,则 1 拍应为 4DELAY,以此类推。 所以只要求得 1/4拍的 DELAY 时间,其余的节拍就是它的倍数,如下表为 1/4 和 1/8 节拍的时间设定 及 各调本科毕业论文 18 节拍的时间设定表。 表 44 节拍码对照表 1/4 节拍 1/8 节拍 曲调值 DELAY 曲调值 DELAY 调 4/4 125 毫秒 调 4/4 62 毫秒 调 3/4 187 毫秒 调 3/4 94 毫秒 调 2/4 250 毫秒 调 2/4 125 毫秒 表 45 各调节拍的时间设定表 下面再说明如何建立音乐代码库: ( 1)先建立 频率 半周期数据表 ,即单片机定时器的取值表,如下: 定时器高八位的取值表 code unsigned char FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, //低音 1234567 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, //高音 234567 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, //超高音 1234567 }。 定时器低八位的取值表 code unsigned char FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,//低音 1234567 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,//高音 234567 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,//超高音 1234567 }。 ( 2)再建立音乐数据表 以世上只有妈妈好为例来说明,如下: 本科毕业论文 19 code unsigned char sszymmh[] = { 6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 5, 2, 1, //一个音符有三个数字。 前为第几个音、中为第几个八度、后为时长(以半拍为单位)。 //6, 2, 3 代表:6 , 中音 , 3个半拍。 0, 0, 0}。 //0, 0, 0,代表歌曲播放结束; (3)通过公式设定就可读出频率值,从而发出声音。 如下所示: k = sszymmh[i] + 7 * sszymmh[i + 1] + 6 //第 i个是音符 , 第 i+1 个是第几个八度 timer0h = FREQH[k]。 //从数据表中读出频率数值 timer0l = FREQL[k]。 //实际上 , 是定时的时间长度 time = sszymmh[i + 2]。 //读出时间长度数值 i += 3。 song()。 //发出一个音符 该 song()就是把频率数值表赋值给计数,计数一到就中断即可。 下图为音乐程序流程图。 图 411 音乐程序流程图 Y N 开始 设置定时器 T1 和延迟时间 time 音乐表为 0 启动定时器 T1 结束 定时器 T1 中断关闭 取反 设置定时 器,开定时器中断 延时 time 个 半拍 关闭定时器 T1 定时器中断程序 本科毕业论文 20 键盘 输入程序 在本设计中, 发射模块 电路开始工作时,不断地扫描 P2 口 判断是否有键按下,图 42为键盘程序流程图。 图 412 键盘程序流程图 LCD 显示程序设计 作为人机借口的显示设备 LCD,在本设计中可以显示歌曲名称,由于 1602 只能 同时显示 16x2 即 32 个字符 ,而且显示中文字体也不好,所 以本设计就直接显示歌曲的拼音,且调用也方面。 否 有键按下 程序返回 是 调用按键扫描子程序 按键处理 开始 本科毕业论文 21 6 系统调试 调试工作可分硬件调试和软件调试两个部。基于nrf24l01的无线音乐播放器设计毕业论文(编辑修改稿)
相关推荐
信和无线通信两大类,有线通信主要基于局域网技术、嵌入式技术、电力线载波技术、公用电话网无线通信以往则主要用数字电台进行远距离传输。 有线通信的优点在于传输的质量比较可靠,实时性比较好,但是有线网络的安装和维护非常困难,为数据采集而架设有线网络的一次性投资较大。 数字电台可以解决安装和维护的问题,但是传输距离有限,信号的质量较低非常容易衰减,并且需要向无线通信委员会申请频点。
部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。 并且完全能够满足无线小车控制系统和 L298N 芯片的逻辑供电的供电需要。 7805 芯片有 3 个引脚, 7 分别为输入 IN 端、输出 OUT 端和接地 GND 端,通常情况下可以提供 的电流,在散热足够的情况下可以提供大于 的电流。 7805 芯片的输入电压可以为 9V、 12V、 15V不等,输出电压稳定在 5V
3)当 NRF905 模块检测到与接收频率相同的载波时,设置载波检测管脚( CD 管脚)为高电平;( 4)当 NRF905 模块接收到有效的地址时,设置地址匹配管脚( AM 管脚)为高电平;( 5)当一个正确的数据包接收完毕后, NRF905 模块自动去掉数据包的字头、地址和 CRC 校验码,然后将数据接受完成管脚置为高电平;( 6)微控制器将 TRX_CE 设置为低电平;( 7)微控制器通过
了 用生物电阻抗来 分析人体 组成 成分的有效性 和 可行性。 但 在 单一 的 频率 成分 下, 获得的生物信息不多,并不能满足测量的 要求 【 22】。 在国内,刘静明等人也做了相关实验 【 23】。 随着生物电阻抗 技术 研究的发展,有人提出了单频的分时测量思路,用两个或者两个以上频率的信号做激励源对生物电阻抗的信息进行提取, Warsaw 理工大学的 以及 等学者 研制出了多频率 BIS
学士学位论文 6 来访问的应用程序。 虽然 servlet 可以对任何类型的请求产生响应,但通常只用来扩展 Web 服务器的应用程序。 加载和实例化 Servlet。 这项操作一般是动态执行的。 然而, Server 通常会提供一个管理的选项,用于在 Server启动时强制装载和初始化特定的 Servlet。 Server 创建一个 Servlet 的实例第一个客户端的请求到达
a Server Pages)是由 Sun Microsystems 公司倡导 , 许多公司参与一起建立的一种 动态网页 技术标准。 JSP 技术有点类似 ASP 技术,它是在传统的网页 HTML 文件 (*.htm,*.html)中插入 Java 程序段 (Scriptlet)和 JSP 标记(tag),从而形成 JSP 文件 (*.jsp)。 用 JSP 开发的 Web 应用是跨平台的