




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告( 20142015 年度第 二 学期)课 程:单片机及嵌入式系统a 题 目: 简易电子琴 院 系: 自动化系 班 级: 测控1201 学 号: 201202030105 201202030106 学生姓名: 指导教师: 设计周数: 一周 成 绩: 日期:2015年 6 月 11 日一、课程设计内容与要求1针对所选择的设计题目进行硬件设计,合理选用所需元器件,绘制系统结构框图、硬件接线图,并在实验系统上完成电路的连接和调试。2根据所选题目的要求进行程序设计,绘制程序总体流程图并编写源程序上机调试。3写出课程设计报告,对整个设计过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识和收获。二、课程设计正文设计题目主要内容是用at89s51单片机作为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。设计思想使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器t0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。设计原理44矩阵键盘识别处每个按键都有它的行值列值,行值列值的组合就是按键的编码。矩阵的行线和列线分别通过两并行接口和cpu通信。每个按键的状态同样需变成数字量“0” 和“1”, 开关的一端(列线)通过电阻接vcc,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查出该键的功能。数码管扬声器截图各音节频谱码利用at89c51的内部定时器使其工作计数器模式(mode1)下,改变计数值th0及tl0以产生不同频率的方法产生不同音阶,例如,频率为523hz,其周期t1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将i/o反相,就可得到中音do(523hz)。计数脉冲值与频率的关系式(如式4-1所示)是: nfi2fr 4-1式中,n是计数值;fi是机器频率(晶体振荡器为12mhz时,其频率为1mhz);fr是想要产生的频率。其计数初值t的求法如下: t65536n65536fi2fr例如:设k65536,fi1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的计数值。t65536n65536fi2fr6553610000002fr65536500000/fr 低音do的t65536500000/26263627 中音do的t65536500000/52364580 高音do的t65536500000/104665059单片机12mhz晶振,高中低音符与计数t0相关的计数值如表4-2所示 表4-2 音符频率表音乐发生流程图整体电路图源程序#include #define uchar unsigned char#define uint unsigned intsbit beep=p16; /定义蜂鸣器sbit music=p13; /*music为低电平播放世上只有妈妈好(工作模式为音乐播放器),music1为低电平时播放祝你生日快乐,music、music1都为高电平时(工作模式为电子钢琴)*/sbit music1=p11;uchar timer0h,timer0l,time,key,flag; /flag=0时为电子钢琴模式,flag=1时为音乐播放器uchar code yuepu= 6,2,3,5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1, 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1,6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ; /世上只有妈妈好乐谱uchar code yuepu1=5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4; /祝你生日快乐乐谱uchar code th_0=0xf2,0xf3,0xf5,0xf5,0xf6,0xf7,0xf8,0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe, 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,/ 28个音阶高八位频率表 装进定时器高八位 ;uchar code tl_0=0x42,0xc1,0x17,0xb6,0xd0,0xd1,0xb6,0x21,0xe1,0x8c,0xd8,0x68,0xe9,0x5b,0x8f, 0xee,0x44, 0x6b,0xb4,0xf4,0x2d,0x47,0x77,0xa2,0xb6,0xda,0xfa,0x16,/ 28个音阶低八位频率表 装进定时器 低八位;void delay(uchar t) uchar t1; unsigned long t2; for(t1=0;t1t;t1+) /延时半拍函数,控制音乐节奏 for(t2=0;t20;i-) for(j=110;j0;j-); void keyscan() /检测十六个发出音乐按键函数 uchar temp; p3=0xfe; temp=p3; temp=0xf0&temp; if(temp!=0x0f) delayms(10); /检测第一行 temp=p3 ; temp=temp&0xf0; if(temp!=0xf0) temp=p3; switch(temp) case 0xee: key=0;break; case 0xde: key=1;break; case 0xbe: key=2;break; case 0x7e: key=3;break; th0=th_0key;/将按下的键对应发出此频率声音的初值装入 tr0=1; /打开定时器 while(temp!=0xf0)/一直按下就一直发声 temp=p3; temp=temp&0xf0; tr0=0;/松手时关闭定时器0,不能发声 beep=1;/使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开 p3=0xfd; temp=p3; temp=0xf0&temp; if(temp!=0x0f)/检测第二行按键 delayms(10); temp=p3 ; temp=temp&0xf0; if(temp!=0xf0) temp=p3; switch(temp) case 0xed: key=4;break; case 0xdd: key=5;break; case 0xbd: key=6;break; case 0x7d: key=7;break; th0=th_0key; /将按下的键对应发出此频率声音的初值装入 tl0=tl_0key; tr0=1; /打开定时器0 while(temp!=0xf0)/一直按下就发声 temp=p3; temp=temp&0xf0; tr0=0; /松手时关闭定时器,不能发声 beep=1;/使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开 p3=0xfb; temp=p3; temp=0xf0&temp; if(temp!=0x0f) delayms(10); temp=p3 ; temp=temp&0xf0; if(temp!=0xf0) temp=p3; switch(temp) case 0xeb: key=8;break; case 0xdb: key=9;break; case 0xbb: key=10;break; case 0x7b: key=11;break; th0=th_0key; tl0=tl_0key;/将按下的键对应发出此频率声音的初值装入 tr0=1; /打开定时器 while(temp!=0xf0)/一直按下就发声 temp=p3; temp=temp&0xf0; tr0=0; /松手时关闭定时器0,不能发声 beep=1;/使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开 p3=0xf7; temp=p3; temp=0xf0&temp; if(temp!=0x0f) delayms(10); temp=p3 ; temp=temp&0xf0; if(temp!=0xf0) temp=p3; switch(temp) case 0xe7: key=12;break; case 0xd7: key=13;break; case 0xb7: key=14;break; case 0x77: key=15;break; th0=th_0key; tl0=tl_0key;/将按下的键对应发出此频率声音的初值装入 tr0=1; while(temp!=0xf0) temp=p3; temp=temp&0xf0; tr0=0; beep=1; void main() uchar k,i; tmod=1; ea=1; et0=1; while(1) if(music&music1) /当为高电平时没有放音乐,扫描键盘 flag=0; keyscan(); if(!music) flag=1; i=0; while(i100) /音乐数组长度,唱完从头再来 if(music) beep=1; break; k=yuepui+7*yuepui+1-1; timer0h=th_0k; timer0l=tl_0k; time=yuepui+2; i+=3; song(); if(!music1) flag=1; i=0; while(i75) if(music1) beep=1; break; k=yuepu1i+7*yuepu1i+1-1; timer0h=th_0k; timer0l=tl_0k; /把对应的音乐频率放进定时器0 time=yuepu1i+2;/音乐节拍 i+=3; song(); void time0() interrupt 1 if(flag=0) beep=!beep; th0=th_0key; tl0=tl_0key; else beep=!beep; th0=timer0h; tl0=timer0l; /电子琴模式时进入 /音乐播放器模式调试结果仿真效果良好,硬件调试结果可以接受,不过由于蜂鸣器的问题,效果不是很理想。具体效果看演示3、 课程设计总结1.本次单片机课程设计对简易电子琴进行了一系列的了解和查阅。 1.1首先,要理解电子琴的简单工作原理。简易电子琴通过矩阵键盘可以产生16个不同频率的音频,这些频率需要上网搜集资料获得。 1.2其次,电子琴需要注意以下几个方面。1.2.1按键的时候发声,按键松开的时候停止发声。1.2.2同时按2个或以上的键的时候不会出现错误,发出的声音是结合在一起的声音。 1.3最后,在电子琴的设计中加入了音乐盒的一个特征,按键k1.3会播放音乐,在程序 中写入了两个音乐的频率,但是由于开发板只存在一个按键,所以只能播放一个音乐。2.设计中存在的问题和不足及解决方法 2.1开发板的发声不连续、不清晰。原因是蜂鸣器功能不完善,可以接一个扬声器来改善。 2.2设计中,长按键播放音乐,松开停止播放。不足是应该设计成按一下持续播放音乐, 再按键播放另外一首音乐,可解决由于开发板按键只有一个而只能播放一种音乐的缺 陷。 2.3另外可以添加在数码管上显示按键的音符的功能。3.设计实践的认识和收获 3.1认识到单片机的强大功能,没有实现不了的功能,只有想不到的方面。 因为在没有接触课程设计之前,只简单的了解实验的内容,对单片机的知识没有充分 的了解和应用,在观看了所有的项目以及其他同学的完成的情况,发现自己的设计存 在很多不足。 3.2虽然没有完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海上风能资源评估技术及深远海风电项目布局策略报告
- 2025年电商绿色物流与物流人才培养报告
- 解析卷-人教版(五四制)6年级数学下册期末试题附参考答案详解(精练)
- 2025至2030年中国办公系统自动化行业发展趋势预测及投资战略咨询报告
- 2025至2030年中国房地产厨卫行业运行态势及未来发展趋势预测报告
- 押题宝典高校教师资格证之《高等教育法规》考试题库带答案详解(a卷)
- 2025年度肉类产品线上线下销售渠道合作协议范本
- 2025版高效节能清包工施工合同文本
- 2025年度环保设备集中采购框架协议范本
- 2025年能源设备采购合同书范本
- 2025年医卫类病理学技术(中级)专业知识-专业实践能力参考题库含答案解析(5套试卷)
- 2025上海科技馆事业单位工作人员招聘10人笔试备考题库及答案解析
- 2025年财政管理知识竞赛题库及答案
- 满意度调查测评方案
- 区域产业协同发展面试题
- 【初二】【八年级】【道法】2025【秋】上学期开学第一课【统编版】(课件)
- 当归种植培训课件
- 军事类面试题目及答案
- 三年(2023-2025)中考语文真题分类汇编(全国)专题22 议论文阅读(解析版)
- 学习2025年初中初三开学第一课专题
- 2025年浙江省教师招聘考试(语文)历年参考题库含答案详解(5卷)
评论
0/150
提交评论