电子琴的试验报告.docx

上传人:scccc 文档编号:14063252 上传时间:2022-02-01 格式:DOCX 页数:7 大小:38.26KB
返回 下载 相关 举报
电子琴的试验报告.docx_第1页
第1页 / 共7页
电子琴的试验报告.docx_第2页
第2页 / 共7页
电子琴的试验报告.docx_第3页
第3页 / 共7页
电子琴的试验报告.docx_第4页
第4页 / 共7页
电子琴的试验报告.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《电子琴的试验报告.docx》由会员分享,可在线阅读,更多相关《电子琴的试验报告.docx(7页珍藏版)》请在三一文库上搜索。

1、单片机课程设计设计题目电子琴指导老师:苏参与实验者:moxiaoxiao专业:统本电信 0801地点:3#楼北楼6051 .设计目的:(1) .培养综合运用知识的水平(2) .朋友查阅资料,使用工程设计标准及编写设计文档的水平.(3) .掌握单片机应用系统的设计方法.(4) .提升计算机绘图水平2 .设计任务:利用DP51PROC实验系统上的定时器/计数器,按键和蜂鸣器单元.用单片机I/O口线限制蜂鸣器发出不同的音调,程序检测按键状态,7个按键中某一键按下时,蜂鸣器对应标称音阶.3 .设计与调试环境KEIL uVision2 是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS

2、51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM ,汇编和 C语言的程序设计,它的界面和常用的微软 VC+的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的 功能.1:按下面的步骤建立一个工程:图1 4选取芯片图1 5新建程序文件(1)点击 图1 5中的3保存新建的程序,也可以用菜单File - Save或快捷键 Ctrl+S进行保存.因是新文件所以保存时会弹出类似图1-3的文件操作窗口,我们把第一个程序命名为,保存在工程所在的目录中,这时程序单词有了不同的颜色,说明 KEIL的C语法检查生效了.如 图1 6鼠标在屏 幕左边的Source Group1文件夹图

3、标上右击弹出菜单,在这里可以做工程中增加减少文件等操作.我 们选 Add File t o Group SourceGroup 1弹出文件窗口,选择刚刚保存的文件,按 ADD按钮,关闭 文件窗,程序文件已加到工程中了.这时在 Source Group1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看.图1 6把文件参加到工程文件组中编译程序(2)进入调试模式,软件窗口样式大致如图1 8所示.图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效.3是复位,模拟芯片的复位,程序回到最开头处执行.按4我们可以翻开 5中的串行调试窗口,这个窗口我们可以看

4、到从51芯片的串行口输入输出的字符,这工程也正是在这里看运行结果.2.输入输出引脚P0端口 P0是一个8位漏极开路型双向I/O端口,端口置 1 (对端口写1)时作高阻抗输入端.作为输出口时能驱动8个TTL.对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻.在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用.P1端口 P1是一个带有内部上拉电阻的1时,内部上拉电阻将端口拉到高电平,作输入用.对内部 址信息.P2端口 P2是一个带有内部上拉电阻的8位双向8位双向1时,内部上拉电阻将端口拉到高电平,作输

5、入用.对内部址和限制信息.在访问外部程序和16位外部数据存储器时,I/0端口.输出时可驱动4个TTL.端口置Flash程序存储器编程时,接收低8位地I/0端口.输出时可驱动4个TTL.端口置Flash程序存储器编程时,接收高8位地P2 口送出高 8位地址.而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变.P3端口 P2是一个带有内部上拉电阻的8位双向I/0端口.输出时可驱动4个TTL.端口置1时,内部上拉电阻将端口拉到高电平,作输入用.对内部 Flash程序存储器编程时,接限制信息.除此之外P3端口还用于一些专门功能,具体请看表2 2.*P1 3端口在做输入使用时,因内部有上接

6、电阻,被外部拉低的引脚会输出一定的电流.P3引脚兼用功能串行通讯输入(RXD )串行通讯输出(TXD )外部中断0 (外部中断1 (INT1 )定时器0定时器1外部数据存储器写选通WR外部数据存储器写选通 RD生成HEX文件和最小化系统3:如何用KEIL uVision2 来编译生成用于烧写芯片的HEX文件.HEX文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示,常用来保存单片机或其他处理器 的目标程序代码.它保存物理程序存储区中的目标代码映象.一般的编程器都支持这种格式.翻开第一 课做的工程,翻开它的所在目录,找到的文件就可以翻开先前的工程了.

7、然后右击图31中的1项目文件夹,弹出工程功能菜单,选 Options for Target Targe弹出工程选项设置窗口,同样先选中工程 文件夹图标,这时在 Project菜单中也有一样的菜单可选.翻开工程选项窗口,转到 Output选项页 图32所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件名,3那么是决定是否要创建HEX文件,选中它就可以输出 HEX文件到指定的路径中.将它重新编译一次,很快在编译信息窗 口中就显示 HEX文件创立到指定的路径中了,如 图3-3.这样就可用编程器所附带的软件去读取并 烧到芯片了.(技巧:一、在图31中的1里的工程文件树形目录中,先选中对象,再

8、单击它就可对它进行重命名操作,双击文件图标便可翻开文件.二、在 Project下拉菜单的最下方有最近编辑过的工程路径保 存,可以快速翻开最近在编辑的工程.) 图3-1工程功能菜单 图32工程选项窗口 四.工作原理:要求设计的电子琴共有七个按键对应着七个音阶,也就是按下不同的按键时,蜂鸣器会发出不同平率的声音.而这些声音的频谱范围约在几十到几千赫兹,假设能利用程序来限制某个口线不断的输出 高低电平,那么在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,假设再利用程序限制 高低电平的持续时间,就能改变输出波形的频率,从而改变音调.我们用MC51单片机实现这一功能.不同音阶所

9、对应的频率如下列图所示:音名1234567频率(Hz)784880乐曲中,每一音符对应着确定的频率,表 1给出C调时各音符频率.如果单片机某个口线输出高“低电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音符的声音.本系统就是根据此原理设计,对于单片机来说要产生一定频率的方波大致是先将某口线输出高 电平然后延时一段时间再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的 时间就可以改变输出方波的频率本系统的具体电路如右图所示.图中 P1. 1-P1 . 7分别接7个按键对应着乐曲中的1、2、3、4、5、6、7七个音符.P3. 6 口通过功率放大 与喇叭相连.当 P

10、1. 1中有一个按键按下时单片机便执行 相应的子程序对定时器赋一个计数初值同时使P3. 6 口输出高电平.当定时器定时结束时将P3. 6 口的值取反并重新赋计数初值继续计数,再次计完时再将P3. 6 口的值取反再赋初值计数,如此循环便在P3. 6 口产生一定频率的方波, LM386将此方波经过功率放大后通过喇叭输出便产生对应音符的声 音.按不同的按键单片机便执行不同的子程序给定时器赋不同的初值得到不同频率的方波从而输出不同 的声音,因此按一个按键输出一种音符.在单片机的特殊功能存放器中有 6个存放器(TH1、TH0、 TL1、TL0、 TMOD 、 TCON)是用来限制 单片机的定时器的,通过

11、编程对这些特殊功能存放器的读写就可以限制单片机的两个定时器T0、T1o当单片机复位时这 6个存放器默认值都是 00H o五.设计思想(1)系统的总框图(2)系统电路图(3)软件设计思路由于每个音阶对应着不同的频率,当然对单片机来说产生不同的频率非常方便,我们可以利用单片机的定时、计数器 T0来产生这样的方波频率信号,因此我们只要把1-7的七个音阶对应的频率关系弄正确即可.本次设计中单片机晶振为12MHz ,那么定时器的计数周期为1MHz,假设选择工作方式为 1,那T值便为T=216-5*105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数 T0相关的计数

12、值如下表所示:采用查表程序查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应 的数据.工作方式1工作方式1是16位的定时/计数方式,将 M1M0设为01.对于定时器的工作模式可以木K据定时器的存放器TMOD来设置:M1M0 :定时/计数器共有四种工作方式,就是用 M1M0来限制的,2位正好是四种组合.C/T:定时/计数器即可作定时用也可用计数用,如果 C/T为O就是用作定时器开关往上 打,如果C/T为1就是用作计数器开关往下打.一个定时/计数器同一时刻要么作定时用,要么作 计数用,不能同时用的.GATE :当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数

13、器端, 中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况GATE=0 ,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的翻开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果 TR1等于0那么开关翻开,计数脉冲无法通过,因此定时/计数是否工作,只取 决于TR1.GATE=1 ,在此种情况下,计数脉冲通路上的开关不仅要由TR1来限制,而且还要受到 INT1引脚的限制,只有 TRl为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过.这个特性可 以用来测

14、量一个信号的高电平的宽度.I程序流程图第一步是对定时器 T0进行初始化,设定它的工作状态对于本系统将 T0设定为工作方式 O;然后判断是否有键按下,如果没有按键按下,继续判断,如果有按键按下,那么判断是哪个键按下;再根据按 键的功能将计数初彳t装入定时器T0中中并启动T0,当T0定时完毕后,重新装入计数初值继续定时并将P3. 6取反,再次定时完毕后再一次的装入计数初值继续定时并将P3. 6取反,一直循环此操作直到按键释放为止,按键释放后停止T0工作并再次判断是否又有按键按下,并继续执行以前的过程.n程序BUZZ EQU ;定义端口ORG 1000HLJMP MAINORG 000BHLJMP

15、INT_T0ORG 1100HMAIN:MOV SP,#60H ; 初始化堆栈指针MOV P1,#0FFH ;设置P1 口为输入模式MOV TMOD,#01H ; 设置定时器0为工作模式1SETB ET0 ; 开定时器0中断SETB EA ; 开总中断CLR TR0 ; 关闭定时器0START:MOV R0,P1CJNE R0,#0FFH,KEY1;键盘扫描CLR TR0SJMP STARTKEY1:CJNE R0,#0FEH,KEY2 ; K1 键按下MOV 30H,#0FBH ;设置音阶 1MOV 31H,#0E9HLJMP SET_TIMERKEY2:CJNE R0,#0FDH,KEY3

16、; K2 键按下MOV 30H,#0FCH ;设置音阶 2MOV 31H,#5CHLJMP SET_TIMERKEY3:CJNE R0,#0FBH,KEY4; K3 键按下MOV 30H,#0FCH ;设置音阶 3MOV 31H,#0C1HLJMP SET_TIMERKEY4:CJNE R0,#0F7H,KEY5 ; K4 键按下MOV 30H,#0FCH ;设置音阶 4MOV 31H,#0EFHLJMP SET_TIMERKEY5:CJNE R0,#0EFH,KEY6 ; K5 键按下MOV 30H,#0FDH ;设置音阶 5MOV 31H,#045HLJMP SET_TIMERKEY6:C

17、JNE R0,#0DFH,KEY7; K6 键按下MOV 30H,#0FDH ;设置音阶 6MOV 31H,#92HLJMP SET_TIMERKEY7:CJNE R0,#0BFH,NOKEY; K7 键按下MOV 30H,#0FDH ;设置音阶 7MOV 31H,#0D6HSET_TIMER:SETB TR0 ;发声SJMP STARTNOKEY:CLR TR0 ; 无键按下SJMP STARTINT_T0: ; T0中断效劳程序MOV TH0,30H ;定时器赋初值MOV TL0,31HCPL BUZZ ; 输出方波RETI ;END六.总结通过两周的紧张工作,终于完成了简易电子琴的设计,这个课程设计是我受益匪浅,在老师的指导 下,我们逐渐了解了硬件设计的整个流程,并且加深了我对单片机这门课程内容的理解,通过这个 课程设计,不仅使我了解了组成原理的脊髓,而且使我对单片机从陌生到处不理解,扩充了我的知 识面和理解应用水平.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1