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

上传人:新** 文档编号:486097534 上传时间:2022-09-23 格式:DOC 页数:28 大小:369KB
返回 下载 相关 举报
单片机课程设计电子音调发生器_第1页
第1页 / 共28页
单片机课程设计电子音调发生器_第2页
第2页 / 共28页
单片机课程设计电子音调发生器_第3页
第3页 / 共28页
单片机课程设计电子音调发生器_第4页
第4页 / 共28页
单片机课程设计电子音调发生器_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《单片机课程设计电子音调发生器》由会员分享,可在线阅读,更多相关《单片机课程设计电子音调发生器(28页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

5、 _nop_()#defi ne uehar un sig ned char#defi ne uint un sig ned int#defi ne PAI_BASE 15#defi ne MUSIC_NUM 9#defi ne SCAN_CYCLE 500#defi ne BEEP P3_3液晶显示相关变量sbit LCD_RS = P2A7;sbit LCD_RW =卩2八6;sbit LCD_EN = P2A5;static uchar th0_f; 0c0f0c0F0F .);Record();break; case 2: disptime_flag=0;th0_f=c_musicFr

6、eqkey-1/256; tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init(); lcd_string(6 .);Record();break;case 3: disptime_flag=0;th0_f=c_musicFreqkey-1/256; tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string(Record();break;case 4:disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1;

7、lcd_init();lcd_string( 1 );Record();break;case 5:disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( 2 );Record();break;case 6: disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( 3 );Record();break;cas

8、e 7:disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( 4 );Record();break;case 8:disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( 5 );Record();break;case 9:disptime_flag=0;th0_f=c_musicFreqkey-1/256

9、;tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( 6 );Record();break;case 10:disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( 7 );Record();break;case 11:disptime_flag=0;th0_f=c_musicFreqkey-1/256;tl0_f=c_musicFreqkey-1%256;TR0 = 1; lcd_ini

10、t();lcd_string( . 1);Record();break;case 12:disptime_flag=0; th0_f=c_musicFreqkey-1/256; tl0_f=c_musicFreqkey-1%256;TR0 = 1; lcd_init();lcd_string( . 2);Record();break;case 13:disptime_flag=0; th0_f=c_musicFreqkey-1/256; tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init(); lcd_string(break;case 14: dispti

11、me_flag=0;th0_f=c_musicFreqkey-1/256; tl0_f=c_musicFreqkey-1%256;TR0 = 1;lcd_init();lcd_string( .);Record();break;case 15:disptime_flag=0;P2_4=0;lcd_init();Record_flag+;if(Record_flag=1)Record_counter=0;Record_time=0; lcd_string( Record );else if(Record_flag=2) lcd_init();lcd_string( Record play );R

12、ecord_music+Record_counter=0x00; Music_flag=1;Rplay_flag=1;TH0=0;TL0=0;TR0=0;while(key=keyscan()!=15);else if (Record_flag=3) lcd_init();lcd_string( Electone );Music_flag=0; Rplay_flag=0;Record_flag=0; Freq_flag=1;break;case 16:P3_3=0;TR0=0;break;if(key=0) P3_3=0;break;void Music(void)P2_4=0;Freq_fl

13、ag=1;lcd_init();disptime_flag=1;lcd_string( Music);Music_flag=0;key=16;delay(10); s_musicCounter=10; s_tableCounter=0;TR0=0;P3_3=0;while(1)if(s_musicCounter=1)Music_flag=1; disptime_flag=0;lcd_init();lcd_moving( Happy Birthday );/ lcd_string( Happy Birthday );else if(s_musicCounter=2) Music_flag=1;

14、disptime_flag=0;lcd_init();lcd_moving( Two Butterflies );else if(s_musicCounter=3) Music_flag=1; disptime_flag=0;lcd_init(); lcd_moving(Mouse Loves Rice );else if(s_musicCounter=4)Music_flag=1;disptime_flag=0;lcd_init(); lcd_moving( Awakening );else if(s_musicCounter=5)Music_flag=1;disptime_flag=0;lcd_init(); lcd_mov

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号