版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(論文)</p><p><b> ?。?0 屆)</b></p><p> 基于單片機(jī)的數(shù)字秒表設(shè)計</p><p><b> 目 錄</b></p><p><b> 摘要III</b></p><p>
2、 AbstractIV</p><p><b> 第1章 緒論1</b></p><p> 第2章 硬件設(shè)計2</p><p> 2.1 單片機(jī)的選擇2</p><p> 2.1.1 AT89C51單片機(jī)的介紹2</p><p> 2.1.2 單片機(jī)的外部結(jié)構(gòu)2&l
3、t;/p><p> 2.2 單片機(jī)電路的設(shè)計4</p><p> 2.2.1 方案設(shè)計4</p><p> 2.2.2 顯示模塊的設(shè)計6</p><p> 2.2.3 時鐘電路模塊的設(shè)計9</p><p> 2.2.4 按鍵電路的設(shè)計10</p><p> 2.2.5
4、 復(fù)位電路的設(shè)計12</p><p> 2.2.6 系統(tǒng)電路的設(shè)計12</p><p> 第3章 軟件設(shè)計14</p><p> 3.1 匯編語言介紹14</p><p> 3.2 內(nèi)部存儲器的分配14</p><p> 3.3 主程序設(shè)計15</p><p>
5、 3.4 中斷程序設(shè)計16</p><p> 第4章 數(shù)字電子秒表的安裝與調(diào)試21</p><p> 4.1 軟件的仿真與調(diào)試21</p><p> 4.2 硬件的安裝與調(diào)試21</p><p> 4.2.1 晶振電路的測試21</p><p> 4.2.2 復(fù)位電路的測試22<
6、;/p><p> 4.2.3 顯示電路的測試22</p><p> 4.3 系統(tǒng)程序的燒錄22</p><p> 4.4 數(shù)字電子秒表的精度調(diào)試23</p><p><b> 結(jié)束語24</b></p><p><b> 參考文獻(xiàn)25</b></p
7、><p> 附錄A 程序26</p><p> 附錄B 秒表設(shè)計原理圖32</p><p><b> 致謝33</b></p><p> 基于單片機(jī)的數(shù)字秒表設(shè)計</p><p><b> 摘要</b></p><p> 本設(shè)計是一個
8、基于單片機(jī)的數(shù)字秒表設(shè)計。為了解決傳統(tǒng)的秒表計時精度不夠高造成的誤差,所以本論文設(shè)計的秒表計時精度設(shè)計為10ms,滿足一般體育競賽的計時要求,是普通體育競賽中必備設(shè)備之一。本設(shè)計的數(shù)字電子秒表采用AT89C51用為核心,利用T0定時器/計數(shù)器定時和記數(shù)原理,結(jié)合顯示電路、LED八段數(shù)碼管以及外部中斷電路來設(shè)計的計時器。將硬件和軟件有機(jī)地聯(lián)系在一起,使本設(shè)計能夠?qū)崿F(xiàn)6位LED顯示,顯示的時間范圍為0~59分59.99秒,計時的精度為10m
9、s,在進(jìn)行計時的同時,能保存一次時間,并在下次計時后能查詢上一次計時的時間。軟件系統(tǒng)設(shè)計采用的是匯編語言編寫程序,其中包括定時中斷服務(wù),顯示程序,延時程序,外部中斷服務(wù)程序等。</p><p> 關(guān)鍵詞:秒表;單片機(jī);LED八段數(shù)碼管</p><p> Based on SCM Digital Stopwatch Design</p><p><b>
10、 Abstract</b></p><p> This design is a digital stopwatch design based on single chip. In order to solve the traditional stopwatch precision insufficient high errors, so this paper designed stopwatch
11、for 10ms pure design, meet general sports contests timing requirements, is common in one of the necessary equipment for sports contest. The designed digital electronic stopwatch adopted with as the core, use AT89C51 T0 t
12、imer/counter timing and numeration theory, combined with display circuit, LED erection of digital tube,</p><p> Key words : Stopwatch,SCM,LED Erection of Eigital Tube </p><p><b> 第1章 緒
13、論</b></p><p> 數(shù)字電子秒表是電器制造,自動化控制、國防、實驗室及科研單位必不可少的儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時器、定時器等的時間測試。</p><p> 在現(xiàn)在的高端體育競賽中,隨著運(yùn)動員的水平不斷提高,差距在不斷縮小。很多體育競賽對時間精度的要求越來越高,有時比賽冠亞軍之間的差距僅僅只有幾毫秒,因此就需要有較高精度,以及較低誤差的秒
14、表來記錄比賽成績。</p><p> 本設(shè)計采用AT89C51單片機(jī)的T0定時器/計數(shù)器定時和記數(shù)的原理,使秒表能精確的計時。使用中斷系統(tǒng)來實現(xiàn)開始和暫停的功能。P0口輸出字形代碼數(shù)據(jù),P2口的P2.0~2.5口作列掃描位輸出,而P1.1、P1.6、P3.2、P3.3分別接4個按鈕型開關(guān),使其分別控制暫停計時、查看上一次暫停的計錄時間、停止計時和開始計時的功能,另外RET復(fù)位鍵連接一個按鈕型開關(guān),使其能控制顯示
15、器顯示歸零,即復(fù)位。顯示電路由6位共陰極LED數(shù)碼管組成,通過P0口、P2口以及5個按鈕開關(guān)來控制秒表的計時與顯示。</p><p> 根據(jù)以上設(shè)計思路就能夠?qū)崿F(xiàn)數(shù)字電子秒表的計時和查看上一次記錄時間的功能。</p><p><b> 第2章 硬件設(shè)計</b></p><p> 2.1 單片機(jī)的選擇</p><p&
16、gt; 2.1.1 AT89C51單片機(jī)的介紹</p><p> 本設(shè)計選用由美國ATMEL公司生產(chǎn)單的AT89C51[1]。AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器。AT89C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀
17、存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C51是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p> AT89C51的主要特征:</p><p
18、> 與MCS-51 兼容;</p><p> 4K字節(jié)可編程FLASH存儲器; </p><p> 壽命:1000寫/擦循環(huán); </p><p> 數(shù)據(jù)保留時間:10年; </p><p> 全靜態(tài)工作:0Hz-24MHz; </p><p> 三級程序存儲器鎖定; </p>
19、<p> 128×8位內(nèi)部RAM; </p><p> 32可編程I/O線; </p><p> 兩個16位定時器/計數(shù)器; </p><p><b> 5個中斷源; </b></p><p> 可編程串行通道; </p><p> 低功耗的
20、閑置和掉電模式; </p><p> 片內(nèi)振蕩器和時鐘電路。</p><p> 2.1.2 單片機(jī)的外部結(jié)構(gòu)</p><p> 由于AT89C51單片機(jī)與8051、80C51完全兼容,所以為了介紹方便以下統(tǒng)一使用8051單片機(jī)進(jìn)行介紹。</p><p> 8051單片機(jī)采用40引腳[2]的雙列直插封裝方式。引腳排列圖和40條引腳
21、說明[2]如圖2.1所示;</p><p> 圖2.1 8051單片機(jī)的引腳圖</p><p><b> Vss接地</b></p><p> Vcc正常操作時為+5伏電源</p><p> XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當(dāng)采用外部振蕩器時,此引腳接地。 </p&g
22、t;<p> XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時,此引腳接外部振蕩源。</p><p> 當(dāng)振蕩器運(yùn)行時,在此引腳上出現(xiàn)兩個機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。</p><p> 正常操作時為ALE功能(允許地址鎖存)提
23、供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。對于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈沖(功能)。</p><p> 外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數(shù)據(jù))期間,在每個機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動八LSTTL輸入。</p><p>
24、 、為內(nèi)部程序存儲器和外部程序存儲器選擇端。當(dāng)為高電平時,訪問內(nèi)部程序存儲器,當(dāng)為低電平時,則訪問外部程序存儲器。對于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。</p><p> P0口(P0.0~0.7)是一個8位漏極開路型雙向I/O口,在訪問外部存儲器時,它是分時傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動八個LSTTL負(fù)載。</p>
25、<p> P1口(P1.0~1.7)是一個帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。</p><p> P2口(P2.0~P2.7)是一個帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問外部存儲器時,它輸出高8位地址。P2口可以驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。</p><p> P3口(P3.0~3.7)是一個帶有內(nèi)部提升電阻的
26、8位準(zhǔn)雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。</p><p> 運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算??梢詫Π胱止?jié)(4位)、單字節(jié)等數(shù)據(jù)進(jìn)行操作。例如能完成加、減、乘、除、加1、減1、BCD碼十進(jìn)制調(diào)整、比較等算術(shù)運(yùn)算和與、或、異或、求補(bǔ)、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存器。8051運(yùn)算器還包含有一個布爾處理器,用來處理位操作。</p><p> 程序
27、計數(shù)器PC用來存放即將要執(zhí)行的指令地址,共16位,可對64K程序存儲器直接尋址。執(zhí)行指令時,PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。</p><p> 指令寄存器是用作存放指令代碼。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時與控制電路發(fā)出相應(yīng)的控制信號,完成指令功能。</p><p> 2.2 單片機(jī)電路的設(shè)計</p><
28、;p> 2.2.1 方案設(shè)計</p><p> 本設(shè)計的目標(biāo)是設(shè)計一個帶有查看上一次計時的數(shù)字電子秒表,并且具有顯示直觀、精度高、讀取方便等優(yōu)點,在日常生活中能廣泛的使用。本設(shè)計用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、計時精度高為目標(biāo)。</p><p> 硬件電路設(shè)計主要有主控制器,計時器、顯示電路、復(fù)位電路、開始計時、暫停計時、停止計時電路等。使用AT89C51單片機(jī)做主控
29、制器,顯示電路采用共陰極LED八段數(shù)碼管。</p><p> 本設(shè)計利用AT89C51單片機(jī)的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。P0口的P0.0~0.7輸出段碼字形數(shù)據(jù),P2口的P2.0~2.5口作列掃描位輸出,而P1.1、P1.6、P3.2、P3.3分別接4個按鈕型開關(guān),使其分別控制暫停計時、查看上一次暫停的計錄時間、停止計時和開始計時的功能,另外RET復(fù)位
30、件連接一個按鈕型開關(guān),使其能控制顯示器顯示歸零,即復(fù)位。顯示電路由6位共陰極LED數(shù)碼管組成,通過P0口、P2口以及5個按鈕開關(guān)來控制顯示。電路原理圖設(shè)計最基本的要求是正確性,布局合理,在保證正確性和布局合理的前提下要求設(shè)計更美觀。硬件電路布局如圖2.2所示;</p><p> 圖2.2 數(shù)字秒表硬件電路布局原理圖</p><p> 根據(jù)要求知道秒表設(shè)計主要實現(xiàn)的功能是計時和顯示。本
31、設(shè)計中,數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元79H~7EH中。其中79H存放十毫秒位數(shù)據(jù),7AH存放百毫秒位數(shù)據(jù),7BH存放秒位數(shù)據(jù),7CH存放十秒位數(shù)據(jù),7DH存放分位數(shù)據(jù),7EH存放十分位數(shù)據(jù),每一個地址單元內(nèi)存放的數(shù)據(jù)均為十進(jìn)制BCD碼。由于采用動態(tài)掃描電路實現(xiàn)數(shù)據(jù)顯示功能,顯示所用的段碼十進(jìn)制BCD碼數(shù)據(jù)存放在RAM表中。顯示時,取出79H~7EH中的一個地址中的數(shù)據(jù),然后查得對應(yīng)的顯示用段碼,并從P0口輸出該段碼,P2口將對應(yīng)的數(shù)碼
32、管點亮,從而顯示該地址單元的數(shù)據(jù)值,如此循環(huán)取地址中的數(shù)據(jù)進(jìn)行顯示,達(dá)到動態(tài)顯示。</p><p> 將上一次暫停顯示的時間存放在59H~5EH內(nèi)存單元中,數(shù)據(jù)存放規(guī)則和79H~7EH一樣。與79H~7EH存儲區(qū)不同的是:59H~5EH存儲的內(nèi)容為數(shù)字秒表上一次計時顯示的時間,而79H~7EH為當(dāng)前計時時間存儲區(qū)。</p><p> 計時利用定時器/計數(shù)器T0溢出中斷完成,T0作方式0
33、,設(shè)置溢出中斷周期為1ms,當(dāng)溢出中斷后向CPU發(fā)出溢出中斷請求,而每發(fā)出一次中斷請求就對毫秒計數(shù)單元加一,當(dāng)溢出中斷請求達(dá)到10次就對10ms位加1,依次類推,直到59分59.99秒重新復(fù)位。 </p><p> 再考慮按鍵的處理。這5個鍵可以采用中斷的方式,也可以采用掃描的方式來識別。復(fù)位鍵、查看上一次顯示時間和暫停計時按鍵在于數(shù)值復(fù)位和查詢上次計時時間,對于時間的要求不是很嚴(yán)格,而開始計時鍵和停止計時鍵則
34、是用于對時間的鎖定,需要比較準(zhǔn)確的控制。因此,可以對復(fù)位鍵、暫停記時鍵和查看上次顯示時間鍵采取掃描的方式,而對開始和停止鍵采用外部中斷的方式。</p><p> 初始狀態(tài)下由6個LED數(shù)碼管組成的計時器顯示為00.00.00,如果按下開始計時鍵時,INT1向CPU發(fā)出中斷請求,CPU停止當(dāng)前的工作,轉(zhuǎn)去執(zhí)行外部中斷1服務(wù)程序,即開啟定時器T0,開始計時。計時是采用定時器T0溢出中斷來完成的,設(shè)計的定時溢出中斷為
35、1ms,當(dāng)溢出中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次溢出中斷請求后就相當(dāng)于計時了1ms,當(dāng)達(dá)到10次溢出中斷就相當(dāng)于對10ms位進(jìn)位,即是ms位加1,依次類推,直到59分59.99秒重新復(fù)位。在計時過程中,如果按下暫停計時鍵且沒有放開時,將本次記錄時間存入另一個寄存區(qū),并且6位LED顯示器持續(xù)顯示本次暫停的計時,當(dāng)放開按鍵P1.1后,繼續(xù)計時。如果按下停止計時鍵時,外部中斷INT0向CPU發(fā)出外部中斷請求,CPU轉(zhuǎn)去執(zhí)行外部中斷0服
36、務(wù)程序,即關(guān)閉定時器T0計時,同時將此次計時時間存入寄存區(qū),且沒有按下其他鍵時循環(huán)顯示最后記錄的時間。如果按下查看上一次記錄時間鍵且沒有放開時,6位LED數(shù)碼管顯示器將顯示上一次記錄的時間,放開查看上一次記錄時間鍵是,6位LED數(shù)碼管繼續(xù)顯示最后記錄的時間,等待下一次計時開始。</p><p> 設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,顯示電路和回零、啟動、查看、停表電路等。主控制器
37、采用單片機(jī)AT89C51,顯示電路采用共陰極LED數(shù)碼管顯示計時時間,5個按鍵均采用觸點式按鍵,并且都是低電平有效。</p><p> 2.2.2 顯示模塊的設(shè)計</p><p> 數(shù)字秒表的顯示電路,常采用液晶顯示或數(shù)碼管顯示。本設(shè)計采用LED八段數(shù)碼管[3]作為的顯示電路的顯示介質(zhì)。</p><p> 顯示器可以分為靜態(tài)顯示和動態(tài)顯示兩種。由于本設(shè)計需要
38、采用六位LED八段數(shù)碼管顯示,如果靜態(tài)顯示則占用的口線多,硬件電路復(fù)雜。所以采用動態(tài)顯示。</p><p> 動態(tài)顯示是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個八位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在
39、另一時刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時顯示的感覺。</p><p> 數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種,共陽極數(shù)碼管的八個發(fā)光二極管的陽極(二極管正端)連接在一起,如圖2.3(b)所示,通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動電路輸出端
40、。當(dāng)某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段導(dǎo)通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。</p><p> 共陰極LED數(shù)碼管[3]的八個發(fā)光二極管的陰極(二極管負(fù)端)連接在一起,如圖2.3(c)所示,通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動電路輸出端,當(dāng)某段驅(qū)動電路的輸出端為高
41、電平時,則該端所連接的字段導(dǎo)通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。 </p><p> 圖2.3 (a)數(shù)碼管引腳圖 (b)共陽極內(nèi)部結(jié)構(gòu)圖 (c)共陰極內(nèi)部結(jié)構(gòu)圖</p><p> 本設(shè)計采用6個共陰極LED數(shù)碼顯示管作顯示電路,數(shù)碼管的a、b、c、d、
42、e、f、g、DP引腳為高電平時,那么其對應(yīng)的二極管就會被點亮,使數(shù)碼顯示管顯示0~9的10個阿拉伯?dāng)?shù)字。段碼編碼如表2.1所示。</p><p> 表2.1 共陰極數(shù)碼顯示阿拉伯?dāng)?shù)字字型代碼</p><p> 動態(tài)顯示電路由顯示塊、字形碼驅(qū)動模塊、字位驅(qū)動模塊三部分組成。如圖2.4所示為本系統(tǒng)的6位LED動態(tài)顯示器基本顯示原理電路。圖中,6個LED數(shù)碼管的八段段選線分別與外接上拉電阻
43、的單片機(jī)P0口對應(yīng)連接,而6個LED數(shù)碼管的位控制端則和NPN型三極管的集電極相連接。單片機(jī)的P2.0~P2.5口則分別連接對應(yīng)數(shù)碼顯示管的最低位到最高位,P2.0~P2.5口分別和6個NPN型三極管的基極相連,控制三極管的導(dǎo)通。NPN型三極管選用的是最常使用的9013型三極管。根據(jù)9013的資料顯示:其耐壓值為40V,最大功率為0.65W,最大電流為0.5A,電氣性能完全滿足本設(shè)計的要求。另外數(shù)碼管顯示是采用動態(tài)顯示,所以對三極管的開
44、關(guān)頻率有一定的要求。根據(jù)電子秒表的設(shè)計計算可知動態(tài)顯示的頻率最高為3KHz,而9013的導(dǎo)通頻率為150MHz,完全能滿足本設(shè)計的要求,所以最終選取9013三極管最為位控制開關(guān)。 </p><p> 圖2.4 顯示電路基本原理圖</p><p> 6個LED數(shù)碼管是由P0口來驅(qū)動,它內(nèi)部沒有上拉電阻,作為輸出口時驅(qū)動能力很弱,不能把LED數(shù)碼管點亮,因此P0口必須接上拉電阻。另
45、外,共陰數(shù)碼管的驅(qū)動電流一般為20mA左右,如果電流太大容易造成數(shù)碼管燒毀,所以也需要根據(jù)電源的電壓值來確定上拉電阻的大小。如果電阻過小,勢必會形成灌電流過大,造成單片機(jī)IO的損壞,如果電阻過大,那么對上拉電流沒有太大的影響,不能夠達(dá)到驅(qū)動效果。電源供電電壓為5V,當(dāng)上拉電阻選用220Ω電阻時灌電流為22mA。不會損壞單片機(jī)的I/O口,同時也可以為數(shù)碼顯示管起到限制電流的保護(hù)作用。 </p><p> 2.2.
46、3 時鐘電路模塊的設(shè)計</p><p> 單片機(jī)的時鐘信號用來提供單片機(jī)內(nèi)各種微操作的時間基準(zhǔn),8051單片機(jī)內(nèi)設(shè)有一個由反向放大器所構(gòu)成的振蕩電路,XTAL1和 XTAL2分別為振蕩電路的輸入和輸出端,8051單片機(jī)的時鐘信號通常有兩種電路形式:內(nèi)部振蕩方式與外部振蕩方式。外部振蕩方式的時鐘很少用,若要使用外部振蕩方式的時鐘時,只需要把XTAL1接地,XTAL2接外部振蕩器就行。對外部振蕩信號無特殊要求,只
47、要保證脈沖寬度,一般采用頻率低于12MHz的方波信號。</p><p> 時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘信號P1和P2供單片機(jī)使用。P1在每一個狀態(tài)S的前半部分有效,P2在每個狀態(tài)的后半部分有效。本設(shè)計采用的內(nèi)部振蕩方式,內(nèi)部振蕩方式所得的時鐘信號比較穩(wěn)定,實用電路中使用較多。本設(shè)計系統(tǒng)的時鐘電路[4]如圖2.4所示。只要按照圖2.5所示,電路進(jìn)行設(shè)計連接就能使系統(tǒng)可靠起振并能穩(wěn)定運(yùn)行。圖中,電容
48、器C1 、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5~33pF。但在時鐘電路的實際應(yīng)用中一定要注意正確選擇其大小,并保證電路的對稱性,盡可能匹配,選用正牌的瓷片或云母電容,如果可能的話,溫度系數(shù)盡可能低。本設(shè)計中采用大小為30pF的電容和12MHz的晶振。</p><p> 圖2.5 內(nèi)部振蕩電路</p><p> 8051單片機(jī)典型的指令周期[5](執(zhí)行一條指令所
49、需要的的時間稱之為指令周期)為一個機(jī)器周期,一個機(jī)器周期由六個狀態(tài)(十二振蕩周期或時鐘周期)組成。每個狀態(tài)又被分成兩個時相P1和P2。所以,一個機(jī)器周期可以依次表示為S1P1,S1P2……,S6P1,S6P2。通常算術(shù)邏輯操作在P1時相進(jìn)行,而內(nèi)部寄存器傳送在P2時相進(jìn)行。時序電路</p><p><b> 如圖2.6所示;</b></p><p> 圖2.6
50、8051 時序圖</p><p> 圖2.6給出了8051單片機(jī)的取指令和執(zhí)行指令的定時關(guān)系。這些內(nèi)部振蕩時鐘信號不能從外部觀察到,所用XTAL2振蕩信號作參考。</p><p> 對于單周期指令,當(dāng)操作碼被送入指令寄存器時,便從S1P2開始執(zhí)行指令。如果是雙字節(jié)單機(jī)器周期指令,則在同一機(jī)器周期的S4期間讀入第二個字節(jié),若是單字節(jié)單機(jī)器周期指令,則在S4期間仍進(jìn)行讀,但所讀的這個字節(jié)操
51、作碼被忽略,程序計數(shù)器也不加1,在S6P2結(jié)束時完成指令操作。</p><p> 2.2.4 按鍵電路的設(shè)計</p><p> 本設(shè)計中設(shè)計了5個按鍵,分別用于實現(xiàn)開始計時、暫停計時、復(fù)位、查看上一次顯示時間和停止計時的功能,如圖2.7所示。這5個鍵可以采用中斷的方法,也可以采用查詢的方法來識別。對于復(fù)位、查看上次顯示時間和暫停計時鍵,主要功能在于數(shù)值復(fù)位、對上次顯示時間的查看和暫停
52、計時器計時,對于時間的要求不是很嚴(yán)格,而開始計時和停止計時鍵主要用于時間的鎖定,需要比較準(zhǔn)確的控制。因此對復(fù)位鍵、查看上一次顯示時間、暫停計時采用查詢的方式,而對于開始計時和停止計時鍵采用外部中斷。5個按鍵按鍵除了復(fù)位鍵使用高電平有效外,其他4個按鍵均采用低電平有效。</p><p> 圖2.7 按鍵電路圖</p><p> 單片機(jī)的I/O口直接連接電源,因此需要接上拉電阻來進(jìn)行限流
53、,本設(shè)計中選取阻值為2kΩ 的電阻作為上拉電阻,根據(jù)計算可知此時的灌電流為2.5mA,電流在安全范圍內(nèi),符合安全設(shè)計要求。</p><p> 按鍵電路中由于采用了外部中斷,所以需要用到P3口的第二功能。P3口引腳的第二功能如表2.2所示;</p><p> 表2.2 P3口引腳第二功能表</p><p> 2.2.5 復(fù)位電路的設(shè)計</p>
54、<p> 本設(shè)計采用上電且開關(guān)復(fù)位電路[6],如圖2.8所示。按下開關(guān)后,由于電容充電,使RST將持續(xù)一段時間的高電平。當(dāng)單片機(jī)已在運(yùn)行之中時,按下復(fù)位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電且開關(guān)復(fù)位的操作。通常選擇C=10~30μF,R=1K,本設(shè)計采用的電容值為22μF的電容和電阻為1K的電阻。</p><p> 圖2.8 單片機(jī)復(fù)位電路</p><p>
55、2.2.6 系統(tǒng)電路的設(shè)計</p><p> 系統(tǒng)總電路由顯示電路,時鐘電路,按鍵電路和復(fù)位電路組成,只要將單片機(jī)與以上各部分電路合理的連接就組成了系統(tǒng)總電路。總的電路圖附錄B所示。</p><p> 本設(shè)計以8051單片機(jī)為主電路的核心部分,各個電路均和8051單片機(jī)相連,由單片機(jī)統(tǒng)籌、協(xié)調(diào)和控制各個電路模塊的運(yùn)行與工作。</p><p> 將設(shè)計好的晶振
56、電路連接到兩個專用引腳即可為單片機(jī)提供時鐘脈沖,但在連接接晶振電路時要盡量使晶振電路靠近單片機(jī),這樣可以為單片機(jī)提供穩(wěn)定的時鐘脈沖。</p><p> 復(fù)位電路是單片機(jī)設(shè)有的一個專用的硬件復(fù)位接口RST,并設(shè)置為高電平有效。當(dāng)RST為高電平是系統(tǒng)復(fù)位。</p><p> 按鍵電路模塊與單片機(jī)的I/O端口連接可以由自己設(shè)定,本設(shè)計的暫停計時鍵和查看上一次顯示時間鍵分別接單片機(jī)的P1.1和
57、P1.6,均設(shè)為低電平有效。而另外的開始計時鍵和停止計時鍵兩鍵使用的是外部中斷,所以需要連接到單片機(jī)的特殊接口P3.3和P3.2,這兩個I/O口的第二功能分別為單片機(jī)的外部中斷1端口和外部中斷0端口。同樣設(shè)置為位低電平有效。</p><p> 顯示電路由6位LED數(shù)碼管組成,采用動態(tài)掃描顯示方式,因此使用P0口的P0.0~P0.7實現(xiàn)8位段控制和P2口的P2.0~P2.5實現(xiàn)6位位控制,8位段控制接P0口,P0
58、.0~P0.7分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp顯示,P0口沒有集成上拉電阻,高電平的驅(qū)動能力很弱,所以需要接上拉電阻來提高P0的高電平驅(qū)動能力。6位位控制則由低位到高位分別接到P2.0~P2.5口,NPN三極管9013作為位控制端的開關(guān),當(dāng)P2.0~P2.5端口任意一個端口為高電平時,與其相對應(yīng)的三極管就導(dǎo)通,對應(yīng)的數(shù)碼管導(dǎo)通顯示。</p><p> 通過以上設(shè)計,將各部分電路與單片機(jī)有機(jī)的
59、結(jié)合到一起,硬件部分的設(shè)計基本完成,剩下的部分就是對單片機(jī)的編程,使單片機(jī)按程序運(yùn)行,實現(xiàn)數(shù)字電子秒表的功能。</p><p><b> 第3章 軟件設(shè)計</b></p><p> 3.1 匯編語言介紹</p><p> 本設(shè)計的程序采用匯編語言編寫,匯編語言由于采用了助記符號來編寫程序,比使用機(jī)器語言用二進(jìn)制代碼編程要方便很多,簡化
60、了編程設(shè)計過程過程。匯編語言的特點是用符號代替了機(jī)器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機(jī)器語言的靈活性。使用匯編語言能面向機(jī)器并較好地發(fā)揮機(jī)器的特性,得到質(zhì)量較高的程序。</p><p> 匯編語言的特點[7]:</p><p> 面向機(jī)器的低級語言,通常是為特定的計算機(jī)或系列計算機(jī)專門設(shè)計的。</p><p> 保持了機(jī)器語言的優(yōu)點,具有直接
61、和簡捷的特點。</p><p> 可有效地訪問、控制計算機(jī)的各種硬件設(shè)備,如磁盤、存儲器、CPU、I/O端口等。</p><p> 目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計語言。</p><p> 經(jīng)常與高級語言配合使用,應(yīng)用十分廣泛。</p><p> 在程序設(shè)計過程中,為了有效地完成任務(wù),把所要完成的任務(wù)精心的分割成
62、若干個相互獨立但相互又仍可有聯(lián)系的任務(wù)模塊,這些任務(wù)模塊使得任務(wù)變得相對單純,對外的數(shù)據(jù)交換相對簡單,容易編寫,容易檢測,容易閱讀和維護(hù)。這種程序設(shè)計思想稱為模塊化程序設(shè)計思想。模塊化結(jié)構(gòu)程序的設(shè)計,可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計。程序的主要模塊有:主程序、顯示程序、定時溢出中斷服務(wù)程序、外部中斷服務(wù)程序。</p><p> 3.2 內(nèi)部存儲器的分配</p>
63、<p> 本設(shè)計系統(tǒng)所用到的單片機(jī)端口數(shù)比較多,所以在這里將對數(shù)字電子秒表的硬件資源的大概分配加以說明。片內(nèi)RAM的分配、各功能鍵的定義以及各端口的分配安排如表3.1所示。</p><p> 表3.1 端口的分配安排表</p><p> 3.3 主程序設(shè)計</p><p> 本設(shè)計系統(tǒng)程序主要模塊由主程序、定時中斷服務(wù)程序、外部中斷0服務(wù)程
64、序和外部中斷1服務(wù)程序組成。主程序是整個程序的最重要部分。可以對各個中斷程序進(jìn)行調(diào)用。協(xié)調(diào)各個子程序之間的聯(lián)系。</p><p> 系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程圖如圖3.1所示。首先對系統(tǒng)進(jìn)行初始化,包括設(shè)置各入口地址、中斷的開啟、對各個數(shù)據(jù)緩存區(qū)清“0”、賦定時器初值,初始化完畢后,就進(jìn)入數(shù)碼管顯示程序。數(shù)碼管顯示程序?qū)︼@示緩存區(qū)內(nèi)的數(shù)值進(jìn)行調(diào)用并在數(shù)碼管上進(jìn)行動態(tài)顯示。顯示一次就對P1.1和P
65、1.6進(jìn)行一次掃描,查詢暫停計時鍵P1.1和顯示上一次計時時間鍵P1.6是否按下,當(dāng)這個兩按鍵有按下時,程序暫停計時或顯示上一次顯示時間。當(dāng)沒有按下復(fù)位鍵時,不斷地調(diào)用顯示緩存區(qū)的數(shù)據(jù)進(jìn)行顯示。使用戶能清楚的看到當(dāng)前電子秒表所記時時間。當(dāng)查詢到P1.6按下后則跳轉(zhuǎn)到另外一段顯示程序并調(diào)用最終緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,此時顯示的時間即為上一次計時的時間。與此同時,在P1.6按下后單片機(jī)執(zhí)行顯示程序的同時也在對P1.6進(jìn)行掃描,當(dāng)P1.6斷開后
66、立即跳轉(zhuǎn)回之前的顯示程序顯示當(dāng)前的計時時間。</p><p> 在主程序中還進(jìn)行了賦寄存區(qū)的初始值、設(shè)置定時器初值以及開啟外部中斷等操作,當(dāng)定時時間到后就轉(zhuǎn)去執(zhí)行定時中斷程序。當(dāng)外部中斷有請求則去執(zhí)行外部中斷服務(wù)程序。并在執(zhí)行完后返回主程序。</p><p> 圖3.1 主程序顯示流程圖</p><p> 3.4 中斷程序設(shè)計</p><
67、;p> 現(xiàn)在方案中采用了三個中斷,外部中斷INT0,INT1和定時中斷T0[8]。CPU在響應(yīng)中斷時,先處理高級中斷,在處理低級中斷,若有多個同級中斷時,則按自然優(yōu)先順序處理。例如當(dāng)CPU正在處理一個中斷申請時,有出現(xiàn)了另一個優(yōu)先級比它高的中斷請求,這是,CPU就暫停終止對當(dāng)前優(yōu)先級較低的中斷源的服務(wù),轉(zhuǎn)去響應(yīng)優(yōu)先級比它高的中斷請求,并為其服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來較低級的中斷服務(wù)程序。當(dāng)CPU為級別高的終端服務(wù)程序服務(wù)時
68、,如果級別低的中斷發(fā)出中斷請求,此時CPU是不會響應(yīng)的,所以為了避免開始和暫停兩個按鍵中的一個出現(xiàn)沒有響應(yīng)的情況,在進(jìn)行程序編輯時要注意對中斷的使用,避免出現(xiàn)中斷的嵌套,合理分配中斷對本設(shè)計的實現(xiàn)是至關(guān)重要的。</p><p> 另外由于數(shù)字式電子秒表的最小精度位10ms,屬于較高精度電子秒表。定時器T0的定時周期也為1ms,為了使電子秒表暫停鍵按下后CPU能馬上去響應(yīng)中斷程序,必須將暫停的外部中斷級別高于定時
69、計數(shù)器的中斷級別。避免出現(xiàn)CPU執(zhí)行完定時溢出中斷程序后再響應(yīng)外部中斷程序,影響計時精度。</p><p> 8051的自然優(yōu)先按級順序排列為:中斷源,外部中斷0,定時/計數(shù)器0溢出中斷,外部中斷1,定時/計數(shù)器1溢出中斷,串行口中斷。</p><p> 數(shù)字式秒表中的兩個按鍵采用了中斷實現(xiàn)功能。開始采用外部中斷INT0,暫停采用外部中斷INT1。另外程序中還用到了定時/計數(shù)器0溢出中
70、斷進(jìn)行計時。依據(jù)設(shè)計要求,暫停的外部中斷INT1中斷級別最高,計時的定時/計數(shù)器0溢出中斷次之,開始的外部中斷INT0級別最低。</p><p> 3.4.1 外部中斷0服務(wù)程序:</p><p> 外部中斷0服務(wù)程序結(jié)合外部P3.2停止鍵實現(xiàn)數(shù)字電子秒表的停止功能,具體流程圖如圖3.2所示。</p><p> 圖3.2 外部中斷0服務(wù)程序流程圖</
71、p><p> 當(dāng)P3.2停止計時鍵按下后,INT0向CPU發(fā)出外部中斷請求,CPU轉(zhuǎn)向外部中斷0服務(wù)程序執(zhí)行,停止定時器T0,然后中斷返回。</p><p> 3.4.2 外部中斷1服務(wù)程序</p><p> 外部中斷1服務(wù)程序結(jié)合外部P3.3停止鍵實現(xiàn)數(shù)字電子秒表的啟動功能,具體流程圖如圖3.2。</p><p> 圖3.3 外部中
72、斷1服務(wù)程序流程圖</p><p> 當(dāng)P3.3開始計時鍵按下后,INT1向CPU發(fā)出外部中斷請求,CPU轉(zhuǎn)向外部中斷1服務(wù)程序執(zhí)行,啟動定時器T0,然后中斷返回。</p><p> 3.4.3 定時中斷服務(wù)程序</p><p> 當(dāng)定時/計數(shù)器T0器溢出后,向CPU發(fā)出中斷請求信號。CPU跳轉(zhuǎn)到定時中斷程序執(zhí)行,具體流程如圖3.4所示。定時中斷程序是一個進(jìn)
73、位程序,主要負(fù)責(zé)對1ms的加一。1ms位沒有滿十就跳出中斷程序,返回顯示程序。當(dāng)1ms位滿十后就對1ms位清零,向10ms位加一,同時檢測10ms位是否滿十,沒有滿十就跳出中斷程序,返回顯示程序。如果滿十就向100ms位加一,依次類推,最終達(dá)到59分鐘59.99秒后歸零,從零開始再次計時。</p><p> 圖3.4 定時中斷服務(wù)程序</p><p> 定時/計數(shù)器T0[9]工作在方
74、式0下,TH0和TL0組成一個13位的二進(jìn)制數(shù)計數(shù)器。單片機(jī)開機(jī)或復(fù)位時,它的值為00H,當(dāng)T0啟動后,從第一個輸入脈沖開始計時,每來一個脈沖計數(shù)加一,即從0000000000000開始計數(shù)到1111111111111,再計數(shù)一個脈沖時TH0和TL0組成的13位計數(shù)器將會從13個1變成13個0,并產(chǎn)生溢出,溢出位將被送到TF0標(biāo)志位,通過溢出標(biāo)志產(chǎn)生溢出中斷請求。顯然,T0定時器在方式0下引起一次中斷所允許計數(shù)的最多脈沖個數(shù)為213 個
75、。</p><p> 但如果定時計數(shù)器如果每次都固定從0開始計數(shù),到溢出后,再向CPU發(fā)出溢出中斷請求信號那是毫無意義的。為了使定時計數(shù)器在規(guī)定的計數(shù)脈沖個數(shù)字之后(此時應(yīng)小于213個脈沖),向CPU發(fā)出溢出中斷請求,可采取預(yù)先向TH0和TL0中放入一個初值X的方法,使計數(shù)器以X值為起始值開始計數(shù),即X+1,X+2,……直至計數(shù)器計滿,從1全變?yōu)?。設(shè)需要計數(shù)的脈沖個數(shù)為Y,則有:</p><
76、;p><b> X+Y=213 </b></p><p> 在定時方式下:定時時間間隔位t=(213—X)</p><p> 現(xiàn)在本設(shè)計要求1ms實現(xiàn)一次中斷,選擇定時器T0工作在方式0。所以需要根據(jù)以上條件計算出T0的初值。</p><p> 設(shè)T0的初值為X,則</p><p> ?。?13—X)*1
77、2/12*106 =1*10-3 </p><p> 轉(zhuǎn)換位十六進(jìn)制數(shù)X=7192=1110000011000B</p><p> 即TH0=0E0H(取X的高8位)</p><p> TL0=18H(取X的低5位)</p><p> 由于定時1ms只是一個理想化的時間,其中并沒有考慮到中斷后單片機(jī)執(zhí)行語句所花的時間。雖然執(zhí)行語句所
78、花的時間很短只有幾微秒,但積少成多,數(shù)字秒表1秒要溢出中斷1000次,積累起來誤差就能達(dá)到毫秒級,這對于精度到達(dá)毫秒級的數(shù)字電子秒表來說是很大的誤差。所以要在后期編程時還要將單片機(jī)讀程序的時間考慮進(jìn)去。</p><p> 在對定時器賦初值時將單片機(jī)需要執(zhí)行的語句所花的時間加上,這樣就能使數(shù)字電子秒表的誤差達(dá)到最小。</p><p> 第4章 數(shù)字電子秒表的安裝與調(diào)試</p>
79、;<p> 4.1 軟件的仿真與調(diào)試</p><p> Proteus ISIS[10]是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件,它可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的主要特點總結(jié)后有以下四點:①實現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合的功能。②支持目前主流單片機(jī)系統(tǒng)的仿真。③提供了軟件調(diào)試功能,并可以與WAVE聯(lián)合仿真調(diào)試。④具有強(qiáng)大的原理圖繪制功能
80、??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。在電子領(lǐng)域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調(diào)試通過后在焊電路,節(jié)省了不少在硬件調(diào)試上所花的時間。</p><p> Proteus ISIS的工作界面在標(biāo)準(zhǔn)的Windows界面。它包括主菜單、標(biāo)題欄、狀態(tài)欄、繪圖工具欄、標(biāo)準(zhǔn)工具欄、預(yù)覽對象方位控制按鈕、對象選擇按鈕、仿真進(jìn)程控制按鈕、對象選擇器窗口、預(yù)覽窗
81、口、圖形編輯窗口等十幾個工具,方便了使用者的使用。</p><p> 首先打開已經(jīng)畫好的文件,選擇AT89C51芯片,就會彈出一個窗口,在Program File項中通過路徑選擇在WAVE中生成的HEX文件,雙擊選中后確定,這樣AT89C51芯片就讀取了HEX文件。單擊“三角形仿真按鈕”進(jìn)行仿真。通過對仿真結(jié)果的觀察來對程序進(jìn)行修改,最終使程序到達(dá)設(shè)計要求。</p><p> 4.2
82、 硬件的安裝與調(diào)試</p><p> 按照之前設(shè)計好的數(shù)字電子秒表原理圖,詳細(xì)計算系統(tǒng)中各個元件的參數(shù),選擇相應(yīng)器件,制作實際電路板。由于考慮到萬能板大小的問題及元件之間連線的方便,在焊接元器件前必須考慮元件的布局然后進(jìn)行實際操作。</p><p> 制作好的電路板可以用萬用表(200歐姆檔)的紅、黑表筆測試電路板的每條走線,當(dāng)其電阻非常小時,證明走線沒有斷開,當(dāng)其電阻很大時,證明該條
83、走線斷了,應(yīng)該重新走線,使電路板在電氣上得到正確地連接。選用萬用表的20K歐姆檔,檢測電路中是否存在短路。因為系統(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。</p><p> 4.2.1 晶振電路的測試</p><p> 在單片機(jī)正常運(yùn)行的必要條件是單片機(jī)系統(tǒng)的時鐘穩(wěn)定正常。實際中,因為各種原因?qū)е孪到y(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運(yùn)行的情況時有,因此系統(tǒng)時
84、鐘是否振是通電檢查的首要環(huán)節(jié)。在系統(tǒng)通電的狀況下,用萬用表的直流電壓檔(20V),分別測量XTAL1和XTAL2引腳的電壓,看是否正常,在調(diào)試過程中,測得電壓XTAL1引腳應(yīng)為2.05V,XTAT2應(yīng)為2.15V。</p><p> 4.2.2 復(fù)位電路的測試</p><p> 復(fù)位不正常也會導(dǎo)致系統(tǒng)不能工作。如果復(fù)位引腳始終為高電平,系統(tǒng)將始終處于復(fù)位狀態(tài),如果始終為低電平,不能產(chǎn)
85、生復(fù)位所需的高電平信號脈沖,則系統(tǒng)也可能無法正常工作。單片機(jī)正常工作時,RST復(fù)位引腳應(yīng)為0V,按下復(fù)位按鍵時,復(fù)位引腳為高電平5V左右。</p><p> 4.2.3 顯示電路的測試</p><p> 顯示電路是數(shù)字電子秒表正常運(yùn)行最直觀的觀察窗口,我們可以通過觀察顯示電路的顯示結(jié)果觀察系統(tǒng)能否正常運(yùn)行。當(dāng)顯示電路按照電路圖焊接好后,用萬用表的測二極管檔位,將黑表筆接共陰數(shù)碼管的公
86、共段,然后將紅表筆接數(shù)碼管的各段,當(dāng)數(shù)碼管的段能正常顯示,說明各點焊接正常。 </p><p> 4.3 系統(tǒng)程序的燒錄</p><p> 在軟件調(diào)試中,使用當(dāng)今流行的功能強(qiáng)大且普遍的WAVE 6000軟件\進(jìn)行軟件編譯與調(diào)試,使用Microcontroller ISP Software及其配套的單片機(jī)對程序進(jìn)行燒錄。</p><p> 圖4.1 Atme
87、l microcontroller</p><p> 軟件的燒錄:第一步:安裝并運(yùn)行Microcontroller ISP Software軟件;第二步:點擊Options欄的select device選項;這時出現(xiàn)一個對話窗口,按圖選擇后,點擊OK按鍵,如出現(xiàn)圖4.1所示窗口,則說明電腦與開發(fā)板沒連接好或單片機(jī)沒插好等,需重裝檢查硬件連接,如果沒有出現(xiàn)則說明初始化成功。第三步:點擊File欄的Load Buf
88、fer選項打開已經(jīng)編譯好的HEX文件。點擊載入文件,然后點擊確定,會出現(xiàn)如圖4.2所示的對話框,完成后,按軟件默認(rèn)選項,點擊“OK”-“OK”―“OK”燒錄完成,否則重新檢查硬件連接后再重新燒錄。</p><p> 圖4.2 auto programming</p><p> 4.4 數(shù)字電子秒表的精度調(diào)試</p><p> 將數(shù)字電子秒表的程序編譯,然后
89、燒錄進(jìn)單片機(jī),然后將單片機(jī)插入系統(tǒng),并保證其能正常運(yùn)行。在進(jìn)行精度測試之前的編程過程中,我們知道了單片機(jī)在進(jìn)行定時中斷時需要執(zhí)行語句,而執(zhí)行這些語句是需要占用CPU時間的,從而影響單片機(jī)定時的精確性,最終會導(dǎo)致數(shù)字電子秒表的計時誤差,為了減小這種計時的誤差,我們之前在編程時已經(jīng)將單片機(jī)一秒鐘內(nèi)執(zhí)行程序的時間計算在內(nèi),并將定時器的初值做出了適當(dāng)調(diào)整。爭取最大限度的減小數(shù)字電子秒表的計時誤差。</p><p> 在
90、進(jìn)行秒表精度調(diào)試時,我們讓本設(shè)計的單片機(jī)數(shù)字秒表和電子表同時計時,為了能盡可能的觀察出是否有誤差,我們將計時時間設(shè)定為5分鐘,當(dāng)計時時間達(dá)到5分鐘后觀察兩個秒表是否同時到達(dá)。如果不是同時到達(dá)就說明有一定的誤差,如果兩表是同時到達(dá)則說明秒表的設(shè)計滿足要求。</p><p><b> 結(jié)束語</b></p><p> 本設(shè)計的數(shù)字電子秒表是由AT89C51單片機(jī)、LE
91、D共陰數(shù)碼顯示管、控制按鍵、三極管等器件構(gòu)成的,設(shè)有6位計時顯示,開始計時、暫停計時、停止計時、復(fù)位按鍵以及查看上次顯示鍵。計時精度能到達(dá)10ms,能滿足一般秒表計時要求,設(shè)計精簡,使用方法簡單易懂。系統(tǒng)設(shè)計合理,線路簡單、功能先進(jìn),性能穩(wěn)定,程序精簡。并給出了詳細(xì)的電路設(shè)計方法。本系統(tǒng)是以單片機(jī)為核心,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善。所以采用匯編語言來進(jìn)行軟件設(shè)計,利用匯編
92、語言面向機(jī)器并能較好的發(fā)揮機(jī)器的特性,得到較高的程序,同時匯編語言目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,能提高秒表的精度。</p><p> 通過本次畢業(yè)設(shè)計,復(fù)習(xí)和鞏固我們以前所學(xué)習(xí)的數(shù)字、模擬電子技術(shù)、單片機(jī)原理及匯編程序設(shè)計等知識,加深對各門課程及相互關(guān)系的理解,并使用了Wave、Protel 99se和Proteus三款電子軟件,使理論知識系統(tǒng)化、實用化,系統(tǒng)地掌握微機(jī)應(yīng)用系統(tǒng)的一般設(shè)計方法,培養(yǎng)較強(qiáng)的
93、編程能力、開發(fā)能力。</p><p> 同時,在設(shè)計的過程中,我也發(fā)現(xiàn)了本系統(tǒng)的許多不足和可以改進(jìn)的地方。但因時間緊迫等原因沒能改進(jìn)。本設(shè)計的數(shù)字電子秒表缺少對多次計時時間進(jìn)行記錄的功能。應(yīng)給在單片機(jī)的內(nèi)部存儲區(qū)多設(shè)置一些存儲空間,用來存儲多次計時時間。并在程序中編入對多次計時時間的調(diào)用顯示。雖然存在不足,但本設(shè)計的數(shù)字電子秒表仍具有它的實用性。</p><p><b> 參
94、考文獻(xiàn)</b></p><p> [1] 劉文濤MCS-51單片機(jī)培訓(xùn)教程[M].北京:電子工業(yè)出版社,2005. 121.</p><p> [2] 毛美琴,張為民,何金兒,等.MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用[M].北京:高等教育出版社,2004. 8~10.</p><p> [3] 胡花.單片機(jī)原理及應(yīng)用技術(shù)[M].北京:電子工業(yè)出
95、版社,2009. 130~131.</p><p> [4] 張濤.單片機(jī)原理與接口技術(shù)[M].北京:北方交通大學(xué)出版社,2007. 27.</p><p> [5] 白駒珩.單片機(jī)計算機(jī)及其應(yīng)用[M].北京:科學(xué)出版社,2005. 34~35.</p><p> [6] 陳權(quán)昌.單片機(jī)原理及應(yīng)用 [M].北京:電子工業(yè)出版社,2007. 27.<
96、;/p><p> [7] 霍婷婷.潤滑供油箱控制系統(tǒng)的研制[D].西安電子科技大學(xué),2010.</p><p> [8] 徐惠民,安德寧,丁玉珍.單片微型計算機(jī)原理、接口及應(yīng)用 [M].第三版,北京:北京郵電大學(xué)出版社,2007. 166~167.</p><p> [9] 黃慧婷基于單片機(jī)的數(shù)字電子秒表的設(shè)計與實現(xiàn)[D].寧夏理工學(xué)院,2008.</
97、p><p> [10] 覃家敦,孫洪民.電工電子技術(shù)實驗改革基于電子設(shè)計競賽的探索[D].中國計量學(xué)院,2010.</p><p><b> 附錄A 程序</b></p><p> ORG 0000H</p><p> LJMP MAIN</p><p> ORG 0003H
98、 ;外部中斷INT0中斷入口</p><p> LJMP TINGZHI</p><p> ORG 000BH ;定時器T0中斷入口</p><p> LJMP UPDATE</p><p> ORG 0013H
99、; 外部中斷INT1中斷入口</p><p> LJMP KAISHI</p><p> MAIN: MOV DPTR, #TAB ;存入表頭地址</p><p> MOV TMOD, #00H ;置T0為方式0</p><p> MOV TH0, #0D8H ;賦定時器初值</p
100、><p> MOV TL0, #0F0H</p><p> MOV 79H, #00H ;顯示緩存區(qū)清零</p><p> MOV 7AH, #00H</p><p> MOV 7BH, #00H</p><p> MOV 7CH, #00H</p><p>
101、MOV 7DH, #00H</p><p> MOV 7EH, #00H</p><p> MOV 59H, #00H ;最終顯示緩存區(qū)清零</p><p> MOV 5AH, #00H</p><p> MOV 5BH, #00H</p><p> MOV 5CH, #00H&l
102、t;/p><p> MOV 5DH, #00H</p><p> MOV 5EH, #00H</p><p> MOV R0, #00H ;溢出計數(shù)區(qū)清零</p><p> MOV R1, #00H</p><p> MOV R2, #00H</p><p>
103、 MOV R3, #00H</p><p> MOV R4, #00H</p><p> MOV R5, #00H </p><p> MOV R6,#00H</p><p> SETB EA ;CPU開中斷</p><p> SETB EX0
104、 ;開外部中斷0</p><p> SETB EX1 ;開外部中斷1</p><p> SETB IT0 ;外部中斷0位邊沿觸發(fā)方式</p><p> SETB IT1 ;外部中斷1位邊沿觸發(fā)方式</p><p> SETB ET0
105、 ;定時器0允許位</p><p> XIAN: MOV A, 79H ;顯示10ms位數(shù)字</p><p> MOVC A, @A+DPTR</p><p> MOV P0, A</p><p> SETB P2.0</p><p> LCA
106、LL DELAY</p><p> CLR P2.0</p><p> MOV A, 7AH ;顯示100ms位數(shù)字</p><p> MOVC A, @A+DPTR</p><p> MOV P0, A</p><p> SETB P2.1</p>
107、<p> LCALL DELAY</p><p> CLR P2.1</p><p> MOV A, 7BH ;顯示1s位數(shù)字</p><p> MOVC A, @A+DPTR</p><p> MOV P0, A</p><p> SETB P2.2
108、</p><p> LCALL DELAY</p><p> CLR P2.2</p><p> MOV A, 7CH ;顯示10s位數(shù)字</p><p> MOVC A, @A+DPTR</p><p> MOV P0, A</p><p&
109、gt; SETB P2.3</p><p> LCALL DELAY</p><p> CLR P2.3</p><p> MOV A, 7DH ;顯示1min位數(shù)字</p><p> MOVC A, @A+DPTR</p><p> MOV P0, A<
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-基于單片機(jī)的數(shù)字鐘設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字電子鐘【精校排版】
- 畢業(yè)論文-基于單片機(jī)倒車系統(tǒng)設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字溫度計的設(shè)計【精校排版】
- 畢業(yè)論文-基于fpga數(shù)字秒表電路的設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的電子門鈴設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的多點數(shù)字測溫系統(tǒng)(設(shè)計)【精校排版】
- 畢業(yè)論文-基于單片機(jī)數(shù)據(jù)采集系統(tǒng)設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的密碼鎖設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的音樂流水燈設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的電子時鐘設(shè)計【精校排版】
- 畢業(yè)論文-單片機(jī)開發(fā)板設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字萬用表的設(shè)計【精校排版】
- 畢業(yè)論文-基于單片機(jī)的溫度計的設(shè)計【精校排版】
- 畢業(yè)論文-基于at89c51單片機(jī)數(shù)字鐘【精校排版】
- 畢業(yè)論文-基于單片機(jī)的多功能電子跑表設(shè)計【精校排版】
- 畢業(yè)論文-智能單片機(jī)照明控制裝置設(shè)計【精校排版】
- 畢業(yè)論文-單片機(jī)日歷時鐘開發(fā)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的lcd顯示器的設(shè)計【精校排版】
- 畢業(yè)論文-基于stc單片機(jī)的人體感應(yīng)臺燈設(shè)計【精校排版】
評論
0/150
提交評論