電子秒表課程設計_第1頁
電子秒表課程設計_第2頁
電子秒表課程設計_第3頁
電子秒表課程設計_第4頁
電子秒表課程設計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設計 2014 2015學年 第 1 學期 單片機C51課程設計 課 程 設 計 報 告題目:電子秒表設計專業(yè):電氣工程學院電子信息系姓名:江鑫 瞿康保 李阿龍 李賀林超 劉浩班級:12級電子信息2班導師:王銀花 電氣工程學院 2014 年 11月29日任務書課題名稱 電子秒表設計指導教師(職稱) 王銀花(講師) 執(zhí)行時間20142015學年第1學期 第13周學生姓名學號承擔任務江鑫1209121083設計實驗方案瞿康保1209121084設計硬件電路李阿龍1209121085設計硬件主電路圖李賀1209121086查找程序,調試和檢驗林超1209121087軟件設計,編程和仿真劉浩

2、1209121088測試數據,設計結果設計目的設計一個電子秒表,與通用秒表功能類似,有啟動,暫停、復位等鍵。計時長長度為300秒,需顯示百分秒設計要求利用STC89C52單片機上編程,利用定時計數器,來實現(xiàn)電子秒表功能,秒計時精確到0.01秒,設計啟動、暫停、清零按鈕。摘 要基于數字電子技術基礎、模擬電子技術基礎和電路原理有關知識,對電子秒表電路進行設計和制作。該電子秒表可以實現(xiàn)準確顯示00.0099.99制時間,手動調節(jié)時間,隨時啟動、清零、置時間等功能,使用方便,制作簡單。 本文針對電子秒表進行初步框架設計,并對多種方案進行了認真比較和驗證,在此基礎上,又進一步詳細介紹了時間脈沖發(fā)生器、秒

3、計數器、譯碼及驅動顯示電路。在總體電路圖組裝完成以后,針對設計好的電路,用Multisim軟件進行了仿真與調試,逐步解決設計過程中出現(xiàn)的一系列問題。 在電路設計過程中,特意將選做部分即校時電路部分作為電路設計的主要內容。最后對應的電子秒表設計方案對制作好的電子秒表功能進行總體驗證。關鍵詞:數字電子技術 ;脈沖發(fā)生器; 計數器電路 ;Multisim軟件 目錄1.設計要求52.設計方案分析52.1方案設計52.2背景知識介紹62.2.1 單片機相關知識62.2.1.1 運算器72.2.1.2 程序計數器PC72.2.1.3 令寄存器83.硬件設計93.1單片機簡介93.2電源電路93.3晶體振蕩

4、電路93.4復位電路93.5顯示電路103.6鍵盤電路104.硬件主電路圖設計115.軟件設計125.1軟件設計概述125.2主程序流程圖126.測試數據及設計結果137.調試中出現(xiàn)的錯誤及解決方法137.1 實驗中遇到的問題及解決方法137.2實驗心得138. 程序 149.參考文獻.211. 設計要求設計一個電子秒表,與通用秒表功能類似,有啟動,暫停、復位等鍵。計時長長度為300秒,需顯示百分秒。2.設計方案分析2.1方案設計數字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點,在計時中廣泛使用。本設計用單片機組成數字電子秒表,力求結構簡單、精度高為目標。本系統(tǒng)采用C51系列單片機為中心器件,

5、利用其定時器/計數器定時和記數的原理,結合硬件電路如電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等來設計計時器,將軟、硬件有機地結合起來。其中軟件系統(tǒng)采用匯編語言編寫程序,硬件系統(tǒng)利用PROTEUS強大的功能來實現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。本設計利用STC89C52單片機的定時器/計數器定時和計數的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。根據要求知道秒表設計主要實現(xiàn)的功能是計時和顯示。因此設置了兩個按鍵和LCD顯示時間,兩個按鍵分別是開始、停止和復位按鍵。利用這兩個建來實現(xiàn)秒表的全部功能,而LCD則能顯示最多4.59.99秒的計時。電

6、路原理圖設計最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖1.1進行設計。AT89C52單片機控制器復位電路開關電路LCD顯示圖2.1 數字秒表硬件電路基本原理圖本設計中,數碼管顯示的數據存放在內存單元31H33H中。其中31H存放分鐘變量,32H存放秒鐘變量,33H存放10ms計數值,即存放毫秒位數據,每一地址單元內均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數據顯示功能,顯示用十進制BCD碼數據的對應段碼存放在ROM表中。顯示時,先取出31H33H某一地址中的數據,然后查得對應的顯示位,并從P1口輸出,就能顯示該地址單元的數據值。計時通過中斷

7、完成,定時溢出中斷周期為1ms,當一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到4.59.99秒重新復位。 再看按鍵的處理。這兩個鍵可以采用中斷的方法,也可以采用掃描的方法來識別。復位鍵主要功能在于數值復位,對于時間的要求不是很嚴格。而開始和停止鍵則是用于對時間的鎖定,需要比較準確的控制。因此可以對復位按鍵采取掃描的方式。而對開始和停止鍵采用外部中斷的方式。設計中包括硬件電路的設計和系統(tǒng)程序的設計。其硬件電路主要有主控制器,顯示電路和回零、啟動、查看、停表電路等。主控制器采用單片機STC89C52,顯示電路采用LC

8、D顯示計時時間,兩個按鍵均采用觸點式按鍵。 2.2背景知識介紹2.2.1 單片機相關知識本課題在選取單片機時,充分借鑒了許多成形產品使用單片機的經驗,并根據自己的實際情況,  選擇了STC89S51。STC89C52單片機采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖, 40條引腳說明如下:主電源引腳Vss和Vcc Vss接地 Vcc正常操作時為+5伏電源外接晶振引腳XTAL1和XTAL2 XTAL1內部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當采用外部振蕩器時,此引腳接地。 XTAL2內部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當采用外部振蕩器時,此引腳接外

9、部振蕩源。圖2.2.1 STC89C52單片機引腳圖控制或與其它電源復用引腳RST/VPD,ALE/,和/Vpp RST/VPD 當振蕩器運行時,在此引腳上出現(xiàn)兩個機器周期的高電平(由低到高跳變),將使單片機復位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內部提供備用電源,以保持內部RAM中的數據。 ALE/正常操作時為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。但要注意,每當訪問外部數據存儲器時,將跳過一個ALE脈沖,ALE 端可以驅動(吸收或輸出電流)

10、八個LSTTL電路。對于EPROM型單片機,在EPROM編程期間,此引腳接收編程脈沖(功能) 外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數據)期間,在每個機器周期內兩次有效。同樣可以驅動八LSTTL輸入。 /Vpp、/Vpp為內部程序存儲器和外部程序存儲器選擇端。當/Vpp為高電平時,訪問內部程序存儲器,當/Vpp為低電平時,則訪問外部程序存儲器。對于EPROM型單片機,在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 P0口(P0.0 - P0.7

11、)是一個8位漏極開路型雙向I/O口,在訪問外部存儲器時,它是分時傳送的低字節(jié)地址和數據總線,P0口能以吸收電流的方式驅動八個LSTTL負載。 P1口(P1.0 - P1.7)是一個帶有內部提升電阻的8位準雙向I/O口。能驅動(吸收或輸出電流)四個LSTTL負載。 P2口(P2.0 - P2.7)是一個帶有內部提升電阻的8位準雙向I/O口,在訪問外部存儲器時,它輸出高8位地址。P2口可以驅動(吸收或輸出電流)四個LSTTL負載。 P3口(P3.0 - P3.7)是一個帶有內部提升電阻的8位準雙向I/O口。能驅動(吸收或輸出電流)四個LSTTL負載。AT89C52具有以下標準功能:8k字節(jié)Flas

12、h,256字節(jié)RAM,32 位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89C52可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。CPU是單片機的核心部件。它由運算器和控制器等部件組成。2.2.1.1 運算器運算器的功能是進行算術運算和邏輯運算??梢詫Π胱止?jié)(4位)、單字節(jié)等數據進行操作。例如能完成加、減、乘、除、加1、減1

13、、BCD碼十進制調整、比較等算術運算和與、或、異或、求補、循環(huán)等邏輯操作,操作結果的狀態(tài)信息送至狀態(tài)寄存器。89C52運算器還包含有一個布爾處理器,用來處理位操作。它是以進位標志位C為累加器的,可執(zhí)行置位、復位、取反、等于1轉移、等于0轉移、等于1轉移且清0以及進位標志位與其他可尋址的位之間進行數據傳送等位操作,也能使進位標志位與其他可移位尋址的位之間進行邏輯與、或操作。2.2.1.2 程序計數器PC程序計數器PC用來存放即將要執(zhí)行的指令地址,共16位,可對64K程序存儲器直接尋址。執(zhí)行指令時,PC內容的低8位經P0口輸出,高8位經P2口輸出。2.2.1.3 指令寄存器指令寄存器中存放指令代碼

14、。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令寄存器,經譯碼后由定時與控制電路發(fā)出相應的控制信號,完成指令功能。本設計采用ATMEL的AT89C52微處理器,主要基于以下幾個因素: AT89C52為51內核,仿真調試的軟硬件資源豐富。 性價比高,貨源充足。 功耗低,功能強,靈活性高。 DIP40封裝,體積小,便于產品小型化。 為EEPROM程序存儲介質,1000次以上擦寫周期,便于編程調試。 工作電壓范圍寬:2.7V6V,便于交直流供電。圖2.2.2.1 1602的管腳功能3硬件設計本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等。3.1單片機簡介本

15、系統(tǒng)設計采用C51系列單片機。ST89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ST89C51是一種高效的微控制器。3.2電源電路電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,由于三端集成穩(wěn)壓器件所組成的穩(wěn)壓電源線路簡單,性能穩(wěn)定,工作可靠,調整方便,已逐漸取代分立元件,在生產中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5V穩(wěn)壓電壓。3.3晶體振蕩電路MCS-51單片機內部的振蕩電路是

16、一個高增益反相放大器,引線 XTAL1和XTAL2分別為反向振蕩放大器的輸入及內部時鐘工作電路的輸入和來自反向振蕩器的輸出,該反向放大器可以配置為片內振蕩器。這里,我們選用51單片機12MHZ的內部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線時要使晶體振蕩器X1盡可能接近單片機。圖3.3 晶體振蕩電路3.4復位電路采用上電+按鍵復位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使用使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加開關復位的操作。這不僅能使單片機復位,而且還

17、能使單片機的外圍芯片也同時復位。當程序出現(xiàn)錯誤時,可以隨時使電路復位。電路圖如下:圖3.4 復位電路3.5顯示電路顯示電路既可以選用液晶顯示器,也可以選用數碼管顯示。我們采用的是數碼管顯示電路。用2個共陽極LED顯示,LED是七段式顯示器,內部有7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據各管的亮暗組合成字符。在用數碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。在設計中,我們采用LED動態(tài)顯示,用P0口驅動顯示。由于P0口的輸出級是開漏電路,用它驅動時需要外接上拉電阻才能輸出高電平。電路圖如下所

18、示:圖3.5 顯示電路3.6鍵盤電路在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P3口做開關,P3.3為開始停止,P3.4為清零,用外部中斷INT1開始,另外用軟件法消除抖動。電路圖如下所示:圖3.6 鍵盤電路4硬件主電路圖設計用pretues畫出其硬件主電路圖如下:圖4 硬件主電路5.軟件設計5.1軟件設計概述在軟件設計中,一般采用模塊化的程序設計方法,它具有明顯

19、的優(yōu)點。把一個多功能的復雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設計和調試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結構層次一目了然。應用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都要完成一個明確的任務,實現(xiàn)某個具體的功能,在具體需要時調用相應的模塊即可。功能描述:用LCD1602液晶顯示"秒表",顯示時間為0.00.004.59.99秒,每秒自動加1;一個"開始""暫停"鍵,一個"清零"鍵。5.2主程序流程圖這里采用順序結構,通過對按鍵的掃描,判斷要實現(xiàn)什

20、么功能。如下所示:賦初始值開始LCD1602顯示復位鍵P3.3是否按下查看鍵P3.3是否二次按下調用最終緩存區(qū)數據進行顯示否 是是否否是查看鍵P3.4是否按下LCD清零圖5.2 主程序流程圖6.測試數據及設計結果 按下INT1管腳的開關時,顯示數據,如下圖所示:圖6.1 按下INT1管腳開關按下T0管腳的開關時,數據清零: 圖6.2 按下T0管腳開關7調試中出現(xiàn)的錯誤及解決方法 7.1 實驗中遇到的問題及解決方法問題:LCD顯示模糊原因:VEE接高電平,LCD的對比度太低,從而無法正常顯示數據。解決方法:將VEE接地,提高了LCD的對比度,數據顯示清晰。7.2實驗心得這次課程設計我們組的題目是

21、設計一個電子秒表,有啟動,暫停、復位等鍵。計時最長長度為300秒,需顯示百分秒。據說是相對簡單的題目。分好組后我們每人都有分工,我的主要任務就是完成程序的查找,調試和檢驗,基本算是前期工作,所以剛開始我們一起查資料討論方案。在設計電路初期,由于我們沒有設計經驗,通過查閱一些資料,我們的設計漸漸有了頭緒,基本確立設計方案和流程圖。就是LED顯示屏驅動電路的設計是個比較頭疼的問題。經過查詢大量的資料,我們很快確定了電路以及需要的器件,然后就是編程和仿真,開始時也遇到了很多的問題,經過靜下心來思考,和同學討論,理清了思路,慢慢修改,終于仿真成功了。通過這次設計,我學到了很多知識,將學習的理論知識通過

22、實驗融會貫通,讓我對它的理解更加深刻。由于這次課程設計不僅設計編程方面的知識,還涉及了其它學科的知識,例如PROTEUS等的基本知識。總之,通過這次課程設計,不僅加深了我對單片機理論方面的理解,將理論更好的運用的實踐方面,而且鍛煉了我們各方面的能力,培養(yǎng)了堅強的毅力和做事的耐心和細心,同時也認識到在團隊工作中需要有合作精神,我想這會為今后自己踏上工作崗位、更好地融入新的團隊打下良好的基礎。8.程序; 定義計時單元地址 MIN EQU 31H ;存放分鐘變量 SEC EQU 32H ;存放秒鐘變量 DEDA EQU 33H ;存放10ms計數值 ; 按鍵端口狀況值 K1_N EQU 34H ;存

23、放按鍵當前端口狀況值 K1_P EQU 35H ;存放按鍵上次端口狀況值 K1_C EQU 37H ;存放按鍵計數單元 X EQU 36H ;LCD 地址變量 ; 按鍵引腳定義 K1 EQU P3.3 ;按鍵1引腳定義 K2 EQU P3.4 ;按鍵2引腳定義;LCD 引腳定義 RS EQU P3.5 ;LCD RS引腳定義 RW EQU P3.6 ;LCD RW引腳定義 E EQU P3.7 ;LCD RS引腳定義 ORG 0000H ;程序由地址0開始執(zhí)行 JMP MAIN ORG 0BH ;定時器0中斷地址設置 JMP T0_INT ; 主程序 MAIN: ;開始 MOV SP,#60H

24、 ;堆棧指針指向60H CLR E ;E=0,禁止讀/寫LCD ACALL SET_LCD ;調LCD控制子程序 ACALL INIT ;初始化變量 MOV K1_P,#01H ;按鍵上次端口設置1 ACALL INIT_TIMER ;調用初始化定時器 ACALL MEU ;調用工作菜單子程序 LOOP:ACALL CONV ;時間計數處理 ACALL LOOP1 ;調用清零鍵子程序 ACALL KEY ;判斷是否有鍵按下 JZ LOOP ;無鍵按下轉LOOP MOV K1_P,K1_N ;交換數據 ACALL KEY0 ;調用按鍵功能子程序 JMP LOOP ;跳LOOP處循環(huán) ; 初始變量

25、清零子程序 INIT: ;初始變量清零 CLR A ;A清為零 MOV K1_C,A ;K1_C 初始為0 MOV DEDA,A ;百分秒DEDA初始為0 MOV SEC,A ;秒SEC初始為0 MOV MIN,A ;分MIN初始為0 MOV K1_N,A ;K1_N初始為0 MOV K1_P,A ;K1_P初始為0 CLR TR0 ;啟動中斷 RET ; ;定時器初始化設置子程序 INIT_TIMER: ;定時器初始化 MOV TMOD,#00000001B ;定時器0模式1 MOV IE, #10000010B ;開通中斷 MOV TL0,#LOW(65536-10000);定時初值裝入低

26、位 MOV TH0,#HIGH(65536-10000);定時初值裝入高位 RET ;中斷服務程序 T0_INT: ;定時器T0中斷程序 PUSH ACC ;入棧保護 MOV TL0,#LOW(65536-10000) ;重加載 MOV TH0,#HIGH(65536-10000) INC DEDA MOV A,DEDA ;10ms 計數值加1 CJNE A,#100,TT MOV DEDA,#0 INC SEC ;秒加1 MOV A,SEC CJNE A,#60,TT INC MIN ;分加1 MOV SEC,#0 MOV A,MIN CJNE A,#05,TT MOV DEDA,#0 ;百

27、、分、秒單元清0 MOV SEC,#0 MOV MIN,#0 TT: POP ACC ;出棧 RETI ;中斷程序返回 ; ;判斷鍵是否按下子程序LOOP1: JB K2,LOOP2 ;判清零鍵是否按下 JMP MAIN ;跳轉主程序處 LOOP2: RET ; 判斷K1鍵是否按下 KEY: CLR A ;A清零 MOV K1_N,A ;A值送入K1_N MOV C,K1 ;K1值送入C RLC A ;同進位標志左移一位 ORL K1_N,A ;兩個位作邏輯OR運算 MOV A,K1_N ;K1_N值送入A XRL A,K1_P ;有鍵按下,A 中內容不為零 RET ;功能鍵子程序 ;K1鍵第

28、一次按功能子程序 KEY0: MOV A, K1_P ;K1_P值送入A JB ACC.0,KEY3 ;A的0位是1,轉KEY3 INC K1_C ;K1_C加1 MOV A, K1_C ;K1_C值送入A CJNE A,#01H,KEY1 ;K1鍵是否第一次按? MOV DPTR,#MENU1 ;是,存入MENU1信息 MOV A,#1 ;設置第一行顯示 CALL LCD_PRINT ;調用顯示字符子程序 SETB TR0 ;啟動中斷 RET ;K1鍵第二次按功能子程序 KEY1: MOV A,K1_C ;K1_C值送入A CJNE A,#02H,KEY2 ;K1鍵是否第二次按? MOV D

29、PTR,#MENU2 ;是,存入MENU2信息 MOV A,#1 ;設置第一行顯示 CALL LCD_PRINT ;調用顯示字符子程序 CLR TR0 ;停止中斷 RET ; ;K1鍵第三次按功能子程序KEY2: MOV A, K1_C ;K1_C值送入A CJNE A, #03H,KEY3 ;K1鍵是否第三次按? MOV DPTR,#MENU3 ;是,存入MENU3信息 MOV A, #1 ;設置第一行顯示 CALL LCD_PRINT ;調用顯示字符子程序 SETB TR0 ;啟動中斷 RET ;K1鍵第四按功能子程序KEY3: MOV A,K1_C ;K1_C值送入A CJNE A,#0

30、4H,KEY4 ;K1鍵是否第四次按? MOV DPTR,#MENU4 ;是,存入MENU4信息 MOV A,#1 ;設置第一行顯示 CALL LCD_PRINT ;調用顯示字符子程序 CLR TR0 ;啟動中斷 KEY4: RET ;子程序返回 ; LCD顯示 ; LCD控制子程序 SET_LCD: ; CLR E ACALL INIT_LCD ;初始化 LCD MOV R5,#10 ACALL DELAY MOV DPTR,#LMESS1 ;指針指到顯示消息1 MOV A,#1 ;顯示在第一行 ACALL LCD_PRINT ;調用顯示字符子程序 MOV DPTR,#LMESS2 ;指針指

31、到顯示消息2 MOV A,#2 ;顯示在第二行 ACALL LCD_PRINT ;調用顯示字符子程序 RET LMESS1: DB " ",0 ;LCD 第一行顯示消息 LMESS2: DB "TIME ",0 ;LCD 第二行顯示消息 ;LCD初始化子程序 INIT_LCD: MOV A,#38H ;設置8位、2行、5x7點陣 ACALL WR_COMM ; 調用寫指令子程序 ACALL DELAY1 ;調用延時子程序 MOV A,#0CH ;開顯示,光標不閃爍 ACALL WR_COMM ;調用寫指令子程序 ; ACALL DELAY1 ;調用延時子

32、程序 MOV A,#01H ;清除 LCD 顯示屏 ACALL WR_COMM ;調用寫指令子程序 ; ACALL DELAY1 ;調用延時子程序 RET ;寫指令子程序 WR_COMM: MOV P1,A CLR RS ;RS=0,選擇指令寄存器 CLR RW ;RW=0,選擇寫模式 SETB E ;E=1,允許讀/寫LCM ACALL DELAY1 ;調用延時子程序 CLR E ;E=0,禁止讀/寫LCM RET ;寫數據子程序 WR_DATA: MOV P1,A SETB RS ;RS=1,選擇數據寄存器 CLR RW ;RW=0,選擇寫模式 SETB E ;E=1,允許讀/寫LCD A

33、CALL DE ;調用延時子程序 CLR E ;E=0,禁止讀/寫LCD ACALL DE ;調用延時子程序 RET ;清除該行 LCD 的字符 CLR_LINE: MOV R0,#24 CL1: MOV A,#' ' ACALL WR_DATA DJNZ R0,CL1 RET ;LCD 存入工作菜單 MEU: MOV DPTR,#MENU0 ;存入工作菜單 MOV A,#1 ;第一行CALL LCD_PRINT RET; 工作菜單 MENU0: DB " SECOND-CLOCK 0 ",0 MENU1: DB " BEGIN COUNT 1 &

34、quot;,0 MENU2: DB " PAUST COUNT 2 ",0 MENU3: DB " BEGIN COUNT 3 ",0 MENU4: DB " PAUST COUNT 4 ",0 ;菜單顯示子程序 ;一行、二行顯示字符 LCD_PRINT: CJNE A,#1,LINE2 ;判斷是否為第一行 LINE1: ACALL CLR_LINE ;清除該行字符數據 MOV A, #80H ;設置 LCD 的第一行地址 ACALL WR_COMM ;寫入命令 JMP FILL LINE2: ACALL CLR_LINE ;清除該行

35、字符數據 MOV A,#0C0H ;設置 LCD 的第二行地址 ACALL WR_COMM FILL: CLR A ;填入字符 MOVC A,A+DPTR ;由消息區(qū)取出字符 CJNE A,#0,LC1 ;判斷是否為結束碼 RET ;寫入數據 LC1: ACALL WR_DATA INC DPTR ;指針加1 JMP FILL ;繼續(xù)填入字符 RET ;轉換數據子程 CONV: ;轉換為 ASCII 碼并顯示 MOV X,#5 ;設置位置 ACALL SKOW_LINE2 ;顯示數據 INC X ; MOV A,#':' ; MOV B,X ; ACALL LCDP2 ; MO

36、V A,MIN ;加載分鐘數據 INC X ;設置位置 ACALL SKOW_LINE2 ;顯示數據 INC X ; MOV A,#':' ; MOV B,X ; ACALL LCDP2 ; MOV A,SEC ;加載秒數數據 INC X ;設置位置 ACALL SKOW_LINE2 ;顯示數據 INC X ; MOV A,#':' ; MOV B,X ; CALL LCDP2 ; MOV A,DEDA ;加載秒數數據 INC X ;設置位置 ACALL SKOW_LINE2 ;顯示數據 RET ; ;在 LCD 的第二行顯示數字 SKOW_LINE2: MOV

37、 B,#10 ;設置被除數 DIV AB ;結果A存商數,B存余數 ADD A,#30H ;A為十位數,轉換為字符 PUSH B ;B放入堆棧暫存 MOV B,X ;設置 LCD 顯示的位置 ACALL LCDP2 ;由 LCD 顯示出來 POP B ;出棧 MOV A,B ;B為個位數 ADD A,#30H ;轉換為字符 INC X ;LCD 顯示位置加1 MOV B,X ;設置 LCD 顯示的位置 ACALL LCDP2 ;由 LCD 顯示出來 RET ;在LCD的第二行顯示字符 LCDP2: PUSH ACC ; MOV A,B ;設置顯示地址 ADD A,#0C0H ;設置LCD的第二行地

溫馨提示

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

評論

0/150

提交評論