51单片机简易电子琴.docVIP

  • 41
  • 0
  • 约6.2千字
  • 约 10页
  • 2017-08-09 发布于河南
  • 举报
基于51单片机简易电子琴设计 院 系;电气信息工程学院10通信工程三班张瑞 一设计题目: 设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。 使用元件:AT89C51、LM324,喇叭,按键等 二设计目的 (1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。 (2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。 (3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。 (4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。 四/A转换接口电路,CPU执行一条输出指令将数据送入D/A, 即可在其输出端得到一定的电压输出。给D/A转换器输入按正弦规律变化的数据, 在其输出端即可产生正弦波。对于音乐,每个音阶都有确定的频率。 各音阶标称频率值: (2)由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可 原理: 系统硬件图 流程图: 。 本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率 ,那么根据不同的频率计算出应该赋给定时器的计数值,: 五 实验源程序 方案一:产生按键音符 ORG 0000H LJMP MAIN ORG 000BH LJMP BREAK MAIN: MOV TMOD,#01H ;设置定时器0的工作方式 SETB EA SETB ET0 ; 设置定时器0中断 SETB TR0 ; 启动定时器0 WAIT1: LCALL KEY ; 调用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 ;取低位数据 MOVC A,@A+DPTR MOV TL0,A MOV 20H,A WAIT2: LCALL KEY SETB EA CJNE R3,#00H,WAIT1 JMP WAIT2 KEY: MOV R3,#00H ; KEY子程序,判断有键按下否?第几个键? MOV R1,#0FFH MOV R0,#00H MOV A,R1 MOV P2,A MOV A,P2 CLR C CPL C ;利用标志位CY来判断是哪个键按下 MOV R2,#08H WAIT3: RLC A ;移位判断 JNC STORE INC R0 DJNZ R2,WAIT3 STORE: MOV 22H,R0 ; 将按键号存22H,R3=0有键按下 MOV R3,#00H RET BREAK: PUSH ACC ; 中断产生方波,从P1.0口输出

文档评论(0)

1亿VIP精品文档

相关文档