80c51單片機(jī)課程設(shè)計(jì)_第1頁(yè)
80c51單片機(jī)課程設(shè)計(jì)_第2頁(yè)
80c51單片機(jī)課程設(shè)計(jì)_第3頁(yè)
80c51單片機(jī)課程設(shè)計(jì)_第4頁(yè)
80c51單片機(jī)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 單片機(jī)課程設(shè)計(jì)報(bào)告 題目 基于51單片機(jī)發(fā)光牌與伴奏音樂(lè)系統(tǒng) 專業(yè)班級(jí) 機(jī)械111班 姓 名 一、設(shè)計(jì)目的 (一)、以AT89C51單片機(jī)為主體,設(shè)計(jì)一個(gè)有伴奏音樂(lè)的發(fā)光牌。 1、功能 放光牌用數(shù)碼管顯示,分別按順序顯示出“ 2”、“0”、“ 1”、“3”的數(shù)字樣 而且不斷的循環(huán)從左到右顯示。同時(shí)還伴有歌名為“同一首歌”的旋律。 發(fā)光牌由數(shù)碼管進(jìn)行設(shè)置,歌聲的旋律則由蜂鳴器來(lái)實(shí)現(xiàn)。 2、效果 即數(shù)碼管為發(fā)光牌,同時(shí)伴有歌聲 發(fā)光牌效果圖可如下 mH 7 二、硬件系統(tǒng) AT89C51單片機(jī)是美國(guó)ATME公司生產(chǎn)的低電壓、高性能 CMOS位單片機(jī),具有 豐富的內(nèi)部資源:4kB閃存、128BRAM

2、 32根I/O 口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、 5個(gè)向量?jī)杉?jí)中斷結(jié)構(gòu)、2個(gè)全雙工的串行口,具有4.255.50V的電壓工作范 圍和024MHz工作頻率,使用AT89C51單片機(jī)時(shí)無(wú)須外擴(kuò)存儲(chǔ)器。 (1)、硬件總電路圖如下 丄C2 InF XI 1 C1 |fr 1 19 IB U1 XTAL2 AT跚 91 EA F13 MB P17 ALE F10 d 9k 3_- 11 rj- nb 7r 同曲同曲同燦更闿 fl 1 J J 5 fi 7 u- u- u- DI DI nr DI nr _DI nr DI 陽(yáng)円P3.P3. - U: 1 1 1 1 , P2O A3 P24 P21 a 琲

3、 2 a 11J cfiKGDGCQF LT 03 1 CUN rj 其中AT89C51單片機(jī)的設(shè)置如下 選擇12MH的晶振,該單片機(jī)選用24V的電壓。其中電路圖中的7447芯片中的 A,B,C,D,E,F,G引腳是引出來(lái)用來(lái)分別接四個(gè)數(shù)碼管的。其中低電平代表通電,其數(shù)碼管的 09的數(shù)字代碼如下: 0X01、0X12、0X24、0X38、0X41、0X52、 0X64、0X78、0X81、0X92. 并通過(guò)p2.0、p2.1、p2.2、p2.3引腳分別來(lái)控制四個(gè)數(shù)碼管的得電順序。從而實(shí) 現(xiàn)發(fā)光牌的設(shè)置和控制。 (2)、對(duì)蜂鳴器的控制的電路介紹 其中XTAL1、XTAL2為般是指時(shí)鐘電路引腳 X

4、TAL1 :接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器反相放大器的輸 入;若使用外部時(shí)鐘時(shí),該引腳必須接地。 XTAL2 :接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器反相放大器的 輸出;若使用外部時(shí)鐘時(shí),該引腳接外部時(shí)鐘的輸入端。 利用這兩個(gè)引腳可以對(duì)歌曲的節(jié)奏和時(shí)間進(jìn)行控制。 其中歌曲的譜音可用代碼表示,蜂鳴器可根據(jù)不同代碼發(fā)出聲音。從而演奏 出“同一首歌”的旋律。 三、軟件系統(tǒng) 軟件編程序用keil軟件,仿真用protues軟件 其中控制歌曲播放的流程圖如下 控制歌曲的子程序的功能是可以計(jì)算出歌曲的播放時(shí)間,與各個(gè)音符的停頓 (3)對(duì)數(shù)碼管控制 a數(shù)碼管的接線圖如下 其中數(shù)碼管的放大

5、電路端如下圖所示 其中連接R1端的可與p22、p20、p21、p23連接。 b、對(duì)數(shù)碼管控制的流程圖如下 t r 四、仿真結(jié)果 仿真效果和預(yù)期一樣。其仿真用protues軟件來(lái)實(shí)現(xiàn),其仿真電路圖如下 VCC A A A R2 R3 R4 ik ik * j R8 aoFi R11 函 R? ZOT R9 aj! RIcHxr R5 sop R6 220R -ZF- /Q1 T:忠 03 TPt22 TPI22 Xi Cl 1hF H CRV5TAL IB 31 XTAL1 PQO/ftDCI PD.1/AD1 U1 PD0隠2 XTAL2 PD加口3 PD.勺心 poje/.Oi RST* P

6、Q.7W7 ATS9C51 iT ALE 貢 P2DCM P21J(M P2.M10 P2.A11 P2.4JA12 P2.SW13 KJ.6JA14 P27AA15 P1.0 P3.0RXD P11 P3.1OD P1.2 P32OT PI .3 P3.3MT P1 4 P3 4/rO P1.5 P3J5/H_ P1 E P3JrWR P1.7 P37.PD- q 二LJL二二呂LJ1ulUL丄UL亠丄LaLaaag于 五、附件 程序源代碼如下 #in elude #in elude #in elude Sou ndPlay.h void Delay1ms( un sig ned int c

7、ount) un sig ned int i,j; for(i=0;ico un t;i+) for(j=0;j120;j+); #define DELAYTIME65000 /定義延遲時(shí)間常數(shù) un sig ned int temp1; void delay(unsigned int temp)/ 延時(shí)程序 while(-temp); 同一首歌 un sig ned char code Music_Same= 0 x0F,0 x01, 0 x15,0 x02, 0 x16,0 x02, 0 x17,0 x66, 0 x18,0 x03, 0 x17,0 x02, 0 x15,0 x02, 0

8、 x16,0 x01,0 x15,0 x02, 0 x10,0 x02 0 x15,0 x00, 0 x0F,0 x01, 0 x15,0 x02, 0 x16,0 x02, 0 x17,0 x02, 0 x17,0 x03, 0 x18,0 x03, 0 x19,0 x02, 0 x15,0 x02, 0 x18,0 x66, 0 x17,0 x03, 0 x19,0 x02, 0 x16,0 x03, 0 x17,0 x03, 0 x16,0 x00, 0 x17,0 x01, 0 x19,0 x02, 0 x1B,0 x02, 0 x1B,0 x70, 0 x1A,0 x03, 0 x1

9、A,0 x01, 0 x19,0 x02, 0 x19,0 x03, 0 x1A,0 x03, 0 x1B,0 x02, 0 x1A,0 x0D, 0 x19,0 x03, 0 x17,0 x00, 0 x18,0 x66, 0 x18,0 x03, 0 x19,0 x02, 0 x1A,0 x02, 0 x19,0 x0C, 0 x18,0 x0D, 0 x17,0 x03 0 x16,0 x01, 0 x11,0 x02, 0 x11,0 x03, 0 x10,0 x03, 0 x0F,0 x0C, 0 x10,0 x02, 0 x15,0 x00, 0 x1F,0 x01, 0 x1A,

10、0 x01, 0 x18,0 x66, 0 x19,0 x03, 0 x1A,0 x01, 0 x1B,0 x02, 0 x1B,0 x03, 0 x1B,0 x03, 0 x1B,0 x0C, 0 x1A,0 x0D, 0 x19,0 x03, 0 x17,0 x00, 0 x1F,0 x01, 0 x1A,0 x01, 0 x18,0 x66, 0 x19,0 x03, 0 x1A,0 x01, 0 x10,0 x02, 0 x10,0 x03, 0 x10,0 x03, 0 x1A,0 x0C, 0 x18,0 x0D, 0 x17,0 x03, 0 x16,0 x00, 0 x0F,0

11、 x01, 0 x15,0 x02, 0 x16,0 x02, 0 x17,0 x70, 0 x18,0 x03, 0 x17,0 x02, 0 x15,0 x03, 0 x15,0 x03, 0 x16,0 x66, 0 x16,0 x03, 0 x16,0 x02, 0 x16,0 x03, 0 x15,0 x03, 0 x10,0 x02, 0 x10,0 x01, 0 x11,0 x01, 0 x11,0 x66, 0 x10,0 x03, 0 x0F,0 x0C, 0 x1A,0 x02, 0 x19,0 x02, 0 x16,0 x03, 0 x16,0 x03, 0 x18,0

12、x66, 0 x18,0 x03, 0 x18,0 x02, 0 x17,0 x03, 0 x16,0 x03, 0 x19,0 x00, 0 x00,0 x00 ; /* * main() InitialSound(); while(1) Play(Music_Same,0,3,360); Delay1ms(500); P2=0; /led is off while(1) P2=0X24;/ 顯示 2,P2 口輸出其 BCD 碼和掃描碼 P2. temp1=DELAYTIM delay(temp1); P2=0X01;/ 顯示 0,P2 口輸出其 BCD 碼和掃描碼 P2.0 temp1=D

13、ELAYT delay(temp1); P2=0X12;/ 顯示 1,P2 口輸出其 BCD 碼和掃描碼 P2.1 temp1=DELAYTIME; delay(temp1); P2=0X38;/ 顯示 3,P2 口輸出其 BCD 碼和掃描碼 P2.3 temp1=DELAYTIME; delay(temp1); * PLAY FOR 51MCU SOUND COPYRIGHT (c) 2005 BY JJJ. - ALL RIGHTS RESERVED - File Name: SoundPlay.h Author: Jiang Jian Jun Created: 2005/5/16 Mod

14、ified: NO Revision: 1.0 * */ /* * 曲譜存貯格式 unsigned char code MusicName 音高,音長(zhǎng),音高,音長(zhǎng) , 0,0; 末 尾 :0,0 表示結(jié)束 (Important) 音高由三位數(shù)字組成: 個(gè)位是表示 17 這七個(gè)音符 十位是表示音符所在的音區(qū) :1-低音, 2- 中音, 3- 高音 ; 百位表示這個(gè)音符是否要升半音 : 0-不升, 1-升半音。 音長(zhǎng)最多由三位數(shù)字組成: 個(gè)位表示音符的時(shí)值,其對(duì)應(yīng)關(guān)系是: 數(shù)值(n):|0 |1 |2 |3 | 4 | 5 | 6 |幾分音符 : |1 |2 |4 |8 |16 |32 |64 十

15、位表示音符的演奏效果 (0-2):0-普通, 1-連音, 2-頓音 百位是符點(diǎn)位 : 0-無(wú)符點(diǎn), 1-有符點(diǎn) 音符=2An 調(diào)用演奏子程序的格式 Play(樂(lè)曲名,調(diào)號(hào),升降八度,演奏速度); |樂(lè)曲名: 要播放的樂(lè)曲指針 ,結(jié)尾以 (0,0)結(jié)束; |調(diào)號(hào) (0-11): 奏; |升降八度 (1-3) 3:升八度 ; |演奏速度 (1-12000): 是指樂(lè)曲升多少個(gè)半音演 : 1:降八度 , 2:不升不降 值越大速度越快 ; * */ #ifndef _SOUNDPLAY_H_REVISION_FIRST_ #define _SOUNDPLAY_H_REVISION_FIRST_ /*

16、* #define SYSTEM_OSC 頻率 12000000HZ #define SOUND_SPACE 的長(zhǎng)度分率 ,/每 4 分音符間隔 sbit BeepIO = 12000000/ 定 義 晶 振 4/5 /定 義普通 音符演 奏 P3A7;/定義輸出管腳 unsigned int code FreTab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /原始頻率表 unsigned char code SignTab7 = 0,2,4,5,7,9,11 ; /17 在頻率表中的 位置 unsigned char code

17、 LengthTab7= 1,2,4,8,16,32,64 ; unsigned char Sound_Temp_TH0,Sound_Temp_TL0; unsigned char Sound_Temp_TH1,Sound_Temp_TL1; /音符定時(shí)器初值暫存 /音長(zhǎng)定時(shí)器初值暫存 /* * void InitialSound(void) BeepIO = 0; Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; / 計(jì)算 TL1 應(yīng)裝入的初值

18、 (10ms 的初裝值 ) / 計(jì)算 TH1 應(yīng)裝入的初值 TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TMOD |= 0 x11; ET0 = 1; ET1= 0; TR0= 0; TR1= 0; EA= 1; void BeepTimer0(void) interrupt 1/音符發(fā)生中斷 BeepIO = !BeepIO; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0; /* * void Play(unsigned char *Sound,unsigned char Signature,unsigned

19、 Octachord,unsigned int Speed) unsigned int NewFreTab12;/新的頻率表 unsigned char i,j; unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; unsigned char Tone,Length,SL,SH,SM,SLen,XG ,FD; for(i=0;i 11) j = j-12; NewFreTabi = FreTabj*2; else NewFreTabi = FreTabj; if(Octachord = 1

20、) NewFreTabi=2; else if(Octachord = 3) NewFreTabi=2; SoundLength = 0; while(SoundSoundLength != 0 x00) SoundLength+=2; Point = 0; Tone = SoundPoint; Length = SoundPoint+1; 時(shí)值 LDiv0 = 12000/Speed; 個(gè) 10ms) LDiv4 = LDiv0/4; LDiv4 = LDiv4-LDiv4*SOUND_SPACE; TR0= 0; TR1 = 1; while(Point = 2;/低音 if (SM=3) CurrentFre = 2;/高音 Temp_T = 65536-(50

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論