最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

51单片机简易电子琴

来源:动视网 责编:小OO 时间:2025-09-30 22:13:29
文档

51单片机简易电子琴

基于51单片机简易电子琴设计院系;电气信息工程学院班级;10通信工程三班*****指导老师:设计周数:一周一设计题目:设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。使用元件:ATC51、LM324,喇叭,按键等二设计目的(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,对其进行测试与检查。(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的
推荐度:
导读基于51单片机简易电子琴设计院系;电气信息工程学院班级;10通信工程三班*****指导老师:设计周数:一周一设计题目:设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。使用元件:ATC51、LM324,喇叭,按键等二设计目的(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,对其进行测试与检查。(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的
基于51单片机简易电子琴设计

院    系;电气信息工程学院

班    级;10通信工程三班

*    **** 

指导老师:

设计周数:一周

一设计题目:

设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。

使用元件:ATC51、LM324,喇叭,按键等

 

二设计目的

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

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

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

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

三设计思路

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

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

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

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

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

4.编写源程序,进行调试

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

设计原理

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

各音阶标称频率值: 

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

原理:

 系统硬件图

 

 流程图:

  

。 

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

 五 实验源程序

方案一:产生按键音符

  ORG 0000H

M设置定时器0的工作方式

       SETB ET0               ; 设置定时器0中断

       SETB TR0               ; 启动定时器0

W调用KEY子程序,判断有键按下否?第几个键?

       CLR EA                 ;屏蔽中断

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

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

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

       MOV DPTR,#TABLE      ;指向表头

       MOVC A,@A+DPTR      ; 查表

       MOV TH0,A             ;将数据高位送TH0

       MOV 21H,A             ; 将高位备份

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

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

       INC A                  ;取低位数据

WAIT2: LCALL KEY

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

       CPL C               ;利用标志位CY来判断是哪个键按下

W移位判断

       INC R0       

S将按键号存22H,R3=0有键按下

B中断产生方波,从P1.0口输出

TABLE: DW 65030,968,8,820,777,684,580 ; 7,6,5,4,3,2,1

方案二:产生按键音符

START: MOV P1,#00H

       SETB ET0                       ;计数器0

       MOV TL1,#09CH                 ;定时器初植

       CLR TR0                        ;定时器不允许

S键盘扫描

       MOV A,P2                   ;判断键盘按下,跳到SCAN_1,若未按,继续扫描

SCAN_1:ACALL DELAY ;是不是真的要按下?如果是,则跳转SU_KEY查询是哪个按下?

S判断是哪个键按下?

 信号周期

M如果第一个按键按下,则R1=19,同时程序转NEXT

MU_3:  MOV R1,#15

MU_4:  MOV R1,#14

MU_5:  MOV R1,#13

MU_6:  MOV R1,#11

MU_7:  MOV R1,#10

       SETB TR0                       ;启动定时器

N没键按下继续执行,有键按下,返回读引脚

       MOV A,P2                       ;真的没键按下?

       CLR TR0                        ;不响

       AJMP SCAN                     ;扫描键盘去 

 中断程序

      DJNZ R0,RE                      ;R0不等于0时,返回

D延长时间等待,键盘消抖

 

生日快乐歌:(扩展功能部分程序)

 

M;设置定时器0工作方式

      MOV IE,#82H                    ;设置中断

MAIN0:MOV 30H,#00H

NEXT: MOV A,30H

      MOV DPTR,#TABLE              ;查表

SING: DEC A

      MOV DPTR,#TABLE1                   ;查表

T;中断服务程序

D;延时187ms

 W2:  MOV R4,#187

 W3:  MOV R3,#248

T;音符计数植

DW 65157,65178,65217

 

 ;节拍表

DB 0C4H,0B4H,04H

 

 

DB 0C4H,0B4H,04H

 

 

DB 0C4H,0B4H,04H

 

 

END

六、实验总结:

经过这个课程设计,虽然时间比较短,完成任务的效果不是很理想,但是既然自己尝试

过,就肯定学到了不少东西,也真正体会到做电子设计行业工作的辛苦,不过自己收获还是挺大的。

这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较综合。

经过短短一周的课程设计,我认识到,课程设计能真正让人学到实际应用的东西的一门课程。收获比上几星期课还多。

    首先,要实现题目要求的功能并有所创新,我们必须全心地投入其中,养成一种敢于钻研敢于创新的习惯。在把课程要求实现到实际中来的过程中,首先必须清楚明白地了解几个参考程序的每一行的意思,这就需要敢于静心钻研。为了把使得程序更加完整,就必须进行创新,这就需要敢于创新。

    其次,通过课程设计,让我在课本的基础上,更深入的了解了各种芯片的用法和程序的完成过程,调试方法及技巧。为了了解键盘,查找了不少单片机的资料,了解了键盘的初始化,存取缓存,扫描键盘,读取键码以及键码和显示码之间的转换。为了实现基本功能,认真研究了参考程序的意义,了解了电子琴的不同音阶放音功能的实现,长短音的实现,更深入了解了单片机的使用方法。

编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了DEBUG 的使用,DEBUG对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。

检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。在设计扩展功能的过程中,大胆想像并且用多种思路来求解实现目标是必备的武器。

参考文献:

《单片机应用及C51程序设计》 机械工业出版社

《单片机原理与实践指导》 中国电力出版社

《电子线路CAD》北京大学出版社

《电子线路CAD设计》电子工业出版社

《51单片机开发与应用技术详解》电子工业出版社

文档

51单片机简易电子琴

基于51单片机简易电子琴设计院系;电气信息工程学院班级;10通信工程三班*****指导老师:设计周数:一周一设计题目:设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。使用元件:ATC51、LM324,喇叭,按键等二设计目的(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,对其进行测试与检查。(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top