版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《新編單片機原理及應用》課程設計</p><p><b> 電子秒表</b></p><p><b> 說明書</b></p><p><b> 目錄</b></p><p> 緒論·····
2、83;····································&
3、#183;········3</p><p> 概述·······················
4、83;························3</p><p> 設計目的·······
5、83;····································3
6、</p><p> 設計任務和內容·······························
7、3;······3</p><p> 總體設計及核心器件簡介························
8、83;·····4</p><p> 總體設計··························
9、83;··················4</p><p> 硬件設計 ·············
10、183;······························4</p><p> 軟件設計 ·&
11、#183;····································
12、;·····13</p><p> 數(shù)字秒表的安裝與調試·························
13、3;······17</p><p> 軟件的仿真與調試·························
14、;···········17</p><p> 硬件的安裝與調試····················
15、················17</p><p> 匯編程序················
16、;····························18</p><p> 設計體會與總結···&
17、#183;···································22<
18、;/p><p> 參考文獻 ································
19、183;················23</p><p><b> 緒論</b></p><p><b> 概述</b></p><p> 單片微型計算機
20、簡稱單片機,又稱微控制器,是微型計算機的一個重要分支。單片機是20世紀七十年代中期發(fā)展起來的一種大規(guī)模集成電路芯片,是集CPU、RAM、ROM、I/O接口和終端系統(tǒng)與同一硅片的器件。20世紀八十年代以來單片機發(fā)展迅速各類新產(chǎn)品不斷涌現(xiàn)出現(xiàn)許多新產(chǎn)品,出現(xiàn)了許多高性能新型機種現(xiàn)已成為工業(yè)控制和各控制領域的支柱產(chǎn)業(yè)之一。由于單片機功能強、體積小、可靠性好、價格便宜等獨特優(yōu)點因而受到人們的高度重視并取到了一系列的科研成果,成為傳統(tǒng)工業(yè)技術改造
21、和新產(chǎn)品更新?lián)Q代的理想機種,并具有廣闊的發(fā)展前景。</p><p> 本設計運用所學的單片機知識,將單片機與普通秒表相結合設計了電子秒表,具有顯示直觀、讀取方便、精度高等優(yōu)良特點,在計時中應用廣泛。</p><p><b> 設計目的</b></p><p> 加強對51系列單片機的構造了解及應用,熟悉匯編語言或C語言編程,綜合掌握和理解
22、設計各部分的工作原理、設計過程、芯片器件的選擇方法、模塊化編程等多項知識。 </p><p> (1)用單片機模擬實現(xiàn)具體應用使個人設計系統(tǒng)能夠真正使用;</p><p> ?。?)把理論知識與實踐知識相結合,充分發(fā)揮個人能力,并在實踐中得到鍛煉;</p><p> ?。?)提高利用已學的知識分析和解決問題的能力;</p><p> ?。?/p>
23、4)提高動手實踐能力。</p><p><b> 設計任務及內容</b></p><p><b> 1.3.1設計任務</b></p><p> 結合教材及參考資料,用80C51單片機模擬實現(xiàn)電子秒表的開啟,計時,停止并顯示時間等功能。</p><p> 1.3.2 設計內容</p&g
24、t;<p> (1)填寫設計任務書;</p><p> (2)進行總體設計,畫出設計原理圖;</p><p> ?。?)用PROTEUS軟件畫出設計電路圖;</p><p> (4)用Keil軟件編寫程序;</p><p> (5)在PROTEUS里模擬并調試程序達到期望功能。</p><p>
25、 第二章 總體設計及核心器件簡介</p><p> 2.1 總體設計</p><p> 本設計中包括硬件電路的設計和系統(tǒng)程序的設計。其硬件電路的設計主要包括單片機的選擇、顯示電路的選擇與設計、按鍵電路的選擇與設計、時鐘電路的選擇與設計、復位電路的選擇與設計等。系統(tǒng)程序的設計包括系統(tǒng)程序設計思路、系統(tǒng)資源的分配、匯編程序的設計等。</p><p> 2.2
26、 硬件設計</p><p> 2.2.1 硬件系統(tǒng)總體設計</p><p> 主控制器選用80C51單片機,顯示電路采用共陰極LED數(shù)碼管顯示計時時間,四個按鍵均采用觸點式按鍵。</p><p> 1. 利用80C51單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其實現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),P2.2-P2.4口
27、作列掃描輸出,P1.0、P3.2、P3.3口接三個按鈕開關,分別實現(xiàn)電子秒表的啟動、開始、暫停功能。電路原理圖設計最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖2.1進行設計。</p><p> 圖2.1 數(shù)字秒表硬件電路基本原理圖</p><p> 2. 根據(jù)要求知道秒表設計主要實現(xiàn)的功能是計時和顯示。因此設置了四個按鍵和三位數(shù)碼管
28、顯示時間,三個按鍵分別是啟動、開始,停止和復位按鍵。利用這四個鍵來實現(xiàn)秒表的全部功能,而三位數(shù)碼管則能顯示00.0-99.9秒的計時。</p><p> 本設計中,數(shù)碼管顯示的數(shù)據(jù)存放在內存單元7BH-7DH中。其中7BH存放0.1秒位數(shù)據(jù),7CH存放1秒位數(shù)據(jù),7DH存放10秒位數(shù)據(jù),每一地址單元內均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應段碼存放在ROM表中。顯
29、示時,先取出7BH-7DH某一地址中的數(shù)據(jù),然后查得對應的顯示用段碼,并從P0口輸出,P2口將對應的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。</p><p> 3. 計時采用定時器T0中斷完成,定時溢出中斷周期為0.1s,當一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對0.1秒計數(shù)單元進行加一,達到10次就對1秒位進行加一,依次類推,直到99.9秒重新復位。 </p><p
30、> 4. 按鍵的處理。這兩個鍵采用中斷的方法來識別,對開始和停止鍵采用外部中斷INT0、INT1的方式,即A、B鍵分別接P3.2、P3.3口。</p><p> 2.2.2 單片機的選擇</p><p> 本課題在選取單片機時,充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗,并根據(jù)自己的實際情況,選擇了80C51。</p><p> 80C51是MCS-
31、51系列單片機中的一個子系列,是一族高性能兼容型單片機。其內部資源分配和性能如下;8位CPU;尋址能力2X64K;4KB的內部ROM和128B內部RAM;四個8位I/O接口電路;一個串行全雙工異步接口;五個中斷源和兩個中斷優(yōu)先級;采用CMOS工藝電流小,低功耗。</p><p> 80C51各引腳主要功能簡介:
32、 (1)Vss(20腳):接地</p><p> (2)VCC(40腳): 主電源+5V</p><p> ?。?)XTAL1(19腳):接外部晶體的一端。在片內它是振蕩電
33、路反相放大器的輸入端。在采用外部時鐘時,對于HMOS單片機,該端引腳必須接地;對于CHMOS單片機,此引腳作為驅動端。</p><p> XTAL2(18腳):接外部晶體的另一端。在片內它是一個振蕩電路反相放大器的輸出端,振蕩電路的頻率是晶體振蕩頻率。若需采用外部時鐘電路,對于HMOS單片機,該引腳輸入外部時鐘脈沖;對于CHMOS單片機,此引腳應懸浮。</p><p> ?。?) RST
34、(9腳): 單片機剛接上電源時,其內部各寄存器處于隨機狀態(tài),在該腳輸入24個時鐘周期寬度以上的高電平將使單片機復位(RESET)</p><p> ?。?)PSEN(29腳): 在訪問片外程序存儲器時,此端輸出負脈沖作為存儲器讀選通信號。CPU在向片外存儲器取指令期間,PSEN信號在12個時鐘周期中兩次生效。不過,在訪問片外數(shù)據(jù)存儲器時,這兩次有效PSEN信號不出現(xiàn)。PSEN端同樣可驅動8個LSTTL負載。我們根
35、據(jù)PSEN、ALE和XTAL2輸出端是否有信號輸出,可以判別80C51是否在工作。</p><p> (6)ALE/PROG(30腳):在訪問片外程序存儲器時,此端輸出負脈沖作為存儲器讀選通信號。CPU在向片外存儲器取指令期間,PSEN信號在12個時鐘周期中兩次生效。不過,在訪問片外數(shù)據(jù)存儲器時,這兩次有效PSEN信號不出現(xiàn)。PSEN端同樣可驅動8個LSTTL負載。我們根據(jù)PSEN、ALE和XTAL2輸出端是否
36、有信號輸出,可以判別80C51是否在工作。</p><p> ?。?)EA/VPP(31腳):當EA端輸入高電平時,CPU從片內程序存儲器地址0000單元開始執(zhí)行程序。當?shù)刂烦?KB時,將自動執(zhí)行片外程序存儲器的程序。當EA輸入低電平時,CPU僅訪問片外程序存儲器。在對87C51EPROM編程時,此引腳用于施加編程電壓VPP。</p><p> (8)輸入/輸出引腳:</p>
37、;<p> 1)P0.0—P0.7 (39腳—32腳) </p><p> 2)P1.0—P1.7 (01腳—08腳)</p><p> 3)P2.0—P2.7 (26腳—21腳)</p><p> 4)P3.0—P3.7 (10腳—17腳)</p><p> 圖2.2 80C
38、51引腳圖</p><p> 2.2.3顯示電路的選擇與設計</p><p> 1. 對于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。對于一般的段式液晶屏,需要專門的驅動電路,而且液晶顯示作為一種被動顯示,可視性差,不適合遠距離觀看;對于具有驅動電路和單片機接口的液晶顯示模塊(字符或點陣),一般多采用并行接口,對單片機的接口要求較高,占用資源多。而數(shù)碼管作為一種主動顯示器件,具有亮度
39、高、響應速度快、防潮防濕性能好、溫度特性極性、價格便宜、易于購買等優(yōu)點,而且有遠距離視覺效果,很適合夜間或是遠距離操作。因此,本設計的顯示電路采用7段數(shù)碼管作為顯示介質。</p><p> 2. 數(shù)碼管顯示可以分為靜態(tài)顯示和動態(tài)顯示兩種。由于本設計需要采用五位數(shù)碼管顯示時間,如果靜態(tài)顯示則占用的口線多,硬件電路復雜。所以采用動態(tài)顯示。</p><p> 動態(tài)顯示是一位一位地輪流點亮各
40、位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應并聯(lián)在一起,由一個8位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應,只要每位
41、顯示間隔足夠短就可以給人同時顯示的感覺。</p><p> 圖2.3 顯示電路基本原理圖</p><p> 3. 數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種</p><p> 共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起,如圖2.4(b),通常,公共陽極接高電平(一般接電源),其它管腳接段驅動電路輸出端。當某段驅動電路的輸出端為低電平時,則該端所
42、連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能吸收額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。</p><p> 圖2.4(a)數(shù)碼管引腳圖 (b)共陽極內部結構圖 (c)共陰極內部結構</p><p> 共陰極數(shù)碼管的8個發(fā)光二極管的陰極(二極管負端)連接在一起,如圖2.4(c),通常,公共陰極接低電平(一般接地
43、),其它管腳接段驅動電路輸出端,當某段驅動電路的輸出端為高電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能提供額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。 </p><p> 本設計采用共陰極數(shù)碼顯示管做顯示電路,由于采用的是共陰的數(shù)碼顯示管,所以只要數(shù)碼管的a、b、c、d、e、f、g、dp引腳為高電平,那么其對應的二極管
44、就會發(fā)光,使數(shù)碼顯示管顯示0~9的編碼見表2.1。</p><p> 表2.1 共陰極數(shù)碼顯示管字型代碼</p><p> 4. 動態(tài)顯示電路由顯示塊、字形碼驅動模塊、字位驅動模塊三部分組成。如圖2.3所示為本系統(tǒng)的3位LED動態(tài)顯示器接口電路。圖中,3個數(shù)碼管的8段段選線分別與外接上拉電阻的單片機P0口對應相連,而3個數(shù)碼管的位控制端則和NPN型三極管的集電極相連接。單片機的P2
45、.2~P2.4口則分別對應數(shù)碼顯示管的最低位到最高位,P2.2~P2.4口分別和 三個NPN型三極管的基極相連,做三極管導通的控制端,而NPN型三極管選用9013型三極管。根據(jù)9013的資料顯示:其耐壓值為40V,最大功率為0.65W,最大電流為0.5A,電氣性能完全滿足本設計的要求。另外數(shù)碼管顯示是采用動態(tài)顯示,所以對三極管的開關頻率有一定的要求。根據(jù)電子秒表的設計計算可知動態(tài)顯示的頻率最高為3KHz,而9013的導通頻率為150MH
46、z,完全能滿足本設計的要求,所以最終選取9013三極管最為位控制開關。</p><p> 5. 由于數(shù)碼管是有P0口來驅動,它內部沒有上拉電阻,作為輸出口時驅動能力比較弱,不能點亮數(shù)碼顯示管,因此P0口必須接上拉電阻來提高驅動能力。另外一位共陰數(shù)碼管的驅動電流一般為20mA左右,如果電流太大容易造成數(shù)碼管損壞,所以也需要根據(jù)電源的電壓值來確定上拉電阻的大小。如果電阻過小,勢必會形成灌電流過大,造成單片機IO的
47、損壞,如果電阻過大,那么對拉電流沒有太大的影響。電源供電電壓為5V,當上拉電阻選用220Ω電阻時灌電流為22mA。不會損壞單片機的I/O口,同時也可以為數(shù)碼顯示管起到限制電流的保護作用。 </p><p> 2.2.4按鍵電路的選擇與設計</p><p> 本設計中有四個按鍵,分別實現(xiàn)啟動、開始、暫停和復位功能。按設計要求對開始和停止鍵采用外部中斷INT0、INT1的方式,即A、B鍵分
48、別接P3.2、P3.3口。四個按鍵均采用低電平有效,具體電路連接圖如圖2.5所示。</p><p> 當按鍵沒有按下時,單片機的I/O口直接連接電源,因此需要接上拉電阻來進行限流,本設計中選取阻值為100Ω 的電阻作為上拉電阻,根據(jù)計算可知此時的灌電流為50mA,查看80C51的資料得知次電流在安全范圍內,符合安全設計要求。</p><p> 按鍵電路中由于采用了外部中斷,所以需要用到
49、P3口的第二功能。P3口引腳的第二功能如表2.2</p><p><b> 圖2.5 按鍵電路</b></p><p> 表2.2 P3口引腳第二功能表</p><p> 2.2.5 時鐘電路的選擇與設計</p><p> 單片機的時鐘信號用來提供單片機內各種微操作的時間基準,80C51片內設有一個由反
50、向放大器所構成的振蕩電路,XTAL1和 XTAL2分別為振蕩電路的輸入和輸出端,80C51單片機的時鐘信號通常用兩種電路形式得到:內部振蕩方式與外部振蕩方式。外部方式的時鐘很少用,若要用時,只要將XTAL1接地,XTAL2接外部振蕩器就行。對外部振蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHz的方波信號。</p><p> 時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘信號P1和P2供單片機使用。
51、P1在每一個狀態(tài)S的前半部分有效,P2在每個狀態(tài)的后半部分有效。本設計采用的內部振蕩方式,內部振蕩方式所得的時鐘信號比較穩(wěn)定,實用電路中使用較多。本設計系統(tǒng)的時鐘電路如圖2.6所示。只要按照圖2.6所示電路進行設計連接就能使系統(tǒng)可靠起振并能穩(wěn)定運行。圖中,電容器C1 、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5~33pF。但在時鐘電路的實際應用中一定要注意正確選擇其大小,并保證電路的對稱性,盡可能匹配,選用正牌的瓷片或
52、云母電容,如果可能的話,溫度系數(shù)盡可能低。本設計中采用大小為30pF的電容和12MHz的晶振。</p><p> (a)原理圖 (b)電路連接圖</p><p> 圖2.6 內部振蕩電路</p><p> 2.2.6復位電路的選擇與設計</p><p> 關于單片
53、機的置位和復位,都是為了把電路初始化到一個確定的狀態(tài),一般來說,單片機復位電路作用是把一個例如狀態(tài)機初始化到空狀態(tài),而在單片機內部,復位的時候單片機是把一些寄存器以及存儲設備裝入廠商預設的一個值,復位是一個很重要的操作方式。但單片機本身是不能自動進行復位的,必須配合相應的外部電路才能實現(xiàn)。</p><p> 根據(jù)應用的要求,復位操作通常有兩種基本形式:上電復位、手動復位。</p><p>
54、; 上電復位要求接通電源后,自動實現(xiàn)復位操作。80C51單片機的上電復位POR(Power On Reset)實質上就是上電延時復位,也就是在上電延時期間把單片機鎖定在復位狀態(tài)上。在單片機每次初始加電時,首先投入工作的功能部件是復位電路。復位電路把單片機鎖定在復位狀態(tài)上并且維持一個延時(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個等待時間;在電源電壓穩(wěn)定之后,再插入一個延時,給予時鐘振蕩器從起振到穩(wěn)定的一個等待時間;在單片機開始
55、進入運行狀態(tài)之前,還要至少推遲2個機器周期的延時。</p><p> 上述一系列的延時,都是利用在單片機RST引腳上外接一個RC支路的充電時間而形成的。典型復位電路如圖2.7(a)所示,其中的阻容值是原始手冊中提供的。在經(jīng)歷了一系列延時之后,單片機才開始按照時鐘源的工作頻率,進入到正常的程序運行狀態(tài)。在電源電壓以及振蕩器輸出信號穩(wěn)定之后,又等待了一段較長的延時才釋放RST信號,使得CPU脫離復位鎖定狀態(tài);而RS
56、T信號一旦被釋放,立刻在ALE引腳上就可檢測到持續(xù)的脈沖信號。</p><p> 由于標準80C51的復位邏輯相對簡單,復位源只有RST一個(相對新型單片機來說,復位源比較單一),因此各種原因所導致的復位活動以及復位狀態(tài)的進入,都要依靠在外接引腳RST上施加一定時間寬度的高電平信號來實現(xiàn)。</p><p> 標準80C51不僅復位源比較單一,而且還沒有設計內部上電復位的延時功能,因此必
57、須借助于外接阻容支路來增加延時環(huán)節(jié),如圖2.7(a)所示。其實,外接電阻R還是可以省略的,理由是一些CMOS單片機芯片內部存在一個現(xiàn)成的下拉電阻Rrst。如圖2.8所示。因此,在圖2.7(a)的基礎上,上電復位延時電路還可以精簡為圖2.7(b)所示的簡化電路(其中電容C的容量也相應減小了)。</p><p> 圖2.7上電復位延時電路 圖2.8復位引腳RST內部電路<
58、/p><p> 在每次單片機斷電之后,須使延時電容C上的電荷立刻放掉,以便為隨后可能在很短的時間內再次加電作好準備。否則,在斷電后C還沒有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應有的延遲功能。因此,在圖2.7(a)的基礎上添加一個放電二極管D,上電復位延時電路就變成了如圖2.7(c)所示的改進電路。也就是說,只有RC支路的充電過程對電路是有用的,放電過程不僅無用,而且會帶來潛在的危害。于是附加一個
59、放電二極管D來大力縮短放電持續(xù)時間,以便消除隱患。二極管D只有在單片機斷電的瞬間(即VCC趨近于0 V,可以看作VCC對地短路)正向導通,平時一直處于反偏截止狀態(tài)。</p><p> 手動復位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕開關操作使單片機復位。單片機要完成復位,必須向復位端輸出并持續(xù)兩個機器周期以上的高電平,從而實現(xiàn)復位操作。</p><p> ?。╝)原
60、理圖 (b)電路連接圖</p><p> 圖2.9 單片機復位電路</p><p> 本設計采用上電且開關復位電路,如圖2.9所示上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電且開關復位的操作。通常選擇C=10~30μF,R=100Ω~1KΩ
61、,本設計采用的電容值為22μF的電容和電阻為1K的電阻。</p><p> 2.2.7 系統(tǒng)總電路的設計</p><p> 系統(tǒng)總電路由以上設計的顯示電路,時鐘電路,按鍵電路和復位電路組成,只要將單片機與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系統(tǒng)總電路圖如圖2.10所示。</p><p> 80C51單片機為主電路的核心部分,各個電路均和單片機相連接,
62、由單片機統(tǒng)籌和協(xié)調各個電路的運行工作。</p><p> 80C51單片機提供了XTAL1和XTAL2兩個專用引腳接晶振電路,因此只要將晶振電路接到兩個專用引腳即可為單片機提供時鐘脈沖,但在焊接晶振電路時要盡量使晶振電路靠近單片機,這樣可以為單片機提供穩(wěn)定的始終脈沖。</p><p> 圖2.10 系統(tǒng)總電路圖</p><p> 復位電路同晶振電路,單片機設有
63、一個專用的硬件復位接口,并設置為高電平有效。</p><p> 按鍵電路與單片機的端口連接可以由用戶自己設定,本設計中軟件復位鍵接單片機的P1.0設為低電平有效。而另外的開始鍵和暫停鍵兩鍵使用了外部中斷,所以需要連接到單片機的特殊接口P3.2和P3.3,這兩個I/O口的第二功能分別為單片機的外部中斷INT0端口和外部中斷INT1端口。同樣設置為位低電平有效。</p><p> 顯示電路
64、由三位數(shù)碼管組成,采用動態(tài)顯示方式,因此有8位段控制端和3位位控制端,八位段控制接P0口,P0.0-P0.7分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp顯示,80C51的P0口沒有集成上拉電阻,高電平的驅動能力很弱,所以需要接上拉電阻來提高P0的高電平驅動能力。三位位控制則由低位到高位分別接到P2.2-P2.4口,NPN三極管9013做為位控制端的開關,當P2.2-P2.4端口任意一個端口為高電平時,與其相對應的三極管就導通,對
65、應的數(shù)碼管導通顯示。</p><p> 通過以上設計已經(jīng)將各部分電路與單片機有機的結合到一起,硬件部分的設計以大功告成,剩下的部分就是對單片機的編程,使單片機按程序運行,實現(xiàn)數(shù)字電子秒表的全部功能。</p><p> 2.3 軟件設計</p><p> 2.3.1 程序設計思想</p><p> 結合電路,程序的總體思路 如
66、圖2.11。</p><p> 2.3.2 系統(tǒng)資源的分配</p><p> 本設計系統(tǒng)所用到的單片機端口數(shù)比較多,所以在這里將對數(shù)字電子秒表的硬件資源的大概分配加以說明。片內RAM的分配、各功能鍵的定義以及各端口的分配安排如表2.3所示。</p><p> 表2.3 端口的分配安排表</p><p> 2.3.3 主程序設計
67、</p><p> 本系統(tǒng)程序主要模塊由主程序、定時中斷服務程序、外部中斷INT0服務程序和外部中斷INT1服務程序組成。其中主程序是整個程序的主體??梢詫Ω鱾€中斷程序進行調用,協(xié)調各個子程序之間的聯(lián)系。</p><p> 系統(tǒng)(上電)復位后,進入主程序,主程序流程圖如圖2.11。首先對系統(tǒng)進行初始化,包括設置各入口地址、中斷的開啟、對各個數(shù)據(jù)緩存區(qū)清“0”、賦定時器初值,初始化完畢后
68、,就進入數(shù)碼管顯示程序。數(shù)碼管顯示程序對顯示緩存區(qū)內的數(shù)值進行調用并在數(shù)碼管上進行動態(tài)顯示。顯示一次就對P1.0進行一次掃描,查詢啟動鍵P1.0是否按下,當啟動鍵按下后,數(shù)碼管全零顯示,沒有按下則返回開始,重新循環(huán)顯示數(shù)字8。</p><p> 在主程序中還進行了賦寄存區(qū)的初始值、設置定時器初值以及開啟外部中斷等操作,當定時時間到后就轉去執(zhí)行定時中斷程序。當外部中斷有請求則去執(zhí)行外部中斷服務程序,并在執(zhí)行完后返
69、回主程序。</p><p> 2.3.4 中斷程序設計</p><p> 現(xiàn)在方案中采用了兩個中斷,外部中斷INT0,INT1。CPU在響應中斷時,先處理高級中斷,在處理低級中斷,若有多個同級中斷時,則按自然優(yōu)先順序處理。例如當CPU正在處理一個中斷申請時,有出現(xiàn)了另一個優(yōu)先級比它高的中斷請求,這是,CPU就暫停終止對當前優(yōu)先級較低的中斷源的服務,轉去響應優(yōu)先級比它高的中斷請求,并
70、為其服務。待服務結束,再繼續(xù)執(zhí)行原來較低級的中斷服務程序。而當CPU為級別高的終端服務程序服務時,如果級別低的中斷發(fā)出中斷請求,此時CPU是不會響應的,所以為了避免開始和暫停兩個按鍵中的一個出現(xiàn)沒有響應的情況,在進行程序編輯時要注意對中斷的使用,避免出現(xiàn)中斷的嵌套。,合理分配中斷對本設計的實現(xiàn)是至關重要的。</p><p> 80C51的自然優(yōu)先級順序排列如下:</p><p> 中斷
71、源 最高</p><p><b> 外部中斷INT0</b></p><p> 定時/計數(shù)器T0溢出中斷</p><p><b> 外部中斷INT1</b></p><p> 定時/計數(shù)器T1溢出中斷</p>
72、;<p> 串行口中斷 最低</p><p> 數(shù)字式秒表中的兩個按鍵采用了中斷實現(xiàn)功能。開始采用外部中斷INT0,停止采用外部中斷INT1。另外程序中還用到了定時/計數(shù)器0溢出中斷進行計時。依據(jù)設計要求,停止的外部中斷INT1中斷級別最高,計時的定時/計數(shù)器0溢出中斷次之,開始的外部中斷INT0級別最低。</p>
73、<p> ?。?)外部中斷INT0服務程序</p><p> 外部中斷INT0服務程序結合外部P3.2開始鍵實現(xiàn)數(shù)字電子秒表的計時開始功能,具體流程圖如圖2.12。</p><p> 當按下P3.2開始鍵按下向CPU發(fā)出外部中斷請求,CPU轉向外部中斷0服務程序執(zhí)行,啟動定時器T0。</p><p> 圖2.11 主程序流程圖</p>
74、<p> 圖2.12外部中斷1服務程序流程圖 圖2.13外部中斷0服務程序流程圖</p><p> ?。?)外部中斷INT1服務程序:</p><p> 外部中斷INT1服務程序結合外部P3.3停止鍵實現(xiàn)數(shù)字電子秒表的停止功能,具體流程圖如圖2.13。</p><p> 當按下P3.2停止鍵按下向CPU發(fā)出外部中斷請求,
75、CPU轉向外部中斷1服務程序執(zhí)行,停止定時器T0。</p><p> ?。?)定時中斷服務程序</p><p> 當定時/計數(shù)器T0器溢出后,向CPU發(fā)出中斷請求信號。CPU跳轉到定時中斷程序執(zhí)行。定時中斷程序是一個進位程序,主要負責對0.1s的加一。當如果滿十就向0.1s位加一,依次類推,最終達到99.9秒后歸零,從零開始再次計時。</p><p> 定時/計
76、數(shù)器T0工作在方式1下,THX和TLX組成一個16位的二進制數(shù)計數(shù)器。單片機開機或復位時,它的值為00H,當T0啟動后,從第一個輸入脈沖開始計時,每來一個脈沖計數(shù)加一,即從0000000000000000開始計數(shù)到1111111111111111,再計數(shù)一個脈沖時TH0和TL0組成的16位計數(shù)器將會從16個1變成16個0,并產(chǎn)生溢出,溢出位將被送到TF0標志位,通過溢出標志產(chǎn)生溢出中斷請求。顯然,T0定時器在方式1下引起一次中斷所允許計
77、數(shù)的最多脈沖個數(shù)為216 個。</p><p> 但如果定時計數(shù)器如果每次都固定從0開始計數(shù),到計滿后,再向CPU發(fā)出溢出中斷請求信號那是毫無意義的。為了使定時計數(shù)器在規(guī)定的計數(shù)脈沖個數(shù)字之后(此時應小于216 個脈沖),向CPU發(fā)出溢出中斷請求,可采取預先向THX和TLX中放入一個初值X的方法,使計數(shù)器以X值為起始值開始計數(shù),即X+1,X+2,……直至計數(shù)器計滿,從1全變?yōu)?。設需要計數(shù)的脈沖個數(shù)為N,則有:
78、N=216-X 。在定時方式下:定時時間T=N*Tcy=(216—X)*12/fosc?,F(xiàn)在本設計要求50ms實現(xiàn)一次中斷,選擇定時器T0工作在方式1。所以需要根據(jù)以上條件計算出T0的初值。設T0的初值為X,則 X =216—50ms/1us=15536D=3CB0H。即THX=3CH(取X的高8位)TLX=0B0H(取X的低5位)</p><p> 由于定時50ms只是一個理想化的時間,其中并沒有考慮到中斷后
79、單片機執(zhí)行語句所花的時間。雖然執(zhí)行語句所花的時間很短只有即微秒,但積少成多,數(shù)字秒表一秒中要溢出中斷20次,積累起來誤差就能達到毫秒級,這對于精度到達毫秒級的數(shù)字電子秒表來說是很大的誤差。所以要在后期編程時還要將單片機讀程序的時間考慮進去,在對定時器賦初值時將單片機需要執(zhí)行的語句所花的時間加上,這樣就能使數(shù)字電子秒表的誤差達到最小。</p><p> 第三章 數(shù)字電子秒表的安裝與調試</p>&
80、lt;p> 3.1 軟件的仿真與調試</p><p> Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件,它可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的主要特點總結后有以下四點:①實現(xiàn)了單片機仿真和SPICE電路仿真相結合的功能。②支持目前主流單片機系統(tǒng)的仿真。③提供了軟件調試功能,并可以與WAVE聯(lián)合仿真調試。④具有強大的原理圖繪制功能。總之,該軟件
81、是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。在電子領域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調試通過后在焊電路,節(jié)省了不少在硬件調試上所花的時間。</p><p> Proteus ISIS的工作界面是一種標準的Windows界面。它包括標題欄、主菜單、狀態(tài)欄、標準工具欄、繪圖工具欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編
82、輯窗口等十幾個工具,方便了使用者的使用。</p><p> Proteus SISI繪制原理圖的操作與Protel 99se繪制原理圖的操作基本相同,在這里就不再作贅述。下面拿本設計中的一個仿真例子作簡述說明。運行Proteus SISI后,繪制病床呼叫系統(tǒng)的原理圖。</p><p> 首先打開已經(jīng)畫好的proteus DSN文件,雙擊圖中的80C51芯片,就彈出一個窗口,在Progr
83、am File項中通過路徑選擇在WAVE中生成的HEX文件,雙擊選中后確定,這樣仿真圖中的80C51芯片就已經(jīng)讀取了本設計中的HEX文件。單擊“三角形按鈕”進行仿真。通過對仿真結果的觀察來對程序進行修改,最終使程序到達設計要求。</p><p> 3.2 硬件的安裝與調試</p><p> 按照之前設計好的數(shù)字電子秒表原理圖,詳細計算系統(tǒng)中各個元件的參數(shù),選擇相應器件,制作實際電路
84、板。由于考慮到萬能板大小的問題及元件之間連線的方便,在焊接元器件前必須考慮元件的布局然后進行實際操作。</p><p> 制作好的電路板可以用萬用表(200歐姆檔)的紅、黑表筆測試電路板的每條走線,當其電阻非常小時,證明走線沒有斷開,當其電阻很大時,證明該條走線斷了,應該重新走線,使電路板在電氣上得到正確地連接。選用萬用表的20K歐姆檔,檢測電路中是否存在短路。因為系統(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保
85、數(shù)碼管的公共端接的是低電平。</p><p> (1)晶振電路的測試</p><p> 在單片機正常運行的必要條件是單片機系統(tǒng)的時鐘穩(wěn)定正常。實際中,因為各種原因導致系統(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運行的情況時有,因此系統(tǒng)時鐘是否振是通電檢查的首要環(huán)節(jié)。在系統(tǒng)通電的狀況下,用萬用表的直流電壓檔(20V),分別測量XTAL1和XTAL2引腳的電壓,看是否正常,在調試過程中,測得電壓XTA
86、L1引腳應為2.05V,XTAT2應為2.15V。</p><p> ?。?)復位電路的測試</p><p> 復位不正常也會導致系統(tǒng)不能工作。如果復位引腳始終為高電平,系統(tǒng)將始終處于復位狀態(tài);如果始終為低電平,不能產(chǎn)生復位所需的高電平信號脈沖,則系統(tǒng)也可能無法正常工作。單片機正常工作時,RST復位引腳應為0V,按下復位按鍵時,復位引腳為高電平5V左右。</p><p
87、> ?。?)顯示電路的測試</p><p> 顯示電路是數(shù)字電子秒表正常運行最直觀的觀察窗口,我們可以通過觀察顯示電路的顯示結果觀察系統(tǒng)能否正常運行。當顯示電路按照電路圖焊接好后,用萬用表的測二極管檔位,將黑表筆接共陰數(shù)碼管的公共段,然后將紅表筆接數(shù)碼管的各段,當數(shù)碼管的段能正常顯示,說明各點焊接正常。</p><p> 3.2 匯編程序</p><p&g
88、t; ORG 0000H</p><p> LJMP MAIN</p><p> ORG 0003H ;外部中斷INT0中斷入口</p><p> LJMP START</p><p> ORG 000BH ;定時器T0中斷入口</p><p&g
89、t; LJMP UPDATE</p><p> ORG 0013H ;外部中斷INT1中斷入口</p><p> LJMP STOP</p><p> MAIN: MOV DPTR, #TAB ;存入表頭地址</p><p> MOV TMOD, #01H ;置
90、T0為方式1</p><p> MOV TH0, #3CH ;賦定時器初值,50毫秒</p><p> MOV TL0, #0B0H</p><p> MOV 7BH, #00H ;0.1秒的存儲空間</p><p> MOV 7CH, #00H ;1秒的存儲空間&l
91、t;/p><p> MOV 7DH, #00H ;10秒的存儲空間</p><p> MOV R2, #00H ;R2、R3、R4寄存器置零</p><p> MOV R3, #00H</p><p> MOV R4, #00H</p><p> SET
92、B EA ;開中斷總允許</p><p> SETB EX0 ;開外部中斷INT0</p><p> SETB EX1 ;開外部中斷INT1</p><p> SETB IT0 ;外部中斷0位邊沿觸發(fā)方式</p><p>
93、 SETB IT1 ;外部中斷1位邊沿觸發(fā)方式</p><p> SETB ET0 ;定時器T0允許位</p><p> XIAN1: MOV P0, #07FH ;顯示數(shù)字8</p><p> SETB P2.2 ;接通0.1s數(shù)碼管</p>
94、;<p> LCALL DELAY1 ;調用延時子程序1</p><p> CLR P2.2 ;斷開0.1s數(shù)碼管</p><p> MOV P0, #0FFH ;顯示數(shù)字8及小數(shù)點</p><p> SETB P2.3 ;接通1s數(shù)碼管</
95、p><p> LCALL DELAY1 ;調用延時子程序1</p><p> CLR P2.3 ;斷開1s數(shù)碼管</p><p> MOV P0, #07FH ;顯示數(shù)字8</p><p> SETB P2.4 ;接通10s數(shù)碼管</
96、p><p> LCALL DELAY1 ;調用延時子程序1</p><p> CLR P2.4 ;斷開10s數(shù)碼管</p><p> JNB P1.0,XIAN2 ;按下啟動鍵,跳轉到XIAN2(P1.0=0跳轉)</p><p> LJMP XIAN1
97、 ;返回顯示程序,重新進行顯示</p><p> XIAN2: MOV A, 7BH ;顯示0.1s位數(shù)字</p><p> MOVC A, @A+DPTR ;查表</p><p> MOV P0, A </p><p> SETB P2.2</p&g
98、t;<p> LCALL DELAY2 ;調用DELAY2</p><p> CLR P2.2</p><p> MOV A, 7CH ;顯示1s位數(shù)字</p><p> MOVC A, @A+DPTR</p><p> MOV P0, A</
99、p><p> SETB P2.3</p><p> LCALL DELAY2</p><p> CLR P2.3</p><p> MOV A, 7DH ;顯示10s位數(shù)字</p><p> MOVC A, @A+DPTR</p><p&g
100、t; MOV P0, A</p><p> SETB P2.4</p><p> LCALL DELAY2</p><p> CLR P2.4</p><p> MOV P0, #80H ;顯示小數(shù)點</p><p> SETB P2.3<
101、/p><p> LCALL DELAY2</p><p> CLR P2.3</p><p> LJMP XIAN2 ;返回顯示程序,重新進行顯示</p><p> START: LCALL DELAY3 ;調用延時子程序3</p><p> SETB
102、 TR0 ;啟動定時器T0</p><p> RETI ;中斷返回</p><p> STOP: CLR TR0 ;停止定時器T0</p><p><b> RETI</b></p><p> UP
103、DATE: MOV TH0, #3CH ;重賦定時器初值</p><p> MOV TL0, #0B0H</p><p> MOV R5, #0FFH</p><p> MOV A, 7BH</p><p> ADD A, #01H ;0.1s位加1</p&g
104、t;<p> MOV 7BH, A</p><p> MOV A, R2</p><p> ADD A, #01H</p><p> MOV R2, A</p><p> CJNE R2, #0AH, EXIT ;判斷0.1s位是否滿10,不滿10跳出</p>
105、<p> MOV 7BH, #00H ;對0.1s位清零</p><p> MOV R2, #00H</p><p> MOV A, 7CH</p><p> ADD A, #01H ;1s位加一</p><p> MOV 7CH, A</p&
106、gt;<p> MOV A, R3</p><p> ADD A, #01H</p><p> MOV R3, A</p><p> CJNE R3, #0AH, EXIT ;判斷1s位是否滿10,不滿10跳出</p><p> MOV 7CH, #00H
107、;對1s位清零</p><p> MOV R3, #00H</p><p> MOV A, 7DH</p><p> ADD A, #01H ;10s位加一</p><p> MOV 7DH, A</p><p> MOV A, R4</p
108、><p> ADD A, #01H</p><p> MOV R4, A</p><p> CJNE R4, #0AH, EXIT ;判斷10s位是否滿10,不滿10跳出</p><p> MOV 7DH, #00H ;對10s位清零</p><p>
109、 EXIT: RETI</p><p> DELAY1: MOV R5, #0FFH ;數(shù)字8循環(huán)用延時程序</p><p> DEL11: MOV R6, #0F5H</p><p> DEL12: MOV R7, #06H</p><p> DEL13: DJNZ R7 ,
110、 DEL13 ; {1+[1+(1+2x6 +1+2)x245 +1+2]x255+2}</p><p> NOP ; x1us =1000623us≈1s</p><p> DJNZ R6, DEL12</p><p><b> NOP</b></p><p>
111、; DJNZ R5, DEL11</p><p><b> RET</b></p><p> DELAY2: MOV R6 , #05H ;計時用延時程序</p><p> DEL21: MOV R7, #62H</p><p> DEL22: DJNZ R7,
112、 DEL22 ; 1+(1+2x98 +1+2)x5 +2=1003≈1000</p><p><b> NOP</b></p><p> DJNZ R6, DEL21</p><p><b> RET</b></p><p> DELAY3: MOV R6,
113、 #0FFH ;50毫秒延時程序</p><p> DEL31: MOV R7, #60H</p><p> DEL32: DJNZ R7, DEL32 ; [1+(1+2x96 +1+2)x255 +2]x1us</p><p> NOP ; =49983us≈50ms&
114、lt;/p><p> DJNZ R6, DEL31</p><p> RET ;返回 </p><p> TAB: DB 3FH,06H,5BH,4FH,66H</p><p> DB 6DH,7DH,07H,7FH,6FH</p><p><b
115、> END</b></p><p> 第四章 設計體會與總結</p><p> 這次設計,為大家提供了應用自己所學知識的平臺,是非??少F的。經(jīng)過此次設計使我們對單片機有了更加的系統(tǒng)認識,同時對單片機模塊化編程以及程序的調試增加了實踐的經(jīng)驗。最重要的是提高大家對單片機開發(fā)的興趣,增強了大家團隊意識。再設計過程中,遇到了諸如延時程序不能嵌套,數(shù)碼管顯示的問題,工作寄存
116、器分配問題,跳轉指令程序的設計問題,短跳轉的超程問題,經(jīng)過大家的積極思考與熱烈討論,使問題都得到了解決。</p><p> 通過課程設計,復習鞏固我們以前所學習的數(shù)字、模擬電子技術、單片機原理及接口等課程知識,加深對各門課程及相互關系的理解,并成功使用了Keil uVision2和Proteus ISIS電子軟件,使理論知識系統(tǒng)化、實用化,系統(tǒng)地掌握微機應用系統(tǒng)的一般設計方法,培養(yǎng)較強的編程能力、開發(fā)能力。&l
117、t;/p><p> 只有從課本上學習的知識只有運用到實踐中來,才能真正的理解了所學的東西,同時增加了實踐的能力,從而為設計、創(chuàng)新新的產(chǎn)品打下基礎。</p><p><b> 小組組成</b></p><p> 組長:崔 05</p><p> 成員:蔡 01、陳 02、陳 03、陳 04
118、</p><p><b> 設計任務分工如下:</b></p><p><b> 電路原理圖的設計:</b></p><p><b> 電路原理圖的繪制:</b></p><p><b> 匯編源程序的編寫:</b></p><
119、p> 說明書的編寫: </p><p> 流程圖的編寫: </p><p> 相關資料搜集: </p><p><b> 封面設計及排版: </b></p><p><b> 參考文獻:</b></p><p> [1] 胡漢才 單片機原理
120、及其接口技術(第二版)清華大學出版社2004 </p><p> [2] 李鄧化,彭書華,許曉飛.智能檢測技術及儀表.科學出版社,2007</p><p> [3] 戴佳. 單片機C51語言應用程序設計. 電子工業(yè)出版社,2006.7</p><p> [4] 朱民雄.計算機語言技術. 北
121、京航空航天大學出版社,2002.1</p><p> [5] 李鴻. 單片機原理及應用. 湖南大學出版社. 2004.8</p><p> [6] 劉建清. 單片機技術. 國防工業(yè)出版社, 2006.8 </p><p> [7] 楊寧,胡學軍.單片機與控制技術.北京航空航天大學出版社,2005</p><p> [8] 汪貴平,新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論