單片機(jī)電子琴系統(tǒng)設(shè)計_第1頁
單片機(jī)電子琴系統(tǒng)設(shè)計_第2頁
單片機(jī)電子琴系統(tǒng)設(shè)計_第3頁
單片機(jī)電子琴系統(tǒng)設(shè)計_第4頁
單片機(jī)電子琴系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、總  體  概  述本設(shè)計采用AT89S52單片機(jī)作為整個系統(tǒng)的控制核心,具有:音樂琴, 電子鐘,  LED陣列掃描顯示, 液晶字符顯示, 循環(huán)彩燈 五個模塊。音樂琴采用4X4矩陣鍵盤為輸入鍵盤,共有十六個基本音, 并與其他功能組合, 具有一定的實用性與趣味性, 較好的完成題目要求。關(guān)鍵詞:單片機(jī) 矩陣鍵盤 頻率 。一、音樂琴系統(tǒng)。1. 電路原理圖  2 系統(tǒng)板硬件連線 1 把“單片機(jī)系統(tǒng)”區(qū)域中的 P1.0 端口用導(dǎo)線連接到“音頻放大模塊”區(qū)域中的 SPK IN 端口上; 2 把“單片機(jī)系統(tǒng)“區(qū)域中的 P3.0 P3.7 端口用 8 芯排線連

2、接到“ 4X4 行列式鍵盤”區(qū)域中的 C1 C4 R1 R4 端口上; 3 相關(guān)程序內(nèi)容 音樂產(chǎn)生的方法; 一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時 / 計數(shù)器 T0 來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。現(xiàn)在以單片機(jī) 12MHZ 晶振為例,例出高中低音符與單片機(jī)計數(shù) T0 相關(guān)的計數(shù)值如下表所示 音符 頻率( HZ ) 簡譜碼( T 值) 音符 頻率( HZ ) 簡譜碼( T 值) 低 1 DO 262 6

3、3628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低

4、6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1

5、967 65283 下面我們要為這個音符建立一個表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù) 低音 0 19 之間,中音在 20 39 之間,高音在 40 59 之間 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65

6、157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 2 、音樂的音拍,一個節(jié)拍為單位( C 調(diào)) 曲調(diào)值 DELAY 曲調(diào)值 DELAY 調(diào) 4/4 125ms 調(diào) 4/4 62ms 調(diào) 3/4 187ms 調(diào) 3/4 94ms 調(diào) 2/4 250ms 調(diào) 2/4 125ms 對于不同的曲調(diào)我們也可以用單片機(jī)的另外一個定時 / 計數(shù)器來完成。 下面就用 AT89S51 單片機(jī)產(chǎn)生一首“生日快樂”歌曲來說明單片機(jī)如何產(chǎn)生的。 在這個程序中用到了兩個定時 / 計數(shù)器來完成的。其中 T0 用來

7、產(chǎn)生音符頻率, T1 用來產(chǎn)生音拍。 4 程序框圖   5 匯編源程序 KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#01H SETB ET0 SETB EA WAIT: MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV

8、 A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP DK1: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DP

9、TR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A CLR TR0 NOKEY1: MOV P3,#0FFH CLR P3.5 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3

10、ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 LJMP DK2 NK8: NOP DK2: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TA

11、BLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK2A CLR TR0 NOKEY2: MOV P3,#0FFH CLR P3.6 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,

12、#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9 LJMP DK3 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10 LJMP DK3 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 LJMP DK3 NK12: NOP DK3: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#

13、TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A CLR TR0 NOKEY3: MOV P3,#0FFH CLR P3.7 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL

14、A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4 NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#13 LJMP DK4 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 LJMP DK4 NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK4 NK16: NOP DK4: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV

15、DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A CLR TR0 NOKEY4: LJMP WAIT DELY10MS: MOV R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0: MOV TH0,STH0 MOV TL0,STL0 CPL P1.0 RETI TABLE:

16、 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H TABLE1: DW 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178 END 二、時鐘系統(tǒng)1  原理圖2 工作原理利用單片機(jī)89S52作為本系統(tǒng)的中控模塊。電路設(shè)有四個按鍵,一個為功能選擇開關(guān),能夠選擇調(diào)節(jié)時間、日期、第一個鬧鐘、第二個鬧鐘;第二個為“加”按鈕,能夠?qū)崿F(xiàn)數(shù)字的累加;第三

17、個為“減”按鈕,能夠?qū)崿F(xiàn)數(shù)字的遞減;第四個為確定選擇開關(guān)。電路程序取用單片機(jī)內(nèi)部其中一個定時中斷系統(tǒng)作為基準(zhǔn)秒頻,這樣能夠使CPU達(dá)到最大利用。功能調(diào)節(jié)時顯示電路仍然能夠達(dá)到同步顯示。當(dāng)調(diào)節(jié)的鬧鐘時間與時鐘顯示的時間相等時,聲光報警電路動作,取用LM386能夠放大單片機(jī)輸出的音頻信號,推動揚聲器發(fā)出樂耳的音樂,時鐘程序的整體設(shè)計方案是用單片機(jī)驅(qū)動電路控制時鐘顯示,為顯示提供電源,用軟件程序控制時種運行和各種調(diào)節(jié)功能。三、LED列陣掃描顯示系統(tǒng)1. 原理圖2 系統(tǒng)板硬件連線 我們把行列總線接在單片機(jī)的i0口,然后把上面分析到的掃描代碼送入總線, 就可以得到顯示的漢字了。

18、60;在這個例子里,由于一共用到16行,16列, 如果將其全部接入89c51單片機(jī), 一共使用32條io口,這樣造成了io資源的耗盡,系統(tǒng)也再無擴(kuò)充的余地。 實際應(yīng)用中我們使用4-16線譯碼器74ls154來完成列方向的顯示。 而行方向16條線則接在p0口和p2口。3 相關(guān)C程序內(nèi)容 #include <AT89X52.H> unsigned char code tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; unsigned char code graph38=0x12,0x14,0x3c,0x48

19、,0x3c,0x14,0x12,0x00,                                 0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00,         &#

20、160;                       0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00                     

21、60;          ; unsigned char count; unsigned char cnta; void main(void)   unsigned char i,j;   TMOD=0x01;   TH0=(65536-4000)/256;   TL0=(65536-4000)%256;   TR0=1;   ET0=1;   EA=1;   while(1)      

22、;     if(P2_0=0)                   for(i=5;i>0;i-)           for(j=248;j>0;j-);           if(P2_0=0) 

23、60;                         count+;               if(count=3)          

24、0;                        count=0;                           

25、0;   while(P2_0=0);                         void t0(void) interrupt 1 using 0   TH0=(65536-4000)/256;   TL0=(65536-4000)%256;   P3=tabcnta;   P1=graphcountcnta; 

26、0; cnta+;   if(cnta=8)           cnta=0;     四:LCD字符顯示1         C程序:#include<reg52.h>#define uchar unsigned charsbit rs=P12;sbit rw=P11;sbit e=P10;delay(uchar time)while(time>0) time-;vo

27、id enrw()rs=0; rw=0; e=0; delay(250); e=1;write_data(uchar c)P2=c; rs=1; rw=0; e=0; delay(250); e=1;init_lcd(void)/初始化P2=0x01;/清屏幕enrw();P2=0x38;/數(shù)據(jù)長度為8位,雙行顯示,5*7字符。enrw();P2=0x0c;/打開顯示開關(guān)enrw();P2=0x06;/地址計數(shù)遞增,顯示屏不移動enrw();write_cmd(uchar m)/寫命令,注意與寫數(shù)據(jù)的區(qū)別

28、 P2=m;  enrw();position(uchar row,uchar colum)/寫位置uchar p;  if(row=1)    p=0x82+colum-1;  else    p=0xC0+colum-1;    write_cmd(p);display(uchar *s)/寫字符串,簡單的指針應(yīng)用for(;*s!='0's+)  write_data(*s);void main()unsigned int m,n; m

29、=1; n=2; init_lcd(); position(m,1); display(" wolcome"); position(n,1); display("congratulations"); while(1);2:原理圖3:液晶的顯示1線段的顯示 點陣圖形式液晶由M 行×N 列個顯示單元組成,假設(shè)LCD 顯示屏有64行,每行有128 列,每8 列對應(yīng)1 個字節(jié)的8 個位,即每行由16 字節(jié),共16×8=128個點組成,屏上64×16 個顯示單元和顯

30、示RAM 區(qū)1024 個字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM 區(qū)的000H00FH 的16 個字節(jié)的內(nèi)容決定,當(dāng)(000)=FFH 時,則屏的左上角顯示一條短亮線,長度為8 個點;當(dāng)(3FFH)=FFH 時,則屏的右下角顯示一短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=FFH,(003H)=00H,(00EH)=FFH,(00FH)=00H 時,則在屏的頂部顯示一條由8 段亮線和8 條暗線組成的虛線。這就是LCD 顯示的基本意思。2字符的顯示 當(dāng)用LCD 顯示一個字符時就較復(fù)雜了,因為一個字符由6×8 或8×

31、;8 點陣組成,即要找到和屏上某幾個位置對應(yīng)的顯示RAM區(qū)的8 個字節(jié),并且要使每個字節(jié)的不同的位為1,其它的為0,為1的點亮,為0的點暗,這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器(如T6963C)來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據(jù)在LCD 上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。3漢字的顯示 漢字的顯示一般采用圖形方式,事先從微機(jī)中提取要顯示的漢字的點陣碼,每個漢字占32 字節(jié),分左右兩半部,各占16 字節(jié),左邊為1、3、5,右邊為2、4、6, 根據(jù)在LCD 上開始顯示的行列號及每行的列數(shù)可找出顯示RAM 對應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一個字節(jié),光標(biāo)位置加1,送第二字節(jié),換行按列對齊,送第三字節(jié)直到3

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論