2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于單片機的時鐘顯示器設(shè)計</p><p><b>  摘 要</b></p><p>  本文論述了如何利用單片機來設(shè)計一個時鐘的方法。</p><p>  本設(shè)計基于單片機技術(shù)原理,以單片機芯片AT89C52作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計制作出一個多功能數(shù)字時鐘系統(tǒng)。單片機擴展的LCD顯示器

2、用來顯示秒、分、時計數(shù)單元中的值。整個設(shè)計包括兩大部分: 硬件部分和軟件部分,以單片機為核心, 配以一定的外圍電路和軟件。硬件是整個系統(tǒng)的基礎(chǔ), 軟件部分則要合理、充分地支持和使用系統(tǒng)的硬件, 從而完成系統(tǒng)所要完成的任務(wù)。</p><p>  本設(shè)計采用L ED 數(shù)碼管的數(shù)字顯示以其亮度高、顯示直觀等優(yōu)點被廣泛應(yīng)用于智能儀器及家用電器等領(lǐng)域。該時鐘系統(tǒng)主要由時鐘模塊、鬧鐘模塊、環(huán)境溫度檢測模塊、液晶顯示模塊、鍵盤

3、控制模塊以及信號提示模塊組成。能夠準(zhǔn)確顯示時間(顯示格式為時時:分分:秒秒,24小時制),可隨時進行時間調(diào)整,具有鬧鐘時間設(shè)置、鬧鐘開/關(guān)、止鬧功能,能夠?qū)r鐘所在的環(huán)境溫度進行測量并顯示。設(shè)計以硬件軟件化為指導(dǎo)思想,充分發(fā)揮單片機功能,大部分功能通過軟件編程來實現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。單片機在這種情況下誕生了基于單片機電子時鐘。</p><p>  關(guān)鍵詞:單片機、LCD顯示器、液晶顯示模塊、基于單片機

4、電子時鐘。</p><p>  Design According To Single Slice The Clock Display Of The Machine</p><p><b>  ABSTRACT</b></p><p>  This text discusses how to make use of a single slice

5、machine to design the method of a clock.</p><p>  This design according to single slice machine technique principle, use single slice the machine chip AT89 C52 as core controller, pass the draw up of creatio

6、n and software procedure of hardware electric circuit, design to create a multi-function and numerical clock system. the single slice machine expand of LCD display use to show second, cent, the chronometer value within f

7、ew units.The whole design include two greatly part of: Hardware part and software part, with single slice machine for core,</p><p>  This design adoption L ED figures tube of the numeral show high with its b

8、right degree, show to keep a view etc. the advantage be extensively been apply in realms, such as intelligence instrument and home .The clock's system is mainly shown that mold piece, the keyboard control mold piece

9、and signal hint that the mold piece constitute by clock mold piece, alarm clock mold piece, the examination mold piece, LCD of the environment temperature.Can accurate manifestation time(manifestation format is</p>

10、<p>  KEY WORDS: single-chip,lcd display, the LCD shows a mold piece,a ccording to single slice machine electronics clock.</p><p><b>  目 錄</b></p><p><b>  前 言1</b>

11、;</p><p>  第1章 硬件系統(tǒng)設(shè)計2</p><p><b>  1.1 單片機2</b></p><p>  1.2 硬件設(shè)計3</p><p>  1.3 硬件模塊3</p><p>  1.3.1主控單元3</p><p>  1.3.2顯示部分

12、5</p><p>  1.3.3顯示器接口及顯示方式7</p><p>  1.3.4鍵盤控制模塊8</p><p>  1.3.5聲音提示模塊8</p><p>  1.3.6直流穩(wěn)壓電源部分9</p><p>  1.3.7濾波電路9</p><p>  1.4 硬件電路測試9

13、</p><p>  1.4.1硬件電路ERC測試9</p><p>  1.4.2硬件電路網(wǎng)格化10</p><p>  1.4.3生成PCB板11</p><p>  第2章 軟件設(shè)計13</p><p>  2.1 設(shè)計思路13</p><p>  2.2 模塊設(shè)計13<

14、/p><p>  2.3 軟件模塊14</p><p>  2.3.1計時模塊14</p><p>  2.3.2調(diào)時功能14</p><p>  2.3.3主程序模塊14</p><p>  2.3.4鍵盤控制模塊14</p><p>  2.3.5在編程過程中要用到的其它程序模塊14

15、</p><p>  第3章 程序編譯和系統(tǒng)調(diào)試及仿真15</p><p>  3.1 程序編譯15</p><p>  3.1.1主要程序設(shè)計分析15</p><p>  3.1.2程序設(shè)計16</p><p>  3.2 軟件調(diào)試23</p><p>  3.2.1偉福簡介23&

16、lt;/p><p>  3.2.2軟件調(diào)試24</p><p>  3.3 硬件調(diào)試25</p><p><b>  結(jié) 論28</b></p><p><b>  謝 辭29</b></p><p><b>  參考文獻30</b></p&

17、gt;<p><b>  前 言</b></p><p>  數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時,分,秒數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動

18、報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。</p><p>  近年來隨著以計算機為軸心的各種各樣信息處理裝置的誕生,為適應(yīng)這種新形勢,信息家電,網(wǎng)絡(luò)終端,廣播-通信等用途的LCD市場也將迅速擴大,而且如今LCD發(fā)展方向不僅在于大屏幕,而且在中小屏幕方

19、面,例如汽車導(dǎo)航系統(tǒng),攝像機,數(shù)字式照相機,便攜式電視,PDA(個人數(shù)字助理),娛樂/游戲機,攝影機等有著進一步的發(fā)展。</p><p>  液晶顯示器(LCD)具有功耗低、體積小、重量輕、超薄等許多其他顯示器無法比擬的優(yōu)點,近年來被廣泛用于單片機控制的智能儀器、儀表和低功耗電子產(chǎn)品中。LCD可分為段式LCD、字符式LCD和點陣式LCD。其中,段式LCD和字符式LCD只能用于字符和數(shù)字的簡單顯示,不能滿足圖形曲線

20、和漢字顯示的要求;而點陣式LCD不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線以及漢字、動畫,并且可以實現(xiàn)屏幕滾動、反轉(zhuǎn)、閃爍等功能,用途十分廣泛。</p><p>  由此可見LCD的應(yīng)用是如此廣泛,所以用MPU控制液晶顯示器是很普遍的應(yīng)用。</p><p>  第1章 硬件系統(tǒng)設(shè)計</p><p><b>  1.1 單片機</b><

21、;/p><p>  單片機是一種集成電路芯片,采用超大規(guī)模技術(shù)把具有數(shù)據(jù)處理能力(如算術(shù)運算,邏輯運算、數(shù)據(jù)傳送、中斷處理)的微處理器(CPU),隨機存取數(shù)據(jù)存儲器(RAM),只讀程序存儲器(ROM),輸入輸出電路(I/O口),可能還包括定時計數(shù)器,串行通信口(SCI),顯示驅(qū)動電路(LCD或LED驅(qū)動電路),脈寬調(diào)制電路(PWM),模擬多路轉(zhuǎn)換器及A/D轉(zhuǎn)換器等電路集成到一塊單塊芯片上,構(gòu)成一個最小然而完善的計算機

22、系統(tǒng)。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效地完成程序設(shè)計者事先規(guī)定的任務(wù)[1]。</p><p>  單片機芯片的集成度很高,它將微型計算機的主要部件都集成在一塊芯片上,具有以下特點:</p><p>  (1)體積小、重量輕、價格便宜、耗電少;</p><p>  (2) 根據(jù)工控環(huán)境要求設(shè)計,且許多功能部件集成在芯片內(nèi)部,其信號通道受外界影響小,故可靠性高,

23、抗干擾性能優(yōu)于采用一般的CPU;</p><p> ?。?) 控制功能強,運行速度快。其結(jié)構(gòu)組成與指令系統(tǒng)都著重滿足工控要求。有豐富的條件分支轉(zhuǎn)移指令和很強的位處理功能及I/O口邏輯操作功能;</p><p> ?。?)片內(nèi)存儲器的容量不可能很大;引腳也嫌少,I/O引腳常不夠用,且兼第二功能以至第三功能。但存儲器和I/O接口都易于擴展;</p><p>  自單片機

24、出現(xiàn)至今,單片機技術(shù)已走過了30多年的發(fā)展路程??v觀30年來單片機發(fā)展里程可以看出,單片機技術(shù)的發(fā)展以微處理器(MPU)技術(shù)及超大規(guī)模集成電路技術(shù)的發(fā)展為先導(dǎo),以廣泛的應(yīng)用領(lǐng)域拉動,表現(xiàn)出較微處理器更具個性的發(fā)展趨勢。單片機應(yīng)用最多的領(lǐng)域主要有以下:</p><p>  因它具有“小、輕、廉、省”的特點,所以特別適用于“電腦型產(chǎn)品”,在家用電器、玩具、游戲機、聲像設(shè)備、電子秤、收銀機、辦公設(shè)備、廚房設(shè)備、家庭安防

25、設(shè)備等許多產(chǎn)品上得到應(yīng)用。適用于儀器、儀表,不僅能完成測量,還具有處理、監(jiān)控等功能,易于實現(xiàn)數(shù)字化和智能化。</p><p><b>  1.2 硬件設(shè)計</b></p><p><b>  硬件設(shè)計框圖</b></p><p>  圖1-1硬件設(shè)計框圖</p><p>  由框圖的設(shè)計結(jié)構(gòu)可以分塊

26、設(shè)計電路。</p><p><b>  1.3 硬件模塊</b></p><p><b>  1.3.1主控單元</b></p><p>  AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和256bytes的隨機存取數(shù)據(jù)存儲器(R

27、AM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強大AT89C52單片機適合于許多較為復(fù)雜控制應(yīng)用場合。</p><p>  下表是89c52的主要性能參數(shù)</p><p>  表1-1 89c52的主要性能參數(shù)</p><p>  AT89C

28、52提供以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路[2]。同時,AT89C52可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位

29、。</p><p>  下表是89c52的極限參數(shù)</p><p>  表1-2 AT89C52的極限參數(shù)</p><p><b>  1.3.2顯示部分</b></p><p>  單片機應(yīng)用系統(tǒng)中使用的顯示器主要有發(fā)光二極管顯示器,簡稱LED(Light Emitting Diode);液晶顯示器LCD(Liquid

30、 Crystal Display);近幾年也有配置CRT顯示器的。液晶顯示器簡稱是利用液晶經(jīng)過處理后能夠改變光線傳輸方向的特性,達(dá)到顯示字符或者圖形的目的。其特點是體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點,在單片機應(yīng)用系統(tǒng)中有著日益廣泛的應(yīng)用。</p><p>  1602芯片:主要用于顯示時間和定時時間。1602芯片由點陣字符液晶顯示器件和專用的行、列驅(qū)動器、控制及必要的鏈接件、結(jié)構(gòu)件組裝而成,可以顯示

31、數(shù)字和西文字符,但不能顯示圖形,已經(jīng)可以滿足本次設(shè)計的需要。</p><p>  1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點[3]。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調(diào)節(jié)和背光功能。</p><p>  1. 外型尺寸:80X36X13(LXWXH)</p>

32、<p><b>  2.接口信號說明</b></p><p>  表1-3 1602型LCD的接口信號說明</p><p><b>  3.主要技術(shù)參數(shù)</b></p><p>  表1-4 1602型LCD的主要技術(shù)參數(shù)</p><p><b>  4.基本操作程序</b

33、></p><p>  讀狀態(tài):輸入:RS=L,RW=H,E=H輸出:D0~D7=狀態(tài)字</p><p>  讀數(shù)據(jù):輸入:RS=H,RW=H,E=H輸出:無</p><p>  寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出:D0~D7=數(shù)據(jù)</p><p>  寫數(shù)據(jù):輸入:RS=H,RW=L,

34、D0~D7=數(shù)據(jù),E=高脈沖 輸出:無</p><p>  5.RAM地址映射圖</p><p>  控制器內(nèi)部帶有80字節(jié)的RAM緩沖區(qū),對應(yīng)關(guān)系1-5表所示</p><p><b>  表1-5對應(yīng)關(guān)系</b></p><p><b>  6.狀態(tài)字說明</b></p><

35、p><b>  表1-6狀態(tài)字說明</b></p><p>  注意 每次對控制器進行讀寫操作之前,都必須進行讀寫檢測,確保STA7為0。</p><p><b>  7.?dāng)?shù)據(jù)指針設(shè)置</b></p><p>  控制器內(nèi)部設(shè)有一個數(shù)據(jù)地址指針,用戶可以通過它們訪問內(nèi)部的全部80字的RAM。</p>&

36、lt;p><b>  8.其它設(shè)置</b></p><p><b>  表1-7 其他設(shè)置</b></p><p>  表1-8 指令碼及功能</p><p>  1.3.3顯示器接口及顯示方式</p><p>  筆段式LCD顯示器:類似于LED數(shù)碼管顯示器。每個顯示器的段電極包括a, b,

37、 c, d, e, f, g七個筆劃(段)和一個背電極BP(或COM)。可以顯示數(shù)字和簡單的字符。</p><p>  點陣式LCD顯示器:段電極與背電極呈正交帶狀分布,液晶位于正交的帶狀電極間。點陣式LCD的控制一般采用行掃描方式[4]。</p><p>  1.3.4鍵盤控制模塊</p><p>  按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點式開關(guān)按鍵,如機械式開關(guān)

38、、導(dǎo)電橡膠式開關(guān)等;另一類是無觸點式開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價低,后者壽命長。目前,微機系統(tǒng)中最常見的是觸點式開關(guān)按鍵。 </p><p>  按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方法。編碼鍵盤主要是用硬件來實現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來實現(xiàn)鍵盤的定義與識別。</p><p>  全編碼鍵盤能夠由硬件邏

39、輯自動提供與鍵對應(yīng)的編碼,此外,一般還具有去抖動和多鍵、竄鍵保護電路。這種鍵盤使用方便,但需要較多的硬件,價格較貴,一般的單片機應(yīng)用系統(tǒng)較少采用。非編碼鍵盤只簡單地提供行和列的矩陣,其它工作均由軟件完成。由于其經(jīng)濟實用,較多地應(yīng)用于單片機系統(tǒng)中。在本套設(shè)計中由于只需要幾個功能鍵,此時,可采用獨立式按鍵結(jié)構(gòu)[5]。</p><p><b>  按鍵的軟件結(jié)構(gòu):</b></p>&

40、lt;p>  按鍵中有一個復(fù)位鍵及定時鍵、調(diào)時鍵加一鍵和減一鍵,一個按鍵接在復(fù)位電路上,另外四個按鍵接在P0——P4口,低電平表示有按鈕按下;按鈕沒有接防抖電路,需要設(shè)計軟件防抖。</p><p>  1、定時。按下定時鍵后可以開始定時,過程如下:定時---〉小時加/減---〉按定時---分鐘加/減---按定時。</p><p>  2、調(diào)時。按下調(diào)時鍵后可以調(diào)時,過程如下:調(diào)時--

41、-年加/減---調(diào)時--月加/減---調(diào)時---日加/減---調(diào)時---時加/減---調(diào)時---分加/減---調(diào)時---秒加/減 ---調(diào)時。</p><p>  1.3.5聲音提示模塊</p><p>  蜂鳴器:89C52的P2.0口接了一個蜂鳴器,定時時間到, P1.0輸出一定頻率脈沖時,蜂鳴器將發(fā)出響聲;一分鐘后停止。</p><p>  1.3.6直流穩(wěn)壓

42、電源部分</p><p>  直流穩(wěn)壓電源是給電子設(shè)備提供穩(wěn)定直流電壓的電子電路。這次電路需要的是+5V直流電源。</p><p><b>  1.3.7濾波電路</b></p><p>  它的任務(wù)是將全濾波形的輸出通過RC濾波網(wǎng)絡(luò)以后變成更平坦的直流電壓,減小脈動,提高整流的效果[6]。這是整流管中通過的電流的瞬間值要比平均值大得多,特別在

43、接通電源瞬間有相當(dāng)大的沖擊電流(即充電電流)通過整流管,這一點要引起注意。</p><p><b>  (1) 電源變壓器</b></p><p>  它的任務(wù)是把電源電壓220V變壓到合適的大小。如果U2的值太大,會造成集成端穩(wěn)壓器7805的功耗大,溫升高,且浪費電能。反之,如果U2的值小到一定程度,三端穩(wěn)壓器不能正常工作,失去穩(wěn)壓作用.因此U2的值應(yīng)大小合適,這個

44、值應(yīng)該使三端穩(wěn)壓器在交流電網(wǎng)電壓最低和輸出電流最大時能正常工作。而且在正常穩(wěn)壓的前提下,它的壓降盡可能小,以減小功耗。</p><p><b>  (2) 整流電路</b></p><p>  它的任務(wù)是將正弦波變換成直流電壓。這里一般采用橋式整流電路來實現(xiàn),既可用四個二極管來組成,也可用整流橋堆來完成,只是參數(shù)一定要選擇合理。</p><p>

45、;<b>  (3) 穩(wěn)壓電路</b></p><p>  要求輸出恒定的直流電壓,且要達(dá)到設(shè)計中所提出的要求。</p><p>  1.4 硬件電路測試</p><p>  1.4.1硬件電路ERC測試</p><p>  如圖1-2所示,選擇ERC做電路測試。如果通過測試,則出現(xiàn)1-3所示界面。</p>

46、<p>  圖1-2 ERC測試</p><p><b>  圖1-3 通過測試</b></p><p>  1.4.2硬件電路網(wǎng)格化</p><p>  硬件電路網(wǎng)絡(luò)化如圖1-4所示,選擇CREATE NETLIST,即可產(chǎn)生圖1-5所示界面。</p><p>  圖1-4硬件電路網(wǎng)格化圖</p>

47、;<p>  圖1-5硬件電路網(wǎng)格化圖</p><p>  1.4.3生成PCB板</p><p>  PCB板的生成過程比較復(fù)雜。</p><p>  首先要新建一個WIZARD文件,按提示選擇,之中要選擇雙層板并通過空連接。之后即可產(chǎn)生一個PCB文件,在對話框中選擇LOADNET,再對網(wǎng)格化后的文件進行編譯。如果無錯即可出現(xiàn)如圖1-6所示的對話框。

48、</p><p>  圖1-6選擇精確顯示</p><p>  在圖1-6的對話框中選擇精確顯示。即可彈出PCB板概圖的界面。把各個元件按照合理的布局拉開,在點擊AUTOROUTE--ALL-ROUTEALL,既可生成PCB板。</p><p><b>  第2章 軟件設(shè)計</b></p><p><b>  

49、2.1 設(shè)計思路</b></p><p>  本系統(tǒng)是以單片機的基本語言匯編語言來進行軟件設(shè)計,指令的執(zhí)行速度快,節(jié)省存儲空間。為了便于擴展和更改,軟件的設(shè)計采用模塊化結(jié)構(gòu),使程序設(shè)計的邏輯關(guān)系更加簡潔明了。對于一個微控制系統(tǒng)來說,硬件是基礎(chǔ),軟件是靈魂。軟件在很大程度上決定了系統(tǒng)的先進性、可靠性、實用性以及實時性。本次設(shè)計所涉及到的軟件設(shè)計主要是系統(tǒng)編程和其他應(yīng)用軟件和調(diào)試軟件的使用,其中重中之重是

50、用匯編語言來進行程序編制,編制的程序要求可靠性高、實時性強、簡練易于維護等等。</p><p>  程序設(shè)計的具體步驟如下:</p><p> ?。?)提出各種可供選擇的方案;</p><p> ?。?)對各個方案進行論證,選取合理的方案,畫出系統(tǒng)流程圖;</p><p> ?。?)在綜合分析對比各種合理方案的基礎(chǔ)之上選擇一個最佳方案;<

51、;/p><p>  (4)功能分解。通常分為結(jié)構(gòu)設(shè)計和過程設(shè)計兩個階段。結(jié)構(gòu)設(shè)計</p><p>  確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系;過程設(shè)計確定每個模塊的設(shè)計程序結(jié)構(gòu),將各個模塊組織成良好的層次系統(tǒng);</p><p> ?。?)審查與仿真調(diào)試:對總體設(shè)計的程序進行嚴(yán)格的審查,在審查之后使用仿真設(shè)備(本設(shè)計采用的是南京偉福H51/S仿真器)進行程序仿真和

52、調(diào)試。</p><p><b>  2.2 模塊設(shè)計</b></p><p>  本次設(shè)計實現(xiàn)的功能主要有計時、計日期、計星期、實現(xiàn)鬧鐘、時間日期星期和鬧鐘的調(diào)整以及鍵盤掃描、顯示掃描。為了方便實現(xiàn)、調(diào)試以及貫徹模塊化設(shè)計的思想,將整個程序分成了若干個模塊,每個模塊又由若干個子程序組成,下面分別就各模塊詳細(xì)描述。</p><p><b&g

53、t;  2.3 軟件模塊</b></p><p><b>  2.3.1計時模塊</b></p><p>  該模塊完成秒、分、時、日、星期、月、年的計算更新、有效性檢查。通過定時器0工作于16位重裝載方式準(zhǔn)確地定時50毫秒,再由軟件計數(shù)20次以完成定時1秒。秒、分、時、日、星期、月的加1、調(diào)整程序分別編成子程序,若有進位,則本位從新計數(shù),并調(diào)用下一級子程

54、序。</p><p><b>  2.3.2調(diào)時功能</b></p><p>  當(dāng)由于時鐘誤差或意外斷電后可以用調(diào)時功能較時。</p><p>  2.3.3主程序模塊</p><p>  主程序模塊主要由計時、調(diào)時、按鍵選擇等模塊組成,下面將做詳細(xì)描述,再次從略。</p><p>  2.3.

55、4鍵盤控制模塊</p><p>  由于在硬件設(shè)計中只用到四個鍵,所以,這是一個相對簡單的流程,但在實際編程中會因為硬件過于簡單,而使程序很復(fù)雜。</p><p>  2.3.5在編程過程中要用到的其它程序模塊</p><p>  1)LCD初始化 2)判斷閏年 3)時間的加減 這些程序在本設(shè)計都比較重要,也很復(fù)雜,但都有經(jīng)典程序可以參考,不做贅述。</p&

56、gt;<p>  第3章 程序編譯和系統(tǒng)調(diào)試及仿真</p><p><b>  3.1 程序編譯</b></p><p>  3.1.1主要程序設(shè)計分析</p><p> ?。?)主程序 設(shè)計中采用定時器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)P3.7端口或者P1.7端口開關(guān)按下時,轉(zhuǎn)入調(diào)整時間或者調(diào)整日期功能程序。<

57、/p><p><b>  (2)顯示子程序</b></p><p>  數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元70H-75H中,其中70H~71H存放秒數(shù)據(jù),72H~73H存放分?jǐn)?shù)據(jù),74H~75H存放時數(shù)據(jù),每一地址單元內(nèi)均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應(yīng)段碼存放在ROM表中。顯示時,先取出70H~75H某一地址中的數(shù)據(jù),然

58、后查的對應(yīng)的顯示段碼從P1口輸出。P3口將對應(yīng)的數(shù)碼管選中,就是顯示該地址單元的數(shù)據(jù)值。</p><p> ?。?)定時器T0中斷服務(wù)程序</p><p>  定時器T0用于時間計時。定時溢出中斷周期設(shè)為50ms,中斷累計20次(即1s)時對秒計數(shù)單元進行加1操作。時間計數(shù)單元地址分別在70H~71H(s)、76H~77H(min)、78H~79H(h),7AH單元存放“熄滅符”數(shù)據(jù)(#0

59、AH)。在計數(shù)單元中采用十進制BCD碼計數(shù),滿60進位。T0中斷服務(wù)程序流程圖3所示。</p><p> ?。?)T1中斷服務(wù)程序</p><p>  T1中斷服務(wù)程序應(yīng)用于指示調(diào)整單元數(shù)字的亮閃。在時間調(diào)整狀態(tài)下,每過0.3秒,將對應(yīng)單元的顯示數(shù)據(jù)換成熄滅符數(shù)據(jù)(#0AH)。這樣,在調(diào)整時間時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)就會間隔閃亮。</p><p><b>

60、; ?。?)調(diào)時功能程序</b></p><p>  調(diào)時功能程序的設(shè)計方法是:按下按鍵,若按下時間小于1秒,進入省電狀態(tài)(數(shù)碼管不亮,時鐘不停),否則進入調(diào)分狀態(tài),等待操作,此時計時器停止走動。當(dāng)再次按下按鈕時,若按下的時間小于0.5秒,則時間加1分鐘;若按下時間大于0.5秒,則進入小時調(diào)整狀態(tài)。在小時調(diào)整狀態(tài)下,當(dāng)按鍵按下的時間大于0.5秒時退出調(diào)整狀態(tài),時鐘繼續(xù)走動。</p>&l

61、t;p><b>  3.1.2程序設(shè)計</b></p><p>  定時器T0、T1溢出周期為50MS,T0為秒計數(shù)用,T1為調(diào)整時閃爍用,P3.7為調(diào)整按鈕,P1口為字符輸出口,采用共陽顯示管。</p><p><b>  中斷入口程序</b></p><p>  ORG 0000H

62、 程序執(zhí)行開始地址</p><p>  LJMP START 跳到標(biāo)號START執(zhí)行</p><p>  ORG 0003H 外中斷0中斷程序入口</p><p>  RETI 外中斷0中斷返回</p><p>  

63、ORG 000BH 定時器T0中斷程序入口</p><p>  LJMP INTT0 跳至INTTO執(zhí)行</p><p>  ORG 0013H 外中斷1中斷程序入口</p><p>  RETI 外

64、中斷1中斷返回</p><p>  ORG 001BH 定時器T1中斷程序入口</p><p>  ORG 0023H 串行中斷程序入口地址</p><p>  RETI 串行中斷程序返回</p><p><b&

65、gt;  主 程 序</b></p><p>  START: MOV R0,#70H 清70H-7AH共11個內(nèi)存單元</p><p>  MOV R7,#0BH </p><p>  CLEARDISP: MOV @R0,#00H </p><p>  INC R0

66、 </p><p>  DJNZ R7,CLEARDISP </p><p>  MOV 20H,#00H 清20H(標(biāo)志用)</p><p>  MOV 7AH,#0AH 放入"熄滅符"數(shù)據(jù)</p><p>  MOV TMOD,#11H 設(shè)T0、T1為16位定時器</p>&l

67、t;p>  MOV TL0,#00H 50MS定時初值(T0計時用)</p><p>  MOV TH0,#4CH 50MS定時初值</p><p>  MOV TL1,#00H 50MS定時初值</p><p>  MOV TH1,#4CH 50MS定時初值</p><p>  SETB E

68、A 總中斷開放</p><p>  SETB ET0 允許T0中斷</p><p>  SETB TR0 開啟T0定時器</p><p>  MOV R4,#14H 1秒定時用初值</p><p>  START1: LCALL DISPLAY 調(diào)

69、用顯示子程序</p><p>  JNB P3.7,SETMM1 P3.7口為0時轉(zhuǎn)時間調(diào)整程序</p><p>  SJMP START1 P3.7口為1時跳回START1</p><p>  SETMM1:LJMP SETMM 轉(zhuǎn)到時間調(diào)整程序SETMM1秒計時程序</p><p><b>  T0中斷服務(wù)程序&

70、lt;/b></p><p>  INTT0: PUSH ACC 累加器入棧保護</p><p>  PUSH PSW 狀態(tài)字入棧保護</p><p>  CLR ET0 關(guān)T0中斷允許</p><p>  CLR TR0 關(guān)閉定時

71、器T0</p><p>  MOV A,#0B7H 中斷響應(yīng)時間同步修正</p><p>  ADD A,TL0 低8位初值修正</p><p>  MOV TL0,A 重裝初值(低8位修正值)</p><p>  MOV A,#4CH 高8位

72、初值修正</p><p>  ADDC A,TH0 </p><p>  MOV TH0,A 重裝初值(高8位修正值)</p><p>  SETB TR0 開啟定時器T0</p><p>  DJNZ R4, OUTT0 20次中斷未到中斷退出<

73、/p><p>  ADDSS: MOV R4,#14H 20次中斷到(1秒)重賦初值</p><p>  MOV R0,#71H 指向秒計時單元(71H-72H)</p><p>  ACALL ADD1 調(diào)用加1程序(加1秒操作)</p><p>  MOV A,R3

74、 秒數(shù)據(jù)放入A</p><p>  CLR C 清進位標(biāo)志</p><p>  CJNE A,#60H,ADDMM </p><p>  ADDMM: JC OUTT0 小于60秒時中斷退出</p><p>  ACALL CLR0 大于或等于60秒時對

75、秒計時單元清0</p><p>  MOV R0,#77H 指向分計時單元(76H-77H)</p><p>  ACALL ADD1 分計時單元加1分鐘</p><p>  MOV A,R3 分?jǐn)?shù)據(jù)放入A</p><p>  CLR C 清進位標(biāo)志</p><

76、;p>  CJNE A,#60H,ADDHH </p><p>  ADDHH: JC OUTT0 小于60分時中斷退出</p><p>  ACALL CLR0 大于或等于60分時分計時單元清0</p><p>  MOV R0,#79H 指向小時計時單元(78H-79H)</p><p> 

77、 ACALL ADD1 小時計時單元加1小時</p><p>  MOV A,R3 時數(shù)據(jù)放入A</p><p>  CLR C 清進位標(biāo)志</p><p>  CJNE A,#24H,HOUR </p><p>  HOUR: JC OUTT0 小于24小時中斷退出

78、</p><p>  ACALL CLR0 大于或等于24小時小時計時單元清0</p><p>  OUTT0: MOV 72H,76H 中斷退出時將分、時計時單元數(shù)據(jù)移</p><p>  MOV 73H,77H 入對應(yīng)顯示單元</p><p>  MOV 74H,78H </

79、p><p>  MOV 75H,79H </p><p>  POP PSW 恢復(fù)狀態(tài)字(出棧)</p><p>  POP ACC 恢復(fù)累加器</p><p>  SETB ET0 開放T0中斷</p><p>

80、  RETI 中斷返回</p><p><b>  閃動調(diào)時程序</b></p><p>  T1中斷服務(wù)程序,用作時間調(diào)整時調(diào)整單元閃爍指示</p><p>  INTT1: PUSH ACC 中斷現(xiàn)場保護</p><p>  PUSH PSW

81、 </p><p>  MOV TL1, #00H 裝定時器T1定時初值</p><p>  MOV TH1, #4CH </p><p>  DJNZ R2,INTT1OUT 0.3秒未到退出中斷</p><p>  MOV R2,#06H 重裝0.3秒定時用

82、初值</p><p>  CPL 02H 0.3秒定時到對閃爍標(biāo)志取反</p><p>  JB 02H,FLASH1 02H位為1時顯示單元"熄滅"</p><p>  MOV 72H,76H 02H位為0時正常顯示</p><p>  MOV

83、73H,77H </p><p>  MOV 74H,78H </p><p>  MOV 75H,79H </p><p>  INTT1OUT: POP PSW 恢復(fù)現(xiàn)場</p><p>  POP ACC </p><p>  

84、RETI 中斷退出</p><p>  FLASH1: JB 01H,FLASH2 01H位為1時,轉(zhuǎn)小時熄滅控制</p><p>  MOV 72H,7AH 01H位為0時,"熄滅符"數(shù)據(jù)放入分</p><p>  MOV 73H,7AH 顯示單元,將不顯示分?jǐn)?shù)據(jù)</p&g

85、t;<p>  MOV 74H,78H </p><p>  MOV 75H,79H </p><p>  AJMP INTT1OUT 轉(zhuǎn)中斷退出</p><p>  FLASH2: MOV 72H,76H 01H位為1時,"熄滅符"數(shù)據(jù)放入小時</p><p> 

86、 MOV 73H,77H 顯示單元,小時數(shù)據(jù)將不顯示</p><p>  MOV 74H,7AH </p><p>  MOV 75H,7AH </p><p>  AJMP INTT1OUT 轉(zhuǎn)中斷退出</p><p><b>  加1子 程 序</b></p>

87、<p>  ADD1: MOV A,@R0 取當(dāng)前計時單元數(shù)據(jù)到A</p><p>  SWAP A A中數(shù)據(jù)高四位與低四位交換</p><p>  ORL A,@R0 前一地址中數(shù)據(jù)放入A中低四位</p><p>  ADD A,#01H A加1操作</p><

88、p>  DA A 十進制調(diào)整</p><p>  MOV R3,A 移入R3寄存器</p><p>  ANL A,#0FH 高四位變0</p><p>  MOV @R0,A 放回前一地址單元</p><p>  MOV A,R3

89、 取回R3中暫存數(shù)據(jù)</p><p>  INC R0 指向當(dāng)前地址單元</p><p>  SWAP A A中數(shù)據(jù)高四位與低四位交換</p><p>  ANL A,#0FH 高四位變0</p><p>  MOV @R0,A 數(shù)據(jù)放入當(dāng)削地

90、址單元中</p><p>  RET 子程序返回</p><p><b>  清零程序</b></p><p><b>  對計時單元復(fù)零用</b></p><p>  CLR0: CLR A 清累加器</p><p>  M

91、OV @R0,A 清當(dāng)前地址單元</p><p>  DEC R0 指向前一地址</p><p>  MOV @R0,A 前一地址單元清0</p><p>  RET 子程序返回</p><p><b>  時鐘調(diào)整程序</

92、b></p><p>  當(dāng)調(diào)時按鍵按下時進入此程序</p><p>  SETMM: cLR ET0 關(guān)定時器T0中斷</p><p>  CLR TR0 關(guān)閉定時器T0</p><p>  LCALL DL1S 調(diào)用1秒延時程序</p><p&g

93、t;  JB P3.7,CLOSEDIS 鍵按下時間小于1秒,關(guān)閉顯示</p><p>  MOV R2,#06H 進入調(diào)時狀態(tài),賦閃爍定時初值</p><p>  SETB ET1 允許T1中斷</p><p>  SETB TR1 開啟定時器T1</p><p>  

94、SET2: JNB P3.7,SET1 P3.7口為0(鍵未釋放),等待</p><p>  SETB 00H 鍵釋放,分調(diào)整閃爍標(biāo)志置1</p><p>  SET4: JB P3.7,SET3 等待鍵按下</p><p>  LCALL DL05S 有鍵按下,延時0.5秒</p><p&g

95、t;  JNB P3.7,SETHH 按下時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài)</p><p>  MOV R0,#77H 按下時間小于0.5秒加1分鐘操作</p><p>  LCALL ADD1 調(diào)用加1子程序</p><p>  MOV A,R3 取調(diào)整單元數(shù)據(jù)</p><p>  CL

96、R C 清進位標(biāo)志</p><p>  CJNE A,#60H,HHH 調(diào)整單元數(shù)據(jù)與60比較</p><p>  HHH: JC SET4 調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)</p><p>  LCALL CLR0 調(diào)整單元數(shù)據(jù)大于或等于60時清0</p><p>  CLR C

97、 清進位標(biāo)志</p><p>  AJMP SET4 跳轉(zhuǎn)到SET4循環(huán)</p><p>  CLOSEDIS: SETB ET0 省電狀態(tài)。開T0中斷</p><p>  SETB TR0 開啟T0定時器(開時鐘)</p><p>  CLOSE: JB P3.7,

98、CLOSE 無按鍵按下,等待。</p><p>  LCALL DISPLAY 有鍵按下,調(diào)顯示子程序延時削抖</p><p>  JB P3.7,CLOSE 是干擾返回CLOSE等待</p><p>  WAITH: JNB P3.7,WAITH 等待鍵釋放</p><p>  LJMP START1 返回主

99、程序(LED數(shù)據(jù)顯示亮)</p><p>  SETHH: CLR 00H 分閃爍標(biāo)志清除(進入調(diào)小時狀態(tài))</p><p>  SETHH1: JNB P3.7,SET5 等待鍵釋放</p><p>  SETB 01H 小時調(diào)整標(biāo)志置1</p><p>  SET6: JB P3.7,SET7

100、 等待按鍵按下</p><p>  LCALL DL05S 有鍵按下延時0.5秒</p><p>  JNB P3.7,SETOUT 按下時間大于0.5秒退出時間調(diào)整</p><p>  MOV R0,#79H 按下時間小于0.5秒加1小時操作</p><p>  LCALL ADD1

101、 調(diào)加1子程序</p><p>  MOV A,R3 </p><p>  CLR C </p><p>  CJNE A,#24H,HOUU 計時單元數(shù)據(jù)與24比較</p><p>  HOUU: JC SET6 小于24轉(zhuǎn)SET6循環(huán)</p>&l

102、t;p>  LCALL CLR0 大于或等于24時清0操作</p><p>  AJMP SET6 跳轉(zhuǎn)到SET6循環(huán)釋放</p><p>  LCALL DISPLAY 延時削抖</p><p>  JNB P3.7,SETOUT 是抖動,返回SETOUT再等待</p><p>  CLR

103、 01H 清調(diào)小時標(biāo)志</p><p>  CLR 00H 清調(diào)分標(biāo)志</p><p>  CLR 02H 清閃爍標(biāo)志</p><p>  CLR TR1 關(guān)閉定時器T1</p><p>  CLR ET1 關(guān)定時器T1中斷</

104、p><p>  SETB TR0 開啟定時器T0</p><p>  SETB ET0 開定時器T0中斷(計時開始)</p><p>  LJMP START1 跳回主程序</p><p>  SET1: LCALL DISPLAY 鍵釋放等待時調(diào)用顯示程序</p><

105、;p>  AJMP SET2 防止鍵按下時無時鐘顯示</p><p>  SET3: LCALL DISPLAY 等待調(diào)分按鍵時時鐘顯示用</p><p>  AJMP SET4</p><p>  SET5: LCALL DISPLAY 鍵釋放等待時調(diào)用顯示程序(調(diào)小時)</p><p>  AJMP

106、SETHH1 防止鍵按下時無時鐘顯示</p><p>  SET7: LCALL DISPLAY 等待調(diào)小時按鍵時時鐘顯示用</p><p>  AJMP SET6</p><p>  SETOUT1: LCALL DISPLAY 退出時鐘調(diào)整時鍵釋放等待</p><p>  AJMP SETOUT

107、 防止鍵按下時無時鐘顯示</p><p><b>  顯示程序</b></p><p>  顯示數(shù)據(jù)在70H-75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作;掃描控制,每個LED數(shù)碼管亮1MS時間再逐位循環(huán)。</p><p>  DISPLAY: MOV R1,#70H 指向顯示數(shù)據(jù)首址</p&g

108、t;<p>  MOV R5,#0FEH 掃描控制字初值</p><p>  PLAY: MOV A,R5 掃描字放入A</p><p>  MOV P3,A 從P3口輸出</p><p>  MOV A,@R1 取顯示數(shù)據(jù)到A</p>

109、<p>  MOV DPTR,#TAB 取段碼表地址</p><p>  MOVC A,@A+DPTR 查顯示數(shù)據(jù)對應(yīng)段碼</p><p>  MOV P1,A 段碼放入P1口</p><p>  LCALL DL1MS 顯示1MS</p><

110、;p>  INC R1 指向下一地址</p><p>  MOV A,R5 掃描控制字放入A</p><p>  JNB ACC.5,ENDOUT ACC.5=0時一次顯示結(jié)束</p><p>  RL A A中數(shù)據(jù)循環(huán)左移&l

111、t;/p><p>  MOV R5,A 放回R5內(nèi)</p><p>  AJMP PLAY 跳回PLAY循環(huán)</p><p>  ENDOUT: SETB P3.5 一次顯示結(jié)束,P3口復(fù)位</p><p>  MOV P1,#0FFH P

112、1口復(fù)位</p><p>  RET 子程序返回</p><p>  TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH</p><p><b>  3.2 軟件調(diào)試</b></p><p>  調(diào)試的主要過程包括硬

113、件調(diào)試和軟件調(diào)試,其中軟件調(diào)試,也即程序編譯與仿真過程處于本次設(shè)計調(diào)試過程的核心環(huán)節(jié)。由于本設(shè)計已經(jīng)制作出液晶顯示電子鐘,所以硬件調(diào)試也很重要。兩種調(diào)試過程并非孤立或者分開的,而是緊密相關(guān)。在此我們用到的開發(fā)工具是南京偉福公司生產(chǎn)的WAVE6000/S型仿真器。</p><p><b>  3.2.1偉福簡介</b></p><p>  偉福仿真器有主機+POD組成,

114、通過更換POD,可以對各種CPU進行仿真。它的仿真CPU 外置,直接位于用戶板的上方,提高了仿真頻率以及降低信號噪聲。它有強大的邏輯分析儀綜合調(diào)試功能:邏輯分析儀由交互式軟件菜單窗口對系統(tǒng)硬件的邏輯或進序進行同步實時采樣,并實時在線調(diào)試分析,采集深度32K(E6000/L),最高時基采樣頻率達(dá)20M,40路波形的可精確實時反映用戶程序運行時的歷史時間。在軟件仿真中,它提供了Wave6000及Keil uVision 雙平臺,有雙工作模式

115、:兼容軟件模擬仿真和硬件仿真。具備真正集成調(diào)試環(huán)境: 集成了編輯器、編譯器、調(diào)試器,源程序編輯、編譯、下載、調(diào)試全部可以在一個環(huán)境下完成。它支持多語言多模塊混合調(diào)試:支持ASM(匯編)、PLM、C語言多模塊混合源程序調(diào)試。</p><p><b>  3.2.2軟件調(diào)試</b></p><p>  首先對WAVE6000/S仿真頭等項目進行設(shè)置。</p>

116、<p>  仿真器仿真頭等項目設(shè)置如圖3-1 [編譯器路徑]:指明本系統(tǒng)匯編器,編譯器所在位置,本次設(shè)計使用的51 系列編譯器在D:\Program Files\COMP51\文件夾下。</p><p><b>  圖3-1仿真頭設(shè)置</b></p><p>  [ASM 命令行]:使用偉福匯編器,和偉福預(yù)定義的符號。</p><p&g

117、t;  [編譯器選擇]:選擇偉福匯編器。</p><p>  [缺省顯示格式]:指定觀察變量顯示的方式,一般為混合十/十六進制。</p><p>  除此之外軟件模擬器仿真其他設(shè)置一般情況下都是以51系列編譯器和匯編語言相應(yīng)要求作出的缺省設(shè)置,可以默認(rèn)缺省設(shè)置。</p><p>  軟件模擬器方式設(shè)置成功后就可以正式編譯程序。首先在WAVE上對源程序的結(jié)構(gòu)錯誤和語法

118、錯誤進行偵測與修改。E6000/S對程序語法錯誤的偵察功能很強,界面也很友好。但很多時候也需程序調(diào)試人員細(xì)致尋查才能徹底找出錯誤原因。我在源程序的編譯過程中就曾遇到一些很隱蔽的結(jié)構(gòu)和語法錯誤,WAVE有報錯,但很籠統(tǒng),不能具體到深層。</p><p>  如果程序編譯通過則在WAVE界面中的Message窗口會示意程序已通過編譯,如圖3-2所示:</p><p><b>  圖3

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論