基于單片機電子秒表系統(tǒng)設計課程設計說明_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《測控儀器設計》課程設計說明書</p><p>  設計題目: 基于單片機電子秒表系統(tǒng)設計 </p><p>  院 系: 機械與材料工程學院 </p><p>  專 業(yè): 測控技術與儀器 </p><p>  班 級:

2、 A1121 班 </p><p>  學 號: X X </p><p>  姓 名: X X </p><p>  指導教師: X X </p><p>  二零一四 年

3、十一月</p><p><b>  目錄</b></p><p>  一、設計要求 ............................................................................................1</p><p>  二、設計方案分析 ……………………………………….……

4、………..1</p><p>  2.1方案設計 …………………………………………………….…1</p><p>  2.2背景知識介紹 ……………………………………………....….2</p><p>  三、硬件分析 ……………………………………….…………….……..5</p><p>  3.1單片機簡介 ……………………………………

5、……………….5</p><p>  3.2電源電路 …………………………………………………...…..5</p><p>  3.3晶體振蕩電路 ………………………………………………….5</p><p>  3.4復位電路 ………………………………………………….……5</p><p>  3.5顯示電路 …………………………………………

6、…………….6</p><p>  3.6鍵盤電路 ………………………………………………...……..6</p><p>  四、硬件主電路圖設計 ………………….………………….…….……7</p><p>  五、軟件設計 ……………………………………………………………7</p><p>  5.1軟件設計概述 ……………………………….

7、…………………7</p><p>  5.2主程序流程圖 ……………………………………….…………7</p><p>  六、測試數(shù)據(jù)及設計結果 …………………………………….………..8</p><p>  七、總結 …………………………………………………….……..……8</p><p>  附錄1 程序 ………………..……………………

8、……………..….…….9</p><p>  附錄2 protues電路圖 ………………………..…………...…………..16</p><p>  附錄3仿真圖 ………………………………………………...………..17</p><p>  參考文獻 ………………………………………………………...…….18</p><p><b&g

9、t;  一、設計要求</b></p><p>  設計一個電子秒表,與通用秒表功能類似,有啟動,暫停、復位等鍵。計時長長度為300秒,需顯示百分秒。</p><p><b>  設計方案分析</b></p><p><b>  2.1方案設計</b></p><p>  數(shù)字電子秒表具有

10、顯示直觀、讀取方便、精度高等優(yōu)點,在計時中廣泛使用。本設計用單片機組成數(shù)字電子秒表,力求結構簡單、精度高為目標。</p><p>  本系統(tǒng)采用C51系列單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結合硬件電路如電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等來設計計時器,將軟、硬件有機地結合起來。其中軟件系統(tǒng)采用匯編語言編寫程序,硬件系統(tǒng)利用PROTEUS強大的功能來實現(xiàn),簡單切易于觀察,

11、在仿真中就可以觀察到實際的工作狀態(tài)。</p><p>  本設計利用AT89C51單片機的定時器/計數(shù)器定時和計數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。根據(jù)要求知道秒表設計主要實現(xiàn)的功能是計時和顯示。因此設置了兩個按鍵和LCD顯示時間,兩個按鍵分別是開始、停止和復位按鍵。利用這兩個建來實現(xiàn)秒表的全部功能,而LCD則能顯示最多4.59.99秒的計時。電路原理圖設計最基本的要求是正確性,其次是

12、布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖1.1進行設計。</p><p>  圖1.1 數(shù)字秒表硬件電路基本原理圖</p><p>  本設計中,數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元31H-33H中。其中31H存放分鐘變量,32H存放秒鐘變量,33H存放10ms計數(shù)值,即存放毫秒位數(shù)據(jù),每一地址單元內(nèi)均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制

13、BCD碼數(shù)據(jù)的對應段碼存放在ROM表中。顯示時,先取出31H-33H某一地址中的數(shù)據(jù),然后查得對應的顯示位,并從P1口輸出,就能顯示該地址單元的數(shù)據(jù)值。</p><p>  計時通過中斷完成,定時溢出中斷周期為1ms,當一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到4.59.99秒重新復位。 </p><p>

14、  再看按鍵的處理。這兩個鍵可以采用中斷的方法,也可以采用掃描的方法來識別。復位鍵主要功能在于數(shù)值復位,對于時間的要求不是很嚴格。而開始和停止鍵則是用于對時間的鎖定,需要比較準確的控制。因此可以對復位按鍵采取掃描的方式。而對開始和停止鍵采用外部中斷的方式。</p><p>  設計中包括硬件電路的設計和系統(tǒng)程序的設計。其硬件電路主要有主控制器,顯示電路和回零、啟動、查看、停表電路等。主控制器采用單片機STC89C

15、52,顯示電路采用LCD顯示計時時間,兩個按鍵均采用觸點式按鍵。 </p><p><b>  2.2背景知識介紹</b></p><p>  2.2.1 單片機相關知識</p><p>  本課題在選取單片機時,充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗,并根據(jù)自己的實際情況,  選擇了AT89C51。</p><p

16、>  AT89C51單片機采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖, 40條引腳說明如下:</p><p>  主電源引腳Vss和Vcc</p><p><b>  ① Vss接地</b></p><p>  ② Vcc正常操作時為+5伏電源</p><p>  外接晶振引腳XTAL1和XTAL2&

17、lt;/p><p>  ① XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當采用外部振蕩器時,此引腳接地。 </p><p> ?、?XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當采用外部振蕩器時,此引腳接外部振蕩源。 1.2 STC89C51單片機引腳圖</p><p>  控制或與其

18、它電源復用引腳RST/VPD,ALE/,和/Vpp</p><p> ?、?RST/VPD 當振蕩器運行時,在此引腳上出現(xiàn)兩個機器周期的高電平(由低到高跳變),將使單片機復位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。</p><p> ?、?ALE/正常操作時為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引

19、腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。但要注意,每當訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖,ALE 端可以驅(qū)動(吸收或輸出電流)八個LSTTL電路。對于EPROM型單片機,在EPROM編程期間,此引腳接收編程脈沖(功能)</p><p> ?、?外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數(shù)據(jù))期間,在每個機器周期內(nèi)兩次有效。

20、同樣可以驅(qū)動八LSTTL輸入。</p><p> ?、?/Vpp、/Vpp為內(nèi)部程序存儲器和外部程序存儲器選擇端。當/Vpp為高電平時,訪問內(nèi)部程序存儲器,當/Vpp為低電平時,則訪問外部程序存儲器。對于EPROM型單片機,在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。</p><p>  輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 -

21、P2.7,P3.0 - P3.7。</p><p> ?、?P0口(P0.0 - P0.7)是一個8位漏極開路型雙向I/O口,在訪問外部存儲器時,它是分時傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動八個LSTTL負載。</p><p> ?、?P1口(P1.0 - P1.7)是一個帶有內(nèi)部提升電阻的8位準雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負載。</p

22、><p>  ③ P2口(P2.0 - P2.7)是一個帶有內(nèi)部提升電阻的8位準雙向I/O口,在訪問外部存儲器時,它輸出高8位地址。P2口可以驅(qū)動(吸收或輸出電流)四個LSTTL負載。</p><p> ?、?P3口(P3.0 - P3.7)是一個帶有內(nèi)部提升電阻的8位準雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負載。</p><p>  AT89C51具

23、有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89C52可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。CP

24、U是單片機的核心部件。它由運算器和控制器等部件組成。</p><p><b> ?。?) 運算器</b></p><p>  運算器的功能是進行算術運算和邏輯運算??梢詫Π胱止?jié)(4位)、單字節(jié)等數(shù)據(jù)進行操作。例如能完成加、減、乘、除、加1、減1、BCD碼十進制調(diào)整、比較等算術運算和與、或、異或、求補、循環(huán)等邏輯操作,操作結果的狀態(tài)信息送至狀態(tài)寄存器。</p>

25、;<p>  89C51運算器還包含有一個布爾處理器,用來處理位操作。它是以進位標志位C為累加器的,可執(zhí)行置位、復位、取反、等于1轉(zhuǎn)移、等于0轉(zhuǎn)移、等于1轉(zhuǎn)移且清0以及進位標志位與其他可尋址的位之間進行數(shù)據(jù)傳送等位操作,也能使進位標志位與其他可移位尋址的位之間進行邏輯與、或操作。</p><p>  (2) 程序計數(shù)器PC</p><p>  程序計數(shù)器PC用來存放即將要執(zhí)行

26、的指令地址,共16位,可對64K程序存儲器直接尋址。執(zhí)行指令時,PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。</p><p><b>  (3) 令寄存器</b></p><p>  指令寄存器中存放指令代碼。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時與控制電路發(fā)出相應的控制信號,完成指令功能。</p><p

27、>  本設計采用ATMEL的AT89C51微處理器,主要基于以下幾個因素:</p><p> ?、?AT89C52為51內(nèi)核,仿真調(diào)試的軟硬件資源豐富。</p><p> ?、?性價比高,貨源充足。</p><p>  ③ 功耗低,功能強,靈活性高。</p><p> ?、?DIP40封裝,體積小,便于產(chǎn)品小型化。</p&

28、gt;<p> ?、?為EEPROM程序存儲介質(zhì),1000次以上擦寫周期,便于編程調(diào)試。</p><p> ?、?工作電壓范圍寬:2.7V-6V,便于交直流供電。</p><p>  2.2.2 TC1602</p><p>  LCD 的構造是在兩片平行的玻璃當中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細小電線,透過通電與否來控制桿狀水晶

29、分子改變方向,將光線折射出來產(chǎn)生畫面。比CRT要好的多,但是價錢較其貴。</p><p><b>  1)LCD的特點</b></p><p><b>  低壓微功耗 </b></p><p><b>  平板型結構 </b></p><p>  被動顯示型(無眩光,不刺激人眼

30、,不會引起眼睛疲勞) </p><p>  顯示信息量大(因為像素可以做得很小) </p><p>  易于彩色化(在色譜上可以非常準確的復現(xiàn)) </p><p>  無電磁輻射(對人體安全,利于信息保密) </p><p>  長壽命(這種器件幾乎沒有什么劣化問題,因此壽命極長,但是液晶背光壽命有限,不過背光部分可以更換)</p>

31、;<p><b>  三、硬件設計</b></p><p>  本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等。</p><p><b>  3.1單片機簡介</b></p><p>  本系統(tǒng)設計采用C51系列單片機。</p><p>  AT89

32、C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容(由于在微機原理中學過C-51的具體知識,這里不再詳細說明)。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,AT89C51是一種高效的微控制器。</p><p><b>  3.2電源電路</b><

33、/p><p>  電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,由于三端集成穩(wěn)壓器件所組成的穩(wěn)壓電源線路簡單,性能穩(wěn)定,工作可靠,調(diào)整方便,已逐漸取代分立元件,在生產(chǎn)中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5V穩(wěn)壓電壓。</p><p><b>  3.3晶體振蕩電路</b></p><p>  MCS--51單片機內(nèi)部的振蕩

34、電路是一個高增益反相放大器,引線 XTAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反向振蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器。</p><p>  這里,我們選用51單片機12MHZ的內(nèi)部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線時要使晶體振蕩器X1盡可能接近單片機。</p>&l

35、t;p><b>  圖2 晶體振蕩電路</b></p><p><b>  3.4復位電路</b></p><p>  采用上電+按鍵復位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使用使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加開關復位的操作。這不僅能使單片機復位,而且還能使</p&

36、gt;<p>  單片機的外圍芯片也同時復位。當程序出現(xiàn)錯誤時,可以隨時使電路復位。</p><p><b>  電路圖如下:</b></p><p><b>  圖3 復位電路</b></p><p><b>  3.5顯示電路</b></p><p>  顯示

37、電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用2個共陽極LED顯示,LED是七段式顯示器,內(nèi)部有7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。</p><p>  在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。</p><p>  在

38、設計中,我們采用LED動態(tài)顯示,用P0口驅(qū)動顯示。由于P0口的輸出級是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出高電平。</p><p><b>  電路圖如下所示:</b></p><p><b>  圖4 顯示電路</b></p><p><b>  3.6鍵盤電路</b></p>

39、<p>  在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P3口做開關,P3.3為開始停止,P3.4為清零,用外部中斷INT1開始,另外用軟件法消除抖動。電路圖如下所示:</p>&l

40、t;p><b>  圖5 鍵盤電路</b></p><p>  四、硬件主電路圖設計</p><p>  用pretues畫出其硬件主電路圖詳見附錄。</p><p><b>  五、軟件設計</b></p><p><b>  5.1軟件設計概述</b></p&g

41、t;<p>  在軟件設計中,一般采用模塊化的程序設計方法,它具有明顯的優(yōu)點。把一個多功能的復雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設計和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結構層次一目了然。</p><p>  應用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都要完成一個明確的任務,實現(xiàn)某個具體的功能,在具體需要時調(diào)用相應的模塊即

42、可。</p><p>  功能描述:用LCD1602液晶顯示"秒表",顯示時間為0.00.00—4.59.99秒,每秒自動加1;一個"開始""暫停"鍵,一個"清零"鍵。</p><p><b>  5.2主程序流程圖</b></p><p>  這里采用順序結構,通

43、過對按鍵的掃描,判斷要實現(xiàn)什么功能。如下所示:</p><p>  六、測試數(shù)據(jù)及設計結果</p><p><b>  詳見附錄。</b></p><p><b>  七、總結</b></p><p>  通過此次設計,我學到了很多知識,將學習的理論知識通過實驗融會貫通,讓我對它的理解更加深刻。對于

44、Proteus及Keil軟件及系統(tǒng)運行及操作又有了更進一步的了解和運用,并增強了我們的動手能力,也更深刻的接觸所學與實物的結合。由于這次課程設計不僅設計編程方面的知識,還涉及了其它學科的知識,例如PROTEUS等的基本知識??傊?,通過這次課程設計,不僅加深了我對單片機理論方面的理解,將理論更好的運用的實踐方面,而且鍛煉了我們各方面的能力,培養(yǎng)了堅強的毅力和做事的耐心和細心,同時也認識到在團隊工作中需要有合作精神,我想這會為今后自己踏上工

45、作崗位、更好地融入新的團隊打下良好的基礎。</p><p><b>  附錄1:(程序)</b></p><p>  ; 定義計時單元地址</p><p>  MIN EQU 31H ;存放分鐘變量</p><p>  SEC EQU 32H ;存放秒鐘變量</p

46、><p>  DEDA EQU 33H ;存放10ms計數(shù)值 </p><p><b>  ; 按鍵端口狀況值</b></p><p>  K1_N EQU 34H ;存放按鍵當前端口狀況值</p><p>  K1_P EQU 35H ;存放按

47、鍵上次端口狀況值</p><p>  K1_C EQU 37H ;存放按鍵計數(shù)單元 </p><p>  X EQU 36H ;LCD 地址變量 </p><p><b>  ; 按鍵引腳定義</b></p><p>  K1

48、 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>  

49、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>  O

50、RG 0BH ;定時器0中斷地址設置</p><p>  JMP T0_INT</p><p>  ;――――――――――――― 主程序 ――――――――――――――</p><p>  MAIN: ;開始</p><p>  MOV SP,#60H

51、 ;堆棧指針指向60H </p><p>  CLR E ;E=0,禁止讀/寫LCD</p><p>  ACALL SET_LCD ;調(diào)LCD控制子程序</p><p>  ACALL INIT ;初始化變量</p><p>  MOV

52、 K1_P,#01H ;按鍵上次端口設置1</p><p>  ACALL INIT_TIMER ;調(diào)用初始化定時器</p><p>  ACALL MEU ;調(diào)用工作菜單子程序</p><p>  LOOP:ACALL CONV ;時間計數(shù)處理</p><

53、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>

54、<p>  ACALL KEY0 ;調(diào)用按鍵功能子程序</p><p>  JMP LOOP ;跳LOOP處循環(huán) </p><p>  ; 初始變量清零子程序</p><p>  INIT: ;初始變量清零</p><

55、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>

56、<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>

57、<p>  RET </p><p>  ;―――――――――――――――――――――</p><p>  ;定時器初始化設置子程序</p><p>  INIT_TIMER: ;定時器初始化</p><p>  MOV TMOD,

58、#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

59、 </p><p><b>  ;中斷服務程序 </b></p><p>  T0_INT: ;定時器T0中斷程序 </p><p>  PUSH ACC ;入棧保護</p><p>  

60、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 A,

61、#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<

62、/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><

63、;p>  MOV MIN,#0</p><p>  TT: POP ACC ;出棧</p><p>  RETI ;中斷程序返回 </p><p>  ;―――――――――――――――――――――</p><p>  ;判斷鍵是否按下子程序</p&

64、gt;<p><b>  LOOP1:</b></p><p>  JB K2,LOOP2 ;判清零鍵是否按下</p><p>  JMP MAIN ;跳轉(zhuǎn)主程序處</p><p>  LOOP2: RET &l

65、t;/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,K1

66、 ;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

67、 ;有鍵按下,A 中內(nèi)容不為零</p><p>  RET </p><p><b>  ;功能鍵子程序</b></p><p>  ;K1鍵第一次按功能子程序</p><p>  KEY0: </p><p>  MOV A

68、, 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>  CJNE A,

69、#01H,KEY1 ;K1鍵是否第一次按?</p><p>  MOV DPTR,#MENU1 ;是,存入MENU1信息</p><p>  MOV A,#1 ;設置第一行顯示</p><p>  CALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p>  SETB T

70、R0 ;啟動中斷</p><p>  RET </p><p>  ;K1鍵第二次按功能子程序</p><p>  KEY1: </p><p>  MOV A,K1_C ;K1_C值送入A </p>

71、<p>  CJNE A,#02H,KEY2 ;K1鍵是否第二次按?</p><p>  MOV DPTR,#MENU2 ;是,存入MENU2信息</p><p>  MOV A,#1 ;設置第一行顯示</p><p>  CALL LCD_PRINT ;調(diào)用顯示字符子程序</p&

72、gt;<p>  CLR TR0 ;停止中斷</p><p>  RET ; </p><p>  ;K1鍵第三次按功能子程序</p><p>  KEY2: </p><p>  MOV A, K1_C

73、 ;K1_C值送入A</p><p>  CJNE A, #03H,KEY3 ;K1鍵是否第三次按?</p><p>  MOV DPTR,#MENU3 ;是,存入MENU3信息</p><p>  MOV A, #1 ;設置第一行顯示</p><p>  CALL LCD_P

74、RINT ;調(diào)用顯示字符子程序</p><p>  SETB TR0 ;啟動中斷</p><p>  RET </p><p>  ;K1鍵第四按功能子程序</p><p>  KEY3: &

75、lt;/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 ;設置第一

76、行顯示</p><p>  CALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p>  CLR TR0 ;啟動中斷</p><p><b>  KEY4: </b></p><p>  RET ;子程序返回 <

77、/p><p>  ;――――――――――――― LCD顯示 ――――――――――――――</p><p>  ; LCD控制子程序</p><p>  SET_LCD: ; </p><p><b>  CLR E</b></p><p>  ACALL INIT_LCD

78、 ;初始化 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_PRINT

79、 ;調(diào)用顯示字符子程序</p><p>  MOV DPTR,#LMESS2 ;指針指到顯示消息2</p><p>  MOV A,#2 ;顯示在第二行</p><p>  ACALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p>  RET

80、 </p><p>  LMESS1: DB " ",0 ;LCD 第一行顯示消息</p><p>  LMESS2: DB "TIME ",0 ;LCD 第二行顯示消息</p><p>  ;LCD初始化子程序</p><p>  INIT_

81、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

82、 ;開顯示,光標不閃爍</p><p>  ACALL WR_COMM ;調(diào)用寫指令子程序 ;</p><p>  ACALL DELAY1 ;調(diào)用延時子程序</p><p>  MOV A,#01H ;清除 LCD 顯示屏</p><p>  ACALL WR_COMM

83、 ;調(diào)用寫指令子程序 ;</p><p>  ACALL DELAY1 ;調(diào)用延時子程序</p><p>  RET </p><p>  ;寫指令子程序 </p><p>  WR_COMM:

84、 </p><p>  MOV P1,A </p><p>  CLR RS ;RS=0,選擇指令寄存器</p><p>  CLR RW ;RW=0,選擇寫模式</p><p>  SETB E ;E=1,允許讀/寫LCM<

85、/p><p>  ACALL DELAY1 ;調(diào)用延時子程序 </p><p>  CLR E ;E=0,禁止讀/寫LCM</p><p>  RET </p><p><b>  ;寫數(shù)據(jù)子程序</b&

86、gt;</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>

87、  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>  RET

88、 </p><p>  ;清除該行 LCD 的字符</p><p>  CLR_LINE: MOV R0,#24</p><p>  CL1: MOV A,#' '</p><p>  ACALL WR_DATA<

89、;/p><p>  DJNZ R0,CL1</p><p>  RET </p><p>  ;LCD 存入工作菜單</p><p>  MEU: </p><p>  MOV DPTR,#MENU0

90、 ;存入工作菜單 </p><p>  MOV A,#1 ;第一行</p><p>  CALL LCD_PRINT</p><p><b>  RET</b></p><p><b>  ; 工作菜單</b></p><p>  MENU0

91、: 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 " BEGIN C

92、OUNT 3 ",0</p><p>  MENU4: DB " PAUST COUNT 4 ",0 </p><p><b>  ;菜單顯示子程序</b></p><p>  ;一行、二行顯示字符</p><p>  LCD_PRINT: </p&

93、gt;<p>  CJNE A,#1,LINE2 ;判斷是否為第一行</p><p><b>  LINE1: </b></p><p>  ACALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p>  MOV A, #80H ;設置 LCD 的第一行地址</p&g

94、t;<p>  ACALL WR_COMM ;寫入命令</p><p>  JMP FILL</p><p><b>  LINE2: </b></p><p>  ACALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p>  MOV A,#0C0H

95、 ;設置 LCD 的第二行地址</p><p>  ACALL WR_COMM</p><p>  FILL: CLR A ;填入字符</p><p>  MOVC A,@A+DPTR ;由消息區(qū)取出字符</p><p>  CJNE A,#0,LC1 ;判斷是否為結

96、束碼</p><p>  RET </p><p><b>  ;寫入數(shù)據(jù)</b></p><p>  LC1: ACALL WR_DATA </p><p>  INC DPTR ;指針加1</p

97、><p>  JMP FILL ;繼續(xù)填入字符</p><p>  RET </p><p><b>  ;轉(zhuǎn)換數(shù)據(jù)子程 </b></p><p>  CONV: ;轉(zhuǎn)換為 ASCII 碼并顯示</p&g

98、t;<p>  MOV X,#5 ;設置位置</p><p>  ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p>  INC X ;</p><p>  MOV A,#':' ;</p><p>  M

99、OV B,X ;</p><p>  ACALL LCDP2 ;</p><p>  MOV A,MIN ;加載分鐘數(shù)據(jù)</p><p>  INC X ;設置位置</p><p>  ACALL SKOW_LINE2

100、;顯示數(shù)據(jù)</p><p>  INC X ;</p><p>  MOV A,#':' ;</p><p>  MOV B,X ;</p><p>  ACALL LCDP2 ;</p><p&g

101、t;  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,#':

102、' ;</p><p>  MOV B,X ;</p><p>  CALL LCDP2 ;</p><p>  MOV A,DEDA ;加載秒數(shù)數(shù)據(jù)</p><p>  INC X ;設置位置<

103、/p><p>  ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p>  RET ; </p><p>  ;在 LCD 的第二行顯示數(shù)字 </p><p>  SKOW_LINE2: </p><p>  MOV B,#10

104、 ;設置被除數(shù)</p><p>  DIV AB ;結果A存商數(shù),B存余數(shù)</p><p>  ADD A,#30H ;A為十位數(shù),轉(zhuǎn)換為字符</p><p>  PUSH B ;B放入堆棧暫存</p><p>  MOV B,X

105、 ;設置 LCD 顯示的位置</p><p>  ACALL LCDP2 ;由 LCD 顯示出來</p><p>  POP B ;出棧</p><p>  MOV A,B ;B為個位數(shù)</p><p>  ADD A,#30H ;轉(zhuǎn)換為字符

106、</p><p>  INC X ;LCD 顯示位置加1</p><p>  MOV B,X ;設置 LCD 顯示的位置</p><p>  ACALL LCDP2 ;由 LCD 顯示出來 </p><p>  RET

107、 </p><p>  ;在LCD的第二行顯示字符</p><p>  LCDP2: </p><p>  PUSH ACC ;</p><p>  MOV A,B ;設置顯示地址</p><p>  ADD A,#0C0H

108、 ;設置LCD的第二行地址</p><p>  CALL WR_COMM ;寫入命令</p><p>  POP ACC ;由堆棧取出A</p><p>  CALL WR_DATA ;寫入數(shù)據(jù) </p><p>  RET

109、 </p><p><b>  ;延時10MS</b></p><p>  DELAY: </p><p>  MOV R6,#50</p><p>  D1:MOV R7,#100</p><p&

110、gt;  DJNZ R7,$</p><p>  DJNZ R6,D1</p><p>  DJNZ R5,DELAY</p><p>  RET </p><p><b>  ;延時5MS子程序</b></p><p> 

111、 DELAY1: </p><p>  MOV R6,#25</p><p>  DEY: MOV R7,#100</p><p>  DJNZ R7,$</p><p>  DJNZ R6,DEY</p><p>  RET

112、 </p><p><b>  ;延時500微秒</b></p><p>  DE: </p><p>  DJNZ R7,$</p><p>  RET </p><p> 

113、 END ;程序結束</p><p>  附錄2:Proteus電路圖</p><p><b>  附錄3:仿真圖</b></p><p><b>  參考文獻</b></p><p>  [1] 閻石.數(shù)字電子技術基礎第四版[M].北京:高等教育出版社,19

114、98</p><p>  [2] 楊素行. 模擬電子技術基礎簡明教程第三版[M]. 北京:高等教育出版社,2006</p><p>  [3] 邱關源.電路第四版[M].北京:高等教育出版社,1999</p><p>  [4] 閻石.電子技術基礎學習指導[M].遼寧:遼寧科技出版社,1985</p><p>  [5] 閻石.數(shù)字電子電路[

溫馨提示

  • 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

提交評論