版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 控制系統(tǒng)課程設計報告書</p><p><b> 電子秒表的設計</b></p><p><b> 一、設計要求</b></p><p> 設計一個電子秒表,與通用秒表功能類似,有啟動,暫停、復位等鍵。計時長長度為300秒,需顯示百分秒。</p><p><b>
2、; 設計方案分析</b></p><p><b> 1.方案設計</b></p><p> 數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點,在計時中廣泛使用。本設計用單片機組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、精度高為目標。</p><p> 本系統(tǒng)采用C51系列單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合硬件電
3、路如電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等來設計計時器,將軟、硬件有機地結(jié)合起來。其中軟件系統(tǒng)采用匯編語言編寫程序,硬件系統(tǒng)利用PROTEUS強大的功能來實現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。</p><p> 本設計利用STC89C51單片機的定時器/計數(shù)器定時和計數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。根據(jù)要求知道秒表設計主要實現(xiàn)的功能是計時和
4、顯示。因此設置了兩個按鍵和LCD顯示時間,兩個按鍵分別是開始、停止和復位按鍵。利用這兩個建來實現(xiàn)秒表的全部功能,而LCD則能顯示最多4.59.99秒的計時。電路原理圖設計最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖1.1進行設計。</p><p> 圖1.1 數(shù)字秒表硬件電路基本原理圖</p><p> 本設計中,數(shù)碼管顯示的數(shù)據(jù)存放在
5、內(nèi)存單元31H-33H中。其中31H存放分鐘變量,32H存放秒鐘變量,33H存放10ms計數(shù)值,即存放毫秒位數(shù)據(jù),每一地址單元內(nèi)均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應段碼存放在ROM表中。顯示時,先取出31H-33H某一地址中的數(shù)據(jù),然后查得對應的顯示位,并從P1口輸出,就能顯示該地址單元的數(shù)據(jù)值。</p><p> 計時通過中斷完成,定時溢出中斷周期為1ms,
6、當一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到4.59.99秒重新復位。 </p><p> 再看按鍵的處理。這兩個鍵可以采用中斷的方法,也可以采用掃描的方法來識別。復位鍵主要功能在于數(shù)值復位,對于時間的要求不是很嚴格。而開始和停止鍵則是用于對時間的鎖定,需要比較準確的控制。因此可以對復位按鍵采取掃描的方式。而對開始和停止鍵采用外
7、部中斷的方式。</p><p> 設計中包括硬件電路的設計和系統(tǒng)程序的設計。其硬件電路主要有主控制器,顯示電路和回零、啟動、查看、停表電路等。主控制器采用單片機ATC89C51,顯示電路采用LCD顯示計時時間,兩個按鍵均采用觸點式按鍵。 </p><p><b> 2.背景知識介紹</b></p><p> 2.1 單片機相關知識<
8、/p><p> 本課題在選取單片機時,充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗,并根據(jù)自己的實際情況, 選擇了ATC89S51。</p><p> ATC89C52單片機采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖, 40條引腳說明如下:</p><p> 主電源引腳Vss和Vcc</p><p><b> ①
9、 Vss接地</b></p><p> ?、?Vcc正常操作時為+5伏電源</p><p> 外接晶振引腳XTAL1和XTAL2</p><p> ① XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當采用外部振蕩器時,此引腳接地。 </p><p> ?、?XTAL2內(nèi)部振蕩電路反相放大器的輸出
10、端。是外接晶體的另一端。當采用外部振蕩器時,此引腳接外部振蕩源。</p><p> 圖1.2 STC89C52單片機引腳圖</p><p> 控制或與其它電源復用引腳RST/VPD,ALE/,和/Vpp</p><p> ① RST/VPD 當振蕩器運行時,在此引腳上出現(xiàn)兩個機器周期的高電平(由低到高跳變),將使單片機復位在Vcc掉電期間,此引腳可接
11、上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。</p><p> ?、?ALE/正常操作時為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。但要注意,每當訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖,ALE 端可以驅(qū)動(吸收或輸出電流)八個LSTTL電路。對于EPR
12、OM型單片機,在EPROM編程期間,此引腳接收編程脈沖(功能)</p><p> ③ 外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數(shù)據(jù))期間,在每個機器周期內(nèi)兩次有效。同樣可以驅(qū)動八LSTTL輸入。</p><p> ④ /Vpp、/Vpp為內(nèi)部程序存儲器和外部程序存儲器選擇端。當/Vpp為高電平時,訪問內(nèi)部程序存儲器,當/Vpp為低電平時,則訪問外部程序存儲器。對于
13、EPROM型單片機,在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。</p><p> 輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。</p><p> ① P0口(P0.0 - P0.7)是一個8位漏極開路型雙向I/O口,在訪問外部存儲器時,它是分時傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方
14、式驅(qū)動八個LSTTL負載。</p><p> ?、?P1口(P1.0 - P1.7)是一個帶有內(nèi)部提升電阻的8位準雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負載。</p><p> ?、?P2口(P2.0 - P2.7)是一個帶有內(nèi)部提升電阻的8位準雙向I/O口,在訪問外部存儲器時,它輸出高8位地址。P2口可以驅(qū)動(吸收或輸出電流)四個LSTTL負載。</p>
15、<p> ?、?P3口(P3.0 - P3.7)是一個帶有內(nèi)部提升電阻的8位準雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負載。</p><p> AT89C51具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89C52可降至0Hz 靜態(tài)邏輯操
16、作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。CPU是單片機的核心部件。它由運算器和控制器等部件組成。</p><p><b> ?。?) 運算器</b></p><p> 運算器的功能是進行算術運算和邏輯運
17、算??梢詫Π胱止?jié)(4位)、單字節(jié)等數(shù)據(jù)進行操作。例如能完成加、減、乘、除、加1、減1、BCD碼十進制調(diào)整、比較等算術運算和與、或、異或、求補、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存器。</p><p> AT89C51運算器還包含有一個布爾處理器,用來處理位操作。它是以進位標志位C為累加器的,可執(zhí)行置位、復位、取反、等于1轉(zhuǎn)移、等于0轉(zhuǎn)移、等于1轉(zhuǎn)移且清0以及進位標志位與其他可尋址的位之間進行數(shù)據(jù)傳送等
18、位操作,也能使進位標志位與其他可移位尋址的位之間進行邏輯與、或操作。</p><p> (2) 程序計數(shù)器PC</p><p> 程序計數(shù)器PC用來存放即將要執(zhí)行的指令地址,共16位,可對64K程序存儲器直接尋址。執(zhí)行指令時,PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。</p><p><b> ?。?) 令寄存器</b></p
19、><p> 指令寄存器中存放指令代碼。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時與控制電路發(fā)出相應的控制信號,完成指令功能。</p><p> 本設計采用ATMEL的AT89C51微處理器,主要基于以下幾個因素:</p><p> ① AT89C51為51內(nèi)核,仿真調(diào)試的軟硬件資源豐富。</p><p>
20、 ?、?性價比高,貨源充足。</p><p> ?、?功耗低,功能強,靈活性高。</p><p> ?、?DIP40封裝,體積小,便于產(chǎn)品小型化。</p><p> ⑤ 為EEPROM程序存儲介質(zhì),1000次以上擦寫周期,便于編程調(diào)試。</p><p> ?、?工作電壓范圍寬:2.7V-6V,便于交直流供電。</p>
21、<p> 2.2 TC1602</p><p> LCD 的構(gòu)造是在兩片平行的玻璃當中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細小電線,透過通電與否來控制桿狀水晶分子改變方向,將光線折射出來產(chǎn)生畫面。比CRT要好的多,但是價錢較其貴。</p><p><b> 1)LCD的特點</b></p><p><b>
22、; 低壓微功耗 </b></p><p><b> 平板型結(jié)構(gòu) </b></p><p> 被動顯示型(無眩光,不刺激人眼,不會引起眼睛疲勞) </p><p> 顯示信息量大(因為像素可以做得很小) </p><p> 易于彩色化(在色譜上可以非常準確的復現(xiàn)) </p><p&
23、gt; 無電磁輻射(對人體安全,利于信息保密) </p><p> 長壽命(這種器件幾乎沒有什么劣化問題,因此壽命極長,但是液晶背光壽命有限,不過背光部分可以更換)</p><p><b> 1602的管腳功能</b></p><p><b> 三、硬件設計</b></p><p> 本系
24、統(tǒng)中,硬件電路主要有電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等。</p><p><b> 1.單片機簡介</b></p><p> 本系統(tǒng)設計采用C51系列單片機。</p><p> ST89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲器制造技
25、術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容(由于在微機原理中學過C-51的具體知識,這里不再詳細說明)。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ST89C51是一種高效的微控制器。</p><p><b> 2.電源電路</b></p><p> 電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,由于三端集成穩(wěn)壓器件所組成的穩(wěn)壓電源線路
26、簡單,性能穩(wěn)定,工作可靠,調(diào)整方便,已逐漸取代分立元件,在生產(chǎn)中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5V穩(wěn)壓電壓。</p><p><b> 3.晶體振蕩電路</b></p><p> MCS--51單片機內(nèi)部的振蕩電路是一個高增益反相放大器,引線 XTAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反向振蕩器的輸出,該反
27、向放大器可以配置為片內(nèi)振蕩器。</p><p> 這里,我們選用51單片機12MHZ的內(nèi)部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線時要使晶體振蕩器X1盡可能接近單片機。</p><p><b> 圖2 晶體振蕩電路</b></p><p><b>
28、 4.復位電路</b></p><p> 采用上電+按鍵復位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使用使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加開關復位的操作。這不僅能使單片機復位,而且還能使</p><p> 單片機的外圍芯片也同時復位。當程序出現(xiàn)錯誤時,可以隨時使電路復位。</p><p&g
29、t;<b> 電路圖如下:</b></p><p><b> 圖3 復位電路</b></p><p><b> 5.顯示電路</b></p><p> 顯示電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用2個共陽極LED顯示,LED是七段式顯示器,內(nèi)部有7個條形發(fā)
30、光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。</p><p> 在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。</p><p> 在設計中,我們采用LED動態(tài)顯示,用P0口驅(qū)動顯示。由于P0口的輸出級是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出高電平。</p&g
31、t;<p><b> 電路圖如下所示:</b></p><p><b> 圖4 顯示電路</b></p><p><b> 6.鍵盤電路</b></p><p> 在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。
32、鍵盤掃描電路節(jié)省I/O口,但編程有些復雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P3口做開關,P3.3為開始停止,P3.4為清零,用外部中斷INT1開始,另外用軟件法消除抖動。電路圖如下所示:</p><p><b> 圖5 鍵盤電路</b></p><p><b> 硬件主
33、電路圖設計</b></p><p> 用pretues畫出其硬件主電路圖如下:</p><p><b> 軟件設計</b></p><p><b> 4.1軟件設計概述</b></p><p> 在軟件設計中,一般采用模塊化的程序設計方法,它具有明顯的優(yōu)點。把一個多功能的復雜的程
34、序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設計和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。</p><p> 應用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都要完成一個明確的任務,實現(xiàn)某個具體的功能,在具體需要時調(diào)用相應的模塊即可。</p><p> 功能描述:用LCD1602液晶顯示"秒表",
35、顯示時間為0.00.00—4.59.99秒,每秒自動加1;一個"開始""暫停"鍵,一個"清零"鍵。</p><p><b> 4.2主程序流程圖</b></p><p> 這里采用順序結(jié)構(gòu),通過對按鍵的掃描,判斷要實現(xiàn)什么功能。如下所示:</p><p><b> 測試
36、數(shù)據(jù)及設計結(jié)果</b></p><p> 1、按下INT1管腳的開關時,顯示數(shù)據(jù),如下圖所示</p><p> 2、按下T0管腳的開關時,數(shù)據(jù)清零,如下圖所示</p><p> 六、調(diào)試中出現(xiàn)的錯誤及解決方法</p><p> 實驗中遇到的問題及解決方法</p><p> 問題:LCD顯示模糊&l
37、t;/p><p> 原因:VEE接高電平,LCD的對比度太低,從而無法正常顯示數(shù)據(jù)。</p><p> 解決方法:將VEE接地,提高了LCD的對比度,數(shù)據(jù)顯示清晰。</p><p><b> (2)實驗心得</b></p><p><b> ?、賆XX</b></p><p&g
38、t; 接到題目時,發(fā)現(xiàn)是關于電子秒表的設計,先在網(wǎng)上查閱了一些有關電子秒表設計的材料,熟悉了設計思想與工作原理,并且具體的分析了單片機、數(shù)碼管顯示器的工作過程,從理論上分析了該工作過程。</p><p> 在理解了該系統(tǒng)的工作原理并完成電路圖的設計與仿真后,開始焊接電路板,在焊接時通過查閱,熟悉了各個管角的焊接原則,在焊接過程中,考慮到數(shù)碼管布線相對較多,所以換用作LCD,焊接相對簡單。</p>
39、<p> 電路板焊接完成后,將程序考入單片機后開始測試,剛開始時LCD顯示器無數(shù)據(jù)顯示,經(jīng)過對電路板各模塊的重新測試,發(fā)現(xiàn)并無問題,經(jīng)過和同學的探討,發(fā)現(xiàn)LCD的VEE管腳接高電平時,因?qū)Ρ榷鹊?,導致LCD無數(shù)據(jù)顯示;而當VEE接低電平時,因?qū)Ρ榷雀?,LCD正常顯示。</p><p> 通過此次課程設計,熟悉了電子秒表的設計思想,在實踐中測試電路、分析數(shù)據(jù)、排除故障,最終實現(xiàn)了設計要求。雖然這次課
40、程設計相對簡單,但并未一次性成功,所以同樣需要嚴謹?shù)膽B(tài)度。在整個過程中不但增強了自己的學習能力,還提高了自己的團隊合作能力,這些能力在以后的工作中是很重要的!</p><p><b> ?、赬XX</b></p><p> 上周三開始焊接設計好久的電路板,到今天基本已經(jīng)完成了主要的焊接,初步總結(jié)一下這幾天的心得。</p><p> 1. 焊
41、接cup時,首先要檢查cpu的各個管腳,保證沒有彎曲或者錯位,不然焊上去之后就比較難搞了。然后將CUP各個管腳跟pcb板上的焊盤仔細的對齊(一定要保證順序,cup右上角O標記順時針方向的第一個管腳為1),然后用電烙鐵輕輕燙一下管腳,由于CPU管腳和焊盤上均有少量的殘錫,可以將CPU固定住,然后用電烙鐵依次將管腳壓平。接下來最關鍵的步驟:補錫。先在cup管腳的一端點少量焊錫,然后將一排管腳涂滿松香,快速而緩慢的劃過管腳......<
42、/p><p> 2. 焊接電路要有分塊化的思想,首先焊接電源模塊,然后測試各個供電電壓;然后焊接CPu模塊,最后成功后焊接引出的管腳。</p><p> 3. 晶振(Crystal)即為石英振蕩器,是一種機電器件,是用電損耗很小的石英晶體經(jīng)精密切割磨削并鍍上電極焊上引線做成。這種晶體有一個很重要的特性,如果給他通電,他就會產(chǎn)生機械振蕩,反之,如果給他機械力,他又會產(chǎn)生電,這種特性叫機電效應
43、。他們有一個很重要的特點,其振蕩頻率與他們的形狀,材料,切割方向等密切相關。由于石英晶體化學性能非常穩(wěn)定,熱膨脹系數(shù)非常小,其振蕩頻率也非常穩(wěn)定,由于控制幾何尺寸可以做到很精密,因此,其諧振頻率也很準確。根據(jù)石英晶體的機電效應,我們可以把它等效為一個電磁振蕩回路,即諧振回路。他們的機電效應是機-電-機-電....的不斷轉(zhuǎn)換,由電感和電容組成的諧振回路是電場-磁場的不斷轉(zhuǎn)換。在電路中的應用實際上是把它當作一個高Q值的電磁諧振回路。由于石英
44、晶體的損耗非常小,即Q 值非常高,做振蕩器用時,可以產(chǎn)生非常穩(wěn)定的振蕩,作濾波器用,可以獲得非常穩(wěn)定和陡削的帶通或帶阻曲線。</p><p> 總體來說,這次的電路焊接還是比較順利的。因為設計圖設計的很好,所以在焊接結(jié)束后,板子的功能也全都如愿的順利實現(xiàn)了。</p><p><b> ?、踃XX</b></p><p> 這學期的課程設計,
45、是利用單片機設計一些簡單控制系統(tǒng)的相關實驗,每個班有四個題目,我們分到的題目是:利用STC89C52單片機設計電子秒表,通過LCD顯示器顯示百、分、秒,通過按鍵實現(xiàn)計時、暫停、清零等功能,并且最大計時時間為300秒(即計時范圍為0.00.00-4.59.99)。</p><p> 剛剛拿到題目時,就聽周圍的同學說,這次課設我們的“電子秒表”是最簡單,課程設計的第一天老師就要求每個組必須選一位組長,并且每組組員必
46、須分工合作,我有幸被選為組長。老師講完后,我就針對每位組員的具體情況進行工作分配,我負責查資料和電路的設計及部分編程、張雪珍同學負責編程、張辛超同學負責焊電路板、夏沅睿同學負責寫實驗報告,大家分頭行動,氣樂融融。</p><p> 在電路設計初期,我對于如何設計“電子秒表”有點困惑,不了解百分秒的意思,為了讓自己心里有個底,我先在圖書館找了相關書籍,并且在網(wǎng)上查了一些“秒表”的制作實例,在資料查詢、分析并請教同
47、學后,我發(fā)現(xiàn)直接用STC89C52和液晶顯示屏1602設計最簡單。</p><p> 確定了用什么器件后,我查了STC89C52的相關知識,它們的引腳圖和各引腳的功能,以及其相關控制字,尤其是LCD1602的控制字及其初始化和顯示編程。查清楚了個器件的功能后,我開始設計電路圖。電路很簡單,最難的是軟件編程部分。硬件焊接方面,我們組的張辛超同學當仁不讓,我給他說了我的想法后,他稱焊接沒問題,而且通過以前的課程設計
48、我也見識過他的焊功,對他的硬件焊接很有信心。這個問題解決了,在數(shù)字的顯示方面遇到點麻煩,老師要求我們用LED顯示,但要按老師要求的去做,完全顯示就要接5個數(shù)碼管,這根本在PCD板上會很難焊,后來結(jié)合實際情況,我們借了一個LCD液晶顯示屏,用個底座就完全OK了。這樣不僅硬件焊接簡單,對于編程也簡單了許多。</p><p> 硬件電路設計好了,開始軟件編程和仿真,軟件仿真我是在Proteus軟件上仿真的。由于我們的
49、編程能力不是很強,我和組員張雪珍一起研究程序,遇到不懂、不會的地方就查閱資料,或者請教其他編程能力比較強的同學,經(jīng)過三天的編程調(diào)試,最終在周四我們的電路和程序完全沒問題,電路也就確定了。</p><p> 周三我和組員張辛超在實驗室焊接電路。他焊接電路,我在旁邊訂正,由于電路比簡單,經(jīng)過近三個小時的“奮戰(zhàn)”終于焊接完工,焊接過程中我、也充分見識到了張辛超同學的焊接功底。</p><p>
50、 焊接完成,周四開始調(diào)試,給89C51燒進程序,將芯片全部裝好,接通電源發(fā)現(xiàn)LCD上什么都不顯示,我仔細檢查才發(fā)現(xiàn)LCD的第3管腳接高電平了,這導致LCD的對比度太低,無法正常數(shù)字,經(jīng)更正后顯示完全正常,正式請老師驗收、答辯。</p><p> 通過這次課程設計使我懂得,腳踏實地,認真嚴謹,實事求是的學習態(tài)度,不怕困難、堅持不懈、吃苦耐勞的精神是我在這次設計中最大的收益。我想這是一次意志的磨練,是對我實際能力
51、的一次提升,也會對我未來的學習和工作有很大的幫助。在這次課程設計中也使我和同學關系更進一步了,同學之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對我們更好的理解知識。</p><p> 通過這次課設更大程度上鍛煉了我的團隊合作精神和領導能力。對我以后的學習生活有很大的幫助,它使我相信了“人的潛力是無限的”這句話,也使我懂得:只要用心,一定會發(fā)現(xiàn)每個人身上都有閃光點,只要正確運用,對別人可以增強他們的自
52、信心,對自己會快速正確的完成任務??傊?,對他人和自己都有莫大的幫助。</p><p><b> ?、躕XX:</b></p><p> 這次課程設計我們組的題目是設計一個電子秒表,有啟動,暫停、復位等鍵。計時最長長度為300秒,需顯示百分秒。據(jù)說是相對簡單的題目。</p><p> 分好組后我們每人都有分工,我的主要任務就是完成課程設計報告
53、,基本算是后期工作,所以剛開始我們一起查資料討論方案。在設計電路初期,由于我們沒有設計經(jīng)驗,通過查閱一些資料,我們的設計漸漸有了頭緒,基本確立設計方案和流程圖。就是LED顯示屏驅(qū)動電路的設計是個比較頭疼的問題,接線非常復雜, 焊電路板就會比較麻煩。后來實驗室提供LCD液晶顯示屏,就好辦了許多,解決了這個問題。我們很快確定了電路以及需要的器件,然后就是編程和仿真,開始時也遇到了很多的問題,經(jīng)過靜下心來思考,和同學討論,理清了思路,慢慢修改
54、,終于仿真成功了。</p><p> 布線時,對電路的設計、布局要先有一個好的構(gòu)思,才顯得電路板美觀、大方,在張辛超同學的努力下,做得還挺工整。電路板焊好后,檢查了沒有錯誤,將程序考入單片機后開始測試,剛開始時LCD顯示器無數(shù)據(jù)顯示,經(jīng)過對電路板各模塊的重新測試,發(fā)現(xiàn)并無問題,向別的同學請教,發(fā)現(xiàn)LCD的VEE管腳接高電平時,因?qū)Ρ榷鹊?,導致LCD無數(shù)據(jù)顯示;而當VEE接低電平時,因?qū)Ρ榷雀撸琇CD可以清晰顯示
55、。</p><p> 通過這次設計,我學到了很多知識,將學習的理論知識通過實驗融會貫通,讓我對它的理解更加深刻。由于這次課程設計不僅設計編程方面的知識,還涉及了其它學科的知識,例如PROTEUS等的基本知識??傊?,通過這次課程設計,不僅加深了我對單片機理論方面的理解,將理論更好的運用的實踐方面,而且鍛煉了我們各方面的能力,培養(yǎng)了堅強的毅力和做事的耐心和細心,同時也認識到在團隊工作中需要有合作精神,我想這會為今后
56、自己踏上工作崗位、更好地融入新的團隊打下良好的基礎。</p><p><b> 附錄:(程序)</b></p><p> ; 定義計時單元地址</p><p> MIN EQU 31H ;存放分鐘變量</p><p> SEC EQU 32H ;存放秒鐘變量&l
57、t;/p><p> DEDA EQU 33H ;存放10ms計數(shù)值 </p><p><b> ; 按鍵端口狀況值</b></p><p> K1_N EQU 34H ;存放按鍵當前端口狀況值</p><p> K1_P EQU 35H
58、;存放按鍵上次端口狀況值</p><p> K1_C EQU 37H ;存放按鍵計數(shù)單元 </p><p> X EQU 36H ;LCD 地址變量 </p><p><b> ; 按鍵引腳定義</b></p><p>
59、 K1 EQU P3.3 ;按鍵1引腳定義</p><p> K2 EQU P3.4 ;按鍵2引腳定義</p><p><b> ;LCD 引腳定義</b></p><p> RS EQU P3.5 ;LCD RS引腳定義</p><p&g
60、t; RW EQU P3.6 ;LCD RW引腳定義</p><p> E EQU P3.7 ;LCD RS引腳定義 </p><p> ORG 0000H ;程序由地址0開始執(zhí)行</p><p> JMP MAIN</p><p>
61、; ORG 0BH ;定時器0中斷地址設置</p><p> JMP T0_INT</p><p> ;――――――――――――― 主程序 ――――――――――――――</p><p> MAIN: ;開始</p><p> MOV SP,#60H
62、 ;堆棧指針指向60H </p><p> CLR E ;E=0,禁止讀/寫LCD</p><p> ACALL SET_LCD ;調(diào)LCD控制子程序</p><p> ACALL INIT ;初始化變量</p><p>
63、 MOV K1_P,#01H ;按鍵上次端口設置1</p><p> ACALL INIT_TIMER ;調(diào)用初始化定時器</p><p> ACALL MEU ;調(diào)用工作菜單子程序</p><p> LOOP:ACALL CONV ;時間計數(shù)處理</p>
64、<p> ACALL LOOP1 ;調(diào)用清零鍵子程序</p><p> ACALL KEY ;判斷是否有鍵按下</p><p> JZ LOOP ;無鍵按下轉(zhuǎn)LOOP</p><p> MOV K1_P,K1_N ;交換數(shù)據(jù)</p&
65、gt;<p> ACALL KEY0 ;調(diào)用按鍵功能子程序</p><p> JMP LOOP ;跳LOOP處循環(huán) </p><p> ; 初始變量清零子程序</p><p> INIT: ;初始變量清零</p>
66、<p> CLR A ;A清為零</p><p> MOV K1_C,A ;K1_C 初始為0</p><p> MOV DEDA,A ;百分秒DEDA初始為0</p><p> MOV SEC,A ;秒SEC初始為0</p&g
67、t;<p> MOV MIN,A ;分MIN初始為0</p><p> MOV K1_N,A ;K1_N初始為0</p><p> MOV K1_P,A ;K1_P初始為0</p><p> CLR TR0 ;啟動中斷</p&g
68、t;<p> RET </p><p> ;―――――――――――――――――――――</p><p> ;定時器初始化設置子程序</p><p> INIT_TIMER: ;定時器初始化</p><p> MOV T
69、MOD,#00000001B ;定時器0模式1</p><p> MOV IE, #10000010B ;開通中斷</p><p> MOV TL0,#LOW(65536-10000);定時初值裝入低位</p><p> MOV TH0,#HIGH(65536-10000);定時初值裝入高位</p><p> RET
70、 </p><p><b> ;中斷服務程序 </b></p><p> T0_INT: ;定時器T0中斷程序 </p><p> PUSH ACC ;入棧保護</p><p&g
71、t; MOV TL0,#LOW(65536-10000) ;重加載</p><p> MOV TH0,#HIGH(65536-10000)</p><p><b> INC DEDA</b></p><p> MOV A,DEDA ;10ms 計數(shù)值加1</p><p> CJNE
72、 A,#100,TT</p><p> MOV DEDA,#0</p><p> INC SEC ;秒加1</p><p> MOV A,SEC</p><p> CJNE A,#60,TT</p><p> INC MIN ;分加1
73、</p><p> MOV SEC,#0</p><p> MOV A,MIN</p><p> CJNE A,#05,TT</p><p> MOV DEDA,#0 ;百、分、秒單元清0</p><p> MOV SEC,#0 </p>
74、<p> MOV MIN,#0</p><p> TT: POP ACC ;出棧</p><p> RETI ;中斷程序返回 </p><p> ;―――――――――――――――――――――</p><p> ;判斷鍵是否按下子程序<
75、;/p><p><b> LOOP1:</b></p><p> JB K2,LOOP2 ;判清零鍵是否按下</p><p> JMP MAIN ;跳轉(zhuǎn)主程序處</p><p> LOOP2: RET
76、 </p><p> ; 判斷K1鍵是否按下</p><p><b> KEY: </b></p><p> CLR A ;A清零</p><p> MOV K1_N,A ;A值送入K1_N</p><p> MOV C,K
77、1 ;K1值送入C</p><p> RLC A ;同進位標志左移一位</p><p> ORL K1_N,A ;兩個位作邏輯OR運算</p><p> MOV A,K1_N ;K1_N值送入A</p><p> XRL A,K1_P
78、 ;有鍵按下,A 中內(nèi)容不為零</p><p> RET </p><p><b> ;功能鍵子程序</b></p><p> ;K1鍵第一次按功能子程序</p><p> KEY0: </p><p> MO
79、V A, K1_P ;K1_P值送入A</p><p> JB ACC.0,KEY3 ;A的0位是1,轉(zhuǎn)KEY3</p><p> INC K1_C ;K1_C加1</p><p> MOV A, K1_C ;K1_C值送入A </p><p> CJN
80、E A,#01H,KEY1 ;K1鍵是否第一次按?</p><p> MOV DPTR,#MENU1 ;是,存入MENU1信息</p><p> MOV A,#1 ;設置第一行顯示</p><p> CALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p> SE
81、TB TR0 ;啟動中斷</p><p> RET </p><p> ;K1鍵第二次按功能子程序</p><p> KEY1: </p><p> MOV A,K1_C ;K1_C值送入A </p&g
82、t;<p> CJNE A,#02H,KEY2 ;K1鍵是否第二次按?</p><p> MOV DPTR,#MENU2 ;是,存入MENU2信息</p><p> MOV A,#1 ;設置第一行顯示</p><p> CALL LCD_PRINT ;調(diào)用顯示字符子程序<
83、;/p><p> CLR TR0 ;停止中斷</p><p> RET ; </p><p> ;K1鍵第三次按功能子程序</p><p> KEY2: </p><p> MOV A, K1
84、_C ;K1_C值送入A</p><p> CJNE A, #03H,KEY3 ;K1鍵是否第三次按?</p><p> MOV DPTR,#MENU3 ;是,存入MENU3信息</p><p> MOV A, #1 ;設置第一行顯示</p><p> CALL L
85、CD_PRINT ;調(diào)用顯示字符子程序</p><p> SETB TR0 ;啟動中斷</p><p> RET </p><p> ;K1鍵第四按功能子程序</p><p> KEY3:
86、 </p><p> MOV A,K1_C ;K1_C值送入A</p><p> CJNE A,#04H,KEY4 ;K1鍵是否第四次按?</p><p> MOV DPTR,#MENU4 ;是,存入MENU4信息</p><p> MOV A,#1 ;
87、設置第一行顯示</p><p> CALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p> CLR TR0 ;啟動中斷</p><p><b> KEY4: </b></p><p> RET ;子程序返回
88、</p><p> ;――――――――――――― LCD顯示 ――――――――――――――</p><p> ; LCD控制子程序</p><p> SET_LCD: ; </p><p><b> CLR E</b></p><p> ACALL INIT_LCD
89、 ;初始化 LCD</p><p> MOV R5,#10</p><p> ACALL DELAY</p><p> MOV DPTR,#LMESS1 ;指針指到顯示消息1</p><p> MOV A,#1 ;顯示在第一行</p><p> ACALL LCD_PR
90、INT ;調(diào)用顯示字符子程序</p><p> MOV DPTR,#LMESS2 ;指針指到顯示消息2</p><p> MOV A,#2 ;顯示在第二行</p><p> ACALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p> RET
91、 </p><p> LMESS1: DB " ",0 ;LCD 第一行顯示消息</p><p> LMESS2: DB "TIME ",0 ;LCD 第二行顯示消息</p><p> ;LCD初始化子程序</p><p> I
92、NIT_LCD: </p><p> MOV A,#38H ;設置8位、2行、5x7點陣 </p><p> ACALL WR_COMM ; 調(diào)用寫指令子程序</p><p> ACALL DELAY1 ;調(diào)用延時子程序</p><p> MOV A,#0CH
93、 ;開顯示,光標不閃爍</p><p> ACALL WR_COMM ;調(diào)用寫指令子程序 ;</p><p> ACALL DELAY1 ;調(diào)用延時子程序</p><p> MOV A,#01H ;清除 LCD 顯示屏</p><p> ACALL WR_CO
94、MM ;調(diào)用寫指令子程序 ;</p><p> ACALL DELAY1 ;調(diào)用延時子程序</p><p> RET </p><p> ;寫指令子程序 </p><p> WR_COMM:
95、 </p><p> MOV P1,A </p><p> CLR RS ;RS=0,選擇指令寄存器</p><p> CLR RW ;RW=0,選擇寫模式</p><p> SETB E ;E=1,允許讀/寫LCM
96、</p><p> ACALL DELAY1 ;調(diào)用延時子程序 </p><p> CLR E ;E=0,禁止讀/寫LCM</p><p> RET </p><p><b> ;寫數(shù)據(jù)子程序<
97、;/b></p><p> WR_DATA: </p><p> MOV P1,A </p><p> SETB RS ;RS=1,選擇數(shù)據(jù)寄存器</p><p> CLR RW ;RW=0,選擇寫模式</p><p
98、> SETB E ;E=1,允許讀/寫LCD</p><p> ACALL DE ;調(diào)用延時子程序</p><p> CLR E ;E=0,禁止讀/寫LCD</p><p> ACALL DE ;調(diào)用延時子程序</p><p>
99、RET </p><p> ;清除該行 LCD 的字符</p><p> CLR_LINE: MOV R0,#24</p><p> CL1: MOV A,#' '</p><p> ACALL WR_DAT
100、A</p><p> DJNZ R0,CL1</p><p> RET </p><p> ;LCD 存入工作菜單</p><p> MEU: </p><p> MOV DPTR,#MENU0
101、 ;存入工作菜單 </p><p> MOV A,#1 ;第一行</p><p> CALL LCD_PRINT</p><p><b> RET</b></p><p><b> ; 工作菜單</b></p><p> M
102、ENU0: DB " SECOND-CLOCK 0 ",0</p><p> MENU1: DB " BEGIN COUNT 1 ",0</p><p> MENU2: DB " PAUST COUNT 2 ",0</p><p> MENU3: DB " BEG
103、IN COUNT 3 ",0</p><p> MENU4: DB " PAUST COUNT 4 ",0 </p><p><b> ;菜單顯示子程序</b></p><p> ;一行、二行顯示字符</p><p> LCD_PRINT: <
104、;/p><p> CJNE A,#1,LINE2 ;判斷是否為第一行</p><p><b> LINE1: </b></p><p> ACALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p> MOV A, #80H ;設置 LCD 的第一行地址<
105、/p><p> ACALL WR_COMM ;寫入命令</p><p> JMP FILL</p><p><b> LINE2: </b></p><p> ACALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p> MOV A,#0C
106、0H ;設置 LCD 的第二行地址</p><p> ACALL WR_COMM</p><p> FILL: CLR A ;填入字符</p><p> MOVC A,@A+DPTR ;由消息區(qū)取出字符</p><p> CJNE A,#0,LC1 ;判斷
107、是否為結(jié)束碼</p><p> RET </p><p><b> ;寫入數(shù)據(jù)</b></p><p> LC1: ACALL WR_DATA </p><p> INC DPTR ;指針加1&l
108、t;/p><p> JMP FILL ;繼續(xù)填入字符</p><p> RET </p><p><b> ;轉(zhuǎn)換數(shù)據(jù)子程 </b></p><p> CONV: ;轉(zhuǎn)換為 ASCII 碼并顯示<
109、/p><p> MOV X,#5 ;設置位置</p><p> ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p> INC X ;</p><p> MOV A,#':' ;</p><p>
110、; MOV B,X ;</p><p> ACALL LCDP2 ;</p><p> MOV A,MIN ;加載分鐘數(shù)據(jù)</p><p> INC X ;設置位置</p><p> ACALL SKOW_LINE2
111、 ;顯示數(shù)據(jù)</p><p> INC X ;</p><p> MOV A,#':' ;</p><p> MOV B,X ;</p><p> ACALL LCDP2 ;</p><
112、;p> MOV A,SEC ;加載秒數(shù)數(shù)據(jù)</p><p> INC X ;設置位置</p><p> ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p> INC X ;</p><p> MOV A,#
113、39;:' ;</p><p> MOV B,X ;</p><p> CALL LCDP2 ;</p><p> MOV A,DEDA ;加載秒數(shù)數(shù)據(jù)</p><p> INC X ;設置位置
114、</p><p> ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p> RET ; </p><p> ;在 LCD 的第二行顯示數(shù)字 </p><p> SKOW_LINE2: </p><p> MOV B
115、,#10 ;設置被除數(shù)</p><p> DIV AB ;結(jié)果A存商數(shù),B存余數(shù)</p><p> ADD A,#30H ;A為十位數(shù),轉(zhuǎn)換為字符</p><p> PUSH B ;B放入堆棧暫存</p><p> MOV B,X
116、 ;設置 LCD 顯示的位置</p><p> ACALL LCDP2 ;由 LCD 顯示出來</p><p> POP B ;出棧</p><p> MOV A,B ;B為個位數(shù)</p><p> ADD A,#30H ;轉(zhuǎn)
117、換為字符</p><p> INC X ;LCD 顯示位置加1</p><p> MOV B,X ;設置 LCD 顯示的位置</p><p> ACALL LCDP2 ;由 LCD 顯示出來 </p><p> RET
118、 </p><p> ;在LCD的第二行顯示字符</p><p> LCDP2: </p><p> PUSH ACC ;</p><p> MOV A,B ;設置顯示地址</p><p> ADD A,#
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論