单片机课程设计电子音调发生器.doc

单片机课程设计电子音调发生器.doc

ID:48053243

大小:747.51 KB

页数:39页

时间:2020-01-21

单片机课程设计电子音调发生器.doc_第1页
单片机课程设计电子音调发生器.doc_第2页
单片机课程设计电子音调发生器.doc_第3页
单片机课程设计电子音调发生器.doc_第4页
单片机课程设计电子音调发生器.doc_第5页
资源描述:

《单片机课程设计电子音调发生器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机课程设计实验报告电子音调发生器姓名:日期:2009年6月29日星期一目录(一)实验目的2(二)设计任务及要求2(三)工作原理及设计思路2(四)实现功能设计338(五)软件设计3(六)电路设计35(七)调试36(八)实验体会37(一)实验目的1.了解计算机发声原理。2.熟悉定时器和键盘扫描电路的工作原理及编程方法。38(二)设计任务及要求利用实验平台上的开关k0-k7和蜂鸣器设计电子音调发生器,要求:1.利用实验平台上开关k0-k7进行音调选择,即拨动不同的开关产生不同的音调,依次拨动K0~K7,蜂鸣器发出1234567i八个音调。2.编

2、写2支歌曲,并可进行选择播放。(三)工作原理及设计思路音节由不同频率的方波产生,音节与频率的关系如表1所示。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方波的I/0反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。在ZKS-03实验仪上,产生方波的I/O脚选用P1.7,通过跳线选择器JP1将单片机的P1.7与蜂鸣器的驱动电路相连。这样P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。另外,音乐的节拍是由延时实现的,如果

3、1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍,每个音节相应的定时器初值X可按下法计算:(1/2)*(1/f)=(12/fose)*(216-x)即x=216-(fose/24f)其中f:音调频率,当晶振fose=11.0592MHz时,音节“1”相应的定时器初值为x,则可得x=63777D=F921H其它的可同样求得。表1音调频率(Hz)X(HEX)1262F9212294F9E13330FA8C4349FAD85392FB686440FBE97494FC5Bi523F

4、C8F(四)实现功能设计实现两个主要功能:电子琴与音乐播放;一个辅助功能:38在液晶上显示相关信息。1、电子琴:4*4的矩阵16个按键,按键0实现两个功能的切换,其余按键分别发出音调 低音5、6、7,中音1、2、3、4、5、6、7,高音1、2、3、4、5。发音的同时在液晶显示屏上显示出对应的音调。2、音乐播放:按键0实现两个功能的切换,按键1实现播放类型选择(单曲循环播放、所有循环播放),其余按键分别对应一首歌。目前已经有9首歌。播放的同时,在液晶上显示出歌名。(五)软件设计根据要实现的功能,流程图如下:开始系统初始化判断按键判断按键电子琴液

5、晶显示录音调整时钟功能选择音乐#include#include#definenop_nop_()#defineucharunsignedchar#defineuintunsignedint38#definePAI_BASE15#defineMUSIC_NUM9#defineSCAN_CYCLE500#defineBEEPP3_3/***************液晶显示相关变量***********************************/sbitLCD_RS=P2^7;sbitLCD_RW=

6、P2^6;sbitLCD_EN=P2^5;staticucharth0_f;//在中断中装载的T0的值高8位staticuchartl0_f;//在中断中装载的T0的值低8位statictimebuffer,Record_counter,Record_flag=0;staticucharkey2,key=16,scounter=0,Record_time;staticuchars_musicCounter=0x00,s_tableCounter;bitRplay_flag=0;bitK0_flag=0;bitMusic_flag0;bitMu

7、sic_flag=0;bitFreq_flag=0;bitdisptime_flag=0;bitmusicAutoFlag=0;//sbitBEEP=P3_3;//喇叭输出脚//延时子程序1voiddelay(intms){inti;while(ms--){for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}}}38/*******************************************************************//**//*检查LCD忙状态*//*lc

8、d_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。*//**//**************************************

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。