多功能智能播放器-控制程序设计_第1页
多功能智能播放器-控制程序设计_第2页
多功能智能播放器-控制程序设计_第3页
多功能智能播放器-控制程序设计_第4页
多功能智能播放器-控制程序设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

VI1绪论1.1研究背景及意义1.1.1研究背景当前,随着科技以及社会时代的发展,人们的生活质量日益提升,除了最基本的衣、食、住、行以外,人们也越来越追求更好的生活体验,而这一点则成为了商机,使娱乐类电子产品市场日益壮大。听音乐作为人们日常生活中的主要娱乐类型之一,可以达到使人放松心情并且在工作、学习时舒缓压力等作用。而对于不满足于只用手机或者电脑听音乐的人,一个单独的音乐播放器是他们更好的选择。且随着人们对音乐追求的不断提升,多功能智能音乐播放器的用户数量也在逐渐提升,并且会成为一个稳定的消费群体。作为年青一代新鲜产品,经过这几年市场上各个厂家不断的推广,多功能智能音乐播放器正在被越来越多的人接受并使用,且相对于中老年用户的数量提升,年轻用户数量的提升尤为明显,并且还有更为广阔的用户市场等待挖掘。在Arduino开源电子原型平台出现之前,基于单片机开发平台的电子产品设计相对复杂,需要设计开发人员具有一部分电子硬件知识,并且还需要懂得相关程序才能够去进行产品设计,这使得之前想要设计一款电子产品的门槛就变得非常高,于是开发电子产品的专业人士也非常少,电子产品的发展也十分缓慢。直到Arduino开源电子原型平台的出现,使得曾经需要专业人士才能研发的新兴电子产品设计,门槛变得更低,非专业人士也可以通过一些简单的学习,即可掌握Arduino的基础使用方法,并用来制作各种新兴电子产品,其中就包括像多功能智能音乐播放器这样的电子产品。[1]1.1.2本设计的目的及意义在当前环境下,多功能智能音乐播放器有着巨大的发展潜力以及客户基数,本设计主要面向于对外接播放器有需求的客户人群,虽然目前市场上智能音乐播放器产品的开发水平以及达到了较高的水平,但是随着人们对产品要求的提高以及对新鲜感的追求,市场上的大多数电子产品的更新换代速度响应的也增快了许多。新兴电子产品能够丰富人们的生活,尤其对于年轻人,多功能智能音乐播放器既能帮他们在繁忙的生活中放松心情,在能满足他们对新鲜电子产品的追求。1.2多功能智能播放器的国内外现状目前,国外尤其是美国、日本等国多功能智能播放器技术比较成熟,美国的AppleInc.以及日本的SoryCorporation等知名企业都在开发相关产品,在播放音乐以及语音互动的层面上还加入了人工智能,让客户通过互动的方式来享受音乐,相较于国内研发时间也比较早,并且发展水平较高,更新迅速。目前国内多功能智能播放器的研发处在研发过程中,虽然研发速度不低,但是相较于国外研发起步时间较晚,研发进展也没有国外企业成熟。很难顾全音质以及多功能两方面,使用的体验也不及国外产品,但是却有着很大的发展空间以及市场,并且产品的设计会更考虑国内用户较多。随着人们的生活水平蒸蒸日上,广大消费者也更愿意去为了享受更舒适的生活而去消费,因此多功能智能播放器拥有巨大的市场以及良好的前程。也有越来越多的厂商加入到了多功能智能播放器的研发当中,其保证高音质的同时又拥有各种互动功能以及人工智能为其主要研究核心。[2]1.3多功能智能播放器的发展方向多功能智能播放器的发展方向与目前人们享受生活的方式相关,对于想要购买多功能智能播放器的人们来说,最重要的就是享受稳定的播放、良好的音质以及更智能的交互方式。因此多功能智能播放器有以下几点发展方向。更稳定的连接。由于多功能智能播放器是一个单独的外用设备,那么则需要更加稳定的连接功能,虽然是最基础的功能,但也是最重要的功能,如果能保证长时间的稳定连接,客户的体感相对会高许多。来保证它能够连接到无线Wifi以及手机等相关设备。更好的音质。良好的音质也是顾客选择多功能智能播放器的重要指标,播放器的播放音质决定了它的顾客受众面,如何在一定的价格范围内提升播放器的音质,也是目前各企业研究的首要目标。更智能的交互方式。在拥有稳定的连接方式以及良好的音质条件下,更加智能的交互方式也是顾客追求的一点,播放器可以通过连接手机来更改它的设置以及风格,同时也可以查看产品使用情况和硬件信息。1.4研究的主要内容和目标本设计选用了Arduino为开发平台,以ArduinoMega2560作为开发板,通过查阅相应的资料以及论文去学习,再通过网上寻找Arduino参考编程语句以及程序实例来进行参考学习他们的编程思路,在经过一定的学习和借鉴并打下一定的基础后,先通过完成各个基础功能的编程,再尝试一步一步将其结合在一起,不断完善程序。本设计需要完成的目标:查阅相关资料以及论文,学习Arduino编程参考语句以及学习借鉴他人的编程思路。根据所学内容及参考资料完成各个基础功能的编程。对各个基础功能的程序进行调试。尝试把调试成功的程序结合。对合并后的整个程序进行调试。分析总结编程中出现的问题,并对程序进行调整和改进。1.5论文组织结构安排第一章:绪论。描述主题研究的背景并引出本设计研究的意义,介绍国内外多功能智能播放器的发展现状,以及分析多功能智能播放器以后的房展方向,确定本设计研究的主要方向,并描述研究的主要内容及目标。第二章:开发平台及编程环境简介。介绍本设计控制程序部分所需要用到的开发平台以及编程环境,对开发平台的最终选择进行解释,并对开发平台以及编程环境的特点进行说明。第三章:多功能智能播放器的总体设计方案。对该设计的一个总体设计方案进行描述,概述本设计的设计要求,分布介绍本设计在每一阶段该如何实现。并绘制其运作流程图。第四章:多功能智能播放器的控制程序设计。对播放器能实现的功能进行详细的介绍,描述其程序思路,介绍其每一步功能如何实现。第五章:控制程序的仿真调试结果及分析。本章结合第四章设计出的程序,对控制程序和实物进行编译以及调试。第六章:结论。对本设计进行总结,描述在进行毕业设计时遇到的难点,描述其设计创新点以及不足点,并说明本次毕业设计的展望。1.6本章小结本章主要是对多功能智能播放器的背景、现状以及发展方向以及定位进行分析说明,分析了本产品的需要设计的主要内容,并且介绍了本设计中软件设计的主要过程和所要达到的目标,对论文的总体结构进行概括。

2开发平台及编程环境简介在本设计中,我们选用了Arduino作为开发平台、AduinoMega2560作为开发板,ArduinoIDE作为编程环境,并且选用了DFPlayerMP3模块、LD3320语音模块、OLED显示器模块、HC-06蓝牙模块来结合使用,完成本设计。2.1开发平台-Arduino2.1.1Arduino平台背景Arduino平台的起源则需要提到该平台的两位创始人,一位是意大利Ivrea一家高科技设计学校的老师MassimoBanzi,另一位则是西班牙籍晶片工程师DavidCuartielles,当时DavidCuartielles正巧在这所学校担当访问学者,才有了他们一起创作Arduino开发平台的故事。在以前还有一个适合学生以及初学者使用的开发平台下,MassimoBanzi的学生经常因为很难找到既便宜又适合新手使用的微控制器而感到烦恼,学生们也向MassimoBanzi老师进行了反馈,在MassimoBanzi找到DavidCuartielles并和其进行协商后,他们两人决定设计属于自己的开发平台。在制作开发平台的过程中,他们需要一种编程语言来支持对他们平台的开发,最终他们为开发平台选择并引入了MassimoBanzi的学生DavidMellis为开发板设计的编程语言。在经过一段时间研发以及调试后,他们成功研发出了满足学生们要求的电路板,并为其命名为Arduino。[3]相比于其他开发平台来说Arduino平台则拥有以下特点:能够跨平台:目前其他的大多数控制器只能在Windows系统上运行开发,但是ArduinoIDE编程平台不光可以在主流操作系统Windows上运行,还可以在Linux、MacintoshOSX两个操作系统上运行,这使得Arduino的用户对于其他控制器用户在运行编程环境时来说有着更多的操作平台来给他们使用,让他们拥有更多的开发环境供选择。简洁明了:Arduino平台相较于其他操作系统来说用户使用起来更加简洁易懂,比较适合学生以及新入门的初学者,使他们能够通过初步的学习就能大致掌握并且尝试开发,并且Arduino平台还有着很强的灵活变换性,这使得Arduino平台的初学者不需要花费太多的时间在单片机基础以及编程语言的学习上,初学者只需要经过简单的了解学习后,就可以进行在Arduino平台上进行项目的开发。开放性:不像部分平台中的一部分数据都是拒绝用户直接拿来使用的,Arduino平台中的硬件原理图、电路图、IDE软件及核心库文件都是开放的,只要是在开源协议范围内,Aduino平台的使用者不光可以对程序代码进行参考,还可以根据其喜好来修改设计代码并使用,给使用者提供了很大的便利。发展空间大:Arduino不仅是全球最热门的开源硬件,也是优秀的硬件开发平台,它收到世界上许多用户的青睐。Arduino简洁明了的开发方式使得开发者可以把更多的精力放在项目的创意以及开发上,所以Arduino拥有着十分广阔的发展空间,在较低的入门门槛以及简洁明了的开发方式下,Arduino能够撑起足够的用户基数并为用户提供足够大的创想空间,使得有创意、有想法的人不会因为编程语句何使用开发平台基础薄弱而难有进展。[4]2.1.2Arduino开发板本设计原本设想的是使用ArduinoUNO开发板,但经过测试发现由于ArduinoUNO开发板本身的内存容量较小,不能满足同时运行MP3、语音、蓝牙、物联网等模块同时使用,在ArduinoUNO开发板运行单个MP3模块时,运行内存就将近达到了70%。经过小组内讨论,我们将ArduinoUNO系列开发板更换成了ArduinoMega系列开发板。最终使用的是ArduinoMega2560开发板,ArduinoMega2560开发板在拥有众多引脚和串口的同时,还拥有较大的运行内存,相比于ArduinoUNO更适合本产品的研发。ArduinoMega2560开发板是基于名为ATmega2560的处理器核心而研发出来的微控制板,它包含了54个数字输入/输出口、16路模拟输入端口、4路UART接口、1个16MHz晶体振荡器、1个USB接口、1个电源接口、1个ICSPheader以及1个复位按钮。[5]ArduinoMega2560开发板是ArduinoMega系列开发板的升级版,ArduinoMega2560开发板与之前的其他开发板最大的不同就在于:ArduinoMega2560没有使用FTDIUSB-to-serial驱动芯片,而是使用了ATmega16U2编程作为USB-to-serial的传输器。ArduinoMega2560开发板图和ArduinoMega2560开发板参数如图2.1、表2.1所示:图2.1ArduinoMega2560开发板表2.1ArduinoMega2560参数序号名称参数1控制器ATmega25602工作电压5V3输入电压(推荐)7-12V4输入电压(限制)6-20V5数字I/O口54(含15路PWM输出)6模拟输入口167每个I/O口直流电流40mA83.3V口直流电流50mA9闪存(FlashMEmory)256KB(其中8KB用作bootloafer)10静态存储器(SPAM)8KB11EEPPOM4KB12时钟16MHz2.2编程环境-ArduinoIDEArduinoIDE是一款专门用于开发基于Arduino平台产品的工具,在一款产品硬件设备都齐全的情况下,还需要软件来赋予产品其执行功能的逻辑以及状态,硬件与软件两者缺一不可,ArduinoIDE就是赋予基于Arduino开发产品逻辑的编程平台,主要被用来编写及开发Arduino程序,其拥有开放代码源的电路图设计、并且支持ISP在线烧录,同时还可以与C、Flash、Max/Msp、VVVV、PD、Processing等多种语言程序兼容。并且其最多的特点就是拥有平台的兼容性,可以适用于Window、MaxOSX还有Linux平台。[6]ArduinoIDE界面图如图2.2所示:图2.2ArduinoIDE界面图AruinoIDE具有以下特色:界面简洁友好,语法简单,并且能方便的下载程序。ArduinoIDE自带内置程序,点击“文件-示例”就可以打开内置程序,并且带有很多种程序,可以帮助初学者快速掌握编程框架。并且在“帮助”中用户还可以点击相应选项进入官网页面查看相关介绍。ArduinoIDE的用户可以在程序开发接口免费下载开放源代码的电路设计图,下载电路设计图之后用户也可以根据自己的需求去修改它。ArduinoIDE可以使用低价格的微处理器(比如AVR系列控制器),同时也可以采用USB接口供电,并且不需要外接电源也可以正常运转,也可以使用外部9VDC输入。Arduino支持ISP在线烧录,可以将新的“bootloader”固件烧录进AVR芯片。在有了“bootloader”之后,可以通过串口或者“USBtoRs232”等方式在线更新固件。可以根据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制。并且可以简单地与传感器以及各种各样的电子元器件连接。能与多种编程语言相兼容,例如:C语言、Flash、Max/Msp、VVVV、PD、Processing等。在软件应用方面,可以利用Arduino突破以往只局限于使用鼠标、键盘等外接输入设备的互动,通过Arduino不光可以简单的达成单个使用者的互动,也可以达成多个使用者的互动。2.3本章小结本章主要介绍了本设计选用的开发平台以及编程环境,解释了最终我们为何不使用ArduinoUNO作为开发版而是选择了ArduinoMega2560作为开发板的原因,并对开发平台以及编程环境的主要功能以及特点进行讲解和分析。

3多功能智能播放器的总体设计方案本设计选用的是ArduinoMega2560作为开发板,DFPlayerMP3模块、LD3320语音模块、OLED显示器模块、HC-06蓝牙模块为辅,来通过语音模块以及MP3模块的联动来实现语音控制功能,并且能通过语音实现播放、暂停、换歌等功能,也可以通过按键来控制,手机端通过蓝牙连接来实现手机app对播放器的控制。3.1设计概述音乐播放器的设计需要开发者更加注重客户产品对的体验,所以开发者需要一款简洁的开发平台来提供产品的开发,从而将更多精力放在客户和产品互动的研发上,而本设计采用的Arduino开发平台相较于其他平台来说,更加简单清晰,比较容易掌握,有着较高的灵活性,更易开发。[7]3.2多功能智能播放器的设计要求Arduino板上需要烧录程序来保证各个模块能够正常使用,来达成一个语音控制实现的效果,具体的设计要求如下:可以通过开发板上的按键,来控制播放器的播放、暂停、切换上一首歌、切换下一首歌等功能。可以通过语音识别来控制播放器的播放、暂停、切换上一首歌、切换下一首歌等功能。通过蓝牙连接手机来控制播放器的播放、暂停、切换上一首歌、切换下一首歌等功能。显示屏能够显示目前播放歌曲的文件名称。3.3设计方案3.3.1设计步骤本产品的控制程序设计分为三个阶段:第一阶段:了解开发平台以及硬件知识,了解运作原理,查阅资料,学习C语言控制逻辑,学习他人编程思路。第二阶段:尝试编出基础功能程序及语音控制程序,再尝试将两者相结合,使播放器同时能实现按键操作以及语音控制。再将其他模块的程序加入进去,实现所有模块同时运行。第三阶段:对程序进行调试,检查程序逻辑的问题所在,再对程序进行优化。3.3.2设计流程图首先,本设计使用的是ArduinoMega2560开发板、DFPlayerMP33模块、LD3320语音模块、OLED显示器模块、HC-06蓝牙模块,拥有按键指令、语音指令、物联网指令三个指令输入方式。按键指令可以直接通过按键输入进ArduinoMega2560开发板,Arduino开发板与DFPlayerMP3模块、LD33320语音模块、OLED显示器模块、HC-06蓝牙模块连接,并且语音指令通过LD3320语音模块输入,手机端控制指令通过HC-06蓝牙模块输入,同时显示屏还能显示目前播放歌曲的文件名。播放器运作流程图如图3.1所示:图3.1播放器运作流程图3.4本章小结本章是对多功能智能播放器进行一个总体设计方案的叙述,以及汇总了本文对设计的功能要求,并对播放器运行流程进行讲解。

4多功能智能播放器的控制程序设计4.1程序的功能以及接线说明程序开始对播放器功能以及各个模块接线方式进行汇总。定义一个调试用的串口,后续调试时需要查看各功能执行情况的时候可以用到这个串口通信。功能及接线方式汇总如图4.1所示:图4.1功能及接线方式汇总4.2蓝牙模块定义蓝牙串口为串口1,储存接收到的蓝牙数据,初始化蓝牙模块时将定义蓝牙通信波特率为9600,当需要初始化保存到蓝牙的数据时,通过将储存的数据增加到超过上限来让其初始化。[8]蓝牙模块初始化设定程序如图4.2所示:图4.2蓝牙模块初始化设定程序这一步骤是读取蓝牙数据,判断是否从蓝牙那里接收到了正确的数据,将蓝牙模块里读取到的数据保存在RecData里并赋予它一个数值,当读取到’*’、’r’、’\n’等数据时,表示这一行的代码已经接收完成,延时10毫秒等待垃圾数据完成。如果数据没有读完,那么就把数据读取完并清空,如果没有读取到’*’、’r’、’\n’等数据,那么数值加一,当接收到储存的数值超过20时,舍弃多余的数据,直接读取目前所有数据,如果没有读取到结束符或者数据储存爆满,就返回一个false让其继续读取数据。蓝牙信息读取程序如图4.3所示:图4.3蓝牙信息读取程序读取蓝牙数据,根据检测到的指令来控制播放器的功能。strstr是拥有字符串处理功能的一个函数,通过strstr函数在RecData里面查找是否有“Next”、“Prev”、“Pause”等数据,如果检测相关数据时并不是没有“Next”、“Prev”、“Pause”等相关数据,那么检测到“Next”的指令时,MP3播放下一首;检测到“Prev”的指令时,MP3播放上一首;检测到“Pause”的指令时,MP3执行播放、暂停功能。为了能够继续接收下一次的数据,需要把本次解析完数据清空。[9]蓝牙数据接收程序如图4.4所示:图4.4蓝牙数据接收程序4.3OLED显示器模块显示器模块先引用Wire.h(I2C设备通讯用)、Adafruit_GFX.h、Adafruit_SSD1306.h库文件因为此次设计不需要用到显示器模块的复位引脚,所以给予复位引脚一个“-1”的值。定义屏幕宽128像素、长63像素。[10]对显示器模块进行通信唤醒时,可以通过调试串口来判断其是否正常运转,如果初始化失败,串口监视器会显示“SSD1306allocationfailed”,如果初始化完成,那么则清空显示屏显示内容,保证下一次显示屏上面是没有显示内容。显示器初始化设定程序如图4.5所示:图4.5显示器初始化设定程序需要显示内容时就调用Display函数,其中包括显示内容的坐标,显示的内容,以及判断是否清屏,如果是true,则清屏,如果是false,则不清屏。设定字体大小为1,设定字体颜色为白色,将显示屏光标移动到需要显示内容的位置,再显示需要显示的内容。显示器显示内容程序如图4.6所示:图4.6显示器显示内容程序4.4DFPlayerMP3模块MP3模块程序首先先引用软串口和MP3库文件,定义MP3模块的串口为串口2,“IsPlaying”和”PlayingNum”用来记录MP3播放状态以及第几首,并将其内容保存。初始化MP3过程中,设置MP3串口波特率为9600,并且设置MP3串口,MP3起初设定的值为30,在调试时发现30音量过大,就把音量改成了20,初始化设置结束后,停止MP3的运行。MP3初始化设定程序如图4.7所示:图4.7MP3初始化设定程序因为MP3播放器的播放、停止功能设置可以通过一个是非逻辑调用,所以可以在同一个函数里赋予其判断播放器处于播放状态中还是暂停状态中的功能。如果MP3播放器已经处在播放歌曲状态中,通过控制方式给与它一个“暂停”歌曲的命令,那么MP3播放器就会变成暂停的状态,如果播放器已经处在暂停歌曲状态中,通过控制方式给与它一个“播放”歌曲的命令,那么MP3播放器就会变成播放的状态。MP3播放、暂停功能控制程序如图4.8所示:图4.8MP3播放、暂停功能控制程序然后是MP3模块接受上、下一曲指令的时候,可以通过串口监视器来查看其是否正常执行功能。MP3模块接受下一曲指令的时候,会跳过目前播放的音乐,并播放下一首歌曲,如果播放的歌曲数已经超过TF卡中的歌曲数目,那么会播放文件中的最后一首歌,显示屏会显示当前播放歌曲的文件名称,并将播放状态改为“true”。同理,MP3模块接受上一曲指令的时候,会跳过目前播放的音乐,并播放上一首歌曲,如果播放的歌曲为第一首歌时,触发上一首功能时,播放器还是会播放第一首歌,显示屏会显示当前播放歌曲的文件名称,并将播放状态改为“true”。当出发MP3停止播放指令函数时,串口监视器会显示“StopMp3”,MP3会停止播放,并且将播放状态改成“false”。MP3下一曲、上一曲、停止播放功能控制程序如图4.9所示:图4.9MP3下一曲、上一曲、停止播放功能控制程序4.5按键部分建立一个按键的类,定义按键的三个基础属性,第一个是对对按键的引脚进行定义,第二个是对按下按键后的引脚电平部分进行定义,第三个是对按键的时间节点进行定义,它可以通过扫描按下的的时间节点来判断其按下的时长。定义按键部分需要传输的数据,将传输进来的引脚数据以及按下后的电平数据保存起来,再设置按钮的引脚为输入上拉模式。再赋予其判断按钮是否按下的逻辑,如果没有按下可以直接更新没有按下的时间节点,等待下一次按键按下的时间节点,如果触发了判断按钮是否按下的函数,为了防止误判,等到按键被松开时,判断其按下时间是否超过0.05秒,如果大于0.05秒,那么返回已经按下的信息,如果没有大于0.05秒,返回没有按下的信息。[11]按键模块功能定义程序如图4.10所示:图4.10按键模块功能定义程序通过上面的按键模块功能定义完成后,就可以根据定义设定播放。暂停、上一曲、下一曲功能对应的按键。检查按键状态,如果识别到上一曲按键被按下,执行“上一曲”功能;如果识别到下一曲按键被按下,执行“下一曲”功能;如果识别到播放暂停按键被按下,播放器播放时执行“暂停”功能,播放器暂停时执行“播放”功能。按键功能控制程序如图4.11所示:图4.11按键功能控制程序4.6LD3320语音模块语音模块程序先引用LD3320语音模块库文件,声明一个语音识别对象,初始化模块后分别添加上一曲、下一曲、暂停、播放指令,并赋予其对应编码0、1、2、3。[12]语音模块初始化设定程序如图4.12所示:图4.12语音模块初始化设定程序语音判断识别部分,如果指令是“上一首”,那么播放上一首歌曲;如果指令是“下一首”,那么播放下一首歌曲;如果指令是“暂停”,那么MP3播放器得到一个停止的指令,并且状态变为停止;如果指令是“播放”,那么MP3播放器得到一个播放的指令,并且状态变为启动播放。串口监视器在语音控制的同时也能查看其是否正常执行命令。语音模块功能控制程序如图4.13所示:图4.13语音模块功能控制程序4.7程序功能调用各个模块声明完成后,通过“setup”和“loop”两个函数调用程序功能,“setup”函数初始化变量及引脚,“loop”函数用来改变程序状态和响应时间,从容控制Arduino开发板。“setup”和“loop”函数部分如图4.14所示:图4.14“setup”和“loop”函数部分

4.8本章小结本章是对播放器每一模块需要完成的功能进行介绍,描述编程思路,并说明其每一步功能如何实现,各个模块是如何进行联动的。

5控制程序的编译结果以及调试程序最终完成后,在ArduinoIDE编程平台上编译时没有报错,证明其不存在逻辑方面问题。程序编译情况如图5.1所示:图5.1程序编译情况调试时也可以通过串口来查看其功能是否执行。串口监视器调试情况如图5.2所示:图5.2串口监视器调试情况将各个模块实物连接完成后进行调试。就目前调试的情况来说,当我按下“播放、暂停”键时,MP3模块如果正在播放歌曲,那么它会暂停,如果它已经处在暂停状态中,那么它会结束暂停状态并播放歌曲,如果按“下一首”按键,那么它会结束播放目前正在播放的歌曲,并播放下一首歌曲,如果按“上一首”按键,那么它会结束播放目前正在播放的歌曲,并播放上一首歌曲。同理,语音控制也是如此,当我说“播放、暂停”键时,MP3模块如果正在播放歌曲,那么它会暂停,如果它已经处在暂停状态中,那么它会结束暂停状态并播放歌曲,如果说“下一曲”,那么它会结束播放目前正在播放的歌曲,并播放下一首歌曲,如果说“上一首”,那么它会结束播放目前正在播放的歌曲,并播放上一首歌曲。显示屏能显示目前播放歌曲的歌曲名称,如我在TF卡里歌曲名称设置为“0001.mp3”,播放歌曲时显示器能显示“1.mp3”。实物连线调试图如图5.3所示:图5.3实物连线调试图

6结论6.1设计总结和难点在一开始接触毕业设计的过程中,由于有许多不懂,所以毕业设计的过程中走了很多弯路,在编写程序的过程之前,我们先用网上的例程对Arduino开发板以及各个模块进行调试,下载程序观察其是否能正常用,因为特殊原因导致我们组员之间都互相见不上面,不能一起调试改进,只能网上远程沟通,而且我们也是第一次接触这方面的元器件,所以在调试的时候废了很大的功夫,由于对元器件的了解不足,在调试时发现ArduinoUNO的开发板运行内存支持不了这么多模块,于是从ArduinoUNO开发板换成了ArduinoMega2560开发板,并且重新进行调试。在编程开始前,我们还需要通过查阅ArduinoUNO开发板的使用手册以及参考网络例程来理清ArduinoUNO开发板的每一个引脚的定义,在后面开发板从ArduinoUNO换成ArduinoMega2560之后,ArduinoMega2560每一个引脚对应的功能和ArduinoUNO略有不同,在程序设计当中还要将已写好的引脚对应程序进行更新。在编程的过程中,先去观看教学视频区学会最基本的程序逻辑及框架,再去参考别人之前做相同产品的时候他们想拥有的编程思路,然后顺着其逻辑根据自己设计的功能去编程,还需要对每个模块引入它们的库来调试。在编程过程中,由于自己的编程不是很熟练,在编译过程中也多次报错,而且还需要各个模块的程序环环相扣、缺一不可,多种功能相结合这方面的资料网上也相对较少,自己也是一步一步尝试,在经历了一次又一次的修改和调试后,才赋予其严密的编程逻辑。6.2设计创新点(1)能用按键控制MP3播放器的播放、暂停、上一首、下一首功能。(2)能用语音控制MP3播放器的播放、暂停、上一首、下一首功能。(3)能用手机端控制MP3播放器的播放、暂停、上一首、下一首功能。(4)显示屏能显示当前播放歌曲的数字序号。(5)使用ArduinoMega2560开发板代替ArduinoUNO开发板,预留了更多的内存空间。6.3设计的不足点这次的毕业设计时间有限,而我们因为经验不足的原因在调试的过程中花费了大量的时间和精力,所以导致我们的功能不能像预想的那样完善,MP3播放器涉及到功能较少,只能做到基础的播放、暂停和切歌,贴心化的互动方式依旧是多功能智能播放器的一个发展重点,在这方面还有很多问题需要去解决。6.4展望通过本次的毕业设计后,使我更加深入的了解了Arduino开发平台的和ArduinoIDE编程平台使用方法,学习编程一路上我也是磕磕碰碰,编程不光需要基本功扎实,还需要有足够清晰的思路去赋予其逻辑,中间出了任何一点错误也可能会导致编译失败,也让我了解到想学好编程语言是一件多么费尽周折的事情,虽然说自己对于设计产品这方面只是刚入门,但是在设计产品的过程中通过不停地查阅各种资料以及文献,学习他人的编程思路,了解程序和硬件之间的关系等等,这些都让我受益匪浅。

参考文献[1]侯琳琦.网络音乐-新兴的艺术形式[J].北京邮电大学学报(社会科学版),2008,10(6):9-12.[2]杜志超,高立.网络音乐及其媒体播放器发展趋势[J].北京邮电大学学报,2013,15(1):15-21.[3]头像好看吗.Arduino简介[EB/OL]./hftyfdg/article/details/86549543,2019-01-19.[4]繆璐璐.基于Arduino平台开发交互式产品原型的研究[D].上海:上海交通大学,2013.[5]毕圣.ArduinoMega2560[EB/OL]./thread-17938-1-2.html,2015-11-01.[6]beanxyy.arduinoide是什么_关于arduinoide的简单介绍[EB/OL]./emb/610258.html,2018-01-03.[7]赵云娥,吴振强.Aduino助理美好生活-以音乐播放器设计为例[J].甘肃科技纵横,2016,45(10):23-25.[8]郑昊.基于Arduino/Android的蓝牙通讯系统设计与实现[D].武汉:湖北大学,2012.[9]mtobeiyf.[Arduino]HC-06蓝牙模块使用小结[EB/OL]./p/5c220d0d3692,2016-08-02.[10]ling3ye.Arduino驱动OLED屏幕IIC接线方式简单入门[EB/OL]./ling3ye/article/details/53028069,2016-11-04.[11]综合实验.基于Arduino的按键控制音乐播放器实验(MP3音乐播放器模块)[EB/OL]./2018/04/20/mp3player/,2018-4-20.[12]yanwl.Arduino系列教程十:语音识别模块LD3320[EB/OL]./study/article-11-1.html,2015-4-27.

致谢这次的毕业设计因为是第一次接触设计产品,没有太多的经验,所以走了不少弯路。最终在小组成员的努力以及老师的帮助下,终于完成了本次毕业设计。回顾整个毕设研究过程,也是充满了艰辛。在莫伟强老师的建议下,我们选择了Arduino作为开发板,制作多功能智能播放器。首先,我们先了解多功能智能播放器的大致框架,了解我们需要去研究开发什么功能,定下来了之后再开始开工。再学习程序之前,我需要了解开发板以及各个模块的使用方法,这样在后面编程结果后,方便配合硬件一起调试。一开始学习编程的时候,因为自己编程底子薄弱,所以一直是在跟着教学视频学,然后自己尝试编出视频中的程序。后面开始设计程序的时候,发现自己无从下手,于是又开始在网上寻找与本设计相似的程序参考资料,去论坛里查看他们的经验分享,根据每一步程序后面的说明去理解他们的编程思路,但是网上的资料有限,只找到了音乐播放器单一功能的程序,并没有找到将多个功能结合在一起的程序作为参考思路。于是就根据自己之前学编程的经验来一步一步编辑调试,在一步一步的尝试下自己也摸索出了一些方法。这里要感谢我们的指导老师,感谢老师在我们的迷茫期给予我们建议以及指导,并且一直在关心我们毕业设计的进展,也给我们耐心讲解写论文时需要注意的事项,并给出相关的建议。也要感谢我的队友们,他们对于做毕设也有很强上进心,没有他们的相互扶持这个毕设也很难进行下去,毕竟每个人都有每个人负责的部分,而且现在正值疫情期间,想靠自己一个人去实现还是很困难的。还要感谢在网络上提供编程思路的前辈们,如果我不参考他们的编程思路来完成自己的毕业设计,我可能都不知道从何下手。大学四年马上就要结束了,我们也尽量想以一个优秀的毕设来给大学四年画上一个句号,所以我们一直在努力学习相关知识。回顾大学四年,很感谢学校能给我们提供一个自由的学习环境,也为我们即将走向社会提供了环境及引导,感谢之前的班导师和学长们带我们熟悉校园环境,感谢各位老师给我们传授专业知识,感谢大学四年同学和朋友的陪伴,我们以后有机会再会。也要感谢父母对我的无私奉献,他们对我不光提供了财务上的支持,也培育了我正确的价值观、人生观。走向社会之后我会努力工作报答父母的养育之恩。非常感谢你们对我的帮助以及支持!

附录1程序/*播放器需要通过按键,语音,手机(蓝牙)实现播放,暂停,上一首,下一首。显示屏(1306IIC)能显示歌名*//**************接线说明*********arduino2560蓝牙模块5V》VCCgnd》gndRX1》TXTX1》RXarduino2560显示屏5V》VCCgnd》gndSDA》SDASCL》SCLarduino2560MP3模块(本文件所在文件夹里面有MP3接线图)5V》VCCgnd》gndTX21k电阻》RXRX2》TXarduino2560语音模块VCC

》3.3VGND

》GNDD50》MID51

》MOD52

》SCKD4

》CS/NSSD9

》RSTD2》IRQGND》WR按键上一首一个引脚接arduino的3,另一个引脚接arduino的gnd按键下一首一个引脚接arduino的5,另一个引脚接arduino的gnd按键播放、停止一个引脚接arduino的6,另一个引脚接arduino的gnd/**************接线说明*********/#defineDebugSerialSerial/*************蓝牙部分*************/#defineBtSerialSerial1charRecData[20];//保存接收到的蓝数据byteRecNum=0;//获取到的数据个数voidInitBt()//初始化蓝牙{BtSerial.begin(9600);//蓝牙通信波特率9600}voidInitReceDate()//初始化保存蓝牙数据的数组{for(inti=0;i<20;i++)//字符数据清零{RecData[i]=0;}RecNum=0;}boolRead_Bt_data()//是否有串口数据,有就读取并且返回1,没有就返回0{if(BtSerial.available())//串口有数据{RecData[RecNum]=BtSerial.read();//读取数据if(RecData[RecNum]=='*'||RecData[RecNum]=='\r'||RecData[RecNum]=='\n')//假如读取到*或者换行符代表是数据尾,返回1{delay(10);//等待数据接收完成while(BtSerial.available())//清空缓存的蓝牙数据{BtSerial.read();//读取数据}BtSerial.println(RecData);//蓝牙返回接收到的数据returntrue;}RecNum++;if(RecNum>=20)//保存的数据存不下了{delay(10);//等待数据接收完成while(BtSerial.available())//清空缓存区BtSerial.read();returntrue;}}returnfalse;};voidProceBtData()//解析蓝牙数据{if(Read_Bt_data())//如果读取到蓝牙数据{if(strstr(RecData,"Next")!=NULL)//检测到下一首的指令{NextMp3();//MP3播放下一首}if(strstr(RecData,"Prev")!=NULL)//检测到上一首的指令{PrevMp3();//MP3播放上一首}if(strstr(RecData,"Pause")!=NULL)//检测到暂停的指令{PauseMp3();//暂停、播放Mp3}InitReceDate();//清空缓存数据}}/*************蓝牙部分*************//***********显示屏部分*********/#include<Wire.h>#include<Adafruit_GFX.h>#include<Adafruit_SSD1306.h>#defineSCREEN_WIDTH128//128横像素#defineSCREEN_HEIGHT64//64竖像素#defineOLED_RESET-1Adafruit_SSD1306display=Adafruit_SSD1306(128,32,&Wire);voidInitLcd(){while(!display.begin(SSD1306_SWITCHCAPVCC,0x3C))//初始化显示屏,iic地址0x3c{DebugSerial.println(F("SSD1306allocationfailed"));delay(500);}display.clearDisplay();//清空显示}voidDisplay(intx,inty,Stringdis,boolisClear=false)//显示函数,括号为显示其实坐标,显示内容,是否清屏{if(isClear)//需要清屏{display.clearDisplay();//清屏}display.setTextSize(1);//设定字体大小display.setTextColor(SSD1306_WHITE);//设定颜色display.setCursor(x,y);//设定光标位置display.println(dis);//显示内容display.display();}/***********显示屏部分*********//********MP3模块部分**********/#include<SoftwareSerial.h>#include<DFPlayer_Mini_Mp3.h>#defineMp3SerialSerial2boolIsPlaying=false;//是否在播放intPlayingNum=0;//正在播放第几个MP3voidInitMp3()//初始化MP3{Mp3Serial.begin(9600);//设定MP3串口波特率mp3_set_serial(Mp3Serial);//设定MP3串口delay(10);mp3_set_volume(20);//设定音量,最大30delay(10);mp3_stop();//停止播放delay(1000);//mp3_play(1);//mp3_next();//下//mp3_prev();//上//mp3_pause();//暂停}voidPauseMp3()//暂停、播放{if(IsPlaying==true)//已经播放{DebugSerial.println("mp3_pause");mp3_pause();//暂停IsPlaying=false;}else//没有播放{DebugSerial.println("mp3_play");mp3_play();//播放IsPlaying=true;}}voidNextMp3()//下一曲{DebugSerial.println("NextMp3");PlayingNum++;//播放第几首音乐加一mp3_play(PlayingNum);//播放下一曲Display(0,0,String(PlayingNum)+".mp3",true);//显示屏显示内容IsPlaying=true;}voidPrevMp3()//上一曲{DebugSerial.println("PrevMp3");PlayingNum--;//播放第几首音乐减一if(PlayingNum<1)//限制不能小于1{PlayingNum=1;}mp3_play(PlayingNum);//播放Display(0,0,String(PlayingNum)+".mp3",true);//显示屏显示内容IsPlaying=true;}voidStopMp3()//停止播放{DebugSerial.println("StopMp3");mp3_stop();IsPlaying=false;}/********MP3模块部分**********//**********按钮部分**************/classBUTTON//建立一个按钮的类{public:bytePin;//定义按钮引脚boolClickDigital=false;//定义按下按钮后的引脚电平unsignedlongUnClickSt=0;//保存按钮上一次扫描的时候没有按下的时间节点BUTTON(bytepin,boolclickDigital=false){Init(pin,clickDigital);}voidInit(bytepin,boolclickDigital=false)//按钮初始化的函数,括号为引脚,按下时的电平{Pin=pin;//将按钮的引脚保存起来ClickDigital=clickDigital;//保存按钮按下后的电平pinMode(Pin,INPUT_PULLUP);//定义按钮的引脚为输入模式}boolIsClick(boolwaitForLose=false)//判断是否按下按钮的函数,括号里填true会等待按钮按下松开后返回是否按下{if(digitalRead(Pin)!=ClickDigital)//假如没有按下{UnClickSt=millis();//更新没有按下的时间节点}if(waitForLose)//假如需要等待松开按钮再返回是否按下{while(digitalRead(Pin)==ClickDigital);//等待按钮松开}return(millis()-UnClickSt>=50);//如果按下时间大于0.05秒,返回已经按下,否则返回没有按下}};BUTTONBtnUp(3,0);//按键上一首一个引脚接arduino的3,另一个引脚接arduino的gndBUTTONBtnDown(5,0);//按键下一首一个引脚接arduino的5,另一个引脚接arduino的gndBUTTONBtnPause(6,0);//按键播放、停止一个引脚接arduino的6,另一个引脚接arduino的gndvoidCheckBtn()//检查按钮{if(BtnUp.IsClick(true))//上一曲按键按下{PrevMp3();//上一曲}elseif(BtnDown.IsClick(true))//下一曲按下{NextMp3();//下一曲}elseif(BtnPause.IsClick(true))//暂停、播放按钮按下{PauseMp3();//暂停、播放}}/**********按钮部分**************//***********语音识别部分************************/#include<ld3320.h>VoiceRecognitionVoice;//声明一个语音识别对象voidInitVoice(){Voice.init();//初始化VoiceRecognition模块Voice.addCommand("shangyiqu",0);//添加指令,参数(指令内容,指令标签(可重复))Voice.addCommand("xiayiqu",1);//添加指令,参数(指令内容,指令标签(可重复))Voice.addCommand("zanting",2);//添加指令,参数(指令内容,指令标签(可重复))Voice.addCommand("bofang",3);//添加指令,参数(指令内容,指令标签(可重复))Voice.start();//开始识别}voidProceVoice(){switch(Voice.read())//判断识别{case0://若是指令"shangyiqu"PrevMp3();break;case1://若是指令"xiayiqu"NextMp3();break;case2://若是指令"zanting"DebugSerial.println("mp3_pause");mp3_pause();IsPlaying=false;break;case3://若是指令"bofang"DebugSerial.println("mp3_play");mp3_play();IsPlaying=true;break;}}/***********语音识别部分************************/voidsetup(){DebugSerial.begin(115200);InitBt();//初始化蓝牙InitLcd();//初始化lcdInitMp3();//初始化MP3InitVoice();//初始化语音识别}voidloop(){ProceBtData();//根据蓝牙接收内容控制播放CheckBtn();//根据按钮控制播放ProceVoice();//根据语音识别控制播放}

附录2英文文献

附录3英文文献翻译Arduino:一个低成本的多用途实验室设备摘要:典型的心理和神经生理学实验往往需要精确控制多个输入和输出信号。这些信号通常是通过计算机软件和/或外部专用硬件生成或记录的。专用硬件通常非常昂贵,需要额外的软件来控制其行为。在本文中,我介绍了在一个低成本和开源的I/O板(Arduino系列)上进行的一些准确性测试,这些测试在许多实验室环境中可能很有用。Arduino的优势之一是可以将实验脚本加载到主板的内存中,让它在不与计算机或外部软件交互的情况下运行,从而获得完全的独立性、可移植性和准确性。此外,围绕Arduino的想法出现了一个大型社区,并为不同的项目提供了许多硬件插件和数百个免费脚本。准确性测试表明Arduino板可能是许多心理和神经生理实验室的廉价工具。介绍每个进行某种行为研究的实验室都使用几种不同的设备和软件进行实验控制。其目标通常是记录事件(行为或生理)并生成信号(即,以控制或同步不同的机器)。在大多数情况下,这样的任务需要毫秒到毫秒的精度,因此需要特别注意,因为现代操作系统(OS)的设计不是实时操作,并具有这样的精度(Canto,Bufalari,&D’ausilio,2011;钱伯斯和布朗出版社,2003年;MacInnes&Taylor,2001;Plant&Turner,2009)。因此,使用了几种不同的方法,例如通过专用的和优化的软件包(即、E-Prime、Presentation、MATLAB的心理物理学工具箱等)或将关键任务交给具有内部高精度时钟的专用硬件(即,国家仪器公司的外部I/O板,测量计算,剑桥电子设备等)。在这两种情况下,解决方案往往是昂贵的(特别是外部板),次优的,因为它严重依赖于操作系统的准确性(这适用于所有的实验控制软件),或不适合特定的实验。后一点尤其适用于同时测试多个参与者,或需要便携式或无线电池供电装置的实验。然而,在某些情况下,许多低级的I/O任务并不需要特定的软件包或昂贵的电路板。例如,如果实验者想要一个事件在通过一些传感器检测到一个事件时被触发(例如,,不需要使用昂贵的硬件或软件。事实上,简单而廉价的微控制器板可以解决许多实验室I/O任务。这些板子是物理计算平台,基于简单的微控制器和编写软件的开发环境。这些设备可用于开发交互式对象,从各种开关或传感器获取输入,并控制各种灯、马达和其他物理输出。此类项目通常可以是独立的,也可以与计算机上运行的软件进行通信。这样的板子已经存在了好几年了,并且通常只在处理器架构(ARM、ATMEL等)、编程语言(C/c++、BASIC等)或其他特性(例如:,I/O通道数目、模拟通道数目等)。一些制造商已经提出了非常流行的解决方案,如视差公司,Coridium公司,FTDI,Picaxe,Arduino,以及许多其他的。所有这些板子的价格一般在50欧元左右。然而,编程这些电路板可能相当复杂,用户需要至少一些基本的电子知识。因此,在心理和神经生理实验室广泛使用这些板的主要障碍是陡峭的学习曲线。然而,Arduino电路板(图1)提供了一个关键的优势:开源哲学(硬件和软件),它利用了大量的非专家社区,这些社区围绕Arduino的概念蓬勃发展。一个非常粗略的社区规模估计可以从一个谷歌搜索报告“arduino”超过1200万点击。事实上,大量的用户和不断增长的市场对Arduino的概念表现出了越来越大的兴趣。有数百个开源项目可以根据特定的(实验性的)需求使用或修改。许多web教程涵盖了基本的编程和电子问题,并且有活跃的论坛提供帮助。因此,学习使用Arduino电路板可能比学习使用其他制造商的类似产品要容易得多。考虑到Arduino社区提供的可用支持,即使是几乎没有编程和子背景的研究人员也应该考虑使用Arduino,而不是其他类似的电路板。图Arduino电路板和ArduinoUNO的外观Arduino硬件由一个开放的硬件设计和一个AtmelAVR处理器组成。Arduino板可以预先购买和组装,但是硬件设计信息也可以提供给那些愿意构建或修改它们的人(进一步的信息可以在http://arduino.cc上找到)。一些第三方制造商已经生产出了能够扩展Arduino基本功能的盾牌(附加板)(更新的列表在http://shield/)。在这些屏蔽中,值得一提的是电机控制屏蔽可以控制直流电机和读编码器,Xbee屏蔽可以让多个Arduino板进行无线通信,临界速度加速度计屏蔽集成了一个三轴加速度计。此外,第三方(+30)已经发布了基于Arduino概念的几个变体。这些是使用Arduino软件构建的公司板(通常具有更好的配置或更低的价格)。该软件由标准的编程语言和在主板上运行的固件组成。Arduino硬件是使用简化的c++语言在基于处理的IDE中编写的。然后,软件被编译并加载到板上。Arduino板还兼容Flash、Processing、MaxMSP和MATLAB,几行代码通常就足以实现非常强大的行为(参见http://arduino.cc/en/reference/主页)。Arduino的基本编程结构至少由两部分组成。这些是设置和循环组件。在设置中,它在开始时运行,只有一次来设置pin模式或串行通信,变量被声明。第二部分在一个循环中运行,该循环使脚本能够更改、响应和控制Arduino板。在声明变量之后,控制Arduino涉及到典型的控制结构(IF,IF…ELSE,FOR等)、算术运算符(+、-、/、*等)和比较运算符(>,<等)或布尔运算符(and,or等)。还有一组用于模拟和数字读写的命令,如digitalwrite()或digitalread()。此外,其他命令可以设置以毫秒为单位的时间延迟,执行基本的数学和三角学操作(最小/最大、绝对值、平方根、正弦、余弦等),或者生成随机数。要获得更全面的信息,请参考web教程或官方文档(http://www.arduino.cc/playground/uploads/Main/arduino_notebook_v1-1.pdf)。作为一个使用的实际例子,假设实验参与者必须接触并抓住一个对象,而研究人员想要触发另一个机器(即。(经颅磁刺激机)100ms后接触物体。典型的解决方案是一个触摸传感器,通过并行端口与计算机上的软件程序进行通信。,E-Prime或Presentation)。软件检测状态变化,设置延迟,并通过并行端口发送TTL。这个解决方案是无可指责的,除了它需要个人电脑和软件的干预,可能会引入时间准确性问题(Plant&Turner,2009)。简单的I/O任务(如建议的任务)需要几行代码和Arduino板(或任何其他类似产品)上很少的电子设备来处理信息,而不需要PC。通过这种方式,可能可以避免时间精度问题,因为代码是在没有任何其他干扰进程在后台运行的情况下编译并全速运行的。事实上,Arduino板在获取传感器数据和/或控制电机以及发送/接收TTL脉冲时非常有用。此外,这些低级的I/O任务对于非常规的设置可能是必要的,通常需要额外的硬件、编程技能和一些创造性的解决方案。例如,考虑一下这张简短的开放项目列表,它可能在心理学和神经生理学实验室中非常有用。一种易于制作和廉价的触摸传感器(http://www.arduino.cc/playground/code/itivesensor)已经被设计用于行为研究,其中包括测量参与者接触和触摸物体的反应时间(RTs)。另一个项目展示了如何构建一个光电二极管(http://www.arduino.cc/playground/Learning/LEDSensor),例如,它可以用来检测屏幕上的刺激演示。最后,还有一个项目演示了如何将deb功能引入任何输入(http://arduino.cc/en/Tutorial/Debounce),这非常有用,因为众所周知,大多数按钮面板都提供了嘈杂的信号,而且为了选择正确的RT,deb是一个必要的步骤。然而,对于所有的实验人员来说,时间准确性是最重要的,即使它是昂贵的。在这里,Arduino板原则上应该是相当准确的,因为脚本是经过编译的,然后加载到板上的内存中。因此,一旦加载了编译后的脚本,它就可以在没有任何其他操作系统干预或通信的情况下运行,从而避免了延迟和准确性瓶颈。由于嵌入式微处理器有自己的时钟,并且只需运行刚刚加载的脚本,因此可以确保精确的计时。然而,必须在一般的实验环境中对定时精度进行彻底的测试,并且必须通过外部可靠的、研究级的硬件来控制数据(Plant,Hammond,&Turner,2004;Plant,Hammond,&Whitehouse,2002;DeClercq,Crombez,Buysse,&Roeyers,2003)。在本研究中,Arduino板通过一系列常见的I/O任务进行验证,以评估其定时精度。方法和结果Arduino电路板ArduinoUno是一个基于ATmega328的微控制器板。它有14个数字输入/输出引脚,其中6个可以用作脉宽调制(PWM)输出。此外,它提供了6个模拟输入,一个16兆赫的晶体振荡器,一个USB连接,一个电源插口和一个电路串行编程头。ArduinoUno可以通过USB连接或外部电源供电(即,9伏电池)。电源是自动选择的。该板可以操作6至20伏的外部电源。ATmega328有32KB(其中0.5KB用于引导加载程序)。它还有2kb的SRAM和1kb的EEPROM(可以用EEPROM库读写)。使用pinMode()、digitalWrite()和digitalRead()函数,Uno上的14个数字管脚中的每一个都可以用作输入或输出。它们以5伏的电压工作。每个引脚可以提供或接收最大40毫安,并有一个内部上拉电阻(默认断开)20-50kOhms。此外,一些引脚具有专门的功能:引脚0和1可以用来接收(RX)和传输(TX)TTL串行数据;引脚2和引脚3可配置为在低值、上升或下降沿或值的变化上触发中断;最后,引脚3、5、6、9、10和11使用analogWrite()函数提供8位PWM输出。Uno有6个模拟输入,标记为A0到A5,每个输入提供10位分辨率(1024个不同的值)。默认情况下,它们从地面测量到5伏特,尽管可以使用AREFpin和analogReference()函数更改范围的上限。

HYPERLINK如何给电脑重做系统给电脑重做系统,自己学学,可少花钱,哈哈[图]

一、准备工作:

如何重装电脑系统

首先,在启动电脑的时候按住DELETE键进入BIOS,选择AdvancedBIOSFeatures选项,按Enter键进入设置程序。选择FirstBootDevice选项,然后按键盘上的PageUp或PageDown键将该项设置为CD-ROM,这样就可以把系统改为光盘启动。

其次,退回到主菜单,保存BIOS设置。(保存方法是按下F10,然后再按Y键即可)

1.准备好WindowsXPProfessional简体中文版安装光盘,并检查光驱是否支持自启动。

2.可能的情况下,在运行安装程序前用磁盘扫描程序扫描所有硬盘检查硬盘错误并进行修复,否则安装程序运行时如检查到有硬盘错误即会很麻烦。

3.用纸张记录安装文件的产品密匙(安装序列号)。

4.可能的情况下,用驱动程序备份工具(如:驱动精灵2004V1.9Beta.exe)将原WindowsXP下的所有驱动程序备份到硬盘上(如∶F:Drive)。最好能记下主板、网卡、显卡等主要硬件的型号及生产厂家,预先下载驱动程序备用。

5.如果你想在安装过程中格式化C盘或D盘(建议安装过程中格式化C盘),请备份C盘或D盘有用的数据。

二、用光盘启动系统:

(如果你已经知道方法请转到下一步),重新启动系统并把光驱设为第一启动盘,保存设置并重启。将XP安装光盘放入光驱,重新启动电脑。刚启动时,当出现如下图所示时快速按下回车键,否则不能启动XP系统光盘安装。如果你不知道具体做法请参考与这相同的-->如何进入纯DOS系统:

光盘自启动后,如无意外即可见到安装界面,将出现如下图1所示

查看原图

全中文提示,“要现在安装WindowsXP,请按ENTER”,按回车键后,出现如下图2所示

查看原图

许可协议,这里没有选择的余地,按“F8”后如下图3

HYPERLINK

查看原图

这里用“向下或向上”方向键选择安装系统所用的分区,如果你已格式化C盘请选择C分区,选择好分区后按“Enter”键回车,出现下图4所示

查看原图

这里对所选分区可以进行格式化,从而转换文件系统格,或保存现有文件系统,有多种选择的余地,但要注意的是NTFS格式可节约磁盘空间提高安全性和减小磁盘碎片但同时存在很多问题MacOS和98/Me下看不到NTFS格式的分区,在这里选“用FAT文件系统格式化磁盘分区(快),按“Enter”键回车,出现下图5所示

查看原图

格式化C盘的警告,按F键将准备格式化c盘,出现下图6所示

HYPERLINK

查看原图

由于所选分区C的空间大于2048M(即2G),FAT文件系统不支持大于2048M的磁盘分区,所以安装程序会用FAT32文件系统格式对C盘进行格式化,按“Enter”键回车,出现下图7所示

查看原图图7中正在格式化C分区;只有用光盘启动或安装启动软盘启动XP安装程序,才能在安装过程中提供格式化分区选项;如果用MS-DOS启动盘启动进入DOS下,运行i386\winnt进行安装XP时,安装XP时没有格式化分区选项。格式化C分区完成后,出现下图8所示

被过滤广告

查看原图

图8中开始复制文件,文件复制完后,安装程序开始初始化Windows配置。然后系统将会自动在15秒后重新启动。重新启动后,出现下图9所示

HYPERLINK

查看原图

9

查看原图

过5分钟后,当提示还需33分钟时将出现如下图10

HYPERLINK

查看原图

区域和语言设置选用默认值就可以了,直接点“下一步”按钮,出现如下图11

查看原图

这里输入你想好的姓名和单位,这里的姓名是你以后注册的用户名,点“下一步”按钮,出现如下图12

HYPERLINK

查看原图

如果你没有预先记下产品密钥(安装序列号)就大件事啦!这里输入安装序列号,点“下一步”按钮,出现如下图13

HYPERLINK

查看原图

安装程序自动为你创建又长又难看的计算机名称,自己可任意更改,输入两次系统管理员密码,请记住这个密码,Administrator系统管理员在系统中具有最高权限,平时登陆系统不需要这个帐号。接着点“下一步”出现如下图14

查看原图

日期和时间设置不用讲,选北京时间,点“下一步”出现如下图15

HYPERLINK

查看原图

开始安装,复制系统文件、安装网络系统,很快出现如下图16

查看原图

让你选择网络安装所用的方式,选典型设置点“下一步”出现如下图17

HYPERLINK

查看原图

点“下一步”出现如下图18

HYPERLINK

查看原图

继续安装,到这里后就不用你参与了,安装程序会自动完成全过程。安装完成后自动重新启动,出现启动画面,如下图19

HYPERLINK

查看原图

第一次启动需要较长时间,请耐心等候,接下来是欢迎使用画面,提示设置系统,如下图20

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

HYPERLINK

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

查看原图

这里建立的宽带拨号连接,不会在桌面上建立拨号连接快捷方式,且默认的拨号连接名称为“我的ISP”(自定义除外);进入桌面后通过连接向导建立的宽带拨号连接,在桌面上会建立拨号连接快捷方式,且默认的拨号连接名称为“宽带连接”(自定义除外)。如果你不想在这里建立宽带拨号连接,请点击“跳过”按钮。

在这里我先创建一个宽带连接,选第一项“数字用户线(ADSL)或电缆调制解调器”,点击“下一步”按钮,如下图22所示

HYPERLINK

查看原图

目前使用的电信或联通(ADSL)住宅用户都有帐号和密码的,所以我选“是,我使用用户名和密码连接”,点击“下一步”按钮,如下图23所示

查看原图

输入电信或联通提供的帐号和密码,在“你的ISP的服务名”处输入你喜欢的名称,该名称作为拨号连接快捷菜单的名称,如果留空系统会自动创建名为“我的ISP”作为该连接的名称,点击“下一步”按钮,如下图24所示

温馨提示

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

最新文档

评论

0/150

提交评论