单片机课程设计报告电子音调发生器_第1页
单片机课程设计报告电子音调发生器_第2页
单片机课程设计报告电子音调发生器_第3页
单片机课程设计报告电子音调发生器_第4页
单片机课程设计报告电子音调发生器_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-单片机课程设计实验报告电子音调发生器: 日期: 2009年6月29日星期一目录一实验目的2二设计任务及要求2三工作原理及设计思路2四实现功能设计3五软件设计3六电路设计35七调试36八实验体会37一实验目的1 了解计算机发声原理。2 熟悉定时器和键盘扫描电路的工作原理及编程方法。二设计任务及要求利用实验平台上的开关k0-k7和蜂鸣器设计电子音调发生器,要求:1利用实验平台上开关k0-k7进展音调选择,即拨动不同的开关产生不同的音调,依次拨动K0K7,蜂鸣器发出1234567i八个音调。2编写2支歌曲,并可进展选择播放。三工作原理及设计思路音节由不同频率的方波产生,音节与频率的关系如表1所示。

2、要产生音频方波,只要算出*一音频的周期1/频率,然后将此周期除以2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方波的I/0反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。在ZKS-03实验仪上,产生方波的I/O脚选用P1.7,通过跳线选择器JP1将单片机的P1.7与蜂鸣器的驱动电路相连。这样P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。另外,音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为根本延时时间,节拍值只能是它的整数倍,每个音节相应的定时器初值*可按下法计算: 1

3、/2*(1/f)=(12/fose)*(216-*)即 *=216-(fose/24f)其中f:音调频率,当晶振fose=11.0592MHz时,音节“1相应的定时器初值为*,则可得*=63777D=F921H 其它的可同样求得。 表1音调频率Hz*(HE*)1262F9212294F9E13330FA8C4349FAD85392FB686440FBE97494FC5Bi523FC8F四实现功能设计实现两个主要功能:电子琴与音乐播放;一个辅助功能:在液晶上显示相关信息。1、电子琴:4*4的矩阵16个按键,按键0实现两个功能的切换,其余按键分别发出音调 低音5、6、7,中音1、2、3、

4、4、5、6、7,高音1、2、3、4、5。发音的同时在液晶显示屏上显示出对应的音调。2、音乐播放:按键0实现两个功能的切换,按键1实现播放类型选择单曲循环播放、所有循环播放,其余按键分别对应一首歌。目前已经有9首歌。播放的同时,在液晶上显示出歌名。五软件设计根据要实现的功能,流程图如下:开场系统初始化判断按键判断按键电子琴液晶显示录音调整时钟功能选择音乐*include <AT89*52.H>*include <intrins.h>*define nop _nop_() *define uchar unsigned char *define uint unsigned i

5、nt*define PAI_BASE 15*define MUSIC_NUM 9*define SCAN_CYCLE 500*define BEEP P3_3/*液晶显示相关变量*/sbit LCD_RS = P27; sbit LCD_RW = P26;sbit LCD_EN = P25;static uchar th0_f; /在中断中装载的 T0 的值高 8 位static uchar tl0_f; /在中断中装载的 T0 的值低 8 位static timebuffer,Record_counter,Record_flag=0;static uchar key2,key=16,scou

6、nter=0,Record_time;static uchar s_musicCounter=0*00,s_tableCounter;bit Rplay_flag=0;bit K0_flag=0;bit Music_flag0;bit Music_flag=0;bit Freq_flag=0;bit disptime_flag=0;bit musicAutoFlag=0;/sbit BEEP = P3_3; /喇叭输出脚/延时子程序1void delay(int ms) int i; while(ms-) for(i = 0; i< 250; i+) _nop_(); _nop_();

7、_nop_(); _nop_(); /*/* */*检查LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */* */*/bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0*80); LCD_EN = 0; return result; /*/* */*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */* */*/voi

8、d lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; /*/* */*写显示数据到LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */* */*/void lcd_wdat(uchar dat) while(lcd_busy(); LC

9、D_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; /*/* */* 设定显示位置 */* */*/void lcd_pos(uchar pos) lcd_wcmd(pos|0*80); /数据指针=80+地址变量/*/* */* LCD初始化设定 */* */*/void lcd_init() delay(15); /等待LCD电源稳定 lcd_wcmd(0*38);

10、 /16*2显示,5*7点阵,8位数据 delay(5); lcd_wcmd(0*38); delay(5); lcd_wcmd(0*38); delay(5); lcd_wcmd(0*0c); /显示开,关光标 delay(5); lcd_wcmd(0*06); /移动光标 delay(5); lcd_wcmd(0*01); /去除LCD的显示容 delay(5);/*/* */* 清屏子程序 */* */*/void lcd_clr() lcd_wcmd(0*01); /去除LCD的显示容 delay(5);/静态显示字符串void lcd_string(char *strpoint) /

11、*在当前显示位置显示LCD 字符串*/ register i=0;while(strpointi!=0) lcd_wdat(strpointi);i+;/*/*Constant Tables*/const char code c_music1=0*82,0*01,0*81,0*94,0*84, /*生日快乐歌*/ 0*b4,0*a4,0*04,0*82,0*01,0*81,0*94,0*84,0*c4,0*b4,0*04,0*82,0*01,0*81,0*f4,0*d4,0*b4,0*a4,0*94,0*e2,0*01,0*e1,0*d4,0*b4,0*c4,0*b4,0*04,0*00;co

12、nst char code c_music2=0*62, 0*52, /*两只蝴蝶*/ 0*64, 0*64, 0*02, 0*52, 0*62, 0*52, 0*44, 0*44, 0*04, 0*22, 0*42, 0*54, 0*52, 0*62, 0*52, 0*42, 0*22, 0*42, 0*14, 0*14, 0*04, 0*62, 0*52, 0*64, 0*64, 0*02, 0*52, 0*62, 0*52, 0*44, 0*44, 0*04, 0*22, 0*42, 0*54, 0*52, 0*62, 0*52, 0*42, 0*22, 0*42, 0*54, 0*54

13、, 0*04, 0*62, 0*82,0*84, 0*84, 0*02, 0*82, 0*92, 0*82,0*64, 0*64, 0*04, 0*52, 0*52,0*54, 0*52, 0*62, 0*52, 0*42, 0*22, 0*91, 0*41,0*42, 0*42, 0*44, 0*44, 0*44, 0*02, 0*82, 0*82, 0*92, 0*b2, 0*a2, 0*a2, 0*92, 0*64, 0*52, 0*62, 0*64, 0*64, 0*02, 0*62, 0*62, 0*82, 0*94, 0*94, 0*02, 0*22, 0*62, 0*52, 0*

14、54, 0*54, 0*04, 0*62, 0*82, 0*82, 0*62, 0*84, 0*02, 0*b2, 0*b2, 0*a2, 0*92, 0*a2, 0*64, 0*02, 0*92, 0*92, 0*a2, 0*92, 0*82, 0*62, 0*52, 0*52, 0*62, 0*52, 0*62, 0*84, 0*84, 0*02, 0*82, 0*82, 0*92, 0*92, 0*82, 0*62, 0*52, 0*52, 0*12, 0*12, 0*22, 0*44, 0*44, 0*44, 0*44, 0*00;const char code c_music3=0*

15、04, 0*42, 0*41, 0*51, 0*62, 0*62, 0*52, 0*41, 0*51, 0*54, 0*02, 0*41, 0*51, /*老鼠爱大米*/ 0*62, 0*62, 0*52, 0*42, 0*44, 0*02, 0*11, 0*21, 0*14, 0*11, 0*11, 0*21, 0*41, 0*44, 0*02, 0*42, 0*42, 0*42, 0*42, 0*41, 0*51, 0*54, 0*42, 0*51, 0*61, 0*62, 0*62, 0*82, 0*91, 0*51, 0*54, 0*62, 0*51, 0*41, 0*42, 0*42

16、, 0*52, 0*61, 0*81, 0*84, 0*02, 0*81, 0*81, 0*92, 0*41, 0*41, 0*42, 0*61, 0*01, 0*52, 0*42, 0*42, 0*51, 0*41, 0*44, 0*44, 0*44, 0*62, 0*61, 0*81, 0*82, 0*81, 0*81, 0*82, 0*81, 0*91, 0*94, 0*62, 0*52, 0*42, 0*42, 0*42, 0*51, 0*61, 0*64, 0*02, 0*61, 0*81, 0*82, 0*82, 0*82, 0*91, 0*b1, 0*b2, 0*92, 0*82

17、, 0*62,0*52, 0*42, 0*42, 0*22, 0*54, 0*02, 0*61, 0*81,0*82, 0*82, 0*81, 0*92, 0*81, 0*94, 0*62, 0*52, 0*42, 0*42, 0*42, 0*51, 0*61, 0*64, 0*02, 0*61, 0*81, 0*82, 0*82, 0*82, 0*91, 0*b1, 0*b2, 0*92, 0*82, 0*61, 0*51, 0*52, 0*52, 0*54, 0*54, 0*41, 0*62, 0*71, 0*62, 0*52, 0*54, 0*54, 0*62, 0*51, 0*41,

18、0*44, 0*62, 0*51, 0*41, 0*44, 0*62, 0*52, 0*62, 0*42, 0*62, 0*91, 0*81, 0*84, 0*02, 0*61, 0*81, 0*92, 0*91, 0*81, 0*82, 0*91, 0*81, 0*84, 0*61, 0*51, 0*42, 0*52, 0*51, 0*61, 0*52, 0*41, 0*51, 0*41, 0*53, 0*62, 0*51, 0*41, 0*44, 0*62, 0*51, 0*41, 0*44, 0*62, 0*52, 0*62, 0*42, 0*61, 0*92, 0*81, 0*84,

19、0*02, 0*61, 0*81, 0*92, 0*92, 0*b2, 0*81, 0*91, 0*82, 0*01, 0*81, 0*61, 0*51, 0*41, 0*54, 0*51, 0*41, 0*51, 0*61, 0*54, 0*62, 0*62, 0*54, 0*02, 0*42, 0*44, 0*44, 0*00;const char code c_music4=0*04, 0*02, 0*41, 0*51, 0*62, 0*61, 0*61, 0*62, 0*52, /*梦醒时分*/ 0*62, 0*81, 0*61, 0*62, 0*61, 0*81, 0*92, 0*9

20、2, 0*92, 0*a2, 0*82, 0*62, 0*62, 0*62, 0*61, 0*51, 0*42, 0*41, 0*41, 0*42, 0*22, 0*62, 0*81, 0*41, 0*44, 0*51, 0*52, 0*01, 0*52, 0*42, 0*81, 0*61, 0*52, 0*52, 0*41, 0*51, 0*62, 0*61, 0*61, 0*62, 0*52, 0*62, 0*81, 0*61, 0*62, 0*61, 0*81, 0*92, 0*91, 0*91, 0*92, 0*a2, 0*82, 0*62, 0*61, 0*81, 0*81, 0*8

21、1, 0*92, 0*b2, 0*b2, 0*92, 0*72, 0*52, 0*52, 0*81, 0*81, 0*92, 0*b2, 0*b2, 0*92, 0*b2, 0*c2, 0*c4, 0*c4, 0*01, 0*81, 0*81, 0*81, 0*d2, 0*d2, 0*d2, 0*d2, 0*d2, 0*c1, 0*c1, 0*c2, 0*b1, 0*a1, 0*b2, 0*b2, 0*b2, 0*c2, 0*62, 0*82, 0*82, 0*81, 0*81, 0*92, 0*b1, 0*b1, 0*b2, 0*b2, 0*c2, 0*91, 0*b1, 0*b2, 0*b

22、1, 0*b1, 0*c2, 0*c1, 0*c1, 0*c2, 0*b2, 0*d2, 0*c1, 0*81, 0*81, 0*81, 0*81, 0*81, 0*d2, 0*d2, 0*d2, 0*f2, 0*d2, 0*c1, 0*c1, 0*c2, 0*b1, 0*a1, 0*b2, 0*b2, 0*b2, 0*c2, 0*62, 0*82, 0*82, 0*81, 0*81, 0*92, 0*b1, 0*b1, 0*b2, 0*b1, 0*b1, 0*c2, 0*91, 0*b1, 0*b2, 0*b1, 0*b1, 0*c2, 0*c1, 0*c1, 0*c2, 0*b2, 0*d

23、4, 0*c2, 0*01, 0*b1, 0*b4, 0*b4, 0*b4, 0*b4, 0*00;const char code c_music5=0*54, 0*64, 0*64, /*大长今*/ 0*64, 0*02, 0*52, 0*44, 0*24, 0*44, 0*44, 0*51, 0*43, 0*44, 0*44, 0*54, 0*64, 0*64, 0*64, 0*02, 0*82, 0*64, 0*64, 0*54, 0*64, 0*64, 0*64, 0*64, 0*84, 0*94, 0*94, 0*94, 0*84, 0*64, 0*64, 0*84, 0*94, 0

24、*81, 0*91, 0*82, 0*84, 0*84, 0*54, 0*64, 0*64, 0*54, 0*02, 0*62, 0*64, 0*54, 0*64, 0*24, 0*41, 0*23, 0*94, 0*94, 0*24, 0*24, 0*24, 0*54, 0*64, 0*64, 0*64, 0*02, 0*52, 0*44, 0*24, 0*44, 0*44, 0*51, 0*43, 0*44, 0*44, 0*54, 0*64, 0*64, 0*64, 0*02, 0*82, 0*64, 0*64, 0*54, 0*64, 0*64, 0*64, 0*64, 0*84, 0

25、*94, 0*94, 0*94, 0*02, 0*82, 0*64, 0*64, 0*84, 0*94, 0*84, 0*84, 0*84, 0*54, 0*64, 0*64, 0*54, 0*02, 0*62, 0*64, 0*54, 0*64, 0*24, 0*41, 0*23, 0*24, 0*24, 0*24, 0*24, 0*24, 0*54, 0*02, 0*42, 0*24, 0*54, 0*02, 0*42, 0*24, 0*54, 0*64, 0*44, 0*54, 0*02, 0*62, 0*84, 0*94, 0*02, 0*82, 0*64, 0*54, 0*02, 0

26、*42, 0*24, 0*24, 0*14, 0*24, 0*41, 0*23, 0*24, 0*24, 0*24, 0*24, 0*24, 0*14, 0*14, 0*14, 0*14, 0*02, 0*22, 0*42, 0*52, 0*62, 0*52, 0*44, 0*02, 0*22, 0*44, 0*44, 0*54, 0*64, 0*64, 0*64, 0*64, 0*64, 0*84, 0*94, 0*02, 0*b2, 0*94, 0*84, 0*84, 0*84, 0*84, 0*61, 0*81, 0*92, 0*04, 0*92, 0*82, 0*64, 0*02, 0

27、*52, 0*64, 0*02, 0*52, 0*62, 0*52, 0*44, 0*44, 0*44, 0*41, 0*23, 0*24, 0*44, 0*54, 0*54, 0*54, 0*54, 0*64, 0*64, 0*44, 0*41, 0*23, 0*24, 0*24, 0*24, 0*24, 0*00;const char code c_music6=0*24, 0*42, 0*52, 0*64, 0*62, 0*92, /*漫步人生路*/ 0*84, 0*62, 0*52, 0*64, 0*02, 0*62, 0*72, 0*62, 0*62, 0*52, 0*52, 0*4

28、2, 0*41, 0*31, 0*22, 0*44, 0*02, 0*52, 0*34, 0*34, 0*24, 0*42, 0*52, 0*64, 0*62, 0*92, 0*a4, 0*82, 0*62, 0*64, 0*02, 0*62, 0*72, 0*62, 0*52, 0*42, 0*32, 0*42, 0*52, 0*62, 0*42, 0*32, 0*22, 0*12, 0*24, 0*24, 0*42, 0*32, 0*42, 0*52, 0*64, 0*52, 0*62,0*74, 0*74, 0*72, 0*81, 0*71, 0*62, 0*52, 0*64, 0*74

29、, 0*84, 0*02, 0*62, 0*94, 0*92, 0*82, 0*94, 0*92, 0*b2, 0*92, 0*82, 0*82, 0*92, 0*64, 0*52, 0*42, 0*54, 0*52, 0*42, 0*54, 0*42, 0*42, 0*82, 0*62, 0*62, 0*52, 0*42, 0*34, 0*62, 0*62, 0*94, 0*92, 0*82, 0*94, 0*92, 0*b2, 0*92, 0*82, 0*82, 0*92, 0*64, 0*52, 0*42, 0*54, 0*42, 0*82, 0*64, 0*52, 0*42, 0*52

30、, 0*61, 0*51, 0*42, 0*32, 0*24, 0*24, 0*00;const char code c_music7=0*02, 0*12, 0*12, 0*22, /*最浪漫的事*/ 0*44, 0*42, 0*42, 0*42, 0*22, 0*22, 0*62, 0*64, 0*64, 0*02, 0*12, 0*24, 0*42, 0*42, 0*42, 0*42, 0*44, 0*62, 0*82, 0*84, 0*84, 0*84, 0*02, 0*82, 0*92, 0*82, 0*92, 0*82, 0*94, 0*82, 0*51, 0*61, 0*62, 0*51, 0*41, 0*44, 0*02, 0*42, 0*42, 0*22, 0*44, 0*42, 0*22, 0*42, 0*64, 0*52, 0*54, 0*54, 0*54, 0*54, 0*32, 0*12, 0*22, 0*42, 0*42, 0*42, 0*42, 0*42, 0*42, 0*42, 0*22, 0*52, 0*52, 0*62, 0*64, 0*62, 0*12, 0*22, 0*42, 0*42, 0*42, 0*42, 0*42, 0*44, 0*62, 0*82, 0*84, 0*84, 0*84, 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论