51单片机简易电子琴.docx

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

基于51单片机简易电子琴设计

院 系;电气信息工程学院

班 级;10

通信工程三班

指导老师:

设计周数:一周

一设计题目 :

设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。使用元件:AT89C51、LM324,喇叭,按键等

二设计目的

能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。

熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。

为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。

对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

三设计思路

在本次课程设计中,根据复杂程序设计思想——模块化程序设计,分析和确定程序总体设计目标:电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体可见下)。

程序设计的思路按以下顺序进行:

分析与确定程序总体设计目标

将总体目标划分为若干模块

定义每个模块的具体任务,明确它与其他模块间的通信方式

编写源程序,进行调试

四、设计原理、思路及流程图

设计原理

对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。对于音乐,每个音阶都有确定的频率。

各音阶标称频率值:

由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

原理:

系统硬件图

g口

g

,比

沺g

沺gg沁邓欢妞

',上"五

,压

,1,111. 田

子IS

g,必

g

i句Jt汀邸I1

i句

Jt汀

邸I

1吓决和扭1I

巨l

,屯

Tl

丁-.(,

.又|

x

屁沮缸

按 拉钊却令

四沁邓记g

5m

g温呵曰刑

g温呵

刑加峈

屯住义妞位易电子琴硬件

流程图 :

开 始

开 始

TO初始化井开王肵忠殴 TO中断

桉键控下应功否?

桉键控下应功否?

识别控湟功胧

识别控湟功胧

根据桉键功能,装人音符T闱到TO中

启动 TO工

启动 TO工作

控澄释煎咸功否?

停止TO

停止TO工作

本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T=216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,:

五实验源程序

方案一:产生按键音符

ORG0000H

LJMPMAINORG000BHLJMPBREAK

MAIN: MOVTMOD,#01H ;设置定时器0的工作方式

SETBEA

SETBET0 ;设置定时器0中断

SETBTR0 ;启动定时器0

WAIT1:LCALLKEY ;调用KEY子程序,判断有键按下否?第几个键?CLREA ;屏蔽中断

CJNER3,#00H,WAIT1 ;如果R3=0,表示有键按下

MOVA,22H ;将22H里存放的按键号送给A

RLA ;因为查表里都是字,所以得乘2查得数据

MOVDPTR,#TABLE ;指向表头MOVCA,@A+DPTR ;查表

MOVTH0,A ;将数据高位送TH0

MOV21H,A ;将高位备份

MOVA,22H ;将22H里存放的按键号送给A

RLA ;因为查表里都是字,所以得乘2查得数据

INCA ;取低位数据

MOVCA,@A+DPTRMOVTL0,A

MOV20H,AWAIT2:LCALLKEY

SETBEA

CJNER3,#00H,WAIT1JMPWAIT2

KEY: MOVR3,#00H ;KEY子程序,判断有键按下否?第几个键?

MOVR1,#0FFHMOVR0,#00HMOVA,R1MOVP2,AMOVA,P2

CLRC

CPLC ;利用标志位CY来判断是哪个键按下MOVR2,#08H

WAIT3:RLCA ;移位判断JNCSTORE

INCR0

DJNZR2,WAIT3

STORE:MOV22H,R0 ;将按键号存22H,R3=0有键按下

MOVR3,#00HRET

BREAK:PUSHACC ; 中断产生方波,从

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档