收張家翌家翌_第1頁
收張家翌家翌_第2頁
收張家翌家翌_第3頁
收張家翌家翌_第4頁
收張家翌家翌_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計()題目單片機(jī)實(shí)驗(yàn)搭建與仿真學(xué)院名稱航空制造專業(yè)名稱機(jī)械設(shè)計制造及其自動化班級學(xué)號11031504學(xué)生張家翌指導(dǎo)教師二 O 一五 年單片機(jī)實(shí)驗(yàn)搭建與仿真學(xué)生:張家翌班級:11031504指導(dǎo)老師:摘要:單片機(jī)是一種采用了超大規(guī)模的集成技術(shù)的電路,上有具有數(shù)據(jù)處理能力的處理器 CPU、隨機(jī)器 RAM、只讀器 ROM、多種 I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能10。在學(xué)習(xí)單片機(jī)時,需要進(jìn)行大量的單片機(jī)實(shí)驗(yàn),在實(shí)驗(yàn)中主要使用的是仿真機(jī)和單片機(jī),這意味著常規(guī)單片機(jī)需要配置大量設(shè)備,導(dǎo)致經(jīng)費(fèi)的投入會相當(dāng)大,部件損耗會相當(dāng)嚴(yán)重,要做到學(xué)習(xí)的人人手配置一部單片機(jī)也不太可能。而且實(shí)驗(yàn)設(shè)備一般局限性

2、都較大,一個型號的實(shí)驗(yàn)板只能進(jìn)行有限的實(shí)驗(yàn)項(xiàng)目,特別完成一些不太方便進(jìn)行的實(shí)驗(yàn)(如步進(jìn)電機(jī)實(shí)驗(yàn)等)時,還存在一定性。為了解決這些問題,便需要用到 Proteus 仿真軟件。Proteus 仿真軟件可以仿真單片機(jī)及其電路組成的系統(tǒng)的仿真,如電源、鎖存器、數(shù)碼管、按鍵、電機(jī)、各類液晶屏等4。這樣便可以節(jié)省很多資源,而且實(shí)驗(yàn)方便,需要進(jìn)行不同的實(shí)驗(yàn)時,只需在 Proteus中調(diào)用不同的,連接好電路,建立好虛擬系統(tǒng),就能進(jìn)行實(shí)驗(yàn)仿真。同時,Proteus 還支持第的軟件編譯和調(diào)試環(huán)境,如 Keil C51 uVi2,通過這些軟件可以進(jìn)行編程程序進(jìn)行單片機(jī)仿真5。使用 Keil 軟件可以很方便的進(jìn)行程序

3、的編程,在編程完成以后,可以通過軟件內(nèi)的功能對程序進(jìn)行檢查和編譯,若程序存在錯誤,通過它能方便快捷的找出錯誤所在。在程序編譯完成以后,在通過 Keil 軟件生成 HEX 文件,進(jìn)入 Proteus 仿真中,便可以通過仿真中設(shè)計好的單片機(jī)及相關(guān)電路進(jìn)行仿真。單片機(jī)虛擬仿真,不僅綠色環(huán)保,還可以達(dá)到節(jié)省資源、學(xué)習(xí)效率的目的。:單片機(jī),虛擬技術(shù),仿真,Proteus,Keil指導(dǎo)老師簽名:Microcontrollers experiment platform buildingand simulationStudent name: Zhang JiayiSupervisor: Wang LixiaC

4、lass:11031504Abstract:Microcontrollers is a kind of very large scaleegration technologyadopted circuit chip, chip has the central prosor CPU, RAM, RAM, read-onlymemory ROM, a variety of I/O mounderrupt system, timer/counter, and otherfunctions. When we learn how to use microcontroller, we will finis

5、he a large numberofputer experiment.In the experiment,we mainly used simulator andputer, it meanst the conventionalputer lab need to configure alarge number of equipment, lead to inpan be considerable funds, and loss of partswill be quite serious.It is imsible to make every studentse microcontroller

6、sof experimentalAndlaboratory equipment general limiions is larger, a mboard only limited experimental projects, spel complete some not so convenient toexperiment (such as stepper motor experiment, etc.), there is a certain risk. In order tosolve these problems, they need to use Proteus simulation s

7、oftware. Proteussimulation software can be comed of single-chipputer and its peripherycircuit simulation system simulation, such aser supply, latch, digital tube, buttons,motors and all kinds of LCD screen, etc. This can save a lot of resour, and theexperiment is convenient, the need for different e

8、xperiments, with only need to call a different chip in the Proteus, connect the peripheral circuit, establish good virtual system, can the experimental simulation. At the same time, Proteus also supportsthird-party software compiling and debugging environment, such as Keil C51uVi2. Through these sof

9、tware can be programmed for single chipputersimulation program.Using Keil software can be very convenient for application programming.when the programming is complete,the software can check and compile program,if a program errors,using it can conveniently find out problem. After thecompletion of the

10、 program compiledwe can use Keil software generated HEX file,and download the HEX fileo the Proteus simulation platform, then we can finishthe simulation platform by using theputer simulation and related peripheralcircuit.Not only green environmental protection,also can achieve the pure ofsavingreso

11、ur,improvethelearningefficiencybyusingMicrocontrollersexperiment platform.Keywords: Microcontrollers ,virtual technology,simulation,Proteus,KeilSignature of the adviser:目錄1引言01.11.21.31.4選題背景以及目的0單片機(jī)和單片機(jī)技術(shù)的發(fā)展0國內(nèi)外發(fā)展綜述0單片機(jī)的發(fā)展趨勢12總體方案的設(shè)計2設(shè)計目標(biāo)2設(shè)計內(nèi)容2實(shí)驗(yàn)電路的設(shè)計、其原理和正確性性驗(yàn)證433.13.23.3電源模塊4單片機(jī)模塊4單個 LED 燈、流水燈53.

12、3.13.3.2模塊設(shè)計及其原理5實(shí)驗(yàn)電路模塊正確性驗(yàn)證63.47 段 LED(數(shù)碼管)73.4.13.4.2模塊設(shè)計及其原理7實(shí)驗(yàn)電路模塊正確性驗(yàn)證83.54X4 矩陣鍵盤93.5.13.5.2模塊設(shè)計及其原理9實(shí)驗(yàn)電路模塊正確性驗(yàn)證113.6數(shù)/模,模/數(shù)轉(zhuǎn)換113.6.1A/D113.6.2D/A141602 液晶顯示屏163.73.7.13.7.2模塊設(shè)計及其原理16實(shí)驗(yàn)電路模塊正確性驗(yàn)證183.8串口通信19模塊原理和設(shè)計19實(shí)驗(yàn)電路模塊正確性驗(yàn)證213.8.13.8.23.9步進(jìn)電機(jī)213.9.13.9.2模塊原理和設(shè)計21模塊正確性驗(yàn)證23總結(jié)24參考文獻(xiàn)25謝2645致1 引言

13、1.1選題背景以及目的單片機(jī)又稱為單片微控制器,它其實(shí)就是一塊集成,但這個擁有一些特殊的功能,還可以理解為它相當(dāng)于一個微型的計算機(jī),但它功能的實(shí)現(xiàn)需要依靠自己編程來實(shí)現(xiàn)。通過程序來控制各個引腳在不同的時間輸出高電平或低電平,進(jìn)而系統(tǒng)。但是由于種類多,電路繁瑣,通過實(shí)驗(yàn)板完成各項(xiàng)實(shí)驗(yàn)需要各式的部件及其他,這樣對實(shí)驗(yàn)來說是比較麻煩的,要更加簡便的,快速的完成實(shí)驗(yàn),這時候便額可以進(jìn)行單片機(jī)的模擬與仿真。通過Proteus 和 Keil 對單片機(jī)進(jìn)行仿真,可以極大的提高單片機(jī)的編程效率和效果,需要任意一個或是部件都可以很方便的從 Proteus 中找出,可以很輕松的完成電路的繪制,省去了許多繁瑣的步驟

14、,使得可以通過單片機(jī)仿真器輸入和修改程序,觀察程序運(yùn)行結(jié)果以及中間狀態(tài),同時還能對單片機(jī)配套的硬件進(jìn)行檢測,并驗(yàn)證正確性6。1.2單片機(jī)和單片機(jī)技術(shù)的發(fā)展單片機(jī)誕生于 20 世紀(jì) 70 年代末,經(jīng)歷了 Microcontrollers、MCU、SoC 三大階段7。(1)Microcontrollers 即單片微型計算機(jī)(Single Chipputer)階段,系統(tǒng)的最佳體系結(jié)構(gòu)1。在這個階段中,致力于找出單片形態(tài)(2)MCU 即微控制器(Micro Controller Unit)階段,在這個階段中,不斷的擴(kuò)展?jié)M足的應(yīng)用,以及各種被外界發(fā)展所需要的電路與接口電路8,這些改變成功的挖掘并突出了它

15、的智能化控制能力。它所涉及的領(lǐng)域都與對象系統(tǒng)相關(guān),因此,發(fā)展MCU 的重任不可避免地落在電氣、電子技術(shù)廠家2。(3)單片機(jī)是尋求應(yīng)用系統(tǒng)在系統(tǒng)發(fā)展的必經(jīng),同時也是一條獨(dú)立的發(fā)展道路。上的最大化解決便是 MCU 階段發(fā)展的重要;因此,專用單片機(jī)的發(fā)展自然形成了SoC 化趨勢。1.3國內(nèi)外發(fā)展綜述早期的單片機(jī)都是 8 位或 4 位的。早期的單片機(jī)中有部分單片機(jī)工藝精良,制作簡單,性能可靠,受到廣泛的關(guān)注,被大家所喜愛,直到到現(xiàn)在,其中的一些型號也還在使用,例如EL0830。在之后的中,8 位單片機(jī)的發(fā)展也是極其迅速,再后來就出現(xiàn)了 16 位、32 位的單片機(jī)。隨著發(fā)展,系統(tǒng)都能被當(dāng)代單片機(jī)系統(tǒng)直接

16、使用。的Windows現(xiàn)在常規(guī)的單片機(jī)普遍都是將處理器(CPU)、隨機(jī)存取數(shù)據(jù)(RAM)、只讀程序器(ROM)、并行和串行通口,中斷系統(tǒng)、定時電路、時鐘電路集成在一塊單一的 上,增強(qiáng)型的單片機(jī)集成了如 A/D 轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗)、有些單片機(jī)將 LCD(液晶)驅(qū)動電路都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就 ,功能就越強(qiáng)大21?,F(xiàn)在單片機(jī)廠商還能根據(jù)使用者的需求,制作出各式各樣的單片機(jī)。現(xiàn)在,單片機(jī)系統(tǒng)朝微型化發(fā)展,在以后,單片機(jī)除了需要強(qiáng)大的功能和較低的功耗以外,體積的要求也會越來越嚴(yán)格,微型單片機(jī)是國內(nèi)外發(fā)展的共同趨勢。同時單片機(jī)都具有多種封裝形式,其中

17、最受歡迎的便是 SMD,因?yàn)檫@種工藝能使得單片機(jī)的體積更小,符合了發(fā)展的趨勢。1.4單片機(jī)的發(fā)展趨勢現(xiàn)代電子技術(shù)的發(fā)展對單片機(jī)的工藝質(zhì)量提出了越來越高的要求,也促使單片機(jī)的集成技術(shù)和控制水平向更高的方向發(fā)展。通過更小的光刻技術(shù)來提高集成度,達(dá)到制作工藝 CMOS 化,縮小電壓。另外,以串口方式為主的、降低制作成本、減少功耗和降低工作擴(kuò)展將成為主流。還有一個明顯的就是和互聯(lián)網(wǎng)連接,在這樣的趨勢下,可靠性和應(yīng)用水平的要求也會越來越高,8 位機(jī)將占據(jù)主流地位。2總體方案的設(shè)計2.1設(shè)計目標(biāo)利用以 Proteus 為搭建,搭建基本的單片機(jī)虛擬仿真實(shí)驗(yàn)并以 C51為基本開發(fā)語言,實(shí)現(xiàn)對數(shù)碼管、流水燈、液

18、晶顯示屏的編程操作,并運(yùn)用 Keil對單片機(jī)相關(guān)仿真模型進(jìn)行,以確保其正確性。原始資料(數(shù)據(jù))及設(shè)計技術(shù)要求:單個 LED、流水燈;七段 LED;鍵盤、液晶AD、DA串口通信及其它模塊2.2設(shè)計內(nèi)容本設(shè)計(如圖 2.1)是以單片機(jī) 89C52 為,加上晶振、復(fù)位電路、輸入控制電路、輸出顯示電路和電路部件組成。功能部件圖 2.1 單片機(jī)系統(tǒng)的基本組成其中,晶振和復(fù)位電路控制這單片機(jī)的機(jī)器周期和功能復(fù)位。常用的輸入控制方法有鍵盤、矩陣鍵盤以及串口通信等。通過這些方法將控制指令傳送到單片機(jī)內(nèi),實(shí)現(xiàn)控制。輸出顯示模塊一般使用的是 LED、液晶屏、電機(jī)等,它們由單片機(jī)發(fā)送的指令來控制。而功能部件一般用來

19、執(zhí)行某些特定功能,如傳感器輸出顯示輸入控制單片機(jī)89C52晶振、復(fù)位電路等。通過上述設(shè)計內(nèi)容,制定以下設(shè)計流程:對單片機(jī)實(shí)驗(yàn)以 Proteus 為搭建進(jìn)行充分的了解。,搭建基本的單片機(jī)虛擬仿真實(shí)驗(yàn),實(shí)驗(yàn)中主要部件包括單片機(jī) 89RC52、LED 燈、七段 LED、4X4 矩陣鍵盤、1602 液晶屏、ADC0804、DAC0823 等運(yùn)用C 語言,完成對單個 LED 燈、流水燈、七段 LED、4X4 矩陣鍵盤、液晶顯示屏、A/D、D/A、步進(jìn)電機(jī)、直流電機(jī)的程序編寫。運(yùn)用 Keil 對所編寫的程序進(jìn)行編譯確保程序正確性。運(yùn)用 Keil 將編寫的程序轉(zhuǎn)換為 HEX 文件導(dǎo)入虛擬仿真中進(jìn)行仿真。根據(jù)

20、設(shè)計制出PCB圖。3實(shí)驗(yàn)電路的設(shè)計、其原理和正確性性驗(yàn)證3.1電源模塊主板上其他部件由電源模塊提供+5V 的電源,在這里有兩種電源輸入方式,一種是由電源插座輸入交直流電源,要求為直流輸入大于 7.5V,交流輸入大于 5V,再通過 7805 三端穩(wěn)壓器得到 5V 的直流電源供給系統(tǒng)其他部件工作。第二種是通過 USB 口獲取+5V 電源。電路原理如圖 3.1 所示:圖 3.1電源模塊電路原理圖3.2單片機(jī)模塊在該虛擬實(shí)驗(yàn)所示圖 3.2 所示:中,使用的是 89RC52 單片機(jī)。虛擬中該單片機(jī)如圖圖 3.2單片機(jī) 89RC523.3單個 LED 燈、流水燈3.3.1模塊設(shè)計及其原理這個模塊使用的是

21、8 個發(fā)光二極管,通過排線來控制,能控制單個發(fā)光二極管的亮滅,或是達(dá)到流水燈效果??刂频姆绞剑寒?dāng)輸入的控制信號為低電平的,發(fā)光二極管為亮;為發(fā)光二極管熄滅。電路由圖 3.3 所示:時。圖 3.3LED 燈電路圖發(fā)光二極管具有單向?qū)щ娦裕ㄟ^電流一般控制在 3mA-20mA 之間,通過電流越大,亮度越強(qiáng),但如果電流過大,二極管會被燒壞,所以在這里給二極管串聯(lián)了一個電阻來限制通過發(fā)光二極管的電流,這個電阻又稱為“限流電阻”。還用到了一個 74HC573 鎖存器。單片機(jī)可以通過控制鎖存器在這里,的鎖存端來控制鎖存器的數(shù)據(jù)輸出。其中,Q0Q7 為數(shù)據(jù)輸出端,D0D7 為數(shù)據(jù)輸入端,LE 為鎖存允許端,

22、3.47 段LED(數(shù)碼管)3.4.1模塊設(shè)計及其原理無論是幾位數(shù)碼管,其顯示原理都是一樣的,都是依靠內(nèi)部的發(fā)光二極管發(fā)光來達(dá)到顯示數(shù)字的目的。實(shí)驗(yàn)電路圖如圖 3.4 所示:圖 3.4 數(shù)碼管電路圖圖 3.5 單個數(shù)碼管引腳圖及部分連接圖通過上圖 3.5 可以看到,所有數(shù)碼管的陽極,即 a,b,c,d,e,f,g,h 這 7 根 LED的引腳全部連接在一起,然后與 U3 元件 74HC572 鎖存器的數(shù)據(jù)輸出端連接,而鎖存器的數(shù)據(jù)輸入端連接單片機(jī)的P0 口,P0 口同時加上了一個上拉電阻。U4的數(shù)據(jù)輸入端與單片機(jī)的P0 口相連,U4 元件的數(shù)據(jù)輸出端的低 6 位分別連接數(shù)碼管的選位端圖 3.7

23、 數(shù)碼管顯示圖3.54X4 矩陣鍵盤3.5.1模塊設(shè)計及其原理鍵盤本質(zhì)上就是一組按鍵。按鍵的連接方法很簡單,如圖 3.8,右側(cè)的 I/0端與單片機(jī)的任意I/O 連接。圖 3.8單個按鍵連接圖而使用鍵盤,其實(shí)就是完成單片機(jī)對按鍵的檢測,檢測原理如圖 3.8。這里使用按鍵的數(shù)據(jù)輸入功能,通過把按鍵的一端接地,另一端與單片機(jī)某 I/O 口連接,將 I/O 置高,然后讓單片機(jī)不斷的檢測該 I/O 是否改變?yōu)榈碗娖剑划?dāng)按鍵被按下閉合時,它與地相連,變成低電平。所以當(dāng)程序檢測到所連接 I/O口變?yōu)榈碗娖綍r,則說明按鍵被按下,然后可以進(jìn)行執(zhí)行相應(yīng)指令。4X4 矩陣鍵盤每一行的每個按鍵的一段連接在一起行線,另

24、一端連接在一起 列線12。這樣便有一共 4 行 4 列 8 根線來連接 16 個按鍵。將這些線與單片機(jī)的 8 個I/O 連接,就可以通過程序來掃描鍵盤檢測按鍵了。4X4 矩陣鍵盤的原理其實(shí)和上述的獨(dú)立鍵盤的原理是大致相同的,但是這里有一點(diǎn)需要注意,由于矩陣鍵盤不同于獨(dú)立鍵盤,它并不是一端接地,一端與單片機(jī)相連,而是兩端都與單片機(jī)的I/O 口連接,所以在 4X4 矩陣鍵盤中,需要人為的通過單片機(jī)I/O 口送出低電平。按鍵檢測原理圖如圖 3.9 所示:STARTN檢測是否有按鍵按下?Y延時 1sN檢測是否有按鍵按下?Y執(zhí)行相應(yīng)代碼圖 3.9 按鍵檢測原理圖在檢測時,一般有兩種方法。一種是先送一行為

25、低電平,其余幾列為。然后檢測各行是否有低電平,若檢測出有低電平,則可確認(rèn)被按下的是哪一個按鍵。另法則是先送一列為低電平,其余列為,然后用同上一樣的方法即可檢測按下為哪個鍵。虛擬實(shí)驗(yàn)電路圖如圖 3.10 所示:圖 3.104x4 矩陣鍵盤電路圖寄存器,單片機(jī) I/O 端口初始化為了驗(yàn)證電路正確,需要每個按鍵都檢測。程序代碼見附錄(4):3.5.2實(shí)驗(yàn)電路模塊正確性驗(yàn)證按照這程序,若沒錯誤,當(dāng)依次顯示 0-F。以此按下矩陣鍵盤的每個按鍵后,數(shù)碼管上3.6數(shù)/模,模/數(shù)轉(zhuǎn)換3.6.1模/數(shù)轉(zhuǎn)換(1)A/D 轉(zhuǎn)換工作原理及設(shè)計A/D 指的是模擬量/數(shù)字量轉(zhuǎn)換器。在單片機(jī)模擬信號時,通常在其前端加上 A

26、/D。A/D 轉(zhuǎn)換的原理是:先對輸入的模擬電壓信號采樣,完成后進(jìn)入保持時間,利用這段保存時間把采樣的電壓量轉(zhuǎn)化為數(shù)字量,然后在按照給定的編碼形式得出結(jié)果,再開始下一次采樣13。中,為了完成這一實(shí)驗(yàn),選擇了 ADC0804。這個 A/D在虛擬轉(zhuǎn)換器逐次比較型 A/D 轉(zhuǎn)換器。該接到數(shù)據(jù)總線上。內(nèi)具有三態(tài)輸出數(shù)據(jù)鎖存器,可直接連A 引腳名稱及作用:VIN(+),VIN(-)-模擬信號輸入端,用以接收單極性、雙極性和差摸輸入信號。DB0-DB7-具有三態(tài)特性數(shù)字信號輸 AGND-模擬信號地。DGND-數(shù)字信號地。 CLK-時間信號輸入端。CLKR-內(nèi)部時鐘發(fā)生器的外接電阻端,與 CLK 端配合可由時

27、鐘脈沖,其頻率為 1/(1.1RC)14。自身產(chǎn)生滑動端便與 VIN(+)相連,這樣便可以通過調(diào)節(jié)電位器的旋鈕控制滑動端的電壓,然后使得 ADC0804 的數(shù)字輸出端在 0 x00-0 xFF 之間變化。而 ADC0804 所需的脈沖,則由 CLKR,CLR,GND 之間由電阻、電容組成的RC 振蕩電路提供,脈沖的頻率為 1/(1.1RC)。在轉(zhuǎn)換時間不足,通過更換 C11 電容為 150F 或是增大for(a=10;a0;a-)中 a 的值,即增加 A/D 轉(zhuǎn)換時間可以解決這個問題。若操作、程序、電氣圖都正確,可以觀察當(dāng)擰動 Re2 時,能看到數(shù)碼管前 3位以十進(jìn)制的方式動態(tài)顯示 A/D 轉(zhuǎn)

28、換后的數(shù)字量。3.6.2數(shù)/模轉(zhuǎn)換(1)D/A 轉(zhuǎn)換工作原理及設(shè)計用二進(jìn)制代碼按數(shù)位組合起來表示便是數(shù)字量。實(shí)現(xiàn)數(shù)/模轉(zhuǎn)換,也就是 D/A轉(zhuǎn)換的基本思路是:將每一位的代碼按照其權(quán)的大小轉(zhuǎn)換成相應(yīng)的模擬量,在將這些模擬量相加,即 到總模擬量,這個總模擬量與數(shù)字量是成正比的16。這里使用的是常見的 8 位 D/A 轉(zhuǎn)換器 DAC0832,以電流形式輸出,可外接運(yùn)算放大器來轉(zhuǎn)換輸出為電壓。它的邏輯電平輸入和 TTL 電平兼容。各引腳的定義如下:圖 3.13 DAC0832 電路圖當(dāng)選擇這種數(shù)據(jù)輸入方式時,它的片選信號、寫信號和傳送控制信號的引腳全部接地,ILE 引腳接 5V。一旦輸入數(shù)字量,數(shù)字量直

29、接進(jìn)入 D/C 寄存器,進(jìn)行 D/A 轉(zhuǎn)換。若需要讓號就可以了。連續(xù)轉(zhuǎn)換的話,只用連續(xù)改變數(shù)字輸出端的數(shù)字信下面通過編寫程序進(jìn)行編譯設(shè)計的電路和程序的正確性。根據(jù)這個程序,可以讓發(fā)光二極管由滅到亮再到暗,并且在最亮和最暗的時候發(fā)出蜂鳴警報聲。整個周期 5S 左右,并且循環(huán)變化。3.71602 液晶顯示屏3.7.1模塊設(shè)計及其原理1602 液晶可以顯示兩行,每行 16 個字符,由 5V 電壓驅(qū)動,帶背光,并且內(nèi)置了 128 個字符的 ASCII 字符集字庫,并行接口17。1602 型液晶接口說明如下:輸出:無。在 1602 液晶顯示屏的內(nèi)部有一個 80B 的RAM 緩沖區(qū),如圖 3.14 所示。

30、其中的 000F、404F 地址處是液晶顯示區(qū),也就是說,在這一區(qū)域中的任意一處寫入數(shù)據(jù)時,液晶都可以立即顯示出來,但是如果寫到 1027 或是 5067 地址處,也就是不能顯示的區(qū)域的話,就需要通過移位指令來將這些數(shù)據(jù)移入 000F 等可顯示的區(qū)域來達(dá)到正常顯示。圖 3.14 1602 液晶顯示屏示意圖首先,應(yīng)先通過 RS 確定是寫命令還是寫數(shù)據(jù),比如確定液晶的光變是否顯示、是否閃爍,是否需要移屏,或是確定要顯示什么內(nèi)容。然后再設(shè)置讀/寫控制端為低電平,即寫模式。隨后將數(shù)據(jù)或命令送到數(shù)據(jù)線上,最后給 E 一個高脈沖將數(shù)據(jù)送入液晶控制器,完成寫操作。根據(jù)上述接口說明和原理介紹,在虛擬模擬屏與單

31、片機(jī)的接口圖如下圖 3.15:上制出電路圖,1602 液晶圖 3.151602 液晶屏與單片機(jī)的接口圖上圖中,液晶的 1、2 端是電源,15,16 為背光電源。在 15 引腳處串聯(lián)一個電阻是為了限流,保護(hù)背光燈防止直接外加 5V 電壓將其燒壞。在液晶 3 端出連接的電位器是用來調(diào)節(jié)液晶顯示的對比度的。液晶 4 端接單片機(jī)P3.5 口,作為向液晶控制器寫數(shù)據(jù)/寫命令選擇端。液晶 5 端是讀/寫端,這里不需要從液晶用其寫狀態(tài)向它寫入數(shù)據(jù)和命令。液晶端 6 為使能信號端,接單片機(jī)的P3.4 口,接收操作時必須的信號。程序流程圖根據(jù)下圖 3.16 所示:任何數(shù)據(jù),所以將其接地,使開始否16次調(diào)用結(jié)束否

32、?是結(jié)束圖 3.16 1602 液晶屏程序流程圖根據(jù)原理,設(shè)計程序,讓,程序見附錄(7)。3.7.2實(shí)驗(yàn)電路模塊正確性驗(yàn)證若程序和電路都沒有問題,那么可以在 1602 液晶顯示屏上看到以下圖調(diào)用次數(shù)減 1調(diào)用 WRITE 寫子程序要寫入的值根據(jù)偏移查出對應(yīng)要顯示的值要寫入的地址初始寫入地址清 0(調(diào)用寫次數(shù)參數(shù))像,液晶上顯示:第一行顯示“I LOVE YOU!”,第二行顯示“110315”。如圖 3.17所示:圖 3.17 1602 液晶屏實(shí)驗(yàn)現(xiàn)象圖3.8串口通信3.8.1模塊原理和設(shè)計串口通信用到的是MAX232。這個的上半部分電容圖 3.18虛擬串口部分原理圖串口通信的數(shù)據(jù)傳輸流程:TT

33、L 電平從單片機(jī)的 TXD 端發(fā)出,進(jìn)過 MAX232 的轉(zhuǎn)換,轉(zhuǎn)換為 RS-232電平以后,再從 MAX232 的 14 引腳停止位的開始時,由內(nèi)部硬件將T1 置 1,向 CPU 申請中斷,接下來可在中斷服務(wù)程序中做相應(yīng)處理,可選擇不進(jìn)入中斷20。用軟件置 REN 為 1 時,以所選波特率的 16 倍速率采樣 RXD 引腳電平,檢測到 RXD 引腳輸入電平發(fā)生負(fù)跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進(jìn)行最后一次移位20。當(dāng)RI=0,SM2=0(或接收到的停止位為 1)

34、時。將接受到的 9 位數(shù)據(jù)的前 8 位數(shù)據(jù)裝入接收SBUF,第 9 位(停止位)進(jìn)入 RB8,并置 RI=1,向 CPU請求中斷20。在進(jìn)行具體操作串行口之前,需要對設(shè)置產(chǎn)生波特率的定時器 1、串行口控制和中斷控制進(jìn)行初始化設(shè)置:確定T1 的工作方式;計算T1 的初值;啟動TI(編程TCON 中的TR1 位);確定串行口工作方式(編程SCON 寄存器);串行口工作在中斷方式時,要進(jìn)行中斷設(shè)置(編程 IE、IP 寄存器)。3.8.2實(shí)驗(yàn)電路模塊正確性驗(yàn)證根據(jù)上述原理,設(shè)計程序通過串口調(diào)試助手進(jìn)行驗(yàn)證,程序見附錄(8)3.9步進(jìn)電機(jī)3.9.1模塊原理和設(shè)計步進(jìn)電機(jī)是不需要 A/D 轉(zhuǎn)換的,它能夠直

35、接將數(shù)字脈沖信號轉(zhuǎn)化成為角位通過利用proteus 對其進(jìn)行電路仿真,設(shè)計系統(tǒng)通過四個按鍵 S1,S2,S3,S4移分別控制步進(jìn)電機(jī)的開始,以及正反轉(zhuǎn),并使用 1602 液晶顯示以上參數(shù)。這整個設(shè)計由單片機(jī)、復(fù)位電路、時鐘電路、電機(jī)驅(qū)動、步進(jìn)電機(jī)、顯示電路等組成,硬件模塊如圖 3.20 所示:復(fù)位電路時鐘電路電機(jī)驅(qū)動步進(jìn)電機(jī)單片機(jī)鍵盤圖 3.20步進(jìn)電機(jī)硬件模塊流程圖單片機(jī)接收到按鍵發(fā)送的信號后經(jīng)過判斷,驅(qū)動電機(jī)模塊,并用 1602 顯示設(shè)置的參數(shù)。本次主控單元使用 C51 單片機(jī)對整個系統(tǒng)進(jìn)行控制,步進(jìn)電機(jī)和單片機(jī)連接如圖 3.21:圖 3.21步進(jìn)電機(jī)與單片機(jī)連接電路圖在這個設(shè)計中,驅(qū)動模

36、塊使用的是集成驅(qū)動ULN2003。ULN2003都串聯(lián)了一個 2.7 K 的基極電阻,在 5V 的工作電壓下它能與的每一對TTL 和CMOS 電路直接相連,可以直接處理原本需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。若需要顯示電路可以使用到 1602 液晶屏。然后通過鍵盤來控制電機(jī)的運(yùn)行,這里使用了 4 個獨(dú)立式按鍵。按鍵功定義如下:當(dāng) S2 按下時,步進(jìn)電機(jī)開始;當(dāng) S3 按下時,步進(jìn)電機(jī)開始;當(dāng) S4 按下時,步進(jìn)電機(jī)開始正轉(zhuǎn);當(dāng) S5 按下時,步進(jìn)電機(jī)開始反轉(zhuǎn)。按鍵抖動的消除采用軟件消抖實(shí)現(xiàn)。每個按鍵開關(guān)采用的都是上拉電阻,如圖 3.22。圖 3.22 按鍵連接圖接下來是程序設(shè)計:程序見附錄(9)3

37、.9.2模塊正確性驗(yàn)證在上面的內(nèi)容中,完成了對程序和電路的設(shè)計,現(xiàn)在將程序編譯到虛擬電路中,進(jìn)行仿真,若程序和電路都正確,那么會出現(xiàn)以下效果:按下第一個鍵時,電機(jī)開始。按下第二個鍵時,電機(jī)開始。按下第三個鍵時,電機(jī)正轉(zhuǎn)。按下第四個鍵時,電機(jī)反轉(zhuǎn)。4總結(jié)首先我對C 語言進(jìn)行了充分的了解,然后對 51 單片機(jī)的內(nèi)部接口和各引腳進(jìn)了系統(tǒng)化的學(xué)習(xí)。緊接著進(jìn)行了各個模塊的學(xué)習(xí),如 1602 液晶屏、鍵盤等,其中,在設(shè)計的途中遇到了許多問題,通過查詢相關(guān)資料,并且在老師的幫助下運(yùn)用老師提供的 TX-1C 實(shí)驗(yàn)板對單片機(jī)有了更加清晰的了解,解決了許多設(shè)計上的問題。程序的編寫是最難完成的,因?yàn)樽约簩?C 語言

38、不熟練,對單片機(jī)的功能實(shí)現(xiàn)也不是特別的熟悉,后來自己在館查詢各式資料,問了老師很多問題,最后才勉強(qiáng)能夠做的出來。這樣的情況下,做到最情有些急躁,有些東西問了很多同學(xué),查詢了很多資料,最后自己才把程序虛擬仿真做完了。通過這次畢業(yè)設(shè)計,我對C 語言、單片機(jī)有了更次的了解,領(lǐng)略到了機(jī)電的,還讓我學(xué)會了獨(dú)立完成任務(wù)的能力。最后非常感謝和馮老師對幫助!5 參考文獻(xiàn)一,與管理,2011.系統(tǒng)專業(yè)實(shí)驗(yàn)教學(xué)的探索與實(shí)踐J.實(shí)驗(yàn)技術(shù)1,基于 arm+linux 架構(gòu)的,2006.開發(fā)設(shè)計與實(shí)現(xiàn).碩博學(xué)位23 殷.基于 at89c52 的實(shí)驗(yàn)教學(xué)型數(shù)控系統(tǒng)研制.碩博,2007文庫,20124 Xunicheng.

39、Proteus 電路仿真軟件在電路設(shè)計中的應(yīng)用.,等.基于 Proteus 的核信號輸入 LCD 處理顯示單元J.電子5設(shè)計工程,2011.6 Proteus 軟件仿真與 keil 的 51 單片機(jī)系統(tǒng)設(shè)計,互聯(lián)網(wǎng),2011.7 移器人視覺導(dǎo)航技術(shù),碩博8 中國測控網(wǎng).單片機(jī)發(fā)展歷史的三個主要階段介紹,中國測控網(wǎng),2013,.單片機(jī)課程設(shè)計,互聯(lián)網(wǎng),2012.9李聯(lián)軍.電子技術(shù)中單片機(jī)的應(yīng)用和開發(fā)技術(shù)單片機(jī)仿真實(shí)驗(yàn) 86.互聯(lián)網(wǎng),2010. 1258 鍵盤顯示程序設(shè)計.互聯(lián)網(wǎng),2010. 13基于 AVR 物聯(lián)網(wǎng)畢業(yè)設(shè)計.豆丁網(wǎng),2011.Fayj5j5y.ADDA 轉(zhuǎn)換.道客巴巴,2012,

40、(1).新.基于 51 單片機(jī)壓力檢測課程設(shè)計.J.大觀,2012.文庫,2013,(6).,2012.數(shù)字電子技術(shù)基礎(chǔ)D.:人民郵電1617ys800503.1602 液晶應(yīng)用 Proteus 反仿真+源程序課程設(shè)計,道客巴巴,2012,(8)18彭朝暉.兼有 MP3 功能的語言定時器的.碩博:人民郵電,2005.,2008,19求是科技.單片機(jī)典型模塊設(shè)計實(shí)例導(dǎo)航D.(7).51 單片機(jī)C 語言D.:電子工業(yè),2009,(1)2021.淺談單片機(jī)在電子技術(shù)中的使用D.技術(shù)與市場,2012.致謝首先,在這這里再次感謝指導(dǎo)老師和馮老師對我悉心的指導(dǎo),感謝老師給幫助。隨著畢業(yè)日子的到來,畢業(yè)設(shè)計

41、也接近了尾聲。在沒有做畢業(yè)設(shè)計以前覺得畢業(yè)設(shè)計是一個隨便應(yīng)付了事的東西,但是真正的著手開始做畢業(yè)設(shè)計時,才發(fā)現(xiàn)自己真的很幼稚。畢業(yè)設(shè)計是需要認(rèn)真面對的,要完成它,需要對前面所學(xué)知識有很深的了解,而且還需要在學(xué)些新的知識。通過這次畢業(yè)設(shè)計,我明白了自己其實(shí)專業(yè)知識掌握的也不好,要學(xué)習(xí)的東西還太多,以前總覺得自己得過且過,對學(xué)習(xí)沒什么追求,通過這次畢業(yè)設(shè)計,我才知道自己有差勁,有多大的差距。所以,在以后的工作、生活中,自己都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。在剛剛開始做畢業(yè)設(shè)計是,真是不知道怎么動手,從那里入手,正是古人所說的萬事開頭難。后來還是通過查閱相關(guān)資料,詢問老師和同學(xué)各種問題,

42、最后才完成了這次畢業(yè)設(shè)計,做完了以后有種如釋重負(fù)的感覺。此外,還得出一個結(jié)論:知識必須通過應(yīng)用才能實(shí)現(xiàn)其價值!知識只有到真正會用的時候才是真的學(xué)會了。在此要在設(shè)計過程中,和老師的交流加上,讓自己收益頗豐。明白了自己不能一味的尋求別人的幫助,在遇到不懂的東西,自己動手才是最好的解決方式,周圍的人知識你的輔助而已。在整個設(shè)計中,培養(yǎng)了我獨(dú)立思考,自己動手的能力,增強(qiáng)了自己的信心,相信會對以后的工作生活有著巨大的影響,使我終身受益。在這次畢業(yè)設(shè)計中,我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。附錄(1)原理圖附錄(2)程序(1)LED#include /52 系列單片機(jī)頭文件/宏定義#def

43、ine uunsignedsbit led1=P10; void delayms(); void main()while(1)led1=0; delayms(); led1=1; delayms();void delayms()/單片機(jī)P1 口的第一位子函數(shù)/主函數(shù)/大循環(huán)/*點(diǎn)亮第一個發(fā)光二極管*/調(diào)用延時子函數(shù)/*關(guān)閉第二個發(fā)光二極管*/調(diào)用延時子函數(shù)/子函數(shù)體ui,j;for(i=1000;i0;i-)for(j=110;j0;j-);/i=1000 即延時約 1 秒(2)流水燈#include/52 系列單片機(jī)頭文件/包含_crol_函數(shù)所在的頭文件/宏定義#include unsig

44、ned#define uchar unsigned charvoid delayms(u uchar aa;void main()aa=0 xfe; while(1)P1=aa;);/子函數(shù)/定義一個變量,用來給P1 口賦值/主函數(shù)/賦初值 11111110/大循環(huán)/先點(diǎn)亮第一個發(fā)光二極管/延時 1 秒/將xx 循環(huán)左移位后在賦給xxdelayms(1000); aa=_crol_(aa,1);void delayms(uxms)ui,j;for(i=xms;i0;i-)for(j=110;j0;j-);(3)數(shù)碼管#include #define uchar unsigned char/52

45、 系列單片機(jī)頭文件#define uunsignedsbit dula=P26; sbit wela=P27;uchar code table= 0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c, 0 x39,0 x5e,0 x79,0 x71;/U1 鎖存器的鎖存端U2 鎖存器的鎖存端void delayms(u void main();while(1)dula=1; P0=table1; dula=0; P0=0 xff; wela=1; P0=0 xfe; wela=0; delayms(5

46、00);/送數(shù)據(jù)/送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選/鎖存時原來/送位選數(shù)據(jù)數(shù)據(jù)通過位選鎖存器造成/延時dula=1; P0=table2; dula=0; P0=0 xff; wela=1; P0=0 xfd; wela=0; delayms(500);dula=1; P0=table3; dula=0;P0=0 xff; wela=1; P0=0 xfb; wela=0; delayms(500);dula=1; P0=table4; dula=0; P0=0 xff; wela=1; P0=0 xf7;wela=0; delayms(500);dula=1; P0=table5; d

47、ula=0; P0=0 xff; wela=1; P0=0 xef; wela=0; delayms(500);dula=1; P0=table6; dula=0; P0=0 xff; wela=1; P0=0 xdf; wela=0; delayms(500);void delayms(uxms)ui,j;for(i=xms;i0;i-)for(j=110;j0;j-);(4)4X4 矩陣鍵盤#include#define uchar unsigned char/52 系列單片機(jī)頭文件#define uunsignedsbit dula=P26; sbit wela=P27;uchar co

48、de table= 0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c, 0 x39,0 x5e,0 x79,0 x71;/U1 鎖存器的鎖存端U2 鎖存器的鎖存端void delayms(uxms)ui,j;for(i=xms;i0;i-)for(j=110;j0;j-);void display(uchar num)P0=tablenum; dula=1; dula=0;void matrixkeyscan()uchar temp,key; P3=0 xfe; temp=P3; temp=tem

49、p&0 xf0; if(temp!=0 xf0)delayms(10); temp=P3; temp=temp&0 xf0; if(temp!=0 xf0)temp=P3; switch(temp)case 0 xee:key=0; break;case 0 xde:key=1; break;case 0 xbe:key=2;break; case 0 x7e:key=3; break;while(temp!=0 xf0)temp=P3; temp=temp&0 xf0;display(key);/等待按鍵/顯示P3=0 xfd; temp=P3; temp=temp&0 xf0; if(te

50、mp!=0 xf0)delayms(10); temp=P3; temp=temp&0 xf0; if(temp!=0 xf0)temp=P3; switch(temp)case 0 xed:key=4; break;case 0 xdd:key=5; break;case 0 xbd:key=6; break;case 0 x7d:key=7; break;while(temp!=0 xf0)temp=P3; temp=temp&0 xf0;display(key);P3=0 xfb; temp=P3; temp=temp&0 xf0; if(temp!=0 xf0)delayms(10);

51、 temp=P3; temp=temp&0 xf0; if(temp!=0 xf0)temp=P3; switch(temp)case 0 xeb:key=8; break;case 0 xdb:key=9; break;case 0 xbb:key=10; break;case 0 x7b:key=11; break;while(temp!=0 xf0)temp=P3; temp=temp&0 xf0;display(key); P3=0 xf7;temp=P3; temp=temp&0 xf0; if(temp!=0 xf0)delayms(10); temp=P3;temp=temp&0

52、 xf0; if(temp!=0 xf0)temp=P3; switch(temp)case 0 xe7:key=12; break;case 0 xd7:key=13; break;case 0 xb7:key=14; break;case 0 x77:key=15; break;while(temp!=0 xf0)temp=P3; temp=temp&0 xf0;display(key);void main()P0=0;dula=1; dula=0; P0=0 xc0;wela=1; wela=0;while(1)matrixkeyscan();/關(guān)閉所有數(shù)碼管選段/不停調(diào)用鍵盤掃描程序(

53、5)A/D#include#include#define uchar unsigned char#define uunsignedsbit dula=P26;sbit wela=P27; sbit adwr=P36; sbit adrd=P37;uchar code table= 0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c, 0 x39,0 x5e,0 x79,0 x71;void delayms(uxms)ui,j;for(i=xms;i0;i-)for(j=110;j0;j-);void

54、display(uchar bai,uchar shi,uchar ge)dula=1;P0=tab dula=0; P0=0 xff; wela=1; P0=0 x7e;wela=0;ai;/送數(shù)據(jù)/送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選/鎖存時原來/送位選數(shù)據(jù)數(shù)據(jù)通過位選鎖存器造成delayms(5);/延時dula=1; P0=tableshi; dula=0; P0=0 xff; wela=1; P0=0 x7d;wela=0; delayms(5);dula=1; P0=tablege; dula=0; P0=0 xff; wela=1;P0=0 x7b;wela=0; delaym

55、s(5);void main()/主程序uchar a,A1,A2,A3,adval; wela=1;P0=0 x7f;wela=0; while(1)adwr=1;_nop_(); adwr=0;_nop_(); adwr=1;/置 CSAD 為 0,選通A以后不必再管A/啟動 A/D 轉(zhuǎn)換for(a=10;a0;a-)display(A1,A2,A3);P1=0 xff; adrd=1;_nop_(); adrd=0;_nop_(); adval=P1; adrd=1; A1=adval/100;A2=adval%100/10; A3=adval%10;/延長轉(zhuǎn)換時間/P1 口之前先給其寫全 1 A/A/D 讀使能/A/D 數(shù)據(jù)賦給P1 口/分出個,十,百位(6)D/A#include#d

溫馨提示

  • 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

提交評論