畢業(yè)論文-基于單片機(jī)的數(shù)字秒表設(shè)計(jì)【精校排版】_第1頁(yè)
已閱讀1頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> ?。?0 屆)</b></p><p>  基于單片機(jī)的數(shù)字秒表設(shè)計(jì)</p><p><b>  目 錄</b></p><p><b>  摘要III</b></p><p> 

2、 AbstractIV</p><p><b>  第1章 緒論1</b></p><p>  第2章 硬件設(shè)計(jì)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è)計(jì)4</p><p>  2.2.1 方案設(shè)計(jì)4</p><p>  2.2.2 顯示模塊的設(shè)計(jì)6</p><p>  2.2.3 時(shí)鐘電路模塊的設(shè)計(jì)9</p><p>  2.2.4 按鍵電路的設(shè)計(jì)10</p><p>  2.2.5

4、 復(fù)位電路的設(shè)計(jì)12</p><p>  2.2.6 系統(tǒng)電路的設(shè)計(jì)12</p><p>  第3章 軟件設(shè)計(jì)14</p><p>  3.1 匯編語(yǔ)言介紹14</p><p>  3.2 內(nèi)部存儲(chǔ)器的分配14</p><p>  3.3 主程序設(shè)計(jì)15</p><p>

5、  3.4 中斷程序設(shè)計(jì)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 晶振電路的測(cè)試21</p><p>  4.2.2 復(fù)位電路的測(cè)試22<

6、;/p><p>  4.2.3 顯示電路的測(cè)試22</p><p>  4.3 系統(tǒng)程序的燒錄22</p><p>  4.4 數(shù)字電子秒表的精度調(diào)試23</p><p><b>  結(jié)束語(yǔ)24</b></p><p><b>  參考文獻(xiàn)25</b></p

7、><p>  附錄A 程序26</p><p>  附錄B 秒表設(shè)計(jì)原理圖32</p><p><b>  致謝33</b></p><p>  基于單片機(jī)的數(shù)字秒表設(shè)計(jì)</p><p><b>  摘要</b></p><p>  本設(shè)計(jì)是一個(gè)

8、基于單片機(jī)的數(shù)字秒表設(shè)計(jì)。為了解決傳統(tǒng)的秒表計(jì)時(shí)精度不夠高造成的誤差,所以本論文設(shè)計(jì)的秒表計(jì)時(shí)精度設(shè)計(jì)為10ms,滿足一般體育競(jìng)賽的計(jì)時(shí)要求,是普通體育競(jìng)賽中必備設(shè)備之一。本設(shè)計(jì)的數(shù)字電子秒表采用AT89C51用為核心,利用T0定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)原理,結(jié)合顯示電路、LED八段數(shù)碼管以及外部中斷電路來(lái)設(shè)計(jì)的計(jì)時(shí)器。將硬件和軟件有機(jī)地聯(lián)系在一起,使本設(shè)計(jì)能夠?qū)崿F(xiàn)6位LED顯示,顯示的時(shí)間范圍為0~59分59.99秒,計(jì)時(shí)的精度為10m

9、s,在進(jìn)行計(jì)時(shí)的同時(shí),能保存一次時(shí)間,并在下次計(jì)時(shí)后能查詢上一次計(jì)時(shí)的時(shí)間。軟件系統(tǒng)設(shè)計(jì)采用的是匯編語(yǔ)言編寫程序,其中包括定時(shí)中斷服務(wù),顯示程序,延時(shí)程序,外部中斷服務(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ù)字電子秒表是電器制造,自動(dòng)化控制、國(guó)防、實(shí)驗(yàn)室及科研單位必不可少的儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時(shí)器、定時(shí)器等的時(shí)間測(cè)試。</p><p>  在現(xiàn)在的高端體育競(jìng)賽中,隨著運(yùn)動(dòng)員的水平不斷提高,差距在不斷縮小。很多體育競(jìng)賽對(duì)時(shí)間精度的要求越來(lái)越高,有時(shí)比賽冠亞軍之間的差距僅僅只有幾毫秒,因此就需要有較高精度,以及較低誤差的秒

14、表來(lái)記錄比賽成績(jī)。</p><p>  本設(shè)計(jì)采用AT89C51單片機(jī)的T0定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使秒表能精確的計(jì)時(shí)。使用中斷系統(tǒng)來(lái)實(shí)現(xiàn)開始和暫停的功能。P0口輸出字形代碼數(shù)據(jù),P2口的P2.0~2.5口作列掃描位輸出,而P1.1、P1.6、P3.2、P3.3分別接4個(gè)按鈕型開關(guān),使其分別控制暫停計(jì)時(shí)、查看上一次暫停的計(jì)錄時(shí)間、停止計(jì)時(shí)和開始計(jì)時(shí)的功能,另外RET復(fù)位鍵連接一個(gè)按鈕型開關(guān),使其能控制顯示

15、器顯示歸零,即復(fù)位。顯示電路由6位共陰極LED數(shù)碼管組成,通過P0口、P2口以及5個(gè)按鈕開關(guān)來(lái)控制秒表的計(jì)時(shí)與顯示。</p><p>  根據(jù)以上設(shè)計(jì)思路就能夠?qū)崿F(xiàn)數(shù)字電子秒表的計(jì)時(shí)和查看上一次記錄時(shí)間的功能。</p><p><b>  第2章 硬件設(shè)計(jì)</b></p><p>  2.1 單片機(jī)的選擇</p><p&

16、gt;  2.1.1 AT89C51單片機(jī)的介紹</p><p>  本設(shè)計(jì)選用由美國(guó)ATMEL公司生產(chǎn)單的AT89C51[1]。AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器。AT89C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀

17、存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C51是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p>  AT89C51的主要特征:</p><p

18、>  與MCS-51 兼容;</p><p>  4K字節(jié)可編程FLASH存儲(chǔ)器;  </p><p>  壽命:1000寫/擦循環(huán);  </p><p>  數(shù)據(jù)保留時(shí)間:10年;  </p><p>  全靜態(tài)工作:0Hz-24MHz;   </p><p>  三級(jí)程序存儲(chǔ)器鎖定;   </p>

19、<p>  128×8位內(nèi)部RAM;   </p><p>  32可編程I/O線;   </p><p>  兩個(gè)16位定時(shí)器/計(jì)數(shù)器;   </p><p><b>  5個(gè)中斷源;   </b></p><p>  可編程串行通道;   </p><p>  低功耗的

20、閑置和掉電模式;   </p><p>  片內(nèi)振蕩器和時(shí)鐘電路。</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正常操作時(shí)為+5伏電源</p><p>  XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。 </p&g

22、t;<p>  XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。</p><p>  當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。</p><p>  正常操作時(shí)為ALE功能(允許地址鎖存)提

23、供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號(hào)。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈沖(功能)。</p><p>  外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或數(shù)據(jù))期間,在每個(gè)機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動(dòng)八LSTTL輸入。</p><p> 

24、 、為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng)為高電平時(shí),訪問內(nèi)部程序存儲(chǔ)器,當(dāng)為低電平時(shí),則訪問外部程序存儲(chǔ)器。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。</p><p>  P0口(P0.0~0.7)是一個(gè)8位漏極開路型雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。</p>

25、<p>  P1口(P1.0~1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p><p>  P2口(P2.0~P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p><p>  P3口(P3.0~3.7)是一個(gè)帶有內(nèi)部提升電阻的

26、8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p><p>  運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算??梢詫?duì)半字節(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)算器還包含有一個(gè)布爾處理器,用來(lái)處理位操作。</p><p>  程序

27、計(jì)數(shù)器PC用來(lái)存放即將要執(zhí)行的指令地址,共16位,可對(duì)64K程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。</p><p>  指令寄存器是用作存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令功能。</p><p>  2.2 單片機(jī)電路的設(shè)計(jì)</p><

28、;p>  2.2.1 方案設(shè)計(jì)</p><p>  本設(shè)計(jì)的目標(biāo)是設(shè)計(jì)一個(gè)帶有查看上一次計(jì)時(shí)的數(shù)字電子秒表,并且具有顯示直觀、精度高、讀取方便等優(yōu)點(diǎn),在日常生活中能廣泛的使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡(jiǎn)單、計(jì)時(shí)精度高為目標(biāo)。</p><p>  硬件電路設(shè)計(jì)主要有主控制器,計(jì)時(shí)器、顯示電路、復(fù)位電路、開始計(jì)時(shí)、暫停計(jì)時(shí)、停止計(jì)時(shí)電路等。使用AT89C51單片機(jī)做主控

29、制器,顯示電路采用共陰極LED八段數(shù)碼管。</p><p>  本設(shè)計(jì)利用AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。P0口的P0.0~0.7輸出段碼字形數(shù)據(jù),P2口的P2.0~2.5口作列掃描位輸出,而P1.1、P1.6、P3.2、P3.3分別接4個(gè)按鈕型開關(guān),使其分別控制暫停計(jì)時(shí)、查看上一次暫停的計(jì)錄時(shí)間、停止計(jì)時(shí)和開始計(jì)時(shí)的功能,另外RET復(fù)位

30、件連接一個(gè)按鈕型開關(guān),使其能控制顯示器顯示歸零,即復(fù)位。顯示電路由6位共陰極LED數(shù)碼管組成,通過P0口、P2口以及5個(gè)按鈕開關(guān)來(lái)控制顯示。電路原理圖設(shè)計(jì)最基本的要求是正確性,布局合理,在保證正確性和布局合理的前提下要求設(shè)計(jì)更美觀。硬件電路布局如圖2.2所示;</p><p>  圖2.2 數(shù)字秒表硬件電路布局原理圖</p><p>  根據(jù)要求知道秒表設(shè)計(jì)主要實(shí)現(xiàn)的功能是計(jì)時(shí)和顯示。本

31、設(shè)計(jì)中,數(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ù),每一個(gè)地址單元內(nèi)存放的數(shù)據(jù)均為十進(jìn)制BCD碼。由于采用動(dòng)態(tài)掃描電路實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示所用的段碼十進(jìn)制BCD碼數(shù)據(jù)存放在RAM表中。顯示時(shí),取出79H~7EH中的一個(gè)地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示用段碼,并從P0口輸出該段碼,P2口將對(duì)應(yīng)的數(shù)碼

32、管點(diǎn)亮,從而顯示該地址單元的數(shù)據(jù)值,如此循環(huán)取地址中的數(shù)據(jù)進(jìn)行顯示,達(dá)到動(dòng)態(tài)顯示。</p><p>  將上一次暫停顯示的時(shí)間存放在59H~5EH內(nèi)存單元中,數(shù)據(jù)存放規(guī)則和79H~7EH一樣。與79H~7EH存儲(chǔ)區(qū)不同的是:59H~5EH存儲(chǔ)的內(nèi)容為數(shù)字秒表上一次計(jì)時(shí)顯示的時(shí)間,而79H~7EH為當(dāng)前計(jì)時(shí)時(shí)間存儲(chǔ)區(qū)。</p><p>  計(jì)時(shí)利用定時(shí)器/計(jì)數(shù)器T0溢出中斷完成,T0作方式0

33、,設(shè)置溢出中斷周期為1ms,當(dāng)溢出中斷后向CPU發(fā)出溢出中斷請(qǐng)求,而每發(fā)出一次中斷請(qǐng)求就對(duì)毫秒計(jì)數(shù)單元加一,當(dāng)溢出中斷請(qǐng)求達(dá)到10次就對(duì)10ms位加1,依次類推,直到59分59.99秒重新復(fù)位。 </p><p>  再考慮按鍵的處理。這5個(gè)鍵可以采用中斷的方式,也可以采用掃描的方式來(lái)識(shí)別。復(fù)位鍵、查看上一次顯示時(shí)間和暫停計(jì)時(shí)按鍵在于數(shù)值復(fù)位和查詢上次計(jì)時(shí)時(shí)間,對(duì)于時(shí)間的要求不是很嚴(yán)格,而開始計(jì)時(shí)鍵和停止計(jì)時(shí)鍵則

34、是用于對(duì)時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此,可以對(duì)復(fù)位鍵、暫停記時(shí)鍵和查看上次顯示時(shí)間鍵采取掃描的方式,而對(duì)開始和停止鍵采用外部中斷的方式。</p><p>  初始狀態(tài)下由6個(gè)LED數(shù)碼管組成的計(jì)時(shí)器顯示為00.00.00,如果按下開始計(jì)時(shí)鍵時(shí),INT1向CPU發(fā)出中斷請(qǐng)求,CPU停止當(dāng)前的工作,轉(zhuǎn)去執(zhí)行外部中斷1服務(wù)程序,即開啟定時(shí)器T0,開始計(jì)時(shí)。計(jì)時(shí)是采用定時(shí)器T0溢出中斷來(lái)完成的,設(shè)計(jì)的定時(shí)溢出中斷為

35、1ms,當(dāng)溢出中斷后向CPU發(fā)出溢出中斷請(qǐng)求,每發(fā)出一次溢出中斷請(qǐng)求后就相當(dāng)于計(jì)時(shí)了1ms,當(dāng)達(dá)到10次溢出中斷就相當(dāng)于對(duì)10ms位進(jìn)位,即是ms位加1,依次類推,直到59分59.99秒重新復(fù)位。在計(jì)時(shí)過程中,如果按下暫停計(jì)時(shí)鍵且沒有放開時(shí),將本次記錄時(shí)間存入另一個(gè)寄存區(qū),并且6位LED顯示器持續(xù)顯示本次暫停的計(jì)時(shí),當(dāng)放開按鍵P1.1后,繼續(xù)計(jì)時(shí)。如果按下停止計(jì)時(shí)鍵時(shí),外部中斷INT0向CPU發(fā)出外部中斷請(qǐng)求,CPU轉(zhuǎn)去執(zhí)行外部中斷0服

36、務(wù)程序,即關(guān)閉定時(shí)器T0計(jì)時(shí),同時(shí)將此次計(jì)時(shí)時(shí)間存入寄存區(qū),且沒有按下其他鍵時(shí)循環(huán)顯示最后記錄的時(shí)間。如果按下查看上一次記錄時(shí)間鍵且沒有放開時(shí),6位LED數(shù)碼管顯示器將顯示上一次記錄的時(shí)間,放開查看上一次記錄時(shí)間鍵是,6位LED數(shù)碼管繼續(xù)顯示最后記錄的時(shí)間,等待下一次計(jì)時(shí)開始。</p><p>  設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,顯示電路和回零、啟動(dòng)、查看、停表電路等。主控制器

37、采用單片機(jī)AT89C51,顯示電路采用共陰極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間,5個(gè)按鍵均采用觸點(diǎn)式按鍵,并且都是低電平有效。</p><p>  2.2.2 顯示模塊的設(shè)計(jì)</p><p>  數(shù)字秒表的顯示電路,常采用液晶顯示或數(shù)碼管顯示。本設(shè)計(jì)采用LED八段數(shù)碼管[3]作為的顯示電路的顯示介質(zhì)。</p><p>  顯示器可以分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。由于本設(shè)計(jì)需要

38、采用六位LED八段數(shù)碼管顯示,如果靜態(tài)顯示則占用的口線多,硬件電路復(fù)雜。所以采用動(dòng)態(tài)顯示。</p><p>  動(dòng)態(tài)顯示是一位一位地輪流點(diǎn)亮各位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)八位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制。動(dòng)態(tài)方式顯示時(shí),各數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時(shí)刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在

39、另一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時(shí)刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時(shí)顯示的感覺。</p><p>  數(shù)碼顯示管分為共陽(yáng)數(shù)碼管和共陰數(shù)碼管兩種,共陽(yáng)極數(shù)碼管的八個(gè)發(fā)光二極管的陽(yáng)極(二極管正端)連接在一起,如圖2.3(b)所示,通常,公共陽(yáng)極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端

40、。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。</p><p>  共陰極LED數(shù)碼管[3]的八個(gè)發(fā)光二極管的陰極(二極管負(fù)端)連接在一起,如圖2.3(c)所示,通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端,當(dāng)某段驅(qū)動(dòng)電路的輸出端為高

41、電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。 </p><p>  圖2.3 (a)數(shù)碼管引腳圖 (b)共陽(yáng)極內(nèi)部結(jié)構(gòu)圖 (c)共陰極內(nèi)部結(jié)構(gòu)圖</p><p>  本設(shè)計(jì)采用6個(gè)共陰極LED數(shù)碼顯示管作顯示電路,數(shù)碼管的a、b、c、d、

42、e、f、g、DP引腳為高電平時(shí),那么其對(duì)應(yīng)的二極管就會(huì)被點(diǎn)亮,使數(shù)碼顯示管顯示0~9的10個(gè)阿拉伯?dāng)?shù)字。段碼編碼如表2.1所示。</p><p>  表2.1 共陰極數(shù)碼顯示阿拉伯?dāng)?shù)字字型代碼</p><p>  動(dòng)態(tài)顯示電路由顯示塊、字形碼驅(qū)動(dòng)模塊、字位驅(qū)動(dòng)模塊三部分組成。如圖2.4所示為本系統(tǒng)的6位LED動(dòng)態(tài)顯示器基本顯示原理電路。圖中,6個(gè)LED數(shù)碼管的八段段選線分別與外接上拉電阻

43、的單片機(jī)P0口對(duì)應(yīng)連接,而6個(gè)LED數(shù)碼管的位控制端則和NPN型三極管的集電極相連接。單片機(jī)的P2.0~P2.5口則分別連接對(duì)應(yīng)數(shù)碼顯示管的最低位到最高位,P2.0~P2.5口分別和6個(gè)NPN型三極管的基極相連,控制三極管的導(dǎo)通。NPN型三極管選用的是最常使用的9013型三極管。根據(jù)9013的資料顯示:其耐壓值為40V,最大功率為0.65W,最大電流為0.5A,電氣性能完全滿足本設(shè)計(jì)的要求。另外數(shù)碼管顯示是采用動(dòng)態(tài)顯示,所以對(duì)三極管的開

44、關(guān)頻率有一定的要求。根據(jù)電子秒表的設(shè)計(jì)計(jì)算可知?jiǎng)討B(tài)顯示的頻率最高為3KHz,而9013的導(dǎo)通頻率為150MHz,完全能滿足本設(shè)計(jì)的要求,所以最終選取9013三極管最為位控制開關(guān)。 </p><p>  圖2.4 顯示電路基本原理圖</p><p>  6個(gè)LED數(shù)碼管是由P0口來(lái)驅(qū)動(dòng),它內(nèi)部沒有上拉電阻,作為輸出口時(shí)驅(qū)動(dòng)能力很弱,不能把LED數(shù)碼管點(diǎn)亮,因此P0口必須接上拉電阻。另

45、外,共陰數(shù)碼管的驅(qū)動(dòng)電流一般為20mA左右,如果電流太大容易造成數(shù)碼管燒毀,所以也需要根據(jù)電源的電壓值來(lái)確定上拉電阻的大小。如果電阻過小,勢(shì)必會(huì)形成灌電流過大,造成單片機(jī)IO的損壞,如果電阻過大,那么對(duì)上拉電流沒有太大的影響,不能夠達(dá)到驅(qū)動(dòng)效果。電源供電電壓為5V,當(dāng)上拉電阻選用220Ω電阻時(shí)灌電流為22mA。不會(huì)損壞單片機(jī)的I/O口,同時(shí)也可以為數(shù)碼顯示管起到限制電流的保護(hù)作用。 </p><p>  2.2.

46、3 時(shí)鐘電路模塊的設(shè)計(jì)</p><p>  單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)內(nèi)各種微操作的時(shí)間基準(zhǔn),8051單片機(jī)內(nèi)設(shè)有一個(gè)由反向放大器所構(gòu)成的振蕩電路,XTAL1和 XTAL2分別為振蕩電路的輸入和輸出端,8051單片機(jī)的時(shí)鐘信號(hào)通常有兩種電路形式:內(nèi)部振蕩方式與外部振蕩方式。外部振蕩方式的時(shí)鐘很少用,若要使用外部振蕩方式的時(shí)鐘時(shí),只需要把XTAL1接地,XTAL2接外部振蕩器就行。對(duì)外部振蕩信號(hào)無(wú)特殊要求,只

47、要保證脈沖寬度,一般采用頻率低于12MHz的方波信號(hào)。</p><p>  時(shí)鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個(gè)兩相時(shí)鐘信號(hào)P1和P2供單片機(jī)使用。P1在每一個(gè)狀態(tài)S的前半部分有效,P2在每個(gè)狀態(tài)的后半部分有效。本設(shè)計(jì)采用的內(nèi)部振蕩方式,內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)用電路中使用較多。本設(shè)計(jì)系統(tǒng)的時(shí)鐘電路[4]如圖2.4所示。只要按照?qǐng)D2.5所示,電路進(jìn)行設(shè)計(jì)連接就能使系統(tǒng)可靠起振并能穩(wěn)定運(yùn)行。圖中,電容

48、器C1 、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5~33pF。但在時(shí)鐘電路的實(shí)際應(yīng)用中一定要注意正確選擇其大小,并保證電路的對(duì)稱性,盡可能匹配,選用正牌的瓷片或云母電容,如果可能的話,溫度系數(shù)盡可能低。本設(shè)計(jì)中采用大小為30pF的電容和12MHz的晶振。</p><p>  圖2.5 內(nèi)部振蕩電路</p><p>  8051單片機(jī)典型的指令周期[5](執(zhí)行一條指令所

49、需要的的時(shí)間稱之為指令周期)為一個(gè)機(jī)器周期,一個(gè)機(jī)器周期由六個(gè)狀態(tài)(十二振蕩周期或時(shí)鐘周期)組成。每個(gè)狀態(tài)又被分成兩個(gè)時(shí)相P1和P2。所以,一個(gè)機(jī)器周期可以依次表示為S1P1,S1P2……,S6P1,S6P2。通常算術(shù)邏輯操作在P1時(shí)相進(jìn)行,而內(nèi)部寄存器傳送在P2時(shí)相進(jìn)行。時(shí)序電路</p><p><b>  如圖2.6所示;</b></p><p>  圖2.6

50、8051 時(shí)序圖</p><p>  圖2.6給出了8051單片機(jī)的取指令和執(zhí)行指令的定時(shí)關(guān)系。這些內(nèi)部振蕩時(shí)鐘信號(hào)不能從外部觀察到,所用XTAL2振蕩信號(hào)作參考。</p><p>  對(duì)于單周期指令,當(dāng)操作碼被送入指令寄存器時(shí),便從S1P2開始執(zhí)行指令。如果是雙字節(jié)單機(jī)器周期指令,則在同一機(jī)器周期的S4期間讀入第二個(gè)字節(jié),若是單字節(jié)單機(jī)器周期指令,則在S4期間仍進(jìn)行讀,但所讀的這個(gè)字節(jié)操

51、作碼被忽略,程序計(jì)數(shù)器也不加1,在S6P2結(jié)束時(shí)完成指令操作。</p><p>  2.2.4 按鍵電路的設(shè)計(jì)</p><p>  本設(shè)計(jì)中設(shè)計(jì)了5個(gè)按鍵,分別用于實(shí)現(xiàn)開始計(jì)時(shí)、暫停計(jì)時(shí)、復(fù)位、查看上一次顯示時(shí)間和停止計(jì)時(shí)的功能,如圖2.7所示。這5個(gè)鍵可以采用中斷的方法,也可以采用查詢的方法來(lái)識(shí)別。對(duì)于復(fù)位、查看上次顯示時(shí)間和暫停計(jì)時(shí)鍵,主要功能在于數(shù)值復(fù)位、對(duì)上次顯示時(shí)間的查看和暫停

52、計(jì)時(shí)器計(jì)時(shí),對(duì)于時(shí)間的要求不是很嚴(yán)格,而開始計(jì)時(shí)和停止計(jì)時(shí)鍵主要用于時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此對(duì)復(fù)位鍵、查看上一次顯示時(shí)間、暫停計(jì)時(shí)采用查詢的方式,而對(duì)于開始計(jì)時(shí)和停止計(jì)時(shí)鍵采用外部中斷。5個(gè)按鍵按鍵除了復(fù)位鍵使用高電平有效外,其他4個(gè)按鍵均采用低電平有效。</p><p>  圖2.7 按鍵電路圖</p><p>  單片機(jī)的I/O口直接連接電源,因此需要接上拉電阻來(lái)進(jìn)行限流

53、,本設(shè)計(jì)中選取阻值為2kΩ 的電阻作為上拉電阻,根據(jù)計(jì)算可知此時(shí)的灌電流為2.5mA,電流在安全范圍內(nèi),符合安全設(shè)計(jì)要求。</p><p>  按鍵電路中由于采用了外部中斷,所以需要用到P3口的第二功能。P3口引腳的第二功能如表2.2所示;</p><p>  表2.2 P3口引腳第二功能表</p><p>  2.2.5 復(fù)位電路的設(shè)計(jì)</p>

54、<p>  本設(shè)計(jì)采用上電且開關(guān)復(fù)位電路[6],如圖2.8所示。按下開關(guān)后,由于電容充電,使RST將持續(xù)一段時(shí)間的高電平。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作。通常選擇C=10~30μF,R=1K,本設(shè)計(jì)采用的電容值為22μF的電容和電阻為1K的電阻。</p><p>  圖2.8 單片機(jī)復(fù)位電路</p><p>  

55、2.2.6 系統(tǒng)電路的設(shè)計(jì)</p><p>  系統(tǒng)總電路由顯示電路,時(shí)鐘電路,按鍵電路和復(fù)位電路組成,只要將單片機(jī)與以上各部分電路合理的連接就組成了系統(tǒng)總電路。總的電路圖附錄B所示。</p><p>  本設(shè)計(jì)以8051單片機(jī)為主電路的核心部分,各個(gè)電路均和8051單片機(jī)相連,由單片機(jī)統(tǒng)籌、協(xié)調(diào)和控制各個(gè)電路模塊的運(yùn)行與工作。</p><p>  將設(shè)計(jì)好的晶振

56、電路連接到兩個(gè)專用引腳即可為單片機(jī)提供時(shí)鐘脈沖,但在連接接晶振電路時(shí)要盡量使晶振電路靠近單片機(jī),這樣可以為單片機(jī)提供穩(wěn)定的時(shí)鐘脈沖。</p><p>  復(fù)位電路是單片機(jī)設(shè)有的一個(gè)專用的硬件復(fù)位接口RST,并設(shè)置為高電平有效。當(dāng)RST為高電平是系統(tǒng)復(fù)位。</p><p>  按鍵電路模塊與單片機(jī)的I/O端口連接可以由自己設(shè)定,本設(shè)計(jì)的暫停計(jì)時(shí)鍵和查看上一次顯示時(shí)間鍵分別接單片機(jī)的P1.1和

57、P1.6,均設(shè)為低電平有效。而另外的開始計(jì)時(shí)鍵和停止計(jì)時(shí)鍵兩鍵使用的是外部中斷,所以需要連接到單片機(jī)的特殊接口P3.3和P3.2,這兩個(gè)I/O口的第二功能分別為單片機(jī)的外部中斷1端口和外部中斷0端口。同樣設(shè)置為位低電平有效。</p><p>  顯示電路由6位LED數(shù)碼管組成,采用動(dòng)態(tài)掃描顯示方式,因此使用P0口的P0.0~P0.7實(shí)現(xiàn)8位段控制和P2口的P2.0~P2.5實(shí)現(xiàn)6位位控制,8位段控制接P0口,P0

58、.0~P0.7分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp顯示,P0口沒有集成上拉電阻,高電平的驅(qū)動(dòng)能力很弱,所以需要接上拉電阻來(lái)提高P0的高電平驅(qū)動(dòng)能力。6位位控制則由低位到高位分別接到P2.0~P2.5口,NPN三極管9013作為位控制端的開關(guān),當(dāng)P2.0~P2.5端口任意一個(gè)端口為高電平時(shí),與其相對(duì)應(yīng)的三極管就導(dǎo)通,對(duì)應(yīng)的數(shù)碼管導(dǎo)通顯示。</p><p>  通過以上設(shè)計(jì),將各部分電路與單片機(jī)有機(jī)的

59、結(jié)合到一起,硬件部分的設(shè)計(jì)基本完成,剩下的部分就是對(duì)單片機(jī)的編程,使單片機(jī)按程序運(yùn)行,實(shí)現(xiàn)數(shù)字電子秒表的功能。</p><p><b>  第3章 軟件設(shè)計(jì)</b></p><p>  3.1 匯編語(yǔ)言介紹</p><p>  本設(shè)計(jì)的程序采用匯編語(yǔ)言編寫,匯編語(yǔ)言由于采用了助記符號(hào)來(lái)編寫程序,比使用機(jī)器語(yǔ)言用二進(jìn)制代碼編程要方便很多,簡(jiǎn)化

60、了編程設(shè)計(jì)過程過程。匯編語(yǔ)言的特點(diǎn)是用符號(hào)代替了機(jī)器指令代碼,而且助記符與指令代碼一一對(duì)應(yīng),基本保留了機(jī)器語(yǔ)言的靈活性。使用匯編語(yǔ)言能面向機(jī)器并較好地發(fā)揮機(jī)器的特性,得到質(zhì)量較高的程序。</p><p>  匯編語(yǔ)言的特點(diǎn)[7]:</p><p>  面向機(jī)器的低級(jí)語(yǔ)言,通常是為特定的計(jì)算機(jī)或系列計(jì)算機(jī)專門設(shè)計(jì)的。</p><p>  保持了機(jī)器語(yǔ)言的優(yōu)點(diǎn),具有直接

61、和簡(jiǎn)捷的特點(diǎn)。</p><p>  可有效地訪問、控制計(jì)算機(jī)的各種硬件設(shè)備,如磁盤、存儲(chǔ)器、CPU、I/O端口等。</p><p>  目標(biāo)代碼簡(jiǎn)短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計(jì)語(yǔ)言。</p><p>  經(jīng)常與高級(jí)語(yǔ)言配合使用,應(yīng)用十分廣泛。</p><p>  在程序設(shè)計(jì)過程中,為了有效地完成任務(wù),把所要完成的任務(wù)精心的分割成

62、若干個(gè)相互獨(dú)立但相互又仍可有聯(lián)系的任務(wù)模塊,這些任務(wù)模塊使得任務(wù)變得相對(duì)單純,對(duì)外的數(shù)據(jù)交換相對(duì)簡(jiǎn)單,容易編寫,容易檢測(cè),容易閱讀和維護(hù)。這種程序設(shè)計(jì)思想稱為模塊化程序設(shè)計(jì)思想。模塊化結(jié)構(gòu)程序的設(shè)計(jì),可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計(jì)。程序的主要模塊有:主程序、顯示程序、定時(shí)溢出中斷服務(wù)程序、外部中斷服務(wù)程序。</p><p>  3.2 內(nèi)部存儲(chǔ)器的分配</p>

63、<p>  本設(shè)計(jì)系統(tǒng)所用到的單片機(jī)端口數(shù)比較多,所以在這里將對(duì)數(shù)字電子秒表的硬件資源的大概分配加以說明。片內(nèi)RAM的分配、各功能鍵的定義以及各端口的分配安排如表3.1所示。</p><p>  表3.1 端口的分配安排表</p><p>  3.3 主程序設(shè)計(jì)</p><p>  本設(shè)計(jì)系統(tǒng)程序主要模塊由主程序、定時(shí)中斷服務(wù)程序、外部中斷0服務(wù)程

64、序和外部中斷1服務(wù)程序組成。主程序是整個(gè)程序的最重要部分??梢詫?duì)各個(gè)中斷程序進(jìn)行調(diào)用。協(xié)調(diào)各個(gè)子程序之間的聯(lián)系。</p><p>  系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程圖如圖3.1所示。首先對(duì)系統(tǒng)進(jìn)行初始化,包括設(shè)置各入口地址、中斷的開啟、對(duì)各個(gè)數(shù)據(jù)緩存區(qū)清“0”、賦定時(shí)器初值,初始化完畢后,就進(jìn)入數(shù)碼管顯示程序。數(shù)碼管顯示程序?qū)︼@示緩存區(qū)內(nèi)的數(shù)值進(jìn)行調(diào)用并在數(shù)碼管上進(jìn)行動(dòng)態(tài)顯示。顯示一次就對(duì)P1.1和P

65、1.6進(jìn)行一次掃描,查詢暫停計(jì)時(shí)鍵P1.1和顯示上一次計(jì)時(shí)時(shí)間鍵P1.6是否按下,當(dāng)這個(gè)兩按鍵有按下時(shí),程序暫停計(jì)時(shí)或顯示上一次顯示時(shí)間。當(dāng)沒有按下復(fù)位鍵時(shí),不斷地調(diào)用顯示緩存區(qū)的數(shù)據(jù)進(jìn)行顯示。使用戶能清楚的看到當(dāng)前電子秒表所記時(shí)時(shí)間。當(dāng)查詢到P1.6按下后則跳轉(zhuǎn)到另外一段顯示程序并調(diào)用最終緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,此時(shí)顯示的時(shí)間即為上一次計(jì)時(shí)的時(shí)間。與此同時(shí),在P1.6按下后單片機(jī)執(zhí)行顯示程序的同時(shí)也在對(duì)P1.6進(jìn)行掃描,當(dāng)P1.6斷開后

66、立即跳轉(zhuǎn)回之前的顯示程序顯示當(dāng)前的計(jì)時(shí)時(shí)間。</p><p>  在主程序中還進(jìn)行了賦寄存區(qū)的初始值、設(shè)置定時(shí)器初值以及開啟外部中斷等操作,當(dāng)定時(shí)時(shí)間到后就轉(zhuǎn)去執(zhí)行定時(shí)中斷程序。當(dāng)外部中斷有請(qǐng)求則去執(zhí)行外部中斷服務(wù)程序。并在執(zhí)行完后返回主程序。</p><p>  圖3.1 主程序顯示流程圖</p><p>  3.4 中斷程序設(shè)計(jì)</p><

67、;p>  現(xiàn)在方案中采用了三個(gè)中斷,外部中斷INT0,INT1和定時(shí)中斷T0[8]。CPU在響應(yīng)中斷時(shí),先處理高級(jí)中斷,在處理低級(jí)中斷,若有多個(gè)同級(jí)中斷時(shí),則按自然優(yōu)先順序處理。例如當(dāng)CPU正在處理一個(gè)中斷申請(qǐng)時(shí),有出現(xiàn)了另一個(gè)優(yōu)先級(jí)比它高的中斷請(qǐng)求,這是,CPU就暫停終止對(duì)當(dāng)前優(yōu)先級(jí)較低的中斷源的服務(wù),轉(zhuǎn)去響應(yīng)優(yōu)先級(jí)比它高的中斷請(qǐng)求,并為其服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來(lái)較低級(jí)的中斷服務(wù)程序。當(dāng)CPU為級(jí)別高的終端服務(wù)程序服務(wù)時(shí)

68、,如果級(jí)別低的中斷發(fā)出中斷請(qǐng)求,此時(shí)CPU是不會(huì)響應(yīng)的,所以為了避免開始和暫停兩個(gè)按鍵中的一個(gè)出現(xiàn)沒有響應(yīng)的情況,在進(jìn)行程序編輯時(shí)要注意對(duì)中斷的使用,避免出現(xiàn)中斷的嵌套,合理分配中斷對(duì)本設(shè)計(jì)的實(shí)現(xiàn)是至關(guān)重要的。</p><p>  另外由于數(shù)字式電子秒表的最小精度位10ms,屬于較高精度電子秒表。定時(shí)器T0的定時(shí)周期也為1ms,為了使電子秒表暫停鍵按下后CPU能馬上去響應(yīng)中斷程序,必須將暫停的外部中斷級(jí)別高于定時(shí)

69、計(jì)數(shù)器的中斷級(jí)別。避免出現(xiàn)CPU執(zhí)行完定時(shí)溢出中斷程序后再響應(yīng)外部中斷程序,影響計(jì)時(shí)精度。</p><p>  8051的自然優(yōu)先按級(jí)順序排列為:中斷源,外部中斷0,定時(shí)/計(jì)數(shù)器0溢出中斷,外部中斷1,定時(shí)/計(jì)數(shù)器1溢出中斷,串行口中斷。</p><p>  數(shù)字式秒表中的兩個(gè)按鍵采用了中斷實(shí)現(xiàn)功能。開始采用外部中斷INT0,暫停采用外部中斷INT1。另外程序中還用到了定時(shí)/計(jì)數(shù)器0溢出中

70、斷進(jìn)行計(jì)時(shí)。依據(jù)設(shè)計(jì)要求,暫停的外部中斷INT1中斷級(jí)別最高,計(jì)時(shí)的定時(shí)/計(jì)數(shù)器0溢出中斷次之,開始的外部中斷INT0級(jí)別最低。</p><p>  3.4.1 外部中斷0服務(wù)程序:</p><p>  外部中斷0服務(wù)程序結(jié)合外部P3.2停止鍵實(shí)現(xiàn)數(shù)字電子秒表的停止功能,具體流程圖如圖3.2所示。</p><p>  圖3.2 外部中斷0服務(wù)程序流程圖</

71、p><p>  當(dāng)P3.2停止計(jì)時(shí)鍵按下后,INT0向CPU發(fā)出外部中斷請(qǐng)求,CPU轉(zhuǎn)向外部中斷0服務(wù)程序執(zhí)行,停止定時(shí)器T0,然后中斷返回。</p><p>  3.4.2 外部中斷1服務(wù)程序</p><p>  外部中斷1服務(wù)程序結(jié)合外部P3.3停止鍵實(shí)現(xiàn)數(shù)字電子秒表的啟動(dòng)功能,具體流程圖如圖3.2。</p><p>  圖3.3 外部中

72、斷1服務(wù)程序流程圖</p><p>  當(dāng)P3.3開始計(jì)時(shí)鍵按下后,INT1向CPU發(fā)出外部中斷請(qǐng)求,CPU轉(zhuǎn)向外部中斷1服務(wù)程序執(zhí)行,啟動(dòng)定時(shí)器T0,然后中斷返回。</p><p>  3.4.3 定時(shí)中斷服務(wù)程序</p><p>  當(dāng)定時(shí)/計(jì)數(shù)器T0器溢出后,向CPU發(fā)出中斷請(qǐng)求信號(hào)。CPU跳轉(zhuǎn)到定時(shí)中斷程序執(zhí)行,具體流程如圖3.4所示。定時(shí)中斷程序是一個(gè)進(jìn)

73、位程序,主要負(fù)責(zé)對(duì)1ms的加一。1ms位沒有滿十就跳出中斷程序,返回顯示程序。當(dāng)1ms位滿十后就對(duì)1ms位清零,向10ms位加一,同時(shí)檢測(cè)10ms位是否滿十,沒有滿十就跳出中斷程序,返回顯示程序。如果滿十就向100ms位加一,依次類推,最終達(dá)到59分鐘59.99秒后歸零,從零開始再次計(jì)時(shí)。</p><p>  圖3.4 定時(shí)中斷服務(wù)程序</p><p>  定時(shí)/計(jì)數(shù)器T0[9]工作在方

74、式0下,TH0和TL0組成一個(gè)13位的二進(jìn)制數(shù)計(jì)數(shù)器。單片機(jī)開機(jī)或復(fù)位時(shí),它的值為00H,當(dāng)T0啟動(dòng)后,從第一個(gè)輸入脈沖開始計(jì)時(shí),每來(lái)一個(gè)脈沖計(jì)數(shù)加一,即從0000000000000開始計(jì)數(shù)到1111111111111,再計(jì)數(shù)一個(gè)脈沖時(shí)TH0和TL0組成的13位計(jì)數(shù)器將會(huì)從13個(gè)1變成13個(gè)0,并產(chǎn)生溢出,溢出位將被送到TF0標(biāo)志位,通過溢出標(biāo)志產(chǎn)生溢出中斷請(qǐng)求。顯然,T0定時(shí)器在方式0下引起一次中斷所允許計(jì)數(shù)的最多脈沖個(gè)數(shù)為213 個(gè)

75、。</p><p>  但如果定時(shí)計(jì)數(shù)器如果每次都固定從0開始計(jì)數(shù),到溢出后,再向CPU發(fā)出溢出中斷請(qǐng)求信號(hào)那是毫無(wú)意義的。為了使定時(shí)計(jì)數(shù)器在規(guī)定的計(jì)數(shù)脈沖個(gè)數(shù)字之后(此時(shí)應(yīng)小于213個(gè)脈沖),向CPU發(fā)出溢出中斷請(qǐng)求,可采取預(yù)先向TH0和TL0中放入一個(gè)初值X的方法,使計(jì)數(shù)器以X值為起始值開始計(jì)數(shù),即X+1,X+2,……直至計(jì)數(shù)器計(jì)滿,從1全變?yōu)?。設(shè)需要計(jì)數(shù)的脈沖個(gè)數(shù)為Y,則有:</p><

76、;p><b>  X+Y=213 </b></p><p>  在定時(shí)方式下:定時(shí)時(shí)間間隔位t=(213—X)</p><p>  現(xiàn)在本設(shè)計(jì)要求1ms實(shí)現(xiàn)一次中斷,選擇定時(shí)器T0工作在方式0。所以需要根據(jù)以上條件計(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>  由于定時(shí)1ms只是一個(gè)理想化的時(shí)間,其中并沒有考慮到中斷后單片機(jī)執(zhí)行語(yǔ)句所花的時(shí)間。雖然執(zhí)行語(yǔ)句所

78、花的時(shí)間很短只有幾微秒,但積少成多,數(shù)字秒表1秒要溢出中斷1000次,積累起來(lái)誤差就能達(dá)到毫秒級(jí),這對(duì)于精度到達(dá)毫秒級(jí)的數(shù)字電子秒表來(lái)說是很大的誤差。所以要在后期編程時(shí)還要將單片機(jī)讀程序的時(shí)間考慮進(jìn)去。</p><p>  在對(duì)定時(shí)器賦初值時(shí)將單片機(jī)需要執(zhí)行的語(yǔ)句所花的時(shí)間加上,這樣就能使數(shù)字電子秒表的誤差達(dá)到最小。</p><p>  第4章 數(shù)字電子秒表的安裝與調(diào)試</p>

79、;<p>  4.1 軟件的仿真與調(diào)試</p><p>  Proteus ISIS[10]是英國(guó)Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件,它可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的主要特點(diǎn)總結(jié)后有以下四點(diǎn):①實(shí)現(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)試上所花的時(shí)間。</p><p>  Proteus ISIS的工作界面在標(biāo)準(zhǔn)的Windows界面。它包括主菜單、標(biāo)題欄、狀態(tài)欄、繪圖工具欄、標(biāo)準(zhǔn)工具欄、預(yù)覽對(duì)象方位控制按鈕、對(duì)象選擇按鈕、仿真進(jìn)程控制按鈕、對(duì)象選擇器窗口、預(yù)覽窗

81、口、圖形編輯窗口等十幾個(gè)工具,方便了使用者的使用。</p><p>  首先打開已經(jīng)畫好的文件,選擇AT89C51芯片,就會(huì)彈出一個(gè)窗口,在Program File項(xiàng)中通過路徑選擇在WAVE中生成的HEX文件,雙擊選中后確定,這樣AT89C51芯片就讀取了HEX文件。單擊“三角形仿真按鈕”進(jìn)行仿真。通過對(duì)仿真結(jié)果的觀察來(lái)對(duì)程序進(jìn)行修改,最終使程序到達(dá)設(shè)計(jì)要求。</p><p>  4.2

82、 硬件的安裝與調(diào)試</p><p>  按照之前設(shè)計(jì)好的數(shù)字電子秒表原理圖,詳細(xì)計(jì)算系統(tǒng)中各個(gè)元件的參數(shù),選擇相應(yīng)器件,制作實(shí)際電路板。由于考慮到萬(wàn)能板大小的問題及元件之間連線的方便,在焊接元器件前必須考慮元件的布局然后進(jìn)行實(shí)際操作。</p><p>  制作好的電路板可以用萬(wàn)用表(200歐姆檔)的紅、黑表筆測(cè)試電路板的每條走線,當(dāng)其電阻非常小時(shí),證明走線沒有斷開,當(dāng)其電阻很大時(shí),證明該條

83、走線斷了,應(yīng)該重新走線,使電路板在電氣上得到正確地連接。選用萬(wàn)用表的20K歐姆檔,檢測(cè)電路中是否存在短路。因?yàn)橄到y(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。</p><p>  4.2.1 晶振電路的測(cè)試</p><p>  在單片機(jī)正常運(yùn)行的必要條件是單片機(jī)系統(tǒng)的時(shí)鐘穩(wěn)定正常。實(shí)際中,因?yàn)楦鞣N原因?qū)е孪到y(tǒng)時(shí)鐘不正常而出現(xiàn)系統(tǒng)無(wú)法正常運(yùn)行的情況時(shí)有,因此系統(tǒng)時(shí)

84、鐘是否振是通電檢查的首要環(huán)節(jié)。在系統(tǒng)通電的狀況下,用萬(wàn)用表的直流電壓檔(20V),分別測(cè)量XTAL1和XTAL2引腳的電壓,看是否正常,在調(diào)試過程中,測(cè)得電壓XTAL1引腳應(yīng)為2.05V,XTAT2應(yīng)為2.15V。</p><p>  4.2.2 復(fù)位電路的測(cè)試</p><p>  復(fù)位不正常也會(huì)導(dǎo)致系統(tǒng)不能工作。如果復(fù)位引腳始終為高電平,系統(tǒng)將始終處于復(fù)位狀態(tài),如果始終為低電平,不能產(chǎn)

85、生復(fù)位所需的高電平信號(hào)脈沖,則系統(tǒng)也可能無(wú)法正常工作。單片機(jī)正常工作時(shí),RST復(fù)位引腳應(yīng)為0V,按下復(fù)位按鍵時(shí),復(fù)位引腳為高電平5V左右。</p><p>  4.2.3 顯示電路的測(cè)試</p><p>  顯示電路是數(shù)字電子秒表正常運(yùn)行最直觀的觀察窗口,我們可以通過觀察顯示電路的顯示結(jié)果觀察系統(tǒng)能否正常運(yùn)行。當(dāng)顯示電路按照電路圖焊接好后,用萬(wàn)用表的測(cè)二極管檔位,將黑表筆接共陰數(shù)碼管的公

86、共段,然后將紅表筆接數(shù)碼管的各段,當(dāng)數(shù)碼管的段能正常顯示,說明各點(diǎn)焊接正常。 </p><p>  4.3 系統(tǒng)程序的燒錄</p><p>  在軟件調(diào)試中,使用當(dāng)今流行的功能強(qiáng)大且普遍的WAVE 6000軟件\進(jìn)行軟件編譯與調(diào)試,使用Microcontroller ISP Software及其配套的單片機(jī)對(duì)程序進(jìn)行燒錄。</p><p>  圖4.1 Atme

87、l microcontroller</p><p>  軟件的燒錄:第一步:安裝并運(yùn)行Microcontroller ISP Software軟件;第二步:點(diǎn)擊Options欄的select device選項(xiàng);這時(shí)出現(xiàn)一個(gè)對(duì)話窗口,按圖選擇后,點(diǎn)擊OK按鍵,如出現(xiàn)圖4.1所示窗口,則說明電腦與開發(fā)板沒連接好或單片機(jī)沒插好等,需重裝檢查硬件連接,如果沒有出現(xiàn)則說明初始化成功。第三步:點(diǎn)擊File欄的Load Buf

88、fer選項(xiàng)打開已經(jīng)編譯好的HEX文件。點(diǎn)擊載入文件,然后點(diǎn)擊確定,會(huì)出現(xiàn)如圖4.2所示的對(duì)話框,完成后,按軟件默認(rèn)選項(xiàng),點(diǎ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)行精度測(cè)試之前的編程過程中,我們知道了單片機(jī)在進(jìn)行定時(shí)中斷時(shí)需要執(zhí)行語(yǔ)句,而執(zhí)行這些語(yǔ)句是需要占用CPU時(shí)間的,從而影響單片機(jī)定時(shí)的精確性,最終會(huì)導(dǎo)致數(shù)字電子秒表的計(jì)時(shí)誤差,為了減小這種計(jì)時(shí)的誤差,我們之前在編程時(shí)已經(jīng)將單片機(jī)一秒鐘內(nèi)執(zhí)行程序的時(shí)間計(jì)算在內(nèi),并將定時(shí)器的初值做出了適當(dāng)調(diào)整。爭(zhēng)取最大限度的減小數(shù)字電子秒表的計(jì)時(shí)誤差。</p><p>  在

90、進(jìn)行秒表精度調(diào)試時(shí),我們讓本設(shè)計(jì)的單片機(jī)數(shù)字秒表和電子表同時(shí)計(jì)時(shí),為了能盡可能的觀察出是否有誤差,我們將計(jì)時(shí)時(shí)間設(shè)定為5分鐘,當(dāng)計(jì)時(shí)時(shí)間達(dá)到5分鐘后觀察兩個(gè)秒表是否同時(shí)到達(dá)。如果不是同時(shí)到達(dá)就說明有一定的誤差,如果兩表是同時(shí)到達(dá)則說明秒表的設(shè)計(jì)滿足要求。</p><p><b>  結(jié)束語(yǔ)</b></p><p>  本設(shè)計(jì)的數(shù)字電子秒表是由AT89C51單片機(jī)、LE

91、D共陰數(shù)碼顯示管、控制按鍵、三極管等器件構(gòu)成的,設(shè)有6位計(jì)時(shí)顯示,開始計(jì)時(shí)、暫停計(jì)時(shí)、停止計(jì)時(shí)、復(fù)位按鍵以及查看上次顯示鍵。計(jì)時(shí)精度能到達(dá)10ms,能滿足一般秒表計(jì)時(shí)要求,設(shè)計(jì)精簡(jiǎn),使用方法簡(jiǎn)單易懂。系統(tǒng)設(shè)計(jì)合理,線路簡(jiǎn)單、功能先進(jìn),性能穩(wěn)定,程序精簡(jiǎn)。并給出了詳細(xì)的電路設(shè)計(jì)方法。本系統(tǒng)是以單片機(jī)為核心,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對(duì)具體應(yīng)用對(duì)象特點(diǎn)的軟件結(jié)合,以作完善。所以采用匯編語(yǔ)言來(lái)進(jìn)行軟件設(shè)計(jì),利用匯編

92、語(yǔ)言面向機(jī)器并能較好的發(fā)揮機(jī)器的特性,得到較高的程序,同時(shí)匯編語(yǔ)言目標(biāo)代碼簡(jiǎn)短,占用內(nèi)存少,執(zhí)行速度快,能提高秒表的精度。</p><p>  通過本次畢業(yè)設(shè)計(jì),復(fù)習(xí)和鞏固我們以前所學(xué)習(xí)的數(shù)字、模擬電子技術(shù)、單片機(jī)原理及匯編程序設(shè)計(jì)等知識(shí),加深對(duì)各門課程及相互關(guān)系的理解,并使用了Wave、Protel 99se和Proteus三款電子軟件,使理論知識(shí)系統(tǒng)化、實(shí)用化,系統(tǒng)地掌握微機(jī)應(yīng)用系統(tǒng)的一般設(shè)計(jì)方法,培養(yǎng)較強(qiáng)的

93、編程能力、開發(fā)能力。</p><p>  同時(shí),在設(shè)計(jì)的過程中,我也發(fā)現(xiàn)了本系統(tǒng)的許多不足和可以改進(jìn)的地方。但因時(shí)間緊迫等原因沒能改進(jìn)。本設(shè)計(jì)的數(shù)字電子秒表缺少對(duì)多次計(jì)時(shí)時(shí)間進(jìn)行記錄的功能。應(yīng)給在單片機(jī)的內(nèi)部存儲(chǔ)區(qū)多設(shè)置一些存儲(chǔ)空間,用來(lái)存儲(chǔ)多次計(jì)時(shí)時(shí)間。并在程序中編入對(duì)多次計(jì)時(shí)時(shí)間的調(diào)用顯示。雖然存在不足,但本設(shè)計(jì)的數(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ì)算機(jī)及其應(yīng)用[M].北京:科學(xué)出版社,2005. 34~35.</p><p>  [6] 陳權(quán)昌.單片機(jī)原理及應(yīng)用 [M].北京:電子工業(yè)出版社,2007. 27.<

96、;/p><p>  [7] 霍婷婷.潤(rùn)滑供油箱控制系統(tǒng)的研制[D].西安電子科技大學(xué),2010.</p><p>  [8] 徐惠民,安德寧,丁玉珍.單片微型計(jì)算機(jī)原理、接口及應(yīng)用 [M].第三版,北京:北京郵電大學(xué)出版社,2007. 166~167.</p><p>  [9] 黃慧婷基于單片機(jī)的數(shù)字電子秒表的設(shè)計(jì)與實(shí)現(xiàn)[D].寧夏理工學(xué)院,2008.</

97、p><p>  [10] 覃家敦,孫洪民.電工電子技術(shù)實(shí)驗(yàn)改革基于電子設(shè)計(jì)競(jìng)賽的探索[D].中國(guó)計(jì)量學(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 ;定時(shí)器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 ;賦定時(shí)器初值</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 ;溢出計(jì)數(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、 ;定時(shí)器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. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論