單片機課程設計(論文)電子音樂盒的單片機設計_第1頁
單片機課程設計(論文)電子音樂盒的單片機設計_第2頁
單片機課程設計(論文)電子音樂盒的單片機設計_第3頁
單片機課程設計(論文)電子音樂盒的單片機設計_第4頁
單片機課程設計(論文)電子音樂盒的單片機設計_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設計論文單片機課程設計論文題 目 fsy電子音樂盒的單片機設計 學 院 通信與電子工程學院 專業(yè)班級 電子083 學生姓名 指導教師 王發(fā)智 2011年12月11日33摘 要為了實現(xiàn)單片機控制音樂播放,此次畢業(yè)設計做出了嘗試,即電子音樂盒的設計。本設計采用了蜂鳴器發(fā)聲來實現(xiàn)歌曲的播放,能保持基本音調(diào)不變,流暢播放出歌曲?,F(xiàn)選用at89s51單片機。主要設計模塊包括數(shù)碼管顯示部分,功能鍵盤部分,蜂鳴器發(fā)聲部分,彩燈部分。數(shù)碼管采用共陽極數(shù)碼管,通過單片機p1口控制,實現(xiàn)歌曲序號的顯示;功能鍵盤采用按鍵開關,通過單片機p3口控制,實現(xiàn)歌曲播放順序的調(diào)換和暫停播放功能;蜂鳴器由單片機的p2

2、口控制,實現(xiàn)歌曲播放;彩燈是由普通發(fā)光二極管代替,能實現(xiàn)單色長亮和閃爍效果。主要工作過程是通過按下功能鍵實現(xiàn)上一首和下一首及暫停播放,同時有數(shù)碼管顯示當前播放歌曲的序號,蜂鳴器播放出音樂,當播放最后一首夜曲時還伴有彩燈閃爍。 此次設計要利用單片機及keilc51編程軟件編程和proteus單片機仿真軟件和電子電工等方面知識,用keilc51編程軟件編程,用proteus單片機仿真軟件仿真。最后制作實物,將程序下載到單片機中,利用i/o口產(chǎn)生一定頻率的方波,驅動蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲。關鍵詞:at89s51單片機 方波 音調(diào)abstractin order to achieve s

3、ingle-chip control music playback,the design made an attempt to,that the design of electronic music box,this design uses a buzzer sound to achieve the song playing, can maintain the same basic tone, smooth playback of songs. at89s51 microcontroller is used. major design modules include digital displ

4、ay part, function keyboard parts, some of the buzzer sound, lights parts. using common anode led digital tube, through the p1 port control chip to realize the song number display; function keyboard with key switch, controlled by microcontroller port p3, playing songs in order to achieve the exchange

5、 and pause functions; buzzer by the microcontroller p2 port control, to achieve the song playing; lights are replaced by the ordinary light-emitting diodes, to achieve long light and color flashing effect. main work process is achieved by pressing the function key and the next one on the head, and a

6、 pause, while a digital display serial number of the currently playing song, buzzer playing the music, when played with the last one nocturne shihai lights to take advantage of the chip design and software programming and programming keilc51 proteus microcontroller simulation software such as electr

7、ical and electronics knowledge, with keilc51 programming software programming, microcontroller simulation software with the proteus simulation. finally, the physical production, the program to the microcontroller, the use of i / o ports have a certain frequency square wave to drive the buzzer, to is

8、sue a different tone to play music.keywords:at89s51 microcontroller square wave tone目 錄摘 要iabstractii第1章 緒論11.1 概述1第2章 音樂盒總體設計22.1 設計功能要求22.2 總體設計原理22.3 總體設計框圖3第3章 芯片的選擇和介紹43.1 mcs-51系列單片機簡介43.2 單片機的選擇43.2.1 at89s51芯片介紹5第4章 系統(tǒng)的硬件設計84.1 電源電路84.2 單片機最小系統(tǒng)84.3 數(shù)碼管顯示部分94.4 鍵盤部分34.4.1 按鍵開關34.4.2 輕觸開關34.5

9、蜂鳴器部分3第5章 系統(tǒng)軟件設計135.1 軟件系統(tǒng)介紹135.2 編程語言的選擇135.3 應用軟件的選擇keilc51135.4 系統(tǒng)程序設計145.4.1 主程序流程圖145.4.2 主程序155.4.3 定時器定時18 第6章 系統(tǒng)仿真及硬件制作216.1 仿真的必要性216.2 系統(tǒng)仿真過程216.2.1 原理圖的繪制216.2.2 程序的調(diào)入22結論23參考文獻24附錄125附錄232致謝33第1章 緒論1.1 概述語音樂盒的起源,可追溯至中世紀歐洲文藝復興時期。當時為使教會的的鐘塔報時,而將大小的鐘表上機械裝置,被稱為“可發(fā)出聲音的組鐘”。音樂盒悠揚的樂聲,經(jīng)常勾起人們對美好往事

10、的回憶,甚至魂牽夢縈,墜入時光歲月的追憶中。300多年來席卷全球市場的機械音樂盒的最大魅力,也許就在于它能將抽象的音樂,凝固成具象的藝術品。成為人們表達美好情感,追思逝去歲月的最佳選擇吧!機械音樂盒的發(fā)展史,可追溯至14世紀初期,所發(fā)明掛在教堂鐘樓上的排鐘,這種用發(fā)條裝置來演奏的樂器,能發(fā)出清脆如水晶般的樂聲,一度風靡荷蘭,比利時和法國北部。1811年以來,瑞士曾經(jīng)是這項技藝的中心,它和瑞士鐘表工業(yè)一樣,兩者相輔相成,一段時間名領風騷,稱霸全球。音樂盒300多年的產(chǎn)品發(fā)展,同時也是人類文明300多年發(fā) 展的歷史鑒證。每個不同時期的音樂盒造型,都能折射出當時不同的社會心態(tài)和文明發(fā)展現(xiàn)狀,它也成了

11、時代的一面鏡子?,F(xiàn)今,音樂盒的制造,延襲傳統(tǒng),結合現(xiàn)代,正日益成為人們或為了典藏一段歲月,或為了收藏一份情感,或出于對音樂的追求,或對于舊時代的懷念,或為了居室的美化,等等,而得到眾多品位人士的追求。 音樂盒的分類:18音,30音,這些是代表音樂盒機芯的音數(shù),其實也就是機芯里面,那一排鋼條的數(shù)量,鋼條的數(shù)量越多,也就是音數(shù)越高,奏出來的音色就越豐富,曲子也就是越好聽,同時曲子的播放時間也相應長一點。一般18音的曲子為25秒左右,30音的曲子為35秒左右。50音的差不多有60秒。目前來說,一般市面上賣的“愛麗絲”都是18音的,其次是30音,50音。此次設計的目的就是運用單片機來設計一套控制系統(tǒng),

12、來完成音樂播放的控制,并設計一套硬件來進行音調(diào)播放的實際模擬,從而有欣賞音樂的效果。第2章 音樂盒總體設計2.1 設計功能要求1.利用i/o口產(chǎn)生一定頻率的方波,驅動蜂鳴器,發(fā)出不同的音調(diào),從而演樂曲。2.采用七段數(shù)碼管顯示當前播放的歌曲序號。3. 可通過功能鍵選擇樂曲,暫停,播放,上一曲,下一曲。2.2 總體設計原理通過單片機的定時器產(chǎn)生一定長度的方波,方波脈沖驅動蜂鳴器發(fā)聲。要產(chǎn)生音頻脈沖,只需算出某一音頻的周期(1/音頻),然后取半周期的時間定時。利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的i/o反相,然后重復計時此半周期時間再對i/o口反相,就可在i/o腳上得到此頻率的脈沖

13、。如中音d0,頻率為523hz,其周期t=1/523=1912微秒,因此只要令計數(shù)器定時1912/2=956,在每計數(shù)956次時將i/o口反相,就可得到中音d0(523hz)。 當鍵盤有鍵按下時,判斷鍵值,啟動計數(shù)器t0,產(chǎn)生一定頻率的脈沖,驅動蜂鳴器,放出樂曲。同時啟動定時器t1,在led顯示歌曲號,也可使彩燈長亮和閃爍。數(shù)碼管采用共陽極數(shù)碼管,通過單片機p1口控制,實現(xiàn)歌曲序號的顯示;功能鍵盤采用按鍵開關,通過單片機p3口控制,實現(xiàn)歌曲播放順序的調(diào)換和暫停播放功能;蜂鳴器由單片機的p2口控制,實現(xiàn)歌曲播放;彩燈是由普通發(fā)光二極管代替,能實現(xiàn)單色長亮和閃爍效果。通過按下功能鍵實現(xiàn)上一首和下一

14、首及暫停播放,同時有數(shù)碼管顯示當前播放歌曲的序號,蜂鳴器播放出音樂,當播放最后一首夜曲時還伴有彩燈閃爍。 2.3 總體設計框圖單片機接+5v電源供電,晶振電路產(chǎn)生單片機所需時鐘信號,通過功能鍵產(chǎn)生外部中斷,控制音樂盒的上一首和下一首曲目,再由i/o接口輸出控制蜂鳴器發(fā)聲,led顯示,彩燈亮或閃爍。另外,復位電路在于營造一個程序運行的初始狀態(tài),在程序出錯時,重新啟動單片機工作。 電源晶振部分復位電路at89s51蜂鳴器led顯示功能鍵 電源晶振部分復位電路at89s51蜂鳴器led顯示功能鍵 圖2.3 總體設計框圖編程設置好定時時間,通過編程器寫入at89s51單片機系統(tǒng)。由at89s51單片機

15、的定時器每秒鐘通過p1.0-p1.7口控制led數(shù)碼顯示,復位信號由按鈕輸入,每按下一次,系統(tǒng)恢復原設定狀態(tài)。電源,晶振部分,復位電路,單片機,led,功能鍵,蜂鳴器部分后面均有詳細介紹。第3章 芯片的選擇和介紹3.1 mcs-51系列單片機簡介單片機系統(tǒng)是本監(jiān)控系統(tǒng)的核心部分,數(shù)據(jù)的處理以及對試驗設備的控制都由其來完成。單片微型計算機(single-chip microcomputer)簡稱單片機。它是在一塊芯片內(nèi)集成了計算機的組成單元,包括中央處理cpu(central processing unit)、隨機存儲器ram(random access memory)、只讀存儲器rom(rea

16、d only memory)、定時器/計數(shù)器以及i/o(input/output)等主要的計算機部件。雖然單片機只是一個芯片,但它具有微機系統(tǒng)的組成和功能特征,可謂麻雀雖小五臟俱全。單片機經(jīng)歷了4位單片機、8位低檔單片機、8位高檔單片機、16位單片機等各個階段,現(xiàn)在正向高性能、高速度、高集成度、大容量多功能、低功耗、加強i/0能力及結構兼容的32位和雙cpu方向發(fā)展。從mcs-48單片機發(fā)展到如今的新一代單片機,大致經(jīng)歷了三代。如以intel位單片機為例,這三代的劃分大致如下:一代以mcs-48系列單片機為代表。其主要的技術特征是將cpu和計算機外圍電路集成到了一個芯片上,在與通用cpu分道揚

17、鑣、構成新型工業(yè)微控制器方面取得了成功,為單片機的進一步發(fā)展開辟了成功之路。第二代以mcs-51系列的8051、8052單片機為代表。mcs-51系列8位高檔單片機是在總結mcs-48系列單片機的基礎上,于80年代初推出的新產(chǎn)品。第三代是intel隨后推出的mcs-96系列單片機。與mcs-51相比,mcs-96不但字長增加一倍,而且在其他性能方面也有很大的提高,特別是芯片內(nèi)還增加了一個4路或8路的a/d轉換器,使其具有a/d轉換功能。在這所有的系列中mcs-51系列以它較高的性能和較合理的價格仍占據(jù)著很大的市場地位。3.2 單片機的選擇單片機型號的選擇是根據(jù)控制系統(tǒng)的目標、功能、可靠性、性價

18、比、精度和速度等來決定的。根據(jù)本課題的實際情況,單片機型號的選擇主要從以下兩點考慮;一是要有較強的抗干擾能力。二是要有較高的性價比。由于51系列在我國使用最廣,且該系列的資料和能夠兼容的外圍芯片也比較多,特別是atmel公司2003年推出新一代89s系列單片機,其典型產(chǎn)品at89s51單片機,與89c系列單片機相比具有較高的性能價格比。故本系統(tǒng)采用atmel公司生產(chǎn)的at89s51單片機作為交通燈的核心部件,該單片機是美國atmel公司生產(chǎn)的低電壓、高性能coms8位單片機,片內(nèi)含4kb的可反復擦寫的只讀程序存儲器(eprom)和128字節(jié)的隨機存取數(shù)據(jù)存儲器(ram),片內(nèi)置通用8位中央處理

19、器(cpu)和flash存儲單元,是80c51的增強型并且指令完全兼容,at89s51新增加的功能由特殊功能寄存器完成,相信日后它將更廣泛地應用于工業(yè)控制、汽車控制、智能儀器儀表及電機控制等應用領域。3.2.1 mcs-51系列單片機簡介 圖 3.1 at89s51芯片 圖3.2 管腳排列圖它有40個管腳,分成兩排,每一排各有20個腳,其中左下角標有箭頭的為第1腳,然后按逆時針方向依次為第2腳、第3腳第40腳,如圖3.2所示at89s51是一個低功耗,高性能cmos 8位單片機,片內(nèi)含4k bytes isp(in-system programmable)的可反復擦寫1000次的flash只讀

20、程序存儲器,器件采用atmel公司的高密度、非易失性存儲技術制造,兼容標準mcs-51指令系統(tǒng)及80c51引腳結構,芯片內(nèi)集成了通用8位中央處理器和isp flash存儲單元,功能強大的微型計算機的at89s51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。at89s51具有如下特點:40個引腳,4k bytes flash片內(nèi)程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(i/o)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(wdt)電路,片內(nèi)時鐘振蕩器。 管腳說明:vcc:供電電壓gnd:接地 p0

21、口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當fiash進行校驗時,p0輸出原碼,此時p0外部必須被拉高。p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2

22、口緩沖器可接收,輸出4個ttl門電流,當p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗時接收高八位地址信號和控制信號。p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為

23、低電平,p3口將輸出電流(ill)這是由于上拉的緣故。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(外部數(shù)據(jù)存儲器寫選通)p3.7 /rd(外部數(shù)據(jù)存儲器讀選通)p3口同時為閃爍編程和編程校驗接收一些控制信號。i/o口作為輸入口時有兩種工作方式即所謂的讀端口與讀引腳讀端口時實際上并不從外部讀入數(shù)據(jù)而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線經(jīng)過某種運算或變換后再寫回到端口鎖存器只有讀端口時才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線上面圖中的兩個

24、三角形表示的就是輸入緩沖器cpu將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號以完成不同的操作這是由硬件自動完成的不需要我們操心1然后再實行讀引腳操作否則就可能讀入出錯為什么看上面的圖如果不對端口置1端口鎖存器原來的狀態(tài)有可能為0q端為0q為1加到場效應管柵極的信號為1該場效應管就導通對地呈現(xiàn)低阻抗,此時即使引腳上輸入的信號為1也會因端口的低阻抗而使信號變低使得外加的1信號讀入后不一定是1若先執(zhí)行置1操作則可以使場效應管截止引腳信號直接加到三態(tài)緩沖器中實現(xiàn)正確的讀入由于在輸入操作時還必須附加一個準備動作所以這類i/o口被稱為準雙向口89c51的p0/p1/p2/p3口作為輸入時都是準雙向口接下來讓

25、我們再看另一個問題從圖中可以看出這四個端口還有一個差別除了p1口外p0p2p3口都還有其他的功能 rst:復位輸入。當振蕩器復位器件時,要保持rst腳兩個機器周期的高電平時間。ale/prog:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用

26、。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。ea/vpp:當/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為reset;當/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出?;赼

27、t89s51的各種特性,選用此型號比較合適。第4章 系統(tǒng)的硬件設計4.1 電源電路采用經(jīng)市電變壓,穩(wěn)壓的穩(wěn)壓電源電路圖如圖4.1所示 圖4.1 電源電路單片機使用的是5(0.2)v的電源,對電壓的穩(wěn)定要求較高,我們可以用lm7805來實現(xiàn)此功能。首先,用交流變壓器將220v電壓變?yōu)榇笥?v的交流電,比如7.5v或10.5v,然后用橋式整流器,和電容進行整流濾波,將交流電處理為直流。然后用7805進行5v恒壓輸出,共給單片機電路使用。4.2 單片機最小系統(tǒng) 圖4.2 單片機最小系統(tǒng)單片機最小系統(tǒng)以89s51為核心,外加時鐘和復位電路,電路結構簡單,抗干擾能力強,成本相對較低,非常符合本設計的所有

28、要求.89s51單片機系列是在mcs-51系列的基礎上發(fā)展起來的,是當前8位單片機的典型代表,采用chmos工藝,即互補金屬氧化物的hmos工藝, chmos是cmos和hmos的結合,具有hmos高速度和高密度的特點,還具有cmos低功耗的特點.單片機需要一個時間基準來為各種操作提供秩序,此電路叫時鐘電路,采用不同的接線方式可以獲得不同時鐘電路,有內(nèi)部時鐘電路和外部時鐘電路,如圖4.3所示,外部時鐘電路會使電路復雜,故采用的是內(nèi)部時鐘電路。時鐘電路在單片機的外部通過xtal1,xtal2這兩個引腳跨接晶體振蕩器和微調(diào)電容,構成穩(wěn)定的自激振蕩器.本系統(tǒng)采用的為6mhz的晶振,一個機器周期為2u

29、s,c1,c2為22pf。圖4.3 時鐘電路圖 圖4.4 復位電路圖復位電路的基本功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。復位電路分為上電自動復位和按鍵手動復位,如圖4.4所示。rst引腳是復位信號的輸入端,復位信號是高電平有效.這次采用的是手動復位,復位通過電容c3,c4和電阻r1,r2來實現(xiàn),按鍵手動復位是圖中復位鍵來實現(xiàn)的。4.3 數(shù)碼管顯示部分歌曲序號顯示部分用數(shù)碼管來顯示,led顯示器件是通過發(fā)光二極管顯示字段的器件。在單片機控制系統(tǒng)中常用的是由7段

30、led數(shù)碼管,它的顯示塊中有8個發(fā)光二極管,7個發(fā)光二極管組成字符“8”,1個發(fā)光二極管構成小數(shù)點,因此有人稱7段led數(shù)碼管為8段顯示器。led數(shù)碼管的管腳配置如圖4.5所示。led顯示塊,如圖4.8所示。它們經(jīng)過電阻和單片機的控制端口線一一相連,只要改變控制端口的電平就能使其發(fā)光或熄滅。led數(shù)碼管有共陰極和共陽極兩類,如圖4.6所示。共陰極led數(shù)碼管的發(fā)光二極管的陰極共地,如圖4.6(a),當某個發(fā)光二極管的陽極電壓為高電平時,二極管發(fā)光;而共陽極led數(shù)碼管是發(fā)光二極管的陽極共接,如圖4.6(b),當某個二極管的陰極電壓為低電平時,二極管發(fā)光。 (a)共陰極 (b)共陽極圖4.5 l

31、ed數(shù)碼管管腳配置圖 圖4.6 兩類led數(shù)碼管本設計所用的數(shù)碼管為共陽極數(shù)碼管,數(shù)碼管的每段的電流是10毫安。所以公共端接高電平,但在軟件編碼時需要和硬件相對應,p roteus電路圖如4.8所示,實物如圖4.9所示。圖4.7 數(shù)碼管引腳圖 圖4.8 數(shù)碼管仿真圖 圖4.9 數(shù)碼管實物圖4.4 鍵盤部分鍵盤是由一組按壓式或觸摸式開關構成的陣列,是一種常用的輸入設備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。1.編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼,這種鍵盤所需程序簡單,但硬件電路復雜、價格昂貴通常不被單片機系統(tǒng)采用。2.非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴格的對

32、應關系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡單,但是要占用較多的cpu時間,通常采用可編程鍵盤管理芯片來克服這個缺點。本設計使用兩種按鍵,一種是按鍵式非編碼鍵盤和輕觸式非編碼開關。4.4.1 mcs-51系列單片機簡介在接線時由于有六個引腳,連接時需要用萬用表進行測量,然后接通兩個引腳。4.4.2 輕觸開關一種電子開關,使用時輕輕點按開關按鈕就可使開關接通,當松開手時開關既斷開,其內(nèi)部結構是靠金屬彈片受力彈動來實現(xiàn)通斷的。但微動開關也有它不足的地方,頻繁的按動會使金屬彈片疲勞失去彈性而失效,連接時接通對角線即可。4.5 蜂鳴器部分一般所指的蜂鳴器是以壓電陶瓷為主要元件的。壓電陶瓷是一

33、類有將壓力與電流相互轉換能力的特殊陶瓷。這種能力緣于其特殊的晶體結構。當壓電陶瓷在一定方向上受到一個壓力使其晶體結構發(fā)生形變時,它就會在內(nèi)部產(chǎn)生一個電流,并且電流的變化與壓力的變化密切相關。反之亦然。所以利用這一特性,在壓電陶瓷上通過一定頻率的電流,就會引起壓電陶瓷微小形變,這一形變帶動空氣發(fā)生振動,如果頻率適當,就可以被人耳所聽見,也就是產(chǎn)生了蜂鳴聲。 1蜂鳴器的作用:蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。2蜂鳴器的分類:蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。3

34、蜂鳴器的電路圖形符號:蜂鳴器在電路中用字母“h”或“ha”(舊標準用“fm”、“l(fā)b”、“jd”等)表示。(二)蜂鳴器的結構原理1壓電式蜂鳴器 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。多諧振蕩器由晶體管或集成電路構成。當接通電源后(1.515v直流工作電壓),多諧振蕩器起振,輸出1.52.5khz的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。2電磁式蜂鳴器 電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片

35、及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。第5章 系統(tǒng)軟件設計5.1 軟件系統(tǒng)介紹一個系統(tǒng)的正常運行不僅需要硬件系統(tǒng)的支持,而且需要軟件系統(tǒng)的支持。如果把硬件比作軀體,那軟件就是靈魂,硬件系統(tǒng)和軟件系統(tǒng)相互間密切的配合才構建了能夠“思考”和“判斷”的整體系統(tǒng)。借助軟件的可編程性,可以精簡硬件系統(tǒng)的組成;憑借軟件的靈活性,可以不用對硬件系統(tǒng)進行修改而實現(xiàn)系統(tǒng)功能的修改。軟件系統(tǒng)與硬件系統(tǒng)是密切相聯(lián)的,軟件系統(tǒng)建立在硬件系統(tǒng)之上,離開了硬件系統(tǒng),軟件將無法實現(xiàn)任何功能。軟件的設計有一定的針對性,對于不

36、同的硬件系統(tǒng),需要編寫不同的軟件。與硬件系統(tǒng)一樣,軟件系統(tǒng)的好壞,直接影響到系統(tǒng)的工作效率和可靠性。5.2 編程語言的選擇基于單片機的交通燈控制這次采用匯編語言編程,它是一種面對機器的語言,可以直接控制硬件的語言。因為這次還要進行硬件連接,所以可以方便控制各個硬件接口如i/o接口,并且目標代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設計語言。具有保持了機器語言的優(yōu)點,具有直接和簡捷的特點。就是因為匯編語言的這些特點,所以70%以上的系統(tǒng)軟件是用匯編語言編寫的。例如某些快速處理、位處理、訪問硬件設備等高效程序是用匯編語言編寫的。很多高級繪圖程序、視頻游戲程序是用匯編語言編寫的。 所以匯編語言是

37、我們理解整個計算機系統(tǒng)的最佳起點和最有效途徑,通過學習和使用匯編語言,能夠感知、體會、理解機器的邏輯功能,向上為理解各種軟件系統(tǒng)的原理,打下技術理論基礎;向下為掌握硬件系統(tǒng)的原理,打下實踐應用基礎。 單片機燒錄的代碼,用來編程單片機。5.3 應用軟件的選擇keilc51單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)閏pu可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于mcs-51單片機的匯編軟件有早期的a51,隨著單片機開發(fā)技術的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開

38、發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,keil軟件是目前最流行開發(fā)mcs-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持keil即可看出。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uvision)將這些部份組合在一起。運行keil軟件需要pentium或以上的cpu,16mb或更多ram、20m以上空閑的硬盤空間、win98、nt、win2000、winxp等操作系統(tǒng)。掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果你使用c語言編程,那么keil幾乎就是你的不二之選(目前在國內(nèi)你只能買

39、到該軟件、而你買的仿真機也很可能只支持該軟件),即使不使用c語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。keil c51是美國keil software公司出品的51系列兼容單片機c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用c來開發(fā),體會更加深刻。keil c51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到keil c51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在

40、開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。c51工具包的整體結構,其中uvision與ishell分別是c51 for windows和for dos的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用ide本身或其它編輯器編輯c或匯編源文件。然后分別由c51及a51編譯器編譯生成目標文件(.obj)。目標文件可由lib51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)l51連接定位生成絕對目標文件(.abs)。abs文件由oh51轉換成標準的hex文件,以供調(diào)試器dscope51或tscope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標板進行調(diào)試,也可以直接寫

41、入程序存貯器如eprom中。5.4 系統(tǒng)程序設計5.4.1 主程序流程圖開始要定義音頻輸出端口,歌曲總數(shù)以及每首歌曲的入口地址;然后對定時器初始化,確定工作方式,賦初值,開放中斷,啟動定時器工作;對音頻輸出端口初始化;設置音節(jié)起始位置和節(jié)拍間距,把音節(jié)和節(jié)拍的入口地址信息存放在固定存儲單元中;將取出的音符數(shù)+節(jié)拍數(shù)保存在存儲單元中,查詢音樂的節(jié)拍表;當六首歌曲的節(jié)拍表查詢完,音樂播放完畢,程序結束。圖5.1 系統(tǒng)流程圖5.4.2 主程序out bit p2.0 ;定義音頻輸出端口,p2.0n equ 6 ;歌曲總數(shù)out_num equ p1 ;數(shù)碼管顯視當前所放歌曲曲數(shù) org 0000h

42、ajmp main org 0003h ajmp last_song ;外部中斷0用于接上一曲歌按鍵 org 000bh ajmp f_t0 ;定時器0用于定時,作音符發(fā)生器用 org 0013hq4: ajmp next_song ;外部中斷1接下一曲歌按鍵 org 001bh ajmp start_pause ;定時器1用計數(shù),這里用作中斷,接開始/暫停鍵,初值為0ffh,方式2 org 0030hmain: mov sp,#60h mov dptr,#table ;dprt指向每首歌曲的入口地址的地址。 mov r0,#30h ;r0中存入數(shù)據(jù)30h,這里在以30h開始的單元存放每首歌曲

43、的入口地址,其中30h,31h存放 ;歌曲的節(jié)拍入口地址,32h,33h存放歌曲音符入口地址,每首歌占用四個存儲存單元。 mov r5,#00h;r5中存放表table中正在執(zhí)行操作的序號 mov r6,#1 ;r6存放正在設置入口信息的歌曲數(shù)set_tab: mov a,r5 ;設置每首歌曲的入口信息,存放在以30h開始的存儲單元中。 movc a,a+dptr mov r0,a inc r5 inc r0 mov a,r5 movc a,a+dptr mov r0,a inc r5 inc r0 mov a,r5 movc a,a+dptr mov r0,a inc r0 inc r5 m

44、ov a,r5 movc a,a+dptr mov r0,a inc r0 inc r5 inc r6 ;設置完一首歌曲后,歌曲數(shù)加一 cjne r6,#n+1,set_tab ;是否設置完,沒有便繼續(xù),否則進行下面的操作 對中斷,計數(shù)器的相關參數(shù)進行設置 mov tmod, #61h;計數(shù)器0工作方式1,計數(shù)器1工作方式2 mov th1,#0ffh ;給計數(shù)器1置初值0ffh,又由于是工作方式2, mov tl1,#0ffh ;計數(shù)器計數(shù)為1,相當于一外部中斷。 setb et1 ;允許計數(shù)器1中斷 setb et0 ;允許計數(shù)器具0中斷 clr pt0 ;計數(shù)器0為低優(yōu)先級 setb p

45、t1 ;計數(shù)器1為高優(yōu)先級 setb it0 ;外部中斷0為跳沿觸發(fā) setb px0 ;高優(yōu)先級 setb it1 ;外部中斷1為跳沿觸發(fā) setb px1 ;高優(yōu)先級 setb ex1 ;允許外部中斷1中斷 setb ex0 ;允許外部中斷定0中斷 setb ea ;開中斷總開關 setb tr1 ;定時器1開始工作,作中斷用 setb out ;音頻輸出端口初始化 設置結束 clr f0 ;設置f0=0,用來作暫停/播放的標置位用 mov 22h,#01h ;22h單元中存放正在播放的歌曲編號 mov dptr,#out_tab ;將正在播放的歌曲編號送數(shù)碼管顯視 mov a,22h m

46、ovc a,a+dptr mov out_num,a mov r7,#00h ;r7中存放歌曲總信息的入口地址start0:mov r4,#00h ;r4存放當前正在播放歌曲的第幾個節(jié)拍數(shù) mov r0,#30h ;30h開始的單元中存放歌曲的入口信息 mov a,r7 ;將歌曲的節(jié)拍表的入口地址送到dptr add a,r0 mov r0,a mov dph,r0 inc r0 mov dpl,r0 inc r0 mov a,r4 inc r4 movc a,a+dptr ;取出第一節(jié)拍數(shù),其實第一個節(jié)拍不是歌曲的第一個節(jié)拍,而是表示幾分音符 mov 26h,a將取出的音符數(shù)+節(jié)拍數(shù)保存在職

47、26h單元中next: mov r0,#30h ;開始取出歌曲的第一個數(shù)據(jù) mov a,r7 add a,r0 mov r0,a mov dph,r0 inc r0 mov dpl,r0 inc r0 mov a,r4 inc r4 movc a,a+dptr ;放在a中 jz end0 ;若為0,則表示為休止符,不唱,本次音符不唱, mov r1,a ;不為0,取出節(jié)拍數(shù) anl a,#0fh mov r2,a mov a,r1 swap a anl a,#0fh jnz sing ;音符不為0,唱 clr tr0 ;為0,不唱,關頻率發(fā)生器 sjmp sing1sing: dec a ;開

48、始唱,進行相應的數(shù)據(jù)處理 mov r3,a rl a mov dph,r0 inc r0 mov dpl,r0 inc r0 movc a,a+dptr mov 21h,a mov th0,a mov a,r3 rl a inc a movc a,a+dptr mov 20h,a mov tl0,a setb tr0 ;開唱sing1:lcall delay ;每個音符唱多久 jb f0,for ;是否暫停, ajmp next ;沒有暫停,繼續(xù)for: clr tr0 ;暫停,不唱 jb f0,$ ;等待播放 ajmp next ;開始播放end0: clr tr0 ;不唱 mov a,22

49、h ;唱完處理 cjne a,#n,ww ;是不是全部歌曲都唱完 mov 22h,#01h ;全部唱完,則從第一首開始再唱 mov r7,#00h mov out_num,#11111001b ;數(shù)碼管顯視第一首歌曲編號 ajmp wwww: mov a,r7 ;沒有全部唱完,唱下一首,歌曲的入口信息調(diào)整 add a,#4 mov r7,a inc 22h clr ea push dph push dpl mov a,22h mov dptr,#out_tab movc a,a+dptr mov out_num,a ;數(shù)碼管顯視相應的歌曲編號5.4.3 定時器定時51單片機內(nèi)部有兩個16位的可編程的定時/計數(shù)器,稱為定時器0(t0)和定時器1(t1),它們都具有定時功能和事件計數(shù)功能,可用于定時控制、延時、對外部事件檢測和計數(shù)等場合。定時器的核心部件是加1計數(shù)器,通過設置tmod可使定時器工作在定時或計數(shù)方式,即將定時器用于定時或計數(shù)。實際上這兩種工作方式?jīng)]有本質(zhì)的區(qū)別,都是對脈沖信號計數(shù),只是計數(shù)的脈沖來源不同而已。如果計數(shù)脈沖是頻率穩(wěn)定的系統(tǒng)時鐘的分頻信號,則稱為定時方式,如

溫馨提示

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

評論

0/150

提交評論