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

下載本文檔

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

文檔簡介

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

2、 32根I/O 口線、2個16位定時/計數(shù)器、 5個向量兩級中斷結(jié)構(gòu)、2個全雙工的串行口,具有4.255.50V的電壓工作范 圍和024MHz工作頻率,使用AT89C51單片機時無須外擴存儲器。 (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 陽円P3.P3. - U: 1 1 1 1 , P2O A3 P24 P21 a 琲

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

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

5、電路端如下圖所示 其中連接R1端的可與p22、p20、p21、p23連接。 b、對數(shù)碼管控制的流程圖如下 t r 四、仿真結(jié)果 仿真效果和預(yù)期一樣。其仿真用protues軟件來實現(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ù) un sig ned int temp1; void delay(unsigned int temp)/ 延時程序 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 音高,音長,音高,音長 , 0,0; 末 尾 :0,0 表示結(jié)束 (Important) 音高由三位數(shù)字組成: 個位是表示 17 這七個音符 十位是表示音符所在的音區(qū) :1-低音, 2- 中音, 3- 高音 ; 百位表示這個音符是否要升半音 : 0-不升, 1-升半音。 音長最多由三位數(shù)字組成: 個位表示音符的時值,其對應(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-頓音 百位是符點位 : 0-無符點, 1-有符點 音符=2An 調(diào)用演奏子程序的格式 Play(樂曲名,調(diào)號,升降八度,演奏速度); |樂曲名: 要播放的樂曲指針 ,結(jié)尾以 (0,0)結(jié)束; |調(diào)號 (0-11): 奏; |升降八度 (1-3) 3:升八度 ; |演奏速度 (1-12000): 是指樂曲升多少個半音演 : 1:降八度 , 2:不升不降 值越大速度越快 ; * */ #ifndef _SOUNDPLAY_H_REVISION_FIRST_ #define _SOUNDPLAY_H_REVISION_FIRST_ /*

16、* #define SYSTEM_OSC 頻率 12000000HZ #define SOUND_SPACE 的長度分率 ,/每 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; /音符定時器初值暫存 /音長定時器初值暫存 /* * void InitialSound(void) BeepIO = 0; Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; / 計算 TL1 應(yīng)裝入的初值

18、 (10ms 的初裝值 ) / 計算 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; 時值 LDiv0 = 12000/Speed; 個 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論