电子琴的实验报告Word下载.docx
- 文档编号:21846195
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:7
- 大小:20.34KB
电子琴的实验报告Word下载.docx
《电子琴的实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《电子琴的实验报告Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
KEILuVision2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
1:
按下面的步骤建立一个项目:
图1-4选取芯片
图1-5新建程序文件
(1)点击图1-5中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。
因是新文件所以保存时会弹出类似图1-3的文件操作窗口,我们把第一个程序命名为,保存在项目所在的目录中,这时程序单词有了不同的颜色,说明KEIL的C语法检查生效了。
如图1-6鼠标在屏幕左边的SourceGroup1文件夹图标上右击弹出菜单,在这里可以做项目中增加减少文件等操作。
我们选“AddFiletoGroup‘SourceGroup1’”弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。
这时在SourceGroup1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。
图1-6把文件加入到项目文件组中
编译程序
(2)进入调试模式,软件窗口样式大致如图1-8所示。
图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。
3是复位,模拟芯片的复位,程序回到最开头处执行。
按4我们可以打开5中的串行调试窗口,这个窗口我们可以看到从51芯片的串行口输入输出的字符,这项目也正是在这里看运行结果。
2.输入输出引脚
(1)P0端口[P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。
作为输出口时能驱动8个TTL。
对内部Flash程序存储器编程时,接收指令字节;
校验程序时输出指令字节,要求外接上拉电阻。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。
(2)P1端口[-]P1是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收低8位地址信息。
(3)P2端口[-]P2是一个带有内部上拉电阻的8位双向I/0端口。
对内部Flash程序存储器编程时,接收高8位地址和控制信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(4)P3端口[-]P2是一个带有内部上拉电阻的8位双向I/0端口。
对内部Flash程序存储器编程时,接控制信息。
除此之外P3端口还用于一些专门功能,具体请看表2-2.。
*P1-3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。
P3
引脚兼用功能
串行通讯输入(RXD)
串行通讯输出(TXD)
外部中断0(
外部中断1(INT1)
定时器0
定时器1
外部数据存储器写选通WR
外部数据存储器写选通RD
生成HEX文件和最小化系统
3:
如何用KEILuVision2来编译生成用于烧写芯片的HEX文件。
HEX文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示,常用来保存单片机或其他处理器的目标程序代码。
它保存物理程序存储区中的目标代码映象。
一般的编程器都支持这种格式。
打开第一课做的项目,打开它的所在目录,找到的文件就可以打开先前的项目了。
然后右击图3-1中的1项目文件夹,弹出项目功能菜单,选OptionsforTarget’Target1’,弹出项目选项设置窗口,同样先选中项目文件夹图标,这时在Project菜单中也有一样的菜单可选。
打开项目选项窗口,转到Output选项页图3-2所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件名,3则是决定是否要创建HEX文件,选中它就可以输出HEX文件到指定的路径中。
将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建到指定的路径中了,如图3-3。
这样就可用编程器所附带的软件去读取并烧到芯片了。
(技巧:
一、在图3-1中的1里的项目文件树形目录中,先选中对象,再单击它就可对它进行重命名操作,双击文件图标便可打开文件。
二、在Project下拉菜单的最下方有最近编辑过的项目路径保存,可以快速打开最近在编辑的项目。
)
图3-1项目功能菜单
图3-2项目选项窗口
四.工作原理:
要求设计的电子琴共有七个按键对应着七个音阶,也就是按下不同的按键时,蜂鸣器会发出不同平率的声音。
而这些声音的频谱范围约在几十到几千赫兹,若能利用程序来控制某个口线不断的输出“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制“高”“低”电平的持续时间,就能改变输出波形的频率,从而改变音调。
我们用MC51单片机实现这一功能。
不同音阶所对应的频率如下图所示:
音名
1
2
3
4
5
6
7
频率(Hz)
784
880
乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率。
如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音符的声音。
本系统就是根据此原理设计,对于单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的时间就可以改变输出方波的频率
本系统的具体电路如右图所示。
图中P1.1-P1.7分别接7个按键对应着乐曲中的1、2、3、4、5、6、7七个音符。
P3.6口通过功率放大与喇叭相连。
当P1.1~中有一个按键按下时单片机便执行相应的子程序对定时器赋一个计数初值同时使P3.6口输出高电平。
当定时器定时结束时将P3.6口的值取反并重新赋计数初值继续计数,再次计完时再将P3.6口的值取反再赋初值计数,如此循环便在P3.6口产生一定频率的方波,LM386将此方波经过功率放大后通过喇叭输出便产生对应音符的声音。
按不同的按键单片机便执行不同的子程序给定时器赋不同的初值得到不同频率的方波从而输出不同的声音,因此按一个按键输出一种音符。
在单片机的特殊功能寄存器中有6个寄存器(TH1、TH0、TL1、TL0、TMOD、TCON)是用来控制单片机的定时器的,通过编程对这些特殊功能寄存器的读写就可以控制单片机的两个定时器T0、T1。
当单片机复位时这6个寄存器默认值都是00H。
五.设计思想
(1)系统的总框图
(2)系统电路图
(3)软件设计思路
由于每个音阶对应着不同的频率,当然对单片机来说产生不同的频率非常方便,我们可以利用单片机的定时、计数器T0来产生这样的方波频率信号,因此我们只要把1-7的七个音阶对应的频率关系弄正确即可。
本次设计中单片机晶振为12MHz,那么定时器的计数周期为1MHz,假如选择工作方式为1,那T值便为T=216-5*105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表所示:
采用查表程序查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据。
工作方式1
工作方式1是16位的定时/计数方式,将M1M0设为01。
对于定时器的工作模式可以根据定时器的寄存器TMOD来设置:
①M1M0:
定时/计数器共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。
②C/T:
定时/计数器即可作定时用也可用计数用,如果C/T为O就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。
一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的。
③GATE:
当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢有两种情况
GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。
GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1引脚的控制,只有TRl为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。
这个特性可以用来测量一个信号的高电平的宽度。
Ⅰ程序流程图
第一步是对定时器T0进行初始化,设定它的工作状态(对于本系统将T0设定为工作方式O);
然后判断是否有键按下,如果没有按键按下,继续判断,如果有按键按下,则判断是哪个键按下;
再根据按键的功能将计数初值装入定时器T0中中并启动T0,当T0定时完毕后,重新装入计数初值继续定时并将P3.6取反,再次定时完毕后再一次的装入计数初值继续定时并将P3.6取反,一直循环此操作直到按键释放为止,按键释放后停止T0工作并再次判断是否又有按键按下,并继续执行以前的过程。
Ⅱ程序
BUZZEQU;
定义端口
ORG1000H
LJMPMAIN
ORG000BH
LJMPINT_T0
ORG1100H
MAIN:
MOVSP,#60H;
初始化堆栈指针
MOVP1,#0FFH;
设置P1口为输入模式
MOVTMOD,#01H;
设置定时器0为工作模式1
SETBET0;
开定时器0中断
SETBEA;
开总中断
CLRTR0;
关闭定时器0
START:
MOVR0,P1
CJNER0,#0FFH,KEY1;
键盘扫描
CLRTR0
SJMPSTART
KEY1:
CJNER0,#0FEH,KEY2;
K1键按下
MOV30H,#0FBH;
设置音阶1
MOV31H,#0E9H
LJMPSET_TIMER
KEY2:
CJNER0,#0FDH,KEY3;
K2键按下
MOV30H,#0FCH;
设置音阶2
MOV31H,#5CH
KEY3:
CJNER0,#0FBH,KEY4;
K3键按下
设置音阶3
MOV31H,#0C1H
KEY4:
CJNER0,#0F7H,KEY5;
K4键按下
设置音阶4
MOV31H,#0EFH
KEY5:
CJNER0,#0EFH,KEY6;
K5键按下
MOV30H,#0FDH;
设置音阶5
MOV31H,#045H
KEY6:
CJNER0,#0DFH,KEY7;
K6键按下
设置音阶6
MOV31H,#92H
KEY7:
CJNER0,#0BFH,NOKEY;
K7键按下
设置音阶7
MOV31H,#0D6H
SET_TIMER:
SETBTR0;
发声
NOKEY:
无键按下
INT_T0:
;
T0中断服务程序
MOVTH0,30H;
定时器赋初值
MOVTL0,31H
CPLBUZZ;
输出方波
RETI;
END
六.总结
通过两周的紧张工作,终于完成了简易电子琴的设计,这个课程设计是我受益匪浅,在老师的指导下,我们逐渐了解了硬件设计的整个流程,并且加深了我对单片机这门课程内容的理解,通过这个课程设计,不仅使我了解了组成原理的脊髓,而且使我对单片机从陌生到处不理解,扩充了我的知识面和理解应用能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子琴 实验 报告