版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、-單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告電子音調(diào)發(fā)生器: 日期: 2009年6月29日星期一目錄一實(shí)驗(yàn)?zāi)康?二設(shè)計(jì)任務(wù)及要求2三工作原理及設(shè)計(jì)思路2四實(shí)現(xiàn)功能設(shè)計(jì)3五軟件設(shè)計(jì)3六電路設(shè)計(jì)35七調(diào)試36八實(shí)驗(yàn)體會(huì)37一實(shí)驗(yàn)?zāi)康? 了解計(jì)算機(jī)發(fā)聲原理。2 熟悉定時(shí)器和鍵盤掃描電路的工作原理及編程方法。二設(shè)計(jì)任務(wù)及要求利用實(shí)驗(yàn)平臺(tái)上的開關(guān)k0-k7和蜂鳴器設(shè)計(jì)電子音調(diào)發(fā)生器,要求:1利用實(shí)驗(yàn)平臺(tái)上開關(guān)k0-k7進(jìn)展音調(diào)選擇,即撥動(dòng)不同的開關(guān)產(chǎn)生不同的音調(diào),依次撥動(dòng)K0K7,蜂鳴器發(fā)出1234567i八個(gè)音調(diào)。2編寫2支歌曲,并可進(jìn)展選擇播放。三工作原理及設(shè)計(jì)思路音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關(guān)系如表1所示。
2、要產(chǎn)生音頻方波,只要算出*一音頻的周期1/頻率,然后將此周期除以2,即為半周期的時(shí)間。利用計(jì)時(shí)器計(jì)時(shí)此半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出方波的I/0反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳得到此頻率的方波。在ZKS-03實(shí)驗(yàn)儀上,產(chǎn)生方波的I/O腳選用P1.7,通過跳線選擇器JP1將單片機(jī)的P1.7與蜂鳴器的驅(qū)動(dòng)電路相連。這樣P1.7輸出不同頻率的方波,蜂鳴器便會(huì)發(fā)出不同的聲音。另外,音樂的節(jié)拍是由延時(shí)實(shí)現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設(shè)定延時(shí)時(shí)間,就可求得節(jié)拍的時(shí)間。延時(shí)作為根本延時(shí)時(shí)間,節(jié)拍值只能是它的整數(shù)倍,每個(gè)音節(jié)相應(yīng)的定時(shí)器初值*可按下法計(jì)算: 1
3、/2*(1/f)=(12/fose)*(216-*)即 *=216-(fose/24f)其中f:音調(diào)頻率,當(dāng)晶振fose=11.0592MHz時(shí),音節(jié)“1相應(yīng)的定時(shí)器初值為*,則可得*=63777D=F921H 其它的可同樣求得。 表1音調(diào)頻率Hz*(HE*)1262F9212294F9E13330FA8C4349FAD85392FB686440FBE97494FC5Bi523FC8F四實(shí)現(xiàn)功能設(shè)計(jì)實(shí)現(xiàn)兩個(gè)主要功能:電子琴與音樂播放;一個(gè)輔助功能:在液晶上顯示相關(guān)信息。1、電子琴:4*4的矩陣16個(gè)按鍵,按鍵0實(shí)現(xiàn)兩個(gè)功能的切換,其余按鍵分別發(fā)出音調(diào) 低音5、6、7,中音1、2、3、
4、4、5、6、7,高音1、2、3、4、5。發(fā)音的同時(shí)在液晶顯示屏上顯示出對(duì)應(yīng)的音調(diào)。2、音樂播放:按鍵0實(shí)現(xiàn)兩個(gè)功能的切換,按鍵1實(shí)現(xiàn)播放類型選擇單曲循環(huán)播放、所有循環(huán)播放,其余按鍵分別對(duì)應(yīng)一首歌。目前已經(jīng)有9首歌。播放的同時(shí),在液晶上顯示出歌名。五軟件設(shè)計(jì)根據(jù)要實(shí)現(xiàn)的功能,流程圖如下:開場系統(tǒng)初始化判斷按鍵判斷按鍵電子琴液晶顯示錄音調(diào)整時(shí)鐘功能選擇音樂*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/*液晶顯示相關(guān)變量*/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; /喇叭輸出腳/延時(shí)子程序1void delay(int ms) int i; while(ms-) for(i = 0; i< 250; i+) _nop_(); _nop_();
7、_nop_(); _nop_(); /*/* */*檢查LCD忙狀態(tài) */*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫指令與數(shù)據(jù)。 */* */*/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; /*/* */*寫指令數(shù)據(jù)到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; /*/* */*寫顯示數(shù)據(jù)到LCD */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */* */*/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; /*/* */* 設(shè)定顯示位置 */* */*/void lcd_pos(uchar pos) lcd_wcmd(pos|0*80); /數(shù)據(jù)指針=80+地址變量/*/* */* LCD初始化設(shè)定 */* */*/void lcd_init() delay(15); /等待LCD電源穩(wěn)定 lcd_wcmd(0*38);
10、 /16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay(5); lcd_wcmd(0*38); delay(5); lcd_wcmd(0*38); delay(5); lcd_wcmd(0*0c); /顯示開,關(guān)光標(biāo) delay(5); lcd_wcmd(0*06); /移動(dòng)光標(biāo) delay(5); lcd_wcmd(0*01); /去除LCD的顯示容 delay(5);/*/* */* 清屏子程序 */* */*/void lcd_clr() lcd_wcmd(0*01); /去除LCD的顯示容 delay(5);/靜態(tài)顯示字符串void lcd_string(char *strpoint) /
11、*在當(dāng)前顯示位置顯示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, /*夢醒時(shí)分*/ 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版零擔(dān)運(yùn)輸車輛租賃合同4篇
- 2025年外研版2024選修4地理下冊(cè)月考試卷含答案
- 環(huán)境與安全共創(chuàng)綠色未來環(huán)保意識(shí)教育活動(dòng)策劃報(bào)告
- 2025年人民版高一物理上冊(cè)月考試卷含答案
- 企業(yè)賬號(hào)運(yùn)營托管協(xié)議
- 店鋪購買合同
- 傳媒公司股份轉(zhuǎn)贈(zèng)合同
- 上海承租權(quán)轉(zhuǎn)讓合同范本
- 渠道代理合作協(xié)議書
- 車買賣協(xié)議書范本
- 聲學(xué)基礎(chǔ)專題知識(shí)專業(yè)知識(shí)講座課件
- 物理期末考試成績分析總結(jié)
- 屋頂花園 施工方案
- 校園安全培訓(xùn)課件
- 化工廠施工安全質(zhì)量冬季施工措施
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(吳洪貴)項(xiàng)目五 運(yùn)營效果監(jiān)測
- 2023-2024學(xué)年廣西壯族自治區(qū)玉林市小學(xué)語文一年級(jí)期末評(píng)估測試題詳細(xì)參考答案解析
- 青少年自殺自傷行為預(yù)防與干預(yù)專家講座
- 比較思想政治教育學(xué)
- 職業(yè)技能大賽:電工(五級(jí))理論知識(shí)考核要素細(xì)目表(征求意見稿)
- 阿特拉斯擰緊工具維修培訓(xùn)
評(píng)論
0/150
提交評(píng)論