基于温度感应的智能音乐播放器

合集下载

毕业设计(论文)-基于单片机控制的音乐播放器[管理资料]

毕业设计(论文)-基于单片机控制的音乐播放器[管理资料]

单片机音乐播放器设计报告学生:XXX 指导教师:XXX内容摘要:单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

根据要求设计一款音乐播放器,能实现音乐播放的简单功能,同时为了美化,添加了韵律闪烁彩灯,设计时采用Keil软件编程,用protues软件仿真,核心器件采用灵活性高且价格低廉的AT89C51芯片。

设计完成后系统可播放自编歌曲,同时发光二极管随着歌曲韵律闪烁。

关键词:单片机 AT89C51 音乐播放英文标题Abstract: SCM has small, strong function, low cost, application, advantages and intelligent control and automatic control of the core is the microcontroller. According to the requirements of a music player, design of music broadcast can realize simple function, and to beautify, added rhythm flashing lights, design is used when Keil C software programming, with protues software simulation, the core device adopts high flexibility and the price is cheap AT89C51 chip. The design is completed system can play Wrote songs, and leds with songs rhythm flicker.Keywords:SCM Temperature AT89C51 Music broadcast前言:微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。

智慧音乐播放系统设计方案

智慧音乐播放系统设计方案

智慧音乐播放系统设计方案智慧音乐播放系统是一种基于人工智能技术的音乐播放系统,它能够根据用户的喜好和情感状态,自动选取适合的音乐进行播放。

下面是一个智慧音乐播放系统的设计方案。

1.系统架构智慧音乐播放系统由三个主要组件组成:音乐数据管理系统、音乐推荐系统和用户情感分析系统。

音乐数据管理系统负责收集、管理和维护音乐数据。

它包括一个音乐数据库,用于存储音乐的信息,如歌曲名、歌手、音乐类型等。

音乐推荐系统是系统的核心组件,它根据用户的喜好和情感状态,从音乐数据库中选取并推荐适合的音乐。

推荐算法包括基于内容的推荐和协同过滤推荐等。

用户情感分析系统负责分析用户的情感状态。

它使用自然语言处理和机器学习等技术,从用户的文本、声音等数据中提取情感信息,并将其传递给音乐推荐系统。

2.数据收集和处理智慧音乐播放系统需要收集用户的音乐偏好和情感信息。

可以通过以下方式收集数据:- 用户注册:要使用系统,用户需要注册,提供一些基本信息,如性别、年龄、喜欢的音乐类型等。

- 历史播放记录:系统可以记录用户的历史播放记录,包括用户选择的音乐和播放时长等。

- 用户反馈:用户可以提供音乐的评价和反馈,帮助系统改进音乐推荐。

用户的情感信息可以从用户的文本、声音等数据中提取。

例如,可以通过分析用户的社交媒体帖子、聊天记录等文本数据,或者通过分析用户的语音、音调等声音数据,来推断用户的情感状态。

3.音乐推荐算法智慧音乐播放系统的核心是音乐推荐算法。

推荐算法根据用户的喜好和情感状态,从音乐数据库中选取适合的音乐进行推荐。

以下是一些常用的音乐推荐算法:- 基于内容的推荐:根据音乐的特点和用户的喜好,将相似的音乐推荐给用户。

- 协同过滤推荐:根据用户的行为和喜好,找出与用户兴趣相似的其他用户,然后将这些用户喜欢的音乐推荐给用户。

- 混合推荐:将多种推荐算法进行组合,综合考虑音乐的内容特点和用户的喜好,在推荐过程中权衡这两方面。

4.用户情感分析智慧音乐播放系统需要分析用户的情感状态,以便更准确地推荐适合的音乐。

基于 STM32单片机的多功能媒体播放器设计

基于 STM32单片机的多功能媒体播放器设计

基于 STM32单片机的多功能媒体播放器设计张志伟【期刊名称】《陕西理工学院学报(自然科学版)》【年(卷),期】2015(000)004【摘要】For the expansion of traditional music player function , multi-functional media player was de-signed, which uses STM32F103VCT6 micro controller as the core device .The hardware circuit of the system is composed of MCU, TFT color touch screen, temperature sensor, EEPROM chip, Flash chip, audio decoder chip and SD card modules etc .the system software is compiled in Keil MDK design platform by the TFT LCD driver , ADS7846 touch driver , VS1003 audio decoder driver , SD card reader driver , music playback function program and other related functional program composition .Experimental results show that: the media player can achieve MP3 music player and track lyrics spectrum information of color display , and has multiple func-tions of clock temperature display , e-books, picture browsing and drawing board .%采用STM32 F103 VCT6单片机为核心器件设计多功能媒体播放器。

基于单片机毕业设计题目

基于单片机毕业设计题目

基于单片机毕业设计题目以下是15个基于单片机的毕业设计题目:1. 温湿度监测系统:设计一个能够实时监测环境温度和湿度的系统,并通过LCD显示数据。

2. 灯光控制系统:设计一个可以远程控制灯光开关和亮度调节的系统,可以通过手机APP进行控制。

3. 智能家居安防系统:设计一个智能家居安防系统,能够通过红外传感器和摄像头实时监测家庭安全,并通过手机通知用户。

4. 电子秤设计:设计一个能够准确测量物体重量的电子秤,并通过LCD显示重量数据。

5. 智能车停车系统:设计一个能够自动寻找停车位并自动停车的智能车停车系统。

6. 智能垃圾桶:设计一个能够自动感知垃圾容量并进行垃圾分类的智能垃圾桶。

7. 室内空气质量检测系统:设计一个能够实时监测室内空气质量的系统,并通过LCD显示数据。

8. 智能温室控制系统:设计一个能够实时监测温室内温度、湿度和光照强度的系统,并自动控制温室的通风、灌溉和照明。

9. 无人机避障系统:设计一个能够自动避开障碍物并进行航线规划的无人机避障系统。

10. 智能健康监测手环:设计一个能够实时监测心率、血压和步数等健康数据的智能手环,并通过手机APP显示和分析数据。

11. 智能交通信号灯控制系统:设计一个能够根据交通流量实时控制交通信号灯的系统,优化交通流畅度。

12. 迷宫解决器:设计一个能够自动寻找迷宫出口并给出最优路径的迷宫解决器。

13. 灌溉系统:设计一个能够根据土壤湿度自动控制植物灌溉的系统,提高灌溉效率。

14. 智能电动车充电桩控制系统:设计一个能够远程控制电动车充电桩的系统,实现充电桩的管理和控制。

15. 智能音乐播放器:设计一个能够根据用户喜好自动播放音乐的智能音乐播放器,通过传感器感知用户情绪和环境因素。

arduino实验报告

arduino实验报告

arduino实验报告Arduino实验报告引言Arduino是一款开源的电子原型平台,通过简单的硬件和软件结合,可以实现各种创意和创新的项目。

本文将对Arduino进行实验探究,展示其在电子制作中的应用和潜力。

一、Arduino简介Arduino是由意大利的团队开发的一款开源电子平台,它基于易于使用的硬件和软件,使得电子制作变得简单易行。

Arduino板上有输入输出引脚,可以连接各种传感器和执行器,通过编写简单的代码,实现各种功能。

二、实验一:LED闪烁LED闪烁是Arduino的入门实验之一。

通过连接一个LED灯到Arduino板上的数字引脚,编写代码使其闪烁,可以初步了解Arduino的基本操作和编程语言。

三、实验二:温度监测温度监测是Arduino在传感器应用方面的一个典型实验。

通过连接温度传感器到Arduino的模拟引脚,编写代码读取传感器的数值,并将其转化为温度显示在串口监视器上。

四、实验三:无线通信Arduino通过无线模块可以实现与其他设备的通信。

通过连接无线模块到Arduino的串口引脚,编写代码实现与另一个Arduino板或者计算机的通信,可以实现远程控制和数据传输等功能。

五、实验四:机器人控制Arduino可以用于控制机器人的运动。

通过连接电机驱动器和传感器到Arduino,编写代码实现机器人的运动控制和避障等功能,可以制作出简单的智能机器人。

六、实验五:音乐播放器Arduino可以用于控制音乐播放。

通过连接音乐模块和扬声器到Arduino,编写代码实现音乐的播放和控制,可以制作出简单的音乐播放器。

七、实验六:环境监测Arduino可以用于环境监测。

通过连接各种传感器到Arduino,编写代码读取传感器的数值,并将其显示在LCD屏幕上,可以实现对温度、湿度、光照等环境参数的监测。

八、实验七:物联网应用Arduino可以与互联网进行连接,实现物联网应用。

通过连接以太网模块到Arduino,编写代码实现与云平台的通信,可以实现远程监控、数据上传等功能。

智能音乐播放器用户手册2023

智能音乐播放器用户手册2023

智能音乐播放器用户手册2023欢迎使用智能音乐播放器!为了让您更好地了解和使用我们的产品,我们为您准备了这份用户手册。

本手册将介绍智能音乐播放器的各项功能和操作方法,帮助您轻松掌握它的使用技巧。

在开始使用之前,请确保已正确接通电源并完成了基本设置。

一、产品概述智能音乐播放器是一款集音乐播放、智能控制和个性化推荐功能于一体的音乐设备。

它采用了先进的人工智能技术和云端数据支持,能够轻松满足您对音乐的各类需求。

二、产品特点1. 智能语音控制:通过内置的语音识别模块,您可以通过语音指令轻松操作播放器,如“打开音乐”、“下一首歌”等。

2. 智能推荐:根据您的音乐偏好和历史播放记录,智能音乐播放器会为您推荐符合您口味的音乐,让您的音乐体验更加舒适。

3. 多功能播放:支持各种音频格式的播放,包括MP3、WAV、FLAC等。

同时,您还可以通过蓝牙连接外部音箱,享受更高质量的音乐声音。

4. 个性化设置:您可以根据自己的偏好自定义播放器的主题颜色、背景图片等,让您的使用体验更加个性化。

5. 多设备同步:支持多设备之间的音乐同步播放,您可以随时随地切换设备而不中断音乐播放。

三、基本操作1. 开机与关机:长按电源键3秒以上,听到“开机成功”提示音后,播放器即可正常工作。

长按电源键3秒以上,听到“关机成功”提示音后,播放器将关闭。

2. 音乐播放与暂停:通过触摸面板或语音指令,您可以控制音乐的播放与暂停。

轻触一次触摸面板或说出“播放”指令即可开始播放音乐,再次轻触或说出“暂停”指令即可暂停音乐。

3. 音量调节:通过触摸面板的上下滑动,或者说出“增大音量”、“减小音量”等指令,您可以自由调节音乐的音量大小。

4. 切换音乐:通过触摸面板的左右滑动,或者说出“上一首”、“下一首”等指令,您可以切换当前播放的音乐。

5. 播放模式切换:通过触摸面板或说出“切换播放模式”等指令,您可以切换音乐播放器的不同播放模式,如循环播放、随机播放等。

单片机蜂鸣器音乐

单片机蜂鸣器音乐

单片机蜂鸣器音乐单片机在我们的生活中无处不在,它被广泛地应用在各种电子产品中,为我们的生活带来了便利。

今天,我要向大家介绍的是一种基于单片机的蜂鸣器音乐播放器。

一、硬件部分1、单片机:我们选用的是AT89C51单片机,它具有低功耗、高性能的特点,非常适合用于音乐播放器。

2、蜂鸣器:蜂鸣器是用来发出声音的,我们将其连接在单片机的输出口上。

3、存储芯片:为了能够播放存储在芯片中的音乐,我们需要将音乐以某种格式存储在芯片中。

常用的存储芯片有EEPROM和Flash芯片。

4、按键:为了能够选择播放不同的音乐,我们需要添加一个按键。

二、软件部分1、音乐编码:我们需要将音乐转换成二进制编码,这样才能被单片机读取并播放。

常用的音乐编码格式有MIDI、WAV等。

2、音乐播放:当按下按键时,单片机读取存储芯片中的音乐数据,并通过蜂鸣器播放。

3、音乐选择:通过按键可以选择不同的音乐进行播放。

4、音量控制:我们可以通过编程来控制蜂鸣器的音量大小。

三、调试与测试1、硬件调试:检查连接是否正确,确保没有短路或断路的情况。

2、软件调试:将程序下载到单片机中进行调试,确保能够正常播放音乐。

3、综合测试:将所有硬件和软件都连接起来进行测试,确保能够正常工作。

四、总结与展望通过本次实验,我们成功地制作了一个基于单片机的蜂鸣器音乐播放器。

它具有简单、实用的特点,可以用来播放存储在芯片中的音乐。

未来,我们可以进一步扩展其功能,例如添加更多的按键来选择不同的音乐、添加显示屏来显示歌曲名称等。

我们也可以将其应用到其他领域,例如智能家居、智能安防等。

单片机蜂鸣器唱歌程序在许多应用中,单片机蜂鸣器经常被用来发出声音或音乐。

下面是一个使用单片机蜂鸣器唱歌的程序示例。

我们需要确定单片机和蜂鸣器的连接方式。

通常,单片机具有一个内置的蜂鸣器输出引脚,可以将蜂鸣器连接到这个引脚上。

在以下的示例中,我们将假设单片机具有一个内置蜂鸣器输出引脚,并将其连接到P1.0端口上。

基于单片机的音乐播放器设计毕业论文

基于单片机的音乐播放器设计毕业论文

图书分类号:密级:毕业设计(论文) 基于单片机的MP3播放器设计学生汤明学院名称信电工程学院专业名称电子信息工程指导教师豹2012年5月10日摘要因为单片机编写的MP3播放器具有执行效率高、频率输出稳定、易于修改、高可靠性、高性价比、低电压、低功耗等,使单片机近几年得到迅猛发展和大围推广,广泛应用于工业控制系统、数据采集系统、智能化仪器仪表、及通讯设备、日常消费类产品、玩具等[1]。

利用单片机设计的MP3播放器具有硬件电路简单,软件运行可靠等特点。

本文介绍了一种以 AT89S52 单片机为控制核心的MP3。

该设计采用2*16个点阵液晶模块LCD1602作为显示界面,蜂鸣器作为发声元件,并利用定时器进行中断控制。

本文分析了基于单片机的MP3播放器的工作原理,详细介绍了MP3播放器的功能及其硬件设计和软件设计的方法,给出了基于MCS-51单片机的MP3播放器的具体实现方案并重点讲述了其硬件实现与软件编写,实现了单片机MP3播放器对音乐的演奏。

关键词:MP3播放器;AT89S52;LCD1602目录摘要 (I)1绪论 (1)2设计综述 (2)2.1单片机工作原理 (2)2.1.1 单片机概述 (2)2.1.2 单片机的应用领域及发展趋势 (2)2.2 单片机产生音调的方法 (3)2.3 KEIL开发系统 (4)2.4 PROTEUS的操作 (8)3硬件设计 (9)3.1总体方案设计 (9)3.2 单片机最小系统电路 (9)3.2.1 AT89S52芯片性能介绍 (9)3.2.2 电源电路 (13)3.2.3 时钟振荡电路 (13)3.3 键盘扫描模块 (14)3.4 显示模块 (15)3.5 播放模块 (16)4 系统软件设计 (18)4.1编程原理及流程图 (18)5 调试与仿真结果 (22)5.1 软件调试 (22)5.1.1 测试LED显示模块 (22)5.1.2 测试键盘控制模块 (23)5.1.3 测试P3.0口输出 (23)5.2 调试中遇到的问题及解决 (24)5.3 仿真结果 (25)结束语 (26)致 (27)参考文献 (28)附录 (28)附录1 源程序 (29)1绪论几千年来,各种乐器的发声无一不是依靠琴弦、簧片、哨片引起管柱振动而作为声源的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任务书一、课程设计的目的课程设计是自动化专业集中实践环节的主要内容之一。

训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。

学生通过所做课题,熟悉单片机应用系统开发研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。

例如组成系统、编程、调试、绘图等。

使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。

通过本课程设计,主要达到以下目的:1.使学生增进对单片机的感性认识,加深对单片机理论方面的理解。

2.使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。

3.使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。

二、课程设计的要求1.学生需认真阅读课程设计任务书,熟悉有关设计资料及参考资料,熟悉各种设计规范的有关内容,认真完成任务书规定的设计内容。

2.课程设计的成果为“课程设计报告”。

课程设计报告内容要正确,概念要清楚,完成任务书所规定的内容,附有原理图及程序流程图,程序清单,文字要通顺,书写要工整,设计图纸必须符合规范。

3.课程设计报告应在2000字以上(含相关图纸和计划书等),用A4纸打印。

三、课程设计的选题参考(可另自行拟题或参考教材和实验指导书)1.交通灯系统设计2.计时器系统设计3.出租车计价器系统设计4.频率计系统设计5.温度控制系统设计6.音乐播放系统设计四、时间安排及成绩评定课程设计时间:6月8日下午布置课程设计,6月12日下午4:30在信息行政楼八层自动化系会议室辅导课程设计,6月14日全天(自动化1、2班),6月15日全天(自动化3、4班),6月16日全天(交控1班)在信息行政楼B202CPLD 实验室上机调试电路及程序,6月23日下午各班长收齐设计报告交给辅导老师。

辅导老师根据学生的设计资料,设计报告书、图纸等进行评定。

课程设计成绩按百分制分评定。

五、参考资料:牛昱光主编《单片机原理与接口技术》电子工业出版社51单片机实验指导书胡汉才主编《单片机原理及其应用》清华大学出版社出版何立民主编《单片机应用文集》北京航空航天大学出版社出版太原理工大学信息学院自动化系2016/05/23基于温度感应的智能音乐播放器摘要燥热或是寒冷的天气都会使人烦躁,这时可以听音乐来缓解疲劳,但如果听着不合适的音乐就会适得其反。

或是当你寒冷的冬天在洗澡的时候,温度较高高,这时候需要激情的音乐使你更加兴奋;或是在舒适的泡澡时,需要舒缓的音乐来愉悦身心。

手动控制在这里就显得不那么方便,因此需要一个智能播放器可以根据不同温度来播放不同的音乐。

本设计利用51单片机的数码管来完成时间的显示,并利用蜂鸣器实现音乐功能,通过DH11温湿度传感器来采集温度。

并且,通过对定时器初值的设定来产生不同频率的声音,利用定时器中断来完成对音乐节拍长度的控制。

通过音频功率放大器,将单片机输出的信号放大,再通过喇叭播放乐曲。

此设计摆脱了传统音乐播放器的手动操作,取而代之的是智能化操作,能为人们的日常生活提供便利,且成本低廉,值得推广。

关键词:音乐播放;音频转换;温度采集;AbstractHot weather or cold weather will make people irritable, then you can listen to music to ease fatigue, but if listening to inappropriate music will be counterproductive. Or when you are cold in the winter when the bath, the temperature is high, this time the need for passionate music to make you more excited; or in a comfortable bath, the need for soothing music to enjoy the physical and mental. Manual control here is not so convenient, so you need a smart player can play different colors according to different music.The design of the use of 51 single-chip digital control to complete the time display, and the use of buzzer to achieve music function, through the DH11 temperature and humidity sensor to collect temperature. And, by setting the initial value of the timer to produce different frequencies of sound, the use of timer interrupt to complete the control of the length of the music beat. Through the audio power amplifier, the microcontroller output signal amplification, and then through the speaker to play music. This design out of the traditional music player manual operation, replaced by intelligent operation, for people's daily life to facilitate, and low cost, it is worth promoting.Key words:Music player; audio conversion; Temperature collection目录任务书 (1)摘要 (3)一、总体设计 (5)1.1设计概要 (5)1.2具体功能 (5)1.3设计的硬件流程 (5)二、硬件设计 (6)2.1单片机(STC89C51)介绍 (6)2.2原理图 (6)2.2.1 主控程序 (6)2.2.2 供电、程序下载、串口通信模块 (7)2.2.3 数码管及锁存器 (7)2.2.4 DH11温湿度传感器 (8)2.2.5 蜂鸣器 (8)2.2.6 独立键盘 (9)2.3线路接线 (9)三、软件设计 (10)3.1声音信号 (10)3.2节拍信号 (10)3.3音频转换 (10)3.4软件流程设计 (10)3.5程序 (12)四、调试及运行 (21)4.1调试运行步骤 (21)4.2运行结果 (21)五、实验总结 (22)参考资料 (22)1.1设计概要在基于51单片机的音乐播放器中,采用DH11温湿度传感器为硬件基础,通过其对周围温湿度的采集,控制音乐播放。

单片机需外接+5V稳压电源,单片机工作时,用软件对定时器初值进行设定,从而得到所需要的声音频率;通过8位共阴极数码管,可显示温度;将单片机输出的信号放大,接入蜂鸣器即可发声。

1.2具体功能(1)对周围温度进行采集,当采集的温度达到不同设定值时,通过喇叭能播放不同的音乐。

要求播放出的音乐的音阶准确,不能有太大偏差,否则会造成音乐声音刺耳难听;音乐播放必须连贯,即音乐必须有节奏感;喇叭放出的音乐声音响亮,不能太小,否则不能达到乐曲的作用。

(2)在共阴数码管上显示出采集到的温度(摄氏度),包括温度及单位,当采集到温度后,立即在数码管上显示出温度,实时显示。

(3)将音乐编写好存储在单片机中,一共有三首歌曲选择,可通过独立键盘模块选择音乐播放,K1-K3按键分别选择音乐1-音乐3,K4按键为停止播放。

1.3设计的硬件流程2.1单片机(STC89C51)介绍STC89C51RC是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含4K Bytes的可反复擦写1000次的Flash 只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。

STC89C51RC系列单片机是单时钟/机器周期(1T)的兼容8051 内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810 专用复位电路。

2.2原理图2.2.1 主控程序2.2.2 供电、程序下载、串口通信模块2.2.3 数码管及锁存器数码管数码管锁存器2.2.4 DH11温湿度传感器2.2.5 蜂鸣器2.2.6 独立键盘2.3线路接线三、软件设计3.1声音信号声音是音频振动的结果,振动的频率高则为高音,频率低则为低音。

音频范围为20HZ-200KHZ之间,而人类耳朵比较容易辨识的声音大概是200HZ-20KHZ。

一般音响电路是以正弦波信号驱动喇叭,产生悦耳的音乐的。

在数字电路里,则是以脉冲信号驱动喇叭以产生声音。

同样的频率,脉冲信号或正弦信号产生的音效,对于人类的耳朵来说很难有所区别。

若用单片机产生声音,可利用程序产生频率,送到输入/输出端口,再从该点连接到喇叭的驱动电路,即可驱动喇叭。

若要产生音频脉冲,只要算出某一音频的周期,再将此周期除以2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。

就可在P1.0引脚上得到此频率的脉冲。

3.2节拍信号音阶的频率是固定的,而节拍有快有慢,拍子越短节奏越快,拍子越长节奏越慢。

控制发音的时间有两种方法:调用延时子程序或采用定时器中断。

本次设计采用的是定时器中断。

然后在程序执行时顺序查此表,取出音符代码,查频率表,置入T/C口,取出节拍代码,供定时器使用,启动后即可发出声音。

3.3音频转换利用单片机的内部定时器使其工作计数器模式(MODEL1)下,改变其计数值TH0及TL0以产生不同频率的方法产生不同音阶。

3.4软件流程设计程序开始运行时先对单片机进行初始化,其中包括定时器及其工作方式的选择、外部中断设定、定时器初值的设定。

程序流程图如下:3.5程序#include <reg52.h>#include <intrins.h>typedef unsigned char U8;typedef signed char S8;typedef unsigned int U16;typedef signed int S16;typedef unsigned long U32;typedef signed long S32;typedef float F32;typedef double F64;#define uchar unsigned char#define uint unsigned int#define Data_0_time 4//----------------IO口定义区--------------------//sbit P2_0 = P2^0 ;sbit dula=P2^6;sbit wela=P2^7;//----------------定义区--------------------//U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_t emp;U8 U8comdata;U8 outdata[5]; //定义发送的字节数U8 indata[5];U8 count, count_r=0;U8 str[5];U16 U16temp1,U16temp2;U8table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delayms(U16 xms){U16 i,j;for(i=xms;i>0;i--){for(j=110;j>0;j--);}}void Delay(U16 j){ U8 i;for(;j>0;j--){for(i=0;i<27;i++);}}void Delay_10us(void){U8 i;i--;i--;i--;i--;i--;i--;}void COM(void){U8 i;for(i=0;i<8;i++){U8FLAG=2;while((!P2_0)&&U8FLAG++);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(P2_0)U8temp=1;U8FLAG=2;while((P2_0)&&U8FLAG++);//超时则跳出for循环if(U8FLAG==1)break;//判断数据位是0还是1// 如果高电平高过预定0高电平值则数据位为1U8comdata<<=1;U8comdata|=U8temp; //0}//rof}//-----湿度读取子程序------------//--------------------------------//----以下变量均为全局变量--------//----温度高8位== U8T_data_H------//----温度低8位== U8T_data_L------//----湿度高8位== U8RH_data_H-----//----湿度低8位== U8RH_data_L-----//----校验8位== U8checkdata-----//----调用相关子程序如下----------//---- Delay();, Delay_10us();,COM();//--------------------------------void RH(void){//主机拉低18msP2_0=0;Delay(180);P2_0=1;//总线由上拉电阻拉高主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();//主机设为输入判断从机响应信号P2_0=1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!P2_0) //T !{U8FLAG=2;//判断从机是否发出80us 的低电平响应信号是否结束while((!P2_0)&&U8FLAG++);U8FLAG=2;//判断从机是否发出80us 的高电平,如发出则进入数据接收状态while((P2_0)&&U8FLAG++);//数据接收状态COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;P2_0=1;//数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp==U8checkdata_temp){U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8T_data_L=U8T_data_L_temp;U8checkdata=U8checkdata_temp;}//fi}//fi}char code dx516[3] _at_ 0x003b;sbit BEEP=P2^3; //喇叭输出脚sbit P10=P1^0;sbit K1= P3^0;sbit K2= P3^1;sbit K3= P3^2;sbit K4= P3^3;uchar th0_f; //在中断中装载的T0的值高8位uchar tl0_f; //在中断中装载的T0的值低8位//T0的值,及输出频率对照表uchar code freq[36*2]={0xA9,0xEF,//00220HZ ,1 //00x93,0xF0,//00233HZ ,1#0x73,0xF1,//00247HZ ,20x49,0xF2,//00262HZ ,2#0x07,0xF3,//00277HZ ,30xC8,0xF3,//00294HZ ,40x73,0xF4,//00311HZ ,4#0x1E,0xF5,//00330HZ ,50xB6,0xF5,//00349HZ ,5#0x4C,0xF6,//00370HZ ,60xD7,0xF6,//00392HZ ,6#0x5A,0xF7,//00415HZ ,70xD8,0xF7,//00440HZ 1 //120x4D,0xF8,//00466HZ 1# //130xBD,0xF8,//00494HZ 2 //140x24,0xF9,//00523HZ 2# //150x87,0xF9,//00554HZ 3 //160xE4,0xF9,//00587HZ 4 //170x3D,0xFA,//00622HZ 4# //180x90,0xFA,//00659HZ 5 //190xDE,0xFA,//00698HZ 5# //200x29,0xFB,//00740HZ 6 //210x6F,0xFB,//00784HZ 6# //220xB1,0xFB,//00831HZ 7 //230xEF,0xFB,//00880HZ `10x2A,0xFC,//00932HZ `1#0x62,0xFC,//00988HZ `20x95,0xFC,//01046HZ `2#0xC7,0xFC,//01109HZ `30xF6,0xFC,//01175HZ `40x22,0xFD,//01244HZ `4#0x4B,0xFD,//01318HZ `50x73,0xFD,//01397HZ `5#0x98,0xFD,//01480HZ `60xBB,0xFD,//01568HZ `6#0xDC,0xFD,//01661HZ `7 //35};//定时中断0,用于产生唱歌频率timer0() interrupt 1{TL0=tl0_f;TH0=th0_f; //调入预定时值BEEP=~BEEP; //取反音乐输出IO}//******************************//音乐符号串解释函数//入口:要解释的音乐符号串,输出的音调串,输出的时长串changedata(uchar *song,uchar *diao,uchar *jie){uchar i,i1,j;char gaodi; //高低+/-12音阶uchar banyin;//有没有半个升音阶uchar yinchang;//音长uchar code jie7[8]={0,12,14,16,17,19,21,23}; //C调的7个值*diao=*song;for(i=0,i1=0;;){gaodi=0; //高低=0banyin=0;//半音=0yinchang=4;//音长1拍if((*(song+i)=='|') || (*(song+i)==' ')) i++; //拍子间隔和一个空格过滤switch(*(song+i)){case ',': gaodi=-12;i++;//低音break;case '`': gaodi=12;i++; //高音break;}if(*(song+i)==0) //遇到0结束{*(diao+i1)=0; //加入结束标志0*(jie+i1)=0;return;}j=*(song+i)-0x30; i++; //取出基准音j=jie7[j]+gaodi; //加上高低音yinc: switch(*(song+i)){case '#': //有半音j加一个音阶i++;j++;goto yinc;case '-': //有一个音节加长yinchang+=4;i++;goto yinc;case '_': //有一个音节缩短yinchang/=2;i++;goto yinc;case '.': //有一个加半拍yinchang=yinchang+yinchang/2;i++;goto yinc;}*(diao+i1)=j; //记录音符*(jie+i1)=yinchang; //记录音长i1++;}}//******************************************//奏乐函数//入口:要演奏的音乐符号串void play(uchar *songdata){uchar i,c,j=0;uint n;uchar xdata diaodata[112]; //音调缓冲uchar xdata jiedata[112]; //音长缓冲changedata(songdata,diaodata,jiedata); //解释音乐符号串TR0=1;for(i=0;diaodata[i]!=0;i++) //逐个符号演奏{tl0_f=freq[diaodata[i]*2]; //取出对应的定时值送给T0 th0_f=freq[diaodata[i]*2+1];for(c=0;c<jiedata[i];c++) //按照音长延时{for(n=0;n<32000;n++);if((!K1)||(!K2)||(!K4)||(!K3))//发现按键,立即退出播放{TR0=0;return;}}TR0=0;for(n=0;n<500;n++); //音符间延时TR0=1;}TR0=0;}//两只老虎uchar code xianjian[]={"|1_2_3_1_1_2_3_1|4_5_6_4_5_6_|1_2_3_1_1_2_3_1|4_5_6_4_5_6_|1_2_3_1_1_2_3_1|4_5_6_ 4_5_6_|"};//童话uchar code song3[]={"5_5_4_3.|3_4_3_|3_4_3_4_3_2_1-|1_3_5_6.|6_6_5_2_2_4_3-|1_3_5_6_|6_6_7_6_5_4_3_4_3_2 _1_--|"};//世上只有妈妈好uchar code mamahao[]={"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|""2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"};void main(){/* 系统初始化*/Delay(20000);TMOD = 0x01; //使用定时器0的16位工作模式TR0 = 0;ET0 = 1; //定时器0中断EA = 1; //打开总中断Delay(1); //延时100US(12M晶振)while(1){//调用温湿度读取子程序RH();//串口显示程序str[0]=U8RH_data_H; // 把湿度整数给予SRT0.(直接使用即可)str[1]=U8RH_data_L; // 把湿度小数给予SRT1.==0(为零,不用)str[2]=U8T_data_H; // 把温度整数给予SRT2.(直接使用即可)str[3]=U8T_data_L; // 把温度小数给予SRT3.==0(为零,不用)str[4]=U8checkdata; // 校验位(不用)dula=1;P0=table[str[2]/10];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delayms(1);dula=1;P0=table[str[2]%10];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delayms(1);dula=1;P0=table[12];dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delayms(1);if(str[2]>30){play(song3); //播放音乐}if(str[2]>32){play(xianjian); //播放音乐}if(!K3){while(!K3);play(mamahao); //播放音乐}if(!K1){while(!K1);play(xianjian); //播放音乐}if(!K2){while(!K2);play(song3); //播放音乐}}}四、调试及运行4.1调试运行步骤1、检查串口的接口是否连接正确。

相关文档
最新文档