畢業設計論文2_供參考_第1頁
畢業設計論文2_供參考_第2頁
畢業設計論文2_供參考_第3頁
畢業設計論文2_供參考_第4頁
畢業設計論文2_供參考_第5頁
已閱讀5頁,還剩53頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、畢業設計(論文任務書專業(班: 01電子信息工程(1班姓名:甘曉聰1、課題名稱、主要內容和基本要求課題名稱:簡易電子琴的制作主要內容:該簡易電子琴可實現從低音1DO到高音7SI共21個音符的控制,按下相應的鍵可隨意彈奏想要表達的音樂,開關顯示為液晶顯示。基本要求:1、開關顯示為液晶顯示;2、用匯編語言按鍵控制低音1DO到高音7SI共21個音符。2、進度安排周次工作內容執行情況13 選定題目、搜集資料完成4 選擇方案、技術可行性分析、方案論證與確定完成5 修改開題報告、評定開題報告完成6 由老師對方案的制作要求作指定說明并改良完成7 電路原理圖設計、采購元器件完成89 硬件的實現(焊接技術、相關

2、儀器設備的使用完成1013 軟件的實現(完成相關軟件編程設計工作完成1415 整個設計的軟硬件調試完成16 演示制作成品、講解設計思路、回答提問3、指導教師評語 指導教師核定成績:指導教師簽名: 4、評閱教師評語 評閱教師核定成績:評閱教師簽名: 5、畢業設計(論文成績 答辯委員會主任簽名:摘要本文介紹了一種由AT89S51單片機、1602液晶顯示模塊和鍵盤控制組成的簡易電子琴的實施方案。本系統以單片機AT89S51為控制核心,通過對鍵盤的控制實現對從低音1DO 到高音7SI等的21個音符的控制。開關顯示為液晶顯示,用戶按不同的鍵即可隨意彈奏想要表達的音樂。它是51單片機中非常典型的應用之一。

3、關鍵詞:A T89S51單片機、1602液晶顯示模塊、鍵盤控制、簡易電子琴AbstractThis article introduce the simple Novachord that consist of AT89C51 SCM(Single Chip Microcomputer、1602LCD(Liquid Crystal Display and keys .This system's manipulative core is 89s52 single chip.Through click the keys,we can get the note from bass note D

4、O to high note SI.The on-off display is LCD display.User can click the keys what they want to,and can play the music what they want.This simple Novachord is a typical use of 51 SCM.KEY WORD: AT89C51 SCM、1602LCD、Keys Control、Simple Novachord目錄畢業設計任務書 (1摘要 (3目錄 (4前言 (5一、課題的提出 (6二、方案的選擇與論證 (72.1 硬件電路的方

5、案論證 (72.1.1 獨立式按鍵控制. (72.1.2 4*4鍵盤控制 (72.1.3 LINKKEY鍵盤控制 (82.2 軟件實現的方案論證 (9三、主要元器件的介紹 (133.1 AT89S51高性能單片機 (133.2 1602液晶顯示模塊 (223.2.1 液晶模塊管腳定義 (223.2.2 液晶模塊指令詳解 (233.2.3 顯示位和標準字符庫 (263.2.4 間接控制方式接口電路和驅動程序 (26四、總體設計 (304.1硬件原理圖 (304.2軟件的實現 (31五、結論 (41六、結束語 (42參考文獻 (43附錄一 (44附錄二 (46前言隨著大規模集成電路的出現及其發展,

6、將計算機的CPU 、RAM 、 ROM 、定時/數器和多種I/O接口集成在一片芯片上,形成芯片級的計算機,因此單片機早期的含義稱為單片微型計算機,直譯為單片機(Single Chip Microcomputer單片機的出現是計算機技術發展史上的一個重要里程碑,單片機的誕生標志著計算機正式形成了通用計算機系統和嵌入式計算機系統兩大分支。單片機的主要特點有: 1 、具有優異的性能價格比; 2 、集成度高、體積小、可靠性高;3 、控制功能強;4 、低電壓、低功耗。單片機的應用也十分廣泛,微小體積和極低的成本,使其可廣泛地嵌入到如儀器儀表、工業控制單元、汽車電子系統、辦公自動化設備、家用電器、機器人、

7、個人信息終端及通信產品中,成為現代電子系統中最重要的智能化工具。本畢業設計是51單片機中一個較典型且有趣的應用之一。介紹了一種由AT89S51單片機、1602液晶顯示模塊和鍵盤控制組成的簡易電子琴的實施方案。本系統以單片機AT89S51為控制核心,通過對鍵盤的控制實現對從低音1DO到高音7SI等的21個音符的控制。開關顯示為液晶顯示,用戶按不同的鍵即可隨意彈奏想要表達的音樂。電路簡單可靠,價格低廉。由于本人的知識有限,文中難免有缺點和錯誤之處,誠懇的希望各位老師以及所有讀者批評指正!一、課題的提出由于單片機的種種優勢,它得到了許多廣泛的應用:1 、在智能儀器儀表中的應用:在各類儀器儀表中引入單

8、片機,使儀器儀表智能化,提高測試的自動化程度和精度,簡化儀器儀表的硬件結構,提高其性能價格比。2 、在機電一體化中的應用:機電一體化產品是指集機械、微電子技術、計算機技術于一本,具有智能化特征的電子產品。3 、在實時過程控制中的應用:用單片機實時進行數據處理和控制,使系統保持最佳工作狀態,提高系統的工作效率和產品的質量。4 、在人類生活中的應用:目前國外各種家用電器已普通采用單片機代替傳統的控制電路。5 、在其它方面的應用:單片機除以上各方面的應用,它還廣泛應用于辦公自動化領域、商業營銷領域、汽車及通信、計算機外部設備、模糊控制等各領域中。為了能對單片機有更深的了解,本人設計了其典型的應用之一

9、音樂的應用。本設計采用的是AT89S51芯片。8051單片機的名字,對于初學單片機的人來說真是如雷貫耳。8031單片機的身影在很多產品中更是屢見不鮮。在眾多的51系列單片機中,要算 ATMEL 公司的AT89S51更實用,因他不但和8051指令、管腳完全兼容,而且其片內的4K程序存儲器是FLASH工藝的,這種工藝的存儲器用戶可以用電的方式瞬間擦除、改寫,一般專為 ATMEL AT89xx 做的編程器均帶有這些功能。寫入單片機內的程序還可以進行加密,這又很好地保護了你的勞動成果。再者,AT89S51目前的售價比8031還低,市場供應也很充足。二、方案的選擇與論證2.1、硬件電路(按鍵的方案論證2

10、.1.1 獨立式按鍵控制 圖2.1所示為7個獨立式按鍵的控制,此鍵盤原理簡單明了,直接將按鍵通過電阻連接P2口,這樣只要判斷P2對應的位的電平就可以確定是哪個鍵按下,此方法雖然簡單,但是若想將低音1DO到高音7SI一共21個音符都表達出來,所需占用的I/O口太多,所以從效率和成本上考慮并不實際。2.1.24*4鍵盤控制 圖2.2所示,是一個4*4的矩陣式鍵盤,其可以構成一個含有16個按鍵的鍵盤,顯然,在按鍵數量較多時,矩陣式鍵盤較之獨立式按鍵鍵盤要節省很多I/O口。矩陣式鍵盤中行、列線分別連接到按鍵開關的兩端,行線通過上拉電阻接到+5V,當無鍵按下時,行線處于高電平狀態;當有鍵按下時,行、列線

11、將導通,此時,行線電平由與此行線相連的列線電平決定,這是識別按鍵是否按下的關鍵。然而,矩陣式鍵盤中的行線,列線和多個鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間相互影響,且其只有16個按鍵,不能滿足控制21個音符。所以它也不是最佳選擇。2.1.3 LINKKEY(利用八個I/O口實現對28個按鍵的控制 圖2.3所示,是本設計所用的LINKKEY,其工作原理如下:將其中一個I/O 口置0,這樣通過判斷其他口的電平是否也為低電平,若是,這相應兩個口所連接的按鍵就是所按下的鍵,這是識別按鍵是否按下的關鍵。例如,將P0.0(對應LINK0置0,然后判斷其他按鍵的電平,如果P0.1(對

12、應LINK1也為低電平,則可確定為第一個按鍵按下,以此類推。根據排列組合的算法,此種連接方法(利用8個I/O口可實現對28個按鍵的控制,計算公式:N*(N-1/2。利用此種方法可滿足該畢業設計的要求。2.2、軟件實現的方案論證要產生所需的音頻信號,從軟件上考慮大體有兩種實現的方案,第一種是根據音符的頻率計算出其簡碼值(后有計算方法,然后通過查表的方式將值賦給定時器,當計滿時將I/O口反相。第二種是直接根據音符的頻率計算出其周期T,在計數器計滿T/2時將I/O口反相。兩種方案對比,第一種相對較為精確,本課程設計采用的是第二種方案,因為其更加簡單易懂。下面以獨立式按鍵的形式分別兩種方案的實現。(1

13、計算簡碼值,查表方式ORG 0000HLJMP MAINORG 000BHLJMP BREAKMAIN: MOV TMOD,#01H ;設置定時器0的工作方式SETB EASETB ET0 ; 設置定時器0中斷SETB TR0 ; 啟動定時器0WAIT1: LCALL KEY ; 調用KEY子程序,判斷有鍵按下否?第幾個鍵?CLR EA ;屏蔽中斷CJNE R3,#00H,WAIT1 ;如果R3=0,表示有鍵按下MOV A,22H ;將22H里存放的按鍵號送給ARL A ; 因為查表里都是字,所以得乘2查得數據MOV DPTR,#TABLE ;指向表頭MOVC A,A+DPTR ; 查表MOV

14、 TH0,A ;將數據高位送TH0MOV 21H,A ; 將高位備份MOV A,22H ;將22H里存放的按鍵號送給ARL A ;因為查表里都是字,所以得乘2查得數據INC A ;取低位數據MOVC A,A+DPTRMOV TL0,AMOV 20H,AWAIT2: LCALL KEYSETB EACJNE R3,#00H,WAIT1JMP WAIT2KEY: MOV R3,#00H ; KEY子程序,判斷有鍵按下否?第幾個鍵?MOV R1,#0FFHMOV R0,#00HMOV A,R1MOV P2,AMOV A,P2CLR CCPL C ;利用標志位CY來判斷是哪個按下 MOV R2,#08

15、HWAIT3: RLC A ;移位判斷JNC STOREINC R0DJNZ R2,WAIT3STORE: MOV 22H,R0 ; 將按鍵號存22H,R3=0有鍵按下 MOV R3,#00HRETBREAK: PUSH ACC ; 中斷產生方波,從P1.0口輸出 PUSH PSWMOV TL0,20HMOV TH0,21HPOP PSWPOP ACCRETITABLE: DW 65030,64968,64898,64820,64777,64684,64580 ;END(2直接計算周期ORG 0000HSJMP STARTORG 000BHAJMP INT_0ORG 0030HSTART: M

16、OV P1,#00HSETB EASETB ET0 ;計數器0MOV TMOD,#02HMOV TH1,#09CHMOV TL1,#09CH ;定時器初植CLR TR0 ;定時器不允許SCAN: ;鍵盤掃描MOV A,P2 ;判斷鍵盤按下,跳SCAN_1,未按,繼續掃描CJNE A,#0FFH,SCAN_1NOPSJMP SCANSCAN_1:ACALL DELAY ;是不是真的要按下?MOV A,P2 如果是,則跳轉SU_KEY查詢是哪個按下?CJNE A,#0FFH,SU_KEYNOPSJMP SCANSU_KEY:JNB P2.1,MU_1 ;判斷是哪個鍵按下?JNB P2.2,MU_2

17、JNB P2.3,MU_3JNB P2.4,MU_4JNB P2.5,MU_5JNB P2.6,MU_6JNB P2.7,MU_7SJMP SCANMU_1: MOV R1,#19 ;如果第一個按鍵按下,則R1=19, SJMP NEXT 同時程序轉NEXTMU_2: MOV R1,#17SJMP NEXTMU_3: MOV R1,#15SJMP NEXTMU_4: MOV R1,#14SJMP NEXTMU_5: MOV R1,#13SJMP NEXTMU_6: MOV R1,#11SJMP NEXTMU_7: MOV R1,#10SJMP NEXTNEXT: MOV A,R1MOV R0,

18、ASETB TR0 ;啟動定時器0NEXT_1:MOV A,P2 ; 沒鍵按下繼續執行,有鍵按下,返回讀引腳 CJNE A,#0FFH,NEXT_1ACALL DELAYMOV A,P2 ;真的沒鍵按下?CJNE A,#0FFH,NEXT_1CLR TR0 ;不響AJMP SCAN ;掃描鍵盤去INT_0: ;中斷程序DJNZ R0,RE ;R0不等于0時,返回MOV A,R1MOV R0,ARE: RETIDELAY: MOV R7,#100 ;延長時間等待,鍵盤消抖D1: MOV R6,#10D2: DJNZ R6,D2DJNZ R7,D1RETEND三、主要元器件的介紹3.1、AT89S

19、51 高性能8位單片機為了更好地理解AT89S51的特性,首先介紹我們常接觸的8051。AT89S51 為ATMEL 所生產的可電氣燒錄清洗的 8051 相容單芯片,其內部程序代碼容量為4KB。8051主要功能列舉如下:為一般控制應用的 8 位單芯片晶片內部具時鐘振蕩器(傳統最高工作頻率可至 12MHz內部程式存儲器(ROM為 4KB內部數據存儲器(RAM為 128B外部程序存儲器可擴充至 64KB外部數據存儲器可擴充至 64KB 32 條雙向輸入輸出線,且每條均可以單獨做 I/O 的控制 5 個中斷向量源 2 組獨立的 16 位定時器 1 個全多工串行通信端口 8751 及 8752 單芯片

20、具有數據保密的功能單芯片提供位邏輯運算指令VCC 8051 電源正端輸入,接+5V。VSS 電源地端。XTAL1 單芯片系統時鐘的反相放大器輸入端。XTAL2系統時鐘的反相放大器輸出端,一般在設計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統就可以動作了,此外可以在兩引腳與地之間加入一20PF 的小電容,可以使系統更穩定,避免噪聲干擾而死機。RESET8051的重置引腳,高電平動作,當要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,8051便能完成系統重置的各項動作,使得內部特殊功能寄存器之內容均被設成已知狀態,并且至地址0000H處開始讀入程序代碼

21、而執行程序。EA/Vpp"EA"為英文"External Access"的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當此引腳接低電平后,系統會取用外部的程序代碼(存于外部EPROM中來執行程序。因此在8031及8032中,EA引腳必須接低電平,因為其內部無程序存儲器空間。如果是使用 8751 內部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至8751內部EPROM時,可以利用此引腳來輸入21V的燒錄高壓(Vpp。ALE/PROGALE是英文"Address Latch Enable"的縮寫,表示地址鎖存器啟用信號。

22、8051可以利用這支引腳來觸發外部的8位鎖存器(如74LS373,將端口0的地址總線(A0A7鎖進鎖存器中,因為8051是以多工的方式送出地址及數據。平時在程序執行時ALE引腳的輸出頻率約是系統工作頻率的1/6,因此可以用來驅動其他周邊晶片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當成程序規劃的特殊功能來使用。PSEN此為"Program Store Enable"的縮寫,其意為程序儲存啟用,當8051被設成為讀取外部程序代碼工作模式時(EA=0,會送出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。8051可以利用PSEN及RD引腳分別啟用存在外部的

23、RAM與EPROM,使得數據存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。端口0是一個8位寬的開路汲極(Open Drain雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O端口(P1、P2、P3則不具有此電路組態,而是內部有一提升電路,P0在當做I/O用時可以推動8個LS的TTL負載。如果當EA引腳為低電平時(即取用外部程序代碼或數據存儲器,P0就以多工方式提供地址總線(A0A7及數據總線(D0D7。設計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0A7,再配合端口2所送出的A8A15合成一完整的16位地址總線,而定址到64K的外部存儲器空

24、間。端口2是具有內部提升電路的雙向I/O端口,每一個引腳可以推動4個LS 的TTL負載,若將端口2的輸出設為高電平時,此端口便能當成輸入端口來使用。P2除了當做一般I/O端口使用外,若是在8051擴充外接程序存儲器或數據存儲器時,也提供地址總線的高字節A8A15,這個時候P2便不能當做I/O 來使用了。端口1也是具有內部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個LS TTL負載,同樣地若將端口1的輸出設為高電平,便是由此端口來輸入數據。如果是使用8052或是8032的話,P1.0又當做定時器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可以做外部中斷輸入的觸發腳位。端口3也具有內部

25、提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數控制及外部數據存儲器內容的讀取或寫入控制等功能。其引腳分配如下:P3.0:RXD,串行通信輸入。P3.1:TXD,串行通信輸出。P3.2:INT0,外部中斷0輸入。P3.3:INT1,外部中斷1輸入。P3.4:T0,計時計數器0輸入。P3.5:T1,計時計數器1輸入。P3.6:WR:外部數據存儲器的寫入信號。P3.7:RD,外部數據存儲器的讀取信號。(1累加器A(Accumulator寫程序時大部分的指令運算都通過此寄存器,包括數據轉移、儲存運算結果和條件轉移判斷

26、。(2B寄存器此寄存器主要用于乘法及除法指令中,在乘法運算中存放乘積結果的高字節數據;在除法運算中則存放余數。當然也可以做一般寄存器來使用。(3程序狀態字PSW(Program Status Word此寄存器用來存放CPU的狀態,類似一般CPU的標志寄存器,使用者可以改變其值來控制CPU的執行。(4堆疊指針SP為8位的寄存器,用以指示目前堆疊區的存放位置,堆疊區最多只有256,而且一定在內部RAM中,當8051系統重置后SP指向07H,因此程序一執行時通常會將堆疊往后移,避免程序執行時把堆疊破壞掉。(5數據指針DPTR(Data PointerDPTR是一個16位寄存器,由DPH及DPL兩寄存

27、器組成,系統DPTR可以看成是16位寄存器尋址到完整的64K存儲器空間或是看成兩個8位寄存器來加以利用。一旦當成16位寄存器便可利用指令MOVX A, DPTR來存取外部數據存儲器,或利用指令MOVC A, DPTR來存取外部程序存儲器。(6P0、P1、P2、P3(端口0端口3為8051 4個I/O端口的輸出鎖存寄存器。(7TH0、TL0、TH1、TL1定時/計數寄存器分別為定時器0及定時器1的工作寄存器,這二對寄存器可以做16位的計時計數用。(8串行端口緩沖器SBUF(Serial Buffer用來存放串行傳輸時數據進出的工作寄存器,經由串行端口傳送數據出去是將數據寫入SBUF,而接收時則由

28、SBUF內讀出對方傳送來的數據。(9控制寄存器IP、IE寄存器是做8051的中斷控制用;TMOD、TCON寄存器用來做計時計數器控制;SCON則控制串行傳輸的工作模式設定。PCON則做8051省電模式操作控制。8051內部控制寄存器只有6個,想要充分發揮8051單芯片的功能必須對這些暫存器有所了解。IE、IP寄存器:中斷控制用可位尋址,地址:A8HEA(IE.7:EA=0時,所有中斷禁用(中斷不產生。EA=1時,各中斷之產生由個別的啟用位決定。(IE.6:保留。ET2(IE.5:啟用定時器 2 溢位之中斷(8052使用。ES(IE.4:啟用串行端口之中斷(ES=1啟用,ES=0禁用。ET1(I

29、E.3:啟用定時器1中斷。EX1(IE.2:啟用外部中斷INT1之中斷。ET0(IE.1:啟用定時器0中斷。EX0(IE.0:啟用外部中斷INT0之中斷。TMOD、TCON寄存器:計時計數器用不可位尋址,地址89H。TMOD D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0定時器1 定時器0 GATE :定時器動作開關控制位,當GATE=1 時,INT0或INT1 引腳為高電平,同時TCON中的 TR0 或 TR1 控制位為1時,計時/計數器 0 或 1 才會動作。若GATE=0,則只要將TR0或TR1控制位設為1,計時/計數器0或1即

30、可動作。C/T :做定時器或計數器功能之選擇位。C/T=1為計數器,由外部引腳 T0 或 T1 輸入計數脈沖。C/T=0時為定時器,由內部系統時鐘提供計時工作脈沖。M1:模式選擇位1。M0:模式選擇位0。可位尋址,地址88H。TF1(TCON.7:定時器1溢位標志,當計時溢位時,由硬件設定為1,在執行過相對的中斷服務常式后則自動清除為0。TR1(TCON.6:定時器1啟動控制位,可以由軟件來設定或清除。TR1=1時啟動定時器動作,TR1=0時關閉。TF0(TCON.5:定時器0溢位標志,當計時溢位時,由硬件設定為1,在執行過相對的中斷服務常式后則自動清除為0。TR0(TCON.4:定時器0啟動

31、控制位,可以由軟件來設定或清除。TR0=1時,啟動定時器動作,TR0=0時關閉。IE1(TCON.3:外部中斷1動作標志,當外部中斷被偵測出來時,硬件自動設定此位,在執行過中斷服務常式后,則消除為0。IT1(TCON.2:外部中斷1動作型式選擇,IT1=1時,由下降緣產生外部中斷,IT1=0時,則為低電平產生中斷。IE0(TCON.1:外部中斷0動作標志,當外部中斷被偵測出來時,硬件自動設定此位,在執行過中斷服務常式后,則清除為0。IT0(TCON.0:外部中斷0動作型式選擇,IT0=1時為下降緣產生外部中斷,IT0=0 時則為低電平產生中斷。SCON寄存器:串行傳輸控制。PCON寄存器:省電

32、模式操作。MCS-51 的尋址方式:1 、立即尋址如:MOV A ,#40H (直接把數據40H給A2 、直接尋址如:MOV A , 3AH (將3A里的內容給A3 、寄存器尋址如:MOV A , Rn (Rn單元值給A4 、寄存器間接尋址如:MOV A , Rn (將Rn單元里的內容給A5 、基址加變址尋址如:MOVC A , A+DPTR(A+DPTR的內容給A6 、相對尋址如:SJMP 08H (跳到08H單元7 、位尋址如:MOV 20H ,C (位操作下面介紹AT89S51的主要特性 AT89S51元件引腳圖主要性能參數(英語資料見附錄一:兼容MCS-51指令系統4k可反復擦寫(&g

33、t;1000次ISP Flash ROM32個雙向I/O口3個16位可編程定時/計數器時鐘頻率0-33MHz全雙工UART串行中斷口線256x8bit內部RAM2個外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級加密位看門狗(WDT電路軟件設置空閑和省電功能靈活的ISP字節和分頁編程雙數據寄存器指針4K字節FLASH存貯器支持在系統編程ISP主要功能特性:AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容

34、標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案。AT89S51具有如下特點:40個引腳,兼容MCS51微控制器,4K字節FLASH 存貯器支持在系統編程ISP ,1000次擦寫周期,128字節片內RAM,工作電壓4.0V 到5.5V,全靜態時鐘0 Hz 到33 MHz,三級程序加密,32個可編程IO口,2/3個16位定時/計數器,6/8個中斷源,全雙工UART,低功耗支持Idle和Power-down 模式, Power_down模式支持中斷喚醒,看門

35、狗定時器,雙數據指針,上電復位標志 .此外,AT89S51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式。空閑模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷系統可繼續工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。3.2、1602液晶顯示模塊 圖3.2.1 液晶模塊組成從圖3.2.1中可以看出,液晶模塊有三部分構成:點陣式液晶板、液晶驅動電路HD44100、液晶控制電路HD44780。在液晶板上排列著若干5X 7或5X10點陣的字符顯示位,每個顯示位可顯示

36、1個字符,從規格上分為每行8、16、20、24、32、40位,有一行、兩行及四行三類。HD44100是用低功耗CMOS技術制造的大規模LCD驅動芯片。它既可當行驅動用,也可當列驅動用。HD44780(KS0062是用低功耗CMOS技術制造的大規模點陣LCD控制器(兼帶驅動器,和4Bit/8Bit微處理器相連,它能使點陣LCD顯示大小英文字母、數字和符號。應用HD44780(KS0062,用戶能用少量元件就可組成一個完整點陣LCD 系統。從液晶模塊圖可以看出,液晶控制模塊封裝為統一接口,有8條數據線,三條控線。可與微處理器或微控制器相連,通過送入數據和指令,就可使模塊正常工作,管腳排列與功能如表

37、3.2.1,寄存器選擇如表3.2.2。3.2.2 液晶模塊指令詳解表3.2.3 HD447800指令表 指令名稱 控制信號 控制代碼RS R/W D7 D6 D5 D4 D3 D2 D1 D0 清屏 0 0 0 0 0 0 0 0 0 1 歸home 位 0 0 0 0 0 0 0 0 1 * 輸入方式設置 0 0 0 0 0 0 0 1 I/D S 顯示狀態設置 0 0 0 0 0 0 1 D C B 光標畫面滾動0 00 0 0 1 S/C R/L * *引線 符號 名稱 功能 1 V SS 接地 0V 2 V DD 電路電源 5V ±10% 3 V EE 液晶驅動電壓 見圖2

38、4 RS 寄存器選擇信號H:數據寄存器 L:指令寄存器5 R/W 讀/寫信號 H:讀 L:寫6 E 片選信號下降沿觸發7 | 14DB0 | DB7數據線 數據傳輸RS R/W 操作0 0 指令寄存器(IR 寫入 0 1 忙標志和地址計數器讀入 1 0 數據寄存器(DR 寫入 11數據寄存器讀出工作方式設置0 0 0 0 1 DL N F * * CGRAM地址設置0 0 0 1 A5 A4 A3 A2 A1 A0 DDRAM地址設置0 0 1 A6 A5 A4 A3 A2 A1 A0 讀BF和AC 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 寫數據 1 0 數據讀數

39、據 1 1 數據注:“*”表示任意值,在實際應用時一般認為是“0”。指令詳細解釋如下:清屏(Clear DisPlay格式00 0 0 0 0 0 1 01H該指令完成下列功能:將空碼(20H寫入 DDRAM的全部 80個單元內;將地址指針計數器AC清零,光標或閃爍歸home位;設置輸入方式參數 I/D=1,即地址指針 AC為自動加一輸入方式。歸home位(Return home格式00 0 0 0 0 1 0 02H該指令將地址指針計數器AC清零。執行該指令的效果有;將光標或閃爍位返回到顯示屏的左上第一字符位上,即DDRAM地址00H單元位置。輸入方式設置(Enter Mode Set格式0

40、0 0 0 0 1 I/D S 04H-07H 該指令的功能在于設置了顯示字符的輸入方式。I/D=0 AC為減1計數器,光標左移一個字符位。I/D=1 AC為加 1計數器,光標右移一個字符位。S 表示在寫入字符時,是否允許顯示畫面的滾動。S=0禁止滾動。S=1允許滾動。顯示狀態設置(Display on/off Control格式00 0 0 1 D C B 08H-0FH 該指令控制著畫面,光標及閃爍的開關。D畫面顯示狀態位。當D=1時為開顯示,D=0時為關顯示。注意關顯示僅是畫面不出現,而DDRAM內容不變。這與清屏指令截然不同。C光標顯示狀態位。當C=1時為光標顯示,C=0時為光標消失。

41、B閃爍顯示狀態位。當B=l時為閃爍啟用,B=0時為閃爍禁止。光標或畫面滾動(Cursor Or Insplay Shift格式00 0 1 S/C R/L 0 0該指令有兩個參數位:S/C滾動對象的選擇S/C=l畫面滾動S/C=0光標滾動R/L滾動方向的選擇R/L=l向右滾動R/L=0向左滾動工作方式設置(Function Set格式00 1 DL N F 0 0該指令有三個參數DL,N和F.它們的作用是:DL設置控制器與計算機的接口形式。接口形式體現在數據總線長度上。DL=1設置數據總線為8位長度,即DB7DBO有效。DL=0設置數據總線為4位長度,即DB7DB4有效。在該方式下8位指令代碼

42、和數據將按先高4位后低4位的順序分兩次傳輸。N設置顯示的字符行數。N=0為一行字符行。N=1為兩行字符行。F設置顯示字符的字體。F=0為5×7點陣字符體。F=1為 5 × 10點陣字符體。 CGRAM地址設置(Set CGRAM Address格式0 1 A5 A4 A3 A2 A1 A0 該指令將6位的CGRAM地址寫入地址指針計數器AC內,隨后計算機對數據的操作是對 CGRAM的讀/寫操作。 DDRAM地址設置(Set DDRAM Address格式1A6 A5 A4 A3 A2 A1 A0 該指令將 7位的DDRAM地址寫入地址指針計數器AC內,隨后計算機對數據的操作

43、是對 DDRAM的讀/寫操作。讀“忙”標志和地址指針值(Read Busy Flag and Address格式B F AC6 AC5 AC4 AC3 AC2 AC1 AC0 計算機對指令寄存器通道讀操作(RS=0,R/W=l時,將讀出此格式的“忙”標志BF值和7位地址指針計數器AC的當前值。計算機隨時都可以對HD44780U 讀“忙”操作。3.2.3 顯示位和標準字符庫從液晶模塊顯示原理知道,液晶上顯示的內容對應在DDRAM相應的地址中,顯示位與DDRAM地址的對應關系如表3.2.4所示。表3.2.4 顯示位與DDRAM地址對應關系表顯示位序號 1 2 3 4 5 - 40DDRAM 地址(

44、HEX第一行00 01 02 03 04 - 27 第二行40 41 42 43 44 - 67附錄二為字符庫內容、字符碼和字形的對應關系。例如“A”的字形碼為41 (HEX,“B”的字符碼為42(HEX。3.2.4 間接控制方式接口電路及驅動程序本畢業設計采用的是間接控制方式接口電路。間接控制方式(4位總線是利用HD44780所具有的4位數據總線的功能簡化電路接口的一種接口方式。實用電路如下: 間接控制方式的驅動子程序如下:1、初始化過程(復位過程(1延時15ms(2寫指令38H(不檢測忙信號(3延時5ms(4寫指令38H(不檢測忙信號(5延時5ms(6寫指令38H(不檢測忙信號(7(以后每

45、次寫指令、讀/寫數據操作之前均需檢測忙信號(8寫指令38H:顯示模式設置(9寫指令08H:顯示關閉(10寫指令01H:顯示清屏(11寫指令06H:顯示光標移動設置(12寫指令0CH:顯示開及光標設置2、驅動程序RS EQU P3.3 ; 寄存器選擇信號R/W EQU P3.4 ; 讀/寫選擇信號E EQU P3.5 ; 使能信號(1讀BF和AC值PR0: PUSH ACCMOV P1,#0FFH ; P1置位, 準備讀CLR RS ; RS=0SETB R/W ; R/W=1SETB E ; E=1MOV COM,P1 ; 讀BF和AC6-4值CLR E ; E=0MOV P1,#0FFH ;

46、 P1置位, 準備讀SETB E ; E=1MOV A,P1 ; 讀AC3-0值CLR E ; E=0SWAP A ; 轉換成8位數據ANL A,#0FHANL COM,#0F0HORL A,COMMOV COM,A ; 送入COM 單元POP ACC(2寫指令代碼子程序PR1:PUSH ACCCLR RS ; RS=0SETB R/W ; R/W=1PR11:MOV P1,#0FFH ; P1置位, 準備讀SETB E ; E=1MOV A,P1 ; 讀BF和AC6-4值CLR E ; E=0MOV C,ACC.7 ; BF?進位位CSETB E ; E=1CLR E ; E=0 (讀AC3

47、-0值JC PR11 ; 判別BF=1? 是轉CLR R/W ; R/W=0MOV P1,COM ; 寫入指令代碼高4位SETB E ; E=1CLR E ; E=0MOV A,COM ; 寫入指令代碼低4位SWAP AMOV P1,ASETB E ; E=1CLR E ; E=0POP ACCRET(3寫顯示數據子程序PR2: PUSH ACCCLR RS ; RS=0SETB R/W ; R/W=1PR21:MOV P1,#0FFH ; P1置位, 準備讀SETB E ; E=1MOV A,P1 ; 讀BF和AC6-4值CLR E ; E=0MOV C,ACC.7 ; BF?進位位CSET

48、B E ; E=1CLR E ; E=0 (讀AC3-0值JC PR21 ; 判別BF=1? 是轉SETB RS ; RS=1CLR R/W ; R/W=0MOV P1,DAT ; 寫入數據高4位SETB E ; E=1CLR E ; E=0MOV A,DAT ; 寫入數據低4位SWAP AMOV P1,ASETB E ; E=1CLR E ; E=0POP ACCRET(4讀顯示數據子程序PR3: PUSH ACCCLR RS ; RS=0SETB R/W ; R/W=1PR31:MOV P1,#0FFH ; P1置位, 準備讀SETB E ; E=1MOV A,P1 ; 讀BF和AC6-4

49、值CLR E ; E=0MOV C,ACC.7 ; BF?進位位C SETB E ; E=1CLR E ; E=0 (讀AC3-0值 JC PR31 ; 判別BF=1? 是轉SETB RS ; RS=1SETB R/W ; R/W=1MOV P1,#0FFH ; P1置位, 準備讀SETB E ; E=1MOV COM,P1 ; 讀數據高4位CLR E ; E=0MOV P1,#0FFH ; P1置位, 準備讀SETB E ; E=1MOV A,P1 ; 讀數據低4位CLR E ; E=0SWAP A ; 轉換成8位ANL A,#0FHANL DAT,#0F0HORL A,DATMOV DAT

50、,A ; 數據送入DAT 單元POP ACCRET四、總體設計 所需元件元件名稱個數元件名稱個數元件名稱個數16腳的排線1個10uF的電容1個AT89S51芯片1個40腳的排線插座1套104的瓷片電容1個1602液晶模塊1個4腳的按鈕30個1uF的電容1個小喇叭3個發光二極管1個2k、470的電阻各2個12MHZ的晶振1個4.2 軟件的實現1、產生音樂的原理:(1、要產生音頻脈沖只需要算出某一音頻的周期(1/頻率,然后將此周期除以2,得到半周期的時間。利用定時器計算這半個周期的時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。

51、(2、利用AT89S51的內部定時器使其工作在計數器模式MODE1下,改變計數值TH0及TL0以產生不同頻率的方法。(3、例如頻率為523HZ,其周期T=1/523=1912us,因此只要令計數器在每計數956次時將I/O反相,就可得到中音DO(523HZ。計數脈沖值與頻率的關系公式如下:N=Fi / 2 / Fr N:計數值;Fi:內部計時一次為1us,故其頻率為1MHZ;Fr:要產生的頻率;(4、其計數值的求法如下:T=65536-N=65536-Fi/2/Fr本次電子琴的單片機課程設計制作用到K=65536,F=1000000=Fi=1MHZ,則得到的琴鍵上C調各音頻與計數值T的對照表如

52、下表所示。:音符頻率(HZ簡譜碼(T值音符頻率(HZ簡譜碼(T值中1 DO 523 64580 高2 RE 1175 65110中2 RE 587 64684 高3 M 1318 65157中3 M 659 64777 高4 FA 1397 65178中4 FA 698 64820 低3 M 330 64021中5 SO 784 64898 低4 FA 349 64103中6 LA 880 64968 低5 SO 392 64260中7 SI 988 65030 低6 LA 440 64400高1 DO 1046 65058 低7 SI 494 64524 本畢業設計采用的是直接計算各音符所對

53、應的周期,并賦值給計數器,當計數滿是則將輸出脈沖反相,即可產生所需的音頻脈沖,其對應的周期值如下表所示:音符頻率(HZ周期(T值音符頻率(HZ周期(T值中1 DO 523 1912 高5 SO 1568 638中2 RE 587 1703 高6 LA 1760 568中3 MI 659 1517 高7 SI 1967 507中4 FA 698 1433 低1 DO 262 3816中5 SO 784 1337 低2 RE 294 3401中6 LA 880 1136 低3 MI 330 3030中7 SI 988 1012 低4 FA 349 2865高1 DO 1046 956 低5 SO 392 2551高2 RE 1175 851 低6 LA 440 2272高3 MI 1318 758 低7 SI 494 2024高4 FA 1397 715例如,頻率為523HZ,其周期T=1/523=1912us,因此,只要令計數器計時956us/1us=956,在每次計數956次時將I/O反相,就可得到中音DO(523HZ。2、流程圖 3、 本次電子琴的單片機課程設計制作用到的匯編語言程序如下: ORG 0000H JMP START ORG 000BH LJM

溫馨提示

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

評論

0/150

提交評論