基于51单片机节拍器的设计与实现.docx

基于51单片机节拍器的设计与实现.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE6

PAGE

PAGE2

基于51单片机节拍器的设计与实现

目录

TOC\o1-3\h\z\u1课题的背景和意义 2

2硬件电路设计 2

3软件设计 4

3.1程序流程 4

3.2程序设计 6

4节拍器的实现 13

4.1电路搭建 13

4.2程序烧录 16

1课题的背景和意义

节拍简单说就是打拍子,就像听音乐时不由自主地随之拍手或跺脚。节拍器是一种能在各种速度中发出稳定的节拍的电动或电子装置。在乐器学习中经常需要用节拍器来控制节奏。

本课题任务是设计一个基于51系列单片机的节拍器,同时附带音乐播放功能;

具体功能如下:

使用四个按键控制,一个用来切换到慢速节拍的状态,一个用来切换到快速节拍的状态,一个用来切换打节拍时LED的闪烁方式,一个用来切换歌曲,其中音乐播放共有两首歌曲,一首是大约在冬季,一首是寂寞沙洲冷,播放歌曲时,蜂鸣器发出某个音调,与之对应的LED点亮。

2硬件电路设计

如图1所示,本系统由时钟电路、复位电路、单片机AT89C51、按键输入电路、蜂鸣器和LED显示电路组成。

图1系统方框图

如图2所示,通过P1口控制LED的闪烁。蜂鸣器的播放由P3.7口控制。按键输入电路由4个独立式按键组成。

设定了三种速度的节拍。默认速度为中速,通过P22(快速)和P23(慢速)口所接按钮控制另外两种速度。当按下并锁住(不弹起)“按下慢速”键后,切换到慢速节拍模式;当按下并锁住(不弹起)“按下快速”键后,切换到快速节拍模式;按下“闪烁方式切换”键后改变LED的闪烁方式,按下“乐曲切换”键后可切换歌曲。共有两首歌曲。

图2电路图

表1元器件清单

名称

元器件名称

型号/参数

数量

单片机

AT89C51

STC89C51

1

陶瓷电容

CAP

30PF

2

电解电容

CAP-ELEC

22uF

1

晶振

CRYSTAL

12MHZ

1

发光二极管

LED-YELLOW

红色

8

电阻

R1

1K

1

排阻

RESPACK-8

1K

1

独立按键

K1、K2、K3、K4

8

蜂鸣器

LS1

3软件设计

3.1程序流程

本系统程序主要由主程序、播放音乐子程序、延时165ms子程序、延时1ms子程序及蜂鸣器叫一声子程序构成。

主程序流程如图3所示

图3主程序流程

播放音乐子程序流程如图4所示。

图4播放音乐子程序流程

3.2程序设计

播放的两首歌曲,一首为“大约在冬季”,另一首为“寂寞沙洲冷”。通过改变蜂鸣器声音的延时时间来改变节拍器的速度。

C语言源程序代码如下:

#includereg52.h

#defineucharunsignedchar

#defineuintunsignedint

sbitkey1=P3^2;//按key1可选择节拍器模式并切换led显示样式

sbitkey2=P3^3;//按key2可选择音乐播放模式并可切换歌曲

sbitfm=P3^7;//蜂鸣器连接的IO口

sbitP34=P2^2;//节拍器慢速模式开关

sbitP35=P2^3;//节拍器快速模式开关

ucharcodehuayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//led样式1

ucharcodehuayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,

0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//led样式2

uinta;

ucharcount1;

ucharcount2;

uchartimeh,timel,i;

//简谱

//编程规则:字节高位是简谱码,低位是节拍码,

//1-7代表中央C调,8-E代表高八度,0代表停顿

//最后的0xff是结束标志

ucharcodedyzdj[]={//大约在冬季

0x81,0x82,0x81,0x02,0x81,0x91,0xA1,0xC1,0xC2,0x02,

//轻轻地我将离开你

0xA1,0xC1,0xD2,0xA1,0xA1,0x92,0x91,0xA5,0x02,

//请将眼角的泪拭去

0xA1,0x91,0x82,0x61,0x61,0x02,0xA1,0x91,0x82,0x61,0x61,0x02,

//漫漫长夜里,未来日子里

0x61,0x81,0x92,0x81,0x81,0x81,0x91,0x81,0xC5,0x04,

//亲爱的

您可能关注的文档

文档评论(0)

专注于各类教育类资料、资格考试类资料、实用模板类资料、行业资料等十余年。

1亿VIP精品文档

相关文档