- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子琴C程序
华南师范大学实验报告
学生姓名?钟文东?????????学????号???????????
专????业电子信息科学与技术?年级、班级??电师三班????????
课程名称?单片机实验???实验项目???电子琴???
实验类型???验证??设计??综合?实验时间?????年????月????日
实验指导老师???秦笛???????实验评分?????????????????????
电子琴实验
一、实验目的
1.通过实验进一步掌握51单片机的定时/计数器的应用。
2.掌握51单片机的外断原理及应用。
3. 学习系统应用程序的设计和调试方法
实验设备
PC机一台 、 实验教学板一块。
实验原理
实验线路见图4-1,通过定时器的定时,产生一定频率的信号,经P2.5输出,驱动蜂鸣器,便可发出某一频率的音调,若按一支乐曲规定的音调和节拍改变输出的变化,即可演奏一首乐曲。
图4-1 音乐输出线路
实验内容
1.电子琴功能
用实验板上K1~K7作为电子琴的7个按键,每个按键对应一个音符,规定频率如表1:
音符 频率 T值 音符 频率 T值 SI 494 61443 5 So 740 62767 1 DO 523 61387 6 La 880 63070 2 Re 587 61839 7 Si 989 63340 3 Mi 659 62243 DO 1109 63461 4 Fa 698 62427 RE 1175 63689
要求当按下其中一个按键,就通过P2.5口输出对应频率信号使蜂鸣器发出特定音符声音。
2.乐曲演奏
若按下K8键,完成自动弹奏“送别”歌曲。(乐谱见教材258页)
其原理为:乐曲的弹奏的旋律,除了用声音的大小来表现外,主要是用音符和节拍来控制。不同的音符表示不同的发出不同的高低音,声音的频率也就不同。单片机产生音符的输出控制是由定时器来完成,不同的定时值产生不同的输出频率,使蜂鸣器发生对应的音调声音,表1给出了音符与频率之间的关系。节拍据是表示当前音符输出时间长短,每一个节拍的时间长短表示了乐曲的旋律的快慢。对于节拍控制单片机可以用延时子程序来完成,方法是以乐曲1/4拍为单位,进行延时控制,单位延时时间的长短代表了乐曲不同的演奏的速度。若要实现1/2节拍的时间控制,则用2个延时单位来完成,假定1/4拍是延时0.125秒,1/2拍则延时0.25秒,1拍为延时0.5秒,其余依此类推。每首歌将其最小节拍作为一个延时基准单位。
程序设计时应先将乐曲音符和节拍转换成数据表,存于计算机的ROM中。
数据表的设计方法如下:
(1)表中的一个字节代表乐曲的中一位简谱的音符与该音符的节拍。高4位用于表示音符,数字与音符的关系如表2;低4位用于表示节拍,数字与节拍及延时时间关系如表3.
(2)按乐曲中乐谱顺序将所有的音符和节拍进行编码,得出数据表,最后以00H作为音乐结束标志。
表2: 表3:
四、实验要求
1.按实验题目要求设计好硬件电路,画出电路原理图。
2. 要求画出主程序、子程序、中断服务程序流程图,设计出相应程序并给程序加上较详细的注释。
3. 在Keil C51编译环境下完成程序编译。
4. 通过下载线和下载软件STC-ISP V39将编译后的程序下载到单片机。
5. 运行程序,用实验结果验证程序的正确性。若不能达到要求,分析原因、查找错误,修改源程序,再次汇编、连接,重新下载、运行,直至达到题目的要求。
六、思考题
1、结合实验板上的电路,设计一个可以任意选曲播放的电子音乐盒。
答:只需将任意歌曲的简谱存放在一个数组里面,则可以利用本程序将其弹凑出来。
2、总结矩阵键盘的识别方法。
答:我的做法是直接先将一列的列线置0,然后扫描高位是否有0出现,有0出现,则代表这列有键按下,记录此时的IO口的值,并break跳出。如果没有键按下,则键下列的列线置0,重复上面的过程,直至所有列都已经扫完。从IO的值我们便可以查表得出对应的键值是多少了。
参考流程图
六 实验程序
#include reg52.h
#define uchar unsigned char
#define uint unsigned int
sbit P2_5=P2^5;
uchar code key_buf[8]={0x18,0x28,0x48,0x88,0x14,0x24,0x44,0x84};//线反转法键盘扫描
uchar code table[10]={0xc0,0xf9,0xa4,0x
您可能关注的文档
最近下载
- 翼状胬肉的护理查房-PPT.ppt
- 2022年应急管理工作应知应会知识竞赛题库(含答案).pdf
- 全民微信时代增进了VS减弱了人与人之间的交流辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx
- 超星网课尔雅《人人学点营销学》尔雅答案2022章节测试答案.docx
- 2019CSP-J NOIP普及组初赛C++试卷.pdf VIP
- 2024年《城镇燃气管理条例题库》考试题库(含答案).pdf VIP
- 最新浙教版八年级上册劳动技术 项目三 任务二《打蛋器的制作》课件(课件).pptx
- 纪律意识方面存在不足及措施4篇.pdf
- 消防安全教育PPT课件.pptx VIP
- 《新中国成立75周年》全文课件.ppt VIP
文档评论(0)