單片機設計與制作 簡易電子琴的設計_第1頁
單片機設計與制作 簡易電子琴的設計_第2頁
單片機設計與制作 簡易電子琴的設計_第3頁
單片機設計與制作 簡易電子琴的設計_第4頁
單片機設計與制作 簡易電子琴的設計_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2009級單片機設計與制作技術報告中國礦業(yè)大學徐海學院單片機設計與制作技術報告姓 名:學 號:班 級: 電氣09-1班 題 目: 基于單片機的簡易電子琴 任課教師: 胡明2011 年 9月2009級單片機設計與制作技術報告單片機設計與制作任務書班級 電氣09-1班 學號學生姓名任務下達日期:2011 年 9 月 20 日設計日期:2011 年 12 月 14 日 至 2011 年 12 月22設計題目:基于單片機的簡易電子琴設計主要內容和完成功能:設計一個基于AT89C51單片機的簡易電子琴。設計一個4*4的鍵盤,并將16個鍵設計成16個音??蓮椬嘞胍磉_的音樂。教師簽字:日2009級單片機設

2、計與制作技術報告摘 要鍵盤樂器,采用半導體集成電路,對樂音信號進行放大,通過揚聲器產生音響。發(fā)音音量可以自由調節(jié)。音域較寬,和聲豐富,甚至可以演奏出一個管弦樂隊的效果,表現(xiàn)力極其豐富。它還可模仿多種音色,甚至可以奏出常規(guī)樂器所無法發(fā)出的聲音(如人聲,風雨聲等)。另外,電子琴在獨奏時,還可隨意配上類似打擊樂音響的節(jié)拍伴奏,適合于演奏節(jié)奏性較強的現(xiàn)代音樂。另外,電子琴還安裝有混響、回聲、延長音、震音和顫音等多項功能裝置,表達各種情緒時運用自如。電子琴是電聲樂隊的中堅力量,常用于獨奏主旋律并伴以豐富的和聲。還常作為獨奏樂器出現(xiàn),具有鮮明時代特色。但電子琴的局限性也十分明顯:旋律與和聲缺乏音量變化,過

3、于協(xié)和、單一;在模仿各類管、弦樂器時,音色還不夠逼真,模仿提琴類樂器的音色時,失真度更大,還需要不斷改進。電子琴的演奏有較大一部分是通過自動和弦伴奏來配合完成的,在音樂中和弦的連接推動了旋律地進行,不同的和聲連接,形成了不同的音樂色彩。本次設計提出了用AT89C51單片機為核心控制元件,設計一個簡易的電子琴. 本方案以AT89C51單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊在主控模塊上設有16個按鍵和揚聲器.根據使用者的操作隨意彈奏想要表達的音樂。一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于

4、單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產生這樣方波頻率信號2009級單片機設計與制作技術報告目 錄1、系統(tǒng)概述1.1播放模塊1.2 按鍵控制模塊1.3 總體硬件組成框圖2、硬件設計2.1 硬件原理圖2.2 系統(tǒng)板硬件連線2.3主要硬件的介紹2.3.1 AT89S51簡介2.3.2 LM386介紹2.4 播放模塊的硬件設計2.5 4×4矩陣鍵盤識別處理3、軟件設計4、系統(tǒng)調試5、結束語6、參考文獻7、附錄2009級單片機設計與制作技術報告1. 系統(tǒng)概述本系統(tǒng)采用單片機AT89C51為電子琴的控制核心,系統(tǒng)主要包括播放模塊、按鍵控制模塊。下面對各模塊的設計

5、逐一進行論證比較。1.1 播放模塊播放模塊是喇叭構成。它幾乎不存在噪聲,音響效果較好。而且由于所需驅動功率較小,且價格低廉,所以,被廣泛應用。1.2 按鍵控制模塊電子琴設有16個按鍵,其中7個作為音符輸入,另外1個作為模式轉換按鍵,實現(xiàn)用戶自彈作曲。7個按鍵分別代表7個音符,包括中音段的全部音符。通過軟硬件設計,模式轉換按 鍵觸發(fā)外部中斷,中斷使程序跳轉,實現(xiàn)模式轉換,啟動電子琴。然后通過查詢電子琴所按下的按鍵,讀取電子琴輸入狀態(tài),跳轉到對應的程序人口,實現(xiàn)自編歌曲。當需要取消電子琴編曲功能時,再次按下模式轉換按鍵引起外部中斷即可退出電子琴功能而返回原 來按鍵播放處。1.3 總體硬件組成框圖圖

6、1-1 總體硬件組成框圖2009級單片機設計與制作技術報告2.硬件設計2.1 硬件原理圖2009級單片機設計與制作技術報告2.2 系統(tǒng)板硬件連線(1 把“單片機系統(tǒng)”區(qū)域中的P1.0端口用導線連接到“音頻放大模塊”區(qū)域中的SPK IN端口上;(2 把“單片機系統(tǒng)“區(qū)域中的P3.0P3.7端口用8芯排線連接到“4X4行列式鍵盤”區(qū)域中的C1C4 R1R4端口上;2.3主要硬件的介紹2.3.1 AT89S51簡介AT89S51 是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器

7、件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。此外,AT89S51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數(shù)據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。2009級單片機設計與制作技術報告圖

8、2-1 單片機管腳圖引腳功能VCC(40):5V;GND(20):接地;P0口(3932):P0口為8位漏極開路雙向I/O口,每引腳可吸收8個TTL門電流;P1口(18):P1口是從內部提供上拉電阻器的8位雙向I/O口,P1口緩沖器能接收和輸出4個TTL門電流;P2口(2128):P2口為內部上拉電阻器的8位雙向I/O口,P2口緩沖器可接收和輸出4個TTL門電流;P3口(1017):P3口是8個帶內部上拉電阻器的雙向I/O口,可接收和輸出4個TTL門電流,P3口也可作為AT89C51的特殊功能口;RST(9):復位輸入。當振蕩器復位時,要保持RST引腳2個機器周期的高電平時間;ALE/PROG

9、(30):當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié),在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以2009級單片機設計與制作技術報告 不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,它可用作對外部輸出的脈沖或用于定時目的,要注意的是,每當訪問外部數(shù)據存儲器時,將跳過1個ALE脈沖;PSEN(29):外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期2次PSEN有效,但在訪問外部數(shù)據存儲器時,這2次有效的PSEN信號將不出現(xiàn);EA/VPP(31):當EA保持低電平時,外部程序存儲器地址為(0000HFFFFH)不管是否有內部程序

10、存儲器。FLASH編程期間,此引腳也用于施加12V編程電源(VPP);XTAL1(19):反向振蕩器放大器的輸入及內部時鐘工作電路的輸入;XTAL2(18):來自反向振蕩器的輸出;2.3.2 LM386介紹LM386是一種音頻集成功放,具有自身功耗低、電壓增益可調整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點,廣泛應用于錄音機和收音機之中. LM386內部電路及特性圖2-2 LM386內部電路原理圖2009級單片機設計與制作技術報告LM386內部電路原理圖如圖2-2所示。與通用型集成運放相類似,它是一個三級放大電路。第一級為差分放大電路,T1和T3、T2和T4分別構成復合管,作為差分放大電

11、路的放大管;T5和T6組成鏡像電流源作為T1和T2的有源負載;T3和T4信號從管的基極輸入,從T2管的集電極輸出,為雙端輸入單端輸出差分電路。使用鏡像電流源作為差分放大電路有源負載,可使單端輸出電路的增益近似等于雙端輸出電容的增益。第二級為共射放大電路,T7為放大管,恒流源作有源負載,以增大放大倍數(shù)。 第三級中的T8和T9管復合成PNP型管,與NPN型管T10構成準互補輸出級。二極管D1和D2為輸出級提供合適的偏置電壓,可以消除交越失真。引腳2為反相輸入端,引腳3為同相輸入端。電路由單電源供電,故為OTL電路。輸出端(引腳5)應外接輸出電容后再接負載。電阻R7從輸出端連接到T2的發(fā)射極,形成反

12、饋通路,并與R5和R6構成反饋網絡,從而引入了深度電壓串聯(lián)負反饋,使整個電路具有穩(wěn)定的電壓增益。圖2-3 LM386的外形和引腳的排列LM386的外形和引腳的排列如圖3-3所示。引腳2為反相輸入端,3為同相輸入端;引腳5為輸出端;引腳6和4分別為電源和地;引腳1和8為電壓增益設定端;使用時在引腳7和地之間接旁路電容,通常取10F。查LM386的電源電壓4-12V或5-18V(LM386N-4);靜態(tài)消耗電流為4mA;電壓增益為20-200dB;在1、8腳開路時,帶寬為300KHz;輸入阻抗為50K;音頻功率0.5W。2009級單片機設計與制作技術報告 盡管LM386的應用非常簡單,但稍不注意,

13、特別是器件上電、斷電瞬間,甚至工作穩(wěn)定后,一些操作(如插拔音頻插頭、旋音量調節(jié)鈕)都會帶來的瞬態(tài)沖擊,在輸出喇叭上會產生非常討厭的噪聲。要注意以下幾點:1、通過接在1腳、8腳間的電容(1腳接電容+極)來改變增益,斷開時增益為20dB。因此用不到大的增益,電容就不要接了,不光省了成本,還會帶來好處-噪音減少,何樂而不為?2、PCB設計時,所有外圍元件盡可能靠近LM386;地線盡可能粗一些;輸入音頻信號通路盡可能平行走線,輸出亦如此。這是死理,不用多說了吧。3、選好調節(jié)音量的電位器。質量太差的不要,否則受害的是耳朵;阻值不要太大,10K最合適,太大也會影響音質。4、盡可能采用雙音頻輸入/輸出。好處

14、是:“”、“”輸出端可以很好地抵消共模信號,故能有效抑制共模噪聲。5、第7腳(BYPASS)的旁路電容不可少!實際應用時,BYPASS端必須外接一個電解電容到地,起濾除噪聲的作用。工作穩(wěn)定后,該管腳電壓值約等于電源電壓的一半。增大這個電容的容值,減緩直流基準電壓的上升、下降速度,有效抑制噪聲。在器件上電、掉電時的噪聲就是由該偏置電壓的瞬間跳變所致,這個電容可千萬別省??!6、減少輸出耦合電容。此電容的作用有二:隔直 + 耦合。隔斷直流電壓,直流電壓過大有可能會損壞喇叭線圈;耦合音頻的交流信號。它與揚聲器負載構成了一階高通濾波器。減小該電容值,可使噪聲能量沖擊的幅度變小、寬度變窄;太低還會使截止頻

15、率(fc1/(2*RL*Cout))提高。分別測試,發(fā)現(xiàn)10uF/4.7uF最為合適,這是我的經驗值。7、電源的處理,也很關鍵。如果系統(tǒng)中有多組電源,由于電壓不同、負載不同以及并聯(lián)的去耦電容不同,每組電源的上升、下降時間必有差異。非??尚械姆椒ǎ簩⑸想?、掉電時間短的電源放到+12V處,選擇上升相對較慢的電源作為LM386的Vs,但不要低于4V,效果確實不錯!C調各音符頻率與計數(shù)值T的對照如表1所示表1 C調各音符頻率與計數(shù)值T的對照表下面我們要為這個音符建立一個表格,有助于單片機通過查表的方式來獲得相應的數(shù)據低音019之間,中音在2039之間,高音在4059之間 TABLE: DW 0,636

16、28,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,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0表2 音樂的音拍,一個節(jié)拍為單位(C調) 曲

17、調值 調4/4 調3/4 調2/4DELAY 125ms 187ms 250ms曲調值 調4/4 調3/4 調2/4DELAY 62ms 94ms 125ms對于不同的曲調我們也可以用單片機的另外一個定時/計數(shù)器來完成。2009級單片機設計與制作技術報告音樂發(fā)聲程序如圖2009級單片機設計與制作技術報告2009級單片機設計與制作技術報告2.5 4×4矩陣鍵盤識別處理每個按鍵有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關的一端(列線)通過電阻接VCC,而接地是通過程序輸出數(shù)字圖

18、2-5 音樂發(fā)聲程序流程圖2009級單片機設計與制作技術報告圖2-7 行列式鍵盤電路圖2- 7 鍵盤識別程序框圖2009級單片機設計與制作技術報告3. 軟件設計軟件調試采用單片機仿真器KEILC及微機,將編好的程序進行調試,主要是檢查語法錯誤。KEYBUF EQU 30H ;KEYBUF 定義為,30HSTH0 EQU 31H ;STH0 定義為,31HSTL0 EQU 32H ;STL0 定義為,32HTEMP EQU 33H ;TEMP 定義為,33HORG 00H ;定義當前位置為 00H2009級單片機設計與制作技術報告 LJMP START ;長轉移到 STARTORG 0BH ;定

19、義當前位置為 0BHLJMP INT_T0 ;長轉移到 INT_T0START:MOV TMOD,#01H ;傳送 TMOD,立即數(shù)01HSETB ET0 ;位-置1 ET0SETB EA ;位-置1 EAWAIT: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.4 ;清0 接口3第4位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY1 ;寄存器為0轉移 NOKEY1LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送

20、 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY1 ;寄存器為0轉移 NOKEY1LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,NK1 ;比較-不等轉移 寄存器A,立即數(shù)0EH,MOV KEYBUF,#0 ;傳送 KEYBUF,立即數(shù)LJMP DK1 ;長轉移到 DK1NK1:CJNE A,#0DH,NK2 ;比較-不等轉移 寄存器A,立即數(shù)0DH,MOV KEYB

21、UF,#1 ;傳送 KEYBUF,立即數(shù)1LJMP DK1 ;長轉移到 DK1NK2:CJNE A,#0BH,NK3 ;比較-不等轉移 寄存器A,立即數(shù)0BH,MOV KEYBUF ,#2 ;傳送 KEYBUF ,立即數(shù)2LJMP DK1 ;長轉移到 DK1NK3:CJNE A,#07H,NK4 ;比較-不等轉移 寄存器A,立即數(shù)07H,MOV KEYBUF ,#3 ;傳送 KEYBUF ,立即數(shù)3LJMP DK1 ;長轉移到 DK1NK4:NOP ;空操作DK1: ;MOV A ,KEYBUF ;傳送 A ,KEYBUFMOV DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABLEMOV

22、C A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV B,#2 ;傳送 B,立即數(shù)2MUL AB ;兩數(shù)相乘 AB2009級單片機設計與制作技術報告 MOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STH0,A ;傳送 STH0,寄存器AMOV TH0,A ;傳送 TH0,寄存器AINC TEMP ;加

23、1 TEMPMOV A,TEMP ;傳送 寄存器A,TEMPMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STL0,A ;傳送 STL0,寄存器AMOV TL0,A ;傳送 TL0,寄存器ASETB TR0 ;位-置1 TR0DK1A:MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK1A ;寄存器不為0轉移 DK1ACLR TR0 ;清0 TR0NOKEY1: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P

24、3.5 ;清0 接口3第5位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY2 ;寄存器為0轉移 NOKEY2LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHJZ NOKEY2 ;寄存器為0轉移 NOKEY2MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,Nk5 ;比較-不等轉移 寄存器A,立即

25、數(shù)0EH,MOV KEYBUF,#4 ;傳送 KEYBUF,立即數(shù)4LJMP DK2 ;長轉移到 DK2NK5:CJNE A,#0DH,NK6 ;比較-不等轉移 寄存器A,立即數(shù)0DH,MOV KEYBUF,#5 ;傳送 KEYBUF,立即數(shù)5LJMP DK2 ;長轉移到 DK2NK6:CJNE A,#0BH,NK7 ;比較-不等轉移 寄存器A,立即數(shù)0BH,MOV KEYBUF,#6 ;傳送 KEYBUF,立即數(shù)6LJMP DK2 ;長轉移到 DK2NK7:CJNE A,#07H,NK8 ;比較-不等轉移 寄存器A,立即數(shù)07H,MOV KEYBUF,#7 ;傳送 KEYBUF,立即數(shù)7LJ

26、MP DK2 ;長轉移到 DK2NK8:NOP ;空操作2009級單片機設計與制作技術報告 DK2: ;MOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABLEMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV B,#2 ;傳送 B,立即數(shù)2MUL AB ;兩數(shù)相乘 ABMOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MO

27、VC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STH0,A ;傳送 STH0,寄存器AMOV TL0,A ;傳送 TL0,寄存器ASETB TR0 ;位-置1 TR0DK2A:MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK2A ;寄存器不為0轉移 DK2ACLR TR0 ;清0 TR0NOKEY2: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.6 ;清0 接口3第6位MOV A,P3 ;傳送 寄存器A,

28、接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY3 ;寄存器為0轉移 NOKEY3LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY3 ;寄存器為0轉移 NOKEY3MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,NK9 ;比較-不等轉移 寄存器A,立即數(shù)0E

29、H,MOV KEYBUF,#8 ;傳送 KEYBUF,立即數(shù)8LJMP DK3 ;長轉移到 DK3NK9:CJNE A,#0DH,NK10 ;比較-不等轉移 寄存器A,立即數(shù)0DH,MOV KEYBUF,#9 ;傳送 KEYBUF,立即數(shù)9LJMP DK3 ;長轉移到 DK3NK10:CJNE A,#0BH,NK11 ;比較-不等轉移 寄存器A,立即數(shù)0BH, MOV KEYBUF,#10 ;傳送 KEYBUF,立即數(shù)10LJMP DK3 ;長轉移到 DK32009級單片機設計與制作技術報告 NK11:NOP ;空操作DK3: ;MOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV

30、DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABLEMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMUL AB ;兩數(shù)相乘 ABMOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STH0,A ;傳送 STH0,寄存器AMOV TH0,A ;傳送 TH0,寄存器ASETB TR0 ;位-置1 TR0DK3A:MOV A,P3 ;傳送 寄存器A,接口3

31、ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK3A ;寄存器不為0轉移 DK3ACLR TR0 ;清0 TR0NOKEY3: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.7 ;清0 接口3第7位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY4 ;寄存器為0轉移 NOKEY4LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,

32、接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY4 ;寄存器為0轉移 NOKEY4MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,NK13 ;比較-不等轉移 寄存器A,立即數(shù)0EH,MOV KEYBUF,#12 ;傳送 KEYBUF,立即數(shù)12LJMP DK4 ;長轉移到 DK4NK13:CJNE A,#0DH,NK14 ;比較-不等轉移 寄存器A,立即數(shù)0DH, MOV KEYBUF,#13 ;傳送 KEYBUF,立即數(shù)13LJMP

33、 DK4 ;長轉移到 DK4,NK14:CJNE A,#0BH,NK15 ;比較-不等轉移 寄存器A,立即數(shù)0BH, MOV KEYBUF,#14 ;傳送 KEYBUF,立即數(shù)14LJMP DK4 ;長轉移到 DK42009級單片機設計與制作技術報告 NK15:CJNE A,#0BH,NK16 ;比較-不等轉移 寄存器A,立即數(shù)0BH, MOV KEYBUF ,#15 ;傳送 KEYBUF ,立即數(shù)15LJMP DK4 ;長轉移到 DK4NK16:NOP ;空操作DK4: ;MOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABL

34、EMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV B,#2 ;傳送 B,立即數(shù)2MUL AB ;兩數(shù)相乘 ABMOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STH0,A ;傳送 STH0,寄存器AMOV TH0,A ;傳送 TH0,寄存器AINC TEMP ;加1 TEMPMOV A,TE

35、MP ;傳送 寄存器A,TEMPMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STL0,A ;傳送 STL0,寄存器AMOV TL0,A ;傳送 TL0,寄存器ASETB TR0 ;位-置1 TR0DK4A:MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK4A ;寄存器不為0轉移 DK4ACLR TR0 ;清0 TR0NOKEY4: ;LJMP WAIT ;長轉移到 WAITDELY10MS: ;MOV R6,#10 ;傳送 通

36、用寄存器6,立即數(shù)10D1:MOV R7,#248 ;傳送 通用寄存器7,立即數(shù)248DJNZ R7,$ ;減一不為0轉移 通用寄存器7,到本行DJNZ R6,D1 ;減一不為0轉移 通用寄存器6,D1RET ;子程序返回INT_T0: ;MOV TH0,STH0 ;傳送 TH0,STH0MOV TL0,STL0 ;傳送 TL0,STL0CPL P1.0 ;取反 接口1第0位RETI ;中斷返回TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;程序空間定義數(shù)據2009級單片機設計與制作技術報告 3FH,06H,DB 7FH,6FH,77H,7CH,39H,5E

37、H,79H,71H ;程序空間定義數(shù)據 7FH,6FH, TABLE1:DW 64021,64103,64260,64400 ;DW 64021,64103,DW 64524,64580,64684,64777 ;DW 64524,64580,DW 64820,64898,64968,65030 ;DW 64820,64898,DW 65058,65110,65157,65178 ;DW 65058,65110,END ;END2009級單片機設計與制作技術報告4、系統(tǒng)調試對各個模塊的功能進行調試,主要調試各模塊能否實現(xiàn)指定的功能。將調試好的硬件和軟件進行聯(lián)調,主要調試系統(tǒng)的實現(xiàn)功能。5、結束

38、語通過這次電子琴的設計,我學到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學過的零散的知識串到一起。首先在剛開始的調研階段,我學會了怎么通過各種方式查詢相關的資料。通過對這些資料的學習,我大致了解了單片機的發(fā)展現(xiàn)狀以及未來的發(fā)展趨勢,認識到目前單片機方面的各種各樣的發(fā)展,和它們之間的競爭。了解了單片機方面的先進技術,這些都為我的未來的學習指明了方向。我的畢業(yè)設計主要涉及硬件和軟件兩方面的內容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產品的開發(fā)流程和所要做的工作。基本掌握了Protel99SE原理圖的方法,并設計了一個單片機最小系統(tǒng)。通過開發(fā)板的設計和硬

39、件搭建的過程,使我對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,如LED數(shù)碼管,鍵盤等。在軟件方面,通過串行口調試工具的開發(fā),使我加深了對累封裝的理解,熟 悉了51系列單片機內部的寄存器和編程規(guī)則,以及如何控制外圍電路。6、參考文獻1.胡漢才。單片機原理及其接口技術 清華大學出版社,第三版2.張毅剛,彭喜元。單片機原理與應用 高等教育出版社,2007.103. 趙亮,侯國銳.單片機C語言編程與實例M.北京:人民郵電出版社,2003.4.楊恢先,黃輝先.單片機原理及應用M.北京:人民郵電出版社,2006.5. 張虹.單片機原理及應用M.北京:中國電力出版社

40、,2009.6.李云鋼,鄒逢興,龍志強. 單片機原理與應用系統(tǒng)計 中國水利水電出版2009級單片機設計與制作技術報告 社,2008.7、附錄硬件原理圖2009級單片機設計與制作技術報告源程序KEYBUF EQU 30H ;KEYBUF 定義為,30HSTH0 EQU 31H ;STH0 定義為,31HSTL0 EQU 32H ;STL0 定義為,32HTEMP EQU 33H ;TEMP 定義為,33HORG 00H ;定義當前位置為 00HLJMP START ;長轉移到 STARTORG 0BH ;定義當前位置為 0BHLJMP INT_T0 ;長轉移到 INT_T0START:MOV T

41、MOD,#01H ;傳送 TMOD,立即數(shù)01HSETB ET0 ;位-置1 ET0SETB EA ;位-置1 EAWAIT: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.4 ;清0 接口3第4位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY1 ;寄存器為0轉移 NOKEY1LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0

42、FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY1 ;寄存器為0轉移 NOKEY1LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,NK1 ;比較-不等轉移 寄存器A,立即數(shù)0EH,MOV KEYBUF,#0 ;傳送 KEYBUF,立即數(shù)LJMP DK1 ;長轉移到 DK1NK1:CJNE A,#0DH,NK2 ;比較-不等轉移 寄存器A,立即數(shù)0DH,MOV KEYBUF,#1 ;傳送 KEYBUF,立即數(shù)1LJMP DK1 ;長轉移到 DK1NK2:CJ

43、NE A,#0BH,NK3 ;比較-不等轉移 寄存器A,立即數(shù)0BH,MOV KEYBUF ,#2 ;傳送 KEYBUF ,立即數(shù)2LJMP DK1 ;長轉移到 DK12009級單片機設計與制作技術報告 NK3:CJNE A,#07H,NK4 ;比較-不等轉移 寄存器A,立即數(shù)07H,MOV KEYBUF ,#3 ;傳送 KEYBUF ,立即數(shù)3LJMP DK1 ;長轉移到 DK1NK4:NOP ;空操作DK1: ;MOV A ,KEYBUF ;傳送 A ,KEYBUFMOV DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABLEMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+

44、DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV B,#2 ;傳送 B,立即數(shù)2MUL AB ;兩數(shù)相乘 ABMOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STH0,A ;傳送 STH0,寄存器AMOV TH0,A ;傳送 TH0,寄存器AINC TEMP ;加1 TEMPMOV A,TEMP ;傳送 寄存器A,TEMPMOVC A,A+DPTR ;

45、程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STL0,A ;傳送 STL0,寄存器AMOV TL0,A ;傳送 TL0,寄存器ASETB TR0 ;位-置1 TR0DK1A:MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK1A ;寄存器不為0轉移 DK1ACLR TR0 ;清0 TR0NOKEY1: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.5 ;清0 接口3第5位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH

46、 ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY2 ;寄存器為0轉移 NOKEY2LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHJZ NOKEY2 ;寄存器為0轉移 NOKEY2MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,Nk5 ;比較-不等轉移 寄存器A,立即數(shù)0EH,2009級單片機設計與制作技術報告 MOV KEYBUF,#4 ;傳送 KEYB

47、UF,立即數(shù)4LJMP DK2 ;長轉移到 DK2NK5:CJNE A,#0DH,NK6 ;比較-不等轉移 寄存器A,立即數(shù)0DH,MOV KEYBUF,#5 ;傳送 KEYBUF,立即數(shù)5LJMP DK2 ;長轉移到 DK2NK6:CJNE A,#0BH,NK7 ;比較-不等轉移 寄存器A,立即數(shù)0BH,MOV KEYBUF,#6 ;傳送 KEYBUF,立即數(shù)6LJMP DK2 ;長轉移到 DK2NK7:CJNE A,#07H,NK8 ;比較-不等轉移 寄存器A,立即數(shù)07H,MOV KEYBUF,#7 ;傳送 KEYBUF,立即數(shù)7LJMP DK2 ;長轉移到 DK2NK8:NOP ;空操

48、作DK2: ;MOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABLEMOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV B,#2 ;傳送 B,立即數(shù)2MUL AB ;兩數(shù)相乘 ABMOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV

49、STH0,A ;傳送 STH0,寄存器AMOV TL0,A ;傳送 TL0,寄存器ASETB TR0 ;位-置1 TR0DK2A:MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK2A ;寄存器不為0轉移 DK2ACLR TR0 ;清0 TR0NOKEY2: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.6 ;清0 接口3第6位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯

50、-異或 寄存器A,立即數(shù)0FHJZ NOKEY3 ;寄存器為0轉移 NOKEY3LCALL DELY10MS ;長調用 DELY10MSMOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FH2009級單片機設計與制作技術報告 JZ NOKEY3 ;寄存器為0轉移 NOKEY3MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHCJNE A,#0EH,NK9 ;比較-不等轉移 寄存器A,立即數(shù)0EH,MOV KEYBUF,#8 ;傳送 KEYBUF,

51、立即數(shù)8LJMP DK3 ;長轉移到 DK3NK9:CJNE A,#0DH,NK10 ;比較-不等轉移 寄存器A,立即數(shù)0DH,MOV KEYBUF,#9 ;傳送 KEYBUF,立即數(shù)9LJMP DK3 ;長轉移到 DK3NK10:CJNE A,#0BH,NK11 ;比較-不等轉移 寄存器A,立即數(shù)0BH, MOV KEYBUF,#10 ;傳送 KEYBUF,立即數(shù)10LJMP DK3 ;長轉移到 DK3NK11:NOP ;空操作DK3: ;MOV A,KEYBUF ;傳送 寄存器A,KEYBUFMOV DPTR,#TABLE ;傳送 DPTR,立即數(shù)TABLEMOVC A,A+DPTR ;程

52、序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV P0,A ;傳送 接口0,寄存器AMUL AB ;兩數(shù)相乘 ABMOV TEMP,A ;傳送 TEMP,寄存器AMOV DPTR,#TABLE1 ;傳送 DPTR,立即數(shù)TABLE1MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV STH0,A ;傳送 STH0,寄存器AMOV TH0,A ;傳送 TH0,寄存器ASETB TR0 ;位-置1 TR0DK3A:MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJNZ DK3A ;寄存器不為0轉移 DK3ACLR TR0 ;清0 TR0NOKEY3: ;MOV P3,#0FFH ;傳送 接口3,立即數(shù)0FFHCLR P3.7 ;清0 接口3第7位MOV A,P3 ;傳送 寄存器A,接口3ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FHXRL A,#0FH ;邏輯-異或 寄存器A,立即數(shù)0FHJZ NOKEY4 ;寄存器為0轉移 NOKEY4LCALL DELY10MS ;長調用 DELY1

溫馨提示

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

評論

0/150

提交評論