版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 引言1</b></p><p><b> 1 系統(tǒng)簡介2</b></p><p><b> 2 硬件設(shè)計(jì)2</b></p><p> 2.1 總體方案的設(shè)計(jì)2</
2、p><p> 2.2 單片機(jī)的選擇3</p><p> 2.3 顯示電路的選擇與設(shè)計(jì)5</p><p> 2.4 復(fù)位電路的選擇與設(shè)計(jì)6</p><p> 2.5 系統(tǒng)總電路的設(shè)計(jì)8</p><p> 3 系統(tǒng)軟件設(shè)計(jì)9</p><p><b> 總結(jié)11
3、</b></p><p><b> 參考文獻(xiàn)13</b></p><p> 附錄A 程序13</p><p><b> 引言</b></p><p> 秒表計(jì)時(shí)器是電器制造,工業(yè)自動化控制、國防、實(shí)驗(yàn)室及科研單位理想的計(jì)時(shí)儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時(shí)
4、器、定時(shí)器等的時(shí)間測試。</p><p> 2004年8月28日15點(diǎn)15分,中國選手孟關(guān)良/楊文軍在雅典奧運(yùn)會男子500米劃艇決賽中,以1分40秒278的成績獲得中國在雅典奧運(yùn)會的第28金。這是中國皮劃艇項(xiàng)目的第一枚奧運(yùn)金牌,也是中國水上項(xiàng)目在歷屆奧運(yùn)會上所獲得的第一枚金牌。孟關(guān)良/楊文軍的成績比獲得銀牌的古巴選手只快了 0.072秒,以至于兩人在奪冠之后還不敢相信。</p><p>
5、 在現(xiàn)在的體育競技比賽中,隨著運(yùn)動員的水平不斷提高,差距也在不斷縮小。有些運(yùn)動對時(shí)間精度的要求也越來越高,有時(shí)比賽冠亞軍之間的差距只有幾毫秒,因此就需要高精度的秒表來記錄成績。</p><p><b> 1 系統(tǒng)簡介</b></p><p> 本設(shè)計(jì)的設(shè)計(jì)思路是使用單片機(jī),設(shè)計(jì)秒表,能顯示分分秒秒;有計(jì)時(shí)、暫停、調(diào)時(shí)間等功能。利用AT80C51單片機(jī)的定時(shí)器/計(jì)
6、數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),P2.0-P2.4口作列掃描輸出,可以實(shí)現(xiàn)開始、暫停、清零和修改時(shí)間的功能。顯示電路由八位共陰極數(shù)碼管組成。</p><p> 初始狀態(tài)下計(jì)時(shí)器顯示0.00.000,當(dāng)按下開始鍵時(shí),外部中斷INT1向CPU發(fā)出中斷請求,CPU轉(zhuǎn)去執(zhí)行外部中斷1服務(wù)程序,即開啟定時(shí)器T0。</p><p>
7、此秒表精確到毫秒,滿1000毫秒向秒位進(jìn)1,滿60秒向分鐘位進(jìn)1。依次類推,直到9.59.99秒重新復(fù)位。在計(jì)時(shí)過程中,只要按下模式鍵,則數(shù)碼管顯示暫停,若按下加1鍵,則加1毫秒再按下加1鍵就再加一,以次類推。若再按下模式鍵,再按下加1鍵,則加1秒再按則再加1秒,以次類推。若再按下模式鍵,再按下加1鍵,則分鐘位加1分再按則再加一分,以次類推。再按模式鍵,在按加1鍵則又毫秒位加一。依次循環(huán)。直至滿9.59.999秒。因此可以實(shí)現(xiàn)修改已暫停
8、的時(shí)間功能。</p><p> 在按下復(fù)位鍵時(shí),此數(shù)碼管歸零并重新開始計(jì)時(shí),若只按模式鍵即可實(shí)現(xiàn)暫停功能,即顯示當(dāng)此計(jì)時(shí)的成績。連按三下模式鍵則繼續(xù)開始計(jì)時(shí),根據(jù)以上設(shè)計(jì)思路從而實(shí)現(xiàn)數(shù)字電子秒表的計(jì)時(shí)。</p><p> 本文主要內(nèi)容包括三部分:第一部分介紹硬件部分設(shè)計(jì)思路及方案;第二部分介紹了軟件部分的設(shè)計(jì)思路和設(shè)計(jì);最后一部分則是整個系統(tǒng)的安裝與調(diào)試過程。</p>&
9、lt;p><b> 2 硬件設(shè)計(jì)</b></p><p> 2.1 總體方案的設(shè)計(jì)</p><p> 數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、精度高為目標(biāo)。</p><p> 設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,計(jì)時(shí)與暫停、
10、啟動和修改時(shí)間的功能等。主控制器采用單片機(jī)AT80C51,顯示電路采用共陰極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間。</p><p> 本設(shè)計(jì)利用AT80C51單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。模式鍵可以實(shí)現(xiàn)開始、暫停的功能,復(fù)位鍵可實(shí)現(xiàn)清零功能和復(fù)位鍵和加一鍵可實(shí)現(xiàn)修改時(shí)間功能。電路原理圖設(shè)計(jì)最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求
11、美觀。</p><p> 根據(jù)要求知道秒表設(shè)計(jì)主要實(shí)現(xiàn)的功能是計(jì)時(shí)和顯示。本設(shè)計(jì)秒表的最小單位為毫秒,能非常準(zhǔn)確記錄一個跑步人的所用時(shí)間。當(dāng)一處中斷后向CPU發(fā)出加一請求,每發(fā)出一次中斷請求就對毫秒計(jì)數(shù)單元進(jìn)行加一,達(dá)到1000次就對秒位進(jìn)行加一,依次類推,直到9.59.999秒重新復(fù)位。 </p><p> 設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,顯示電路
12、和回零、暫停、開始、修改時(shí)間等功能。主控制器采用單片機(jī)AT80C51,顯示電路采用八位共陰極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間,三個按鍵均采用觸點(diǎn)式按鍵。</p><p> 2.2 單片機(jī)的選擇</p><p> 本課題在選取單片機(jī)時(shí),充分借鑒了許多成形產(chǎn)品使用單片機(jī)的經(jīng)驗(yàn),并根據(jù)自己的實(shí)際情況,選擇了Intel公司的AT80C51。</p><p><b>
13、 單片機(jī)的外部結(jié)構(gòu)</b></p><p> MCS-51系列單片機(jī)是8位單片機(jī)產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個部分:</p><p> ?。?)CPU:89C51的CPU是8位的,另外89C51內(nèi)部有1個位處理器</p><p> ?。?)R0M:4KB的片內(nèi)程序存儲器,存放開發(fā)調(diào)試完成的應(yīng)用程序</p><
14、;p> ?。?)RAM:256B的片內(nèi)數(shù)據(jù)存儲器,容量小,但作用大</p><p> (4)I/O口:P0-P3,共4個口32條雙向且可位尋址的I/O口線</p><p> (5)中斷系統(tǒng):共5個中斷源,3個內(nèi)部中斷,2個外部中斷</p><p> ?。?)定時(shí)器/計(jì)數(shù)器:2個16位的可編程定時(shí)器/計(jì)數(shù)器</p><p> (7)
15、通用串行口:全雙工通用異步接收器/發(fā)送器</p><p> ?。?)振蕩器:89C51的外接晶振與內(nèi)部時(shí)鐘振蕩器為CPU提供時(shí)鐘信號</p><p> (9)總線控制:89C51對外提供若干控制總線,便于系統(tǒng)擴(kuò)展</p><p> 89C51的引腳圖如下:</p><p> 89C51單片機(jī)引腳圖</p><p>
16、; 2.2.2晶體振蕩電路</p><p> 89C51芯片內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器。引線 XTAL1和XTAL2分別為反向放大器的輸入和輸出,兩端跨接石英晶體及兩個電容就可構(gòu)成穩(wěn)定的自激振蕩器。</p><p> 這里,我們選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電容器C1,C2起穩(wěn)定振蕩頻率,并對振蕩頻率有微調(diào)作用,C1和C2可在20-100PF之間取值,這里取
17、33P。</p><p> 89C51具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O口線, 2個數(shù)據(jù)指針,兩個16位定時(shí)器/計(jì)數(shù)器,一個全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,8051可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下
18、一個中斷或硬件復(fù)位為止。CPU是單片機(jī)的核心部件。它由運(yùn)算器和控制器等部件組成。</p><p><b> ?。?) 運(yùn)算器</b></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)信息送至狀
19、態(tài)寄存器。8051運(yùn)算器還包含有一個布爾處理器,用來處理位操作。</p><p> ?。?) 程序計(jì)數(shù)器PC</p><p> 程序計(jì)數(shù)器PC用來存放即將要執(zhí)行的指令地址,共16位,可對64K程序存儲器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。</p><p><b> (3) 令寄存器</b></p&g
20、t;<p> 指令寄存器中存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號,完成指令功能。</p><p> 2.3 顯示電路的選擇與設(shè)計(jì)</p><p> 對于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。本設(shè)計(jì)的顯示電路采用8段數(shù)碼管作為顯示介質(zhì)。</p><p> 由于
21、數(shù)碼管是有P0口來驅(qū)動,它內(nèi)部沒有上拉電阻,作為輸出口時(shí)驅(qū)動能力比較弱,不能點(diǎn)亮數(shù)碼顯示管,因此P0口必須接上拉電阻來提高驅(qū)動能力。另外一位共陰數(shù)碼管的驅(qū)動電流一般為20mA左右,如果電流太大容易造成數(shù)碼管損壞,所以也需要根據(jù)電源的電壓值來確定上拉電阻的大小。如果電阻過小,勢必會形成灌電流過大,造成單片機(jī)IO的損壞,如果電阻過大,那么對拉電流沒有太大的影響。電源供電電壓為5V,當(dāng)上拉電阻選用220Ω電阻時(shí)灌電流為22mA。不會損壞單片機(jī)
22、的I/O口,同時(shí)也可以為數(shù)碼顯示管起到限制電流的保護(hù)作用。 </p><p> P3口引腳第二功能表</p><p> 2.4 復(fù)位電路的選擇與設(shè)計(jì)</p><p> 當(dāng)8051單片機(jī)的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個機(jī)器周期以上的高電平時(shí),單片機(jī)就完成了復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無法執(zhí)行程序。因此要求單片機(jī)復(fù)位后
23、能脫離復(fù)位狀態(tài)。而本系統(tǒng)選用的是12MHz的晶振,因此一個機(jī)器周期為1μs,那么復(fù)位脈沖寬度最小應(yīng)為2μs。在實(shí)際應(yīng)用系統(tǒng)中,考慮到電源的穩(wěn)定時(shí)間,參數(shù)漂移,晶振穩(wěn)定時(shí)間以及復(fù)位的可靠性等因素,必須有足夠的余量。</p><p> 根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動復(fù)位。</p><p> 上電復(fù)位要求接通電源后,自動實(shí)現(xiàn)復(fù)位操作。80C51單片機(jī)的上電復(fù)位PO
24、R(Power On Reset)實(shí)質(zhì)上就是上電延時(shí)復(fù)位,也就是在上電延時(shí)期間把單片機(jī)鎖定在復(fù)位狀態(tài)上。在單片機(jī)每次初始加電時(shí),首先投入工作的功能部件是復(fù)位電路。復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個延時(shí)(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個等待時(shí)間;在電源電壓穩(wěn)定之后,再插入一個延時(shí),給予時(shí)鐘振蕩器從起振到穩(wěn)定的一個等待時(shí)間;在單片機(jī)開始進(jìn)入運(yùn)行狀態(tài)之前,還要至少推遲2個機(jī)器周期的延時(shí)。</p>&l
25、t;p> 上述一系列的延時(shí),都是利用在單片機(jī)RST引腳上外接一個RC支路的充電時(shí)間而形成的。典型復(fù)位電路如圖1.8(a)所示,其中的阻容值是原始手冊中提供的。</p><p><b> 上電復(fù)位延時(shí)電路</b></p><p> 標(biāo)準(zhǔn)80C51不僅復(fù)位源比較單一,而且還沒有設(shè)計(jì)內(nèi)部上電復(fù)位的延時(shí)功能,因此必須借助于外接阻容支路來增加延時(shí)環(huán)節(jié),如圖1.8(a
26、)所示。其實(shí),外接電阻R還是可以省略的,理由是一些CMOS單片機(jī)芯片內(nèi)部存在一個現(xiàn)成的下拉電阻Rrst。例如,80C51系列的Rrst阻值約為50~200 kΩ;P89V51Rx2系列的Rrst阻值約為40~225 kΩ,如圖1.9所示。因此,在圖1.8(a)基礎(chǔ)上,上電復(fù)位延時(shí)電路還可以精簡為圖1.8(b)所示的簡化電路(其中電容C的容量也相應(yīng)減小了)。</p><p> 復(fù)位引腳RST內(nèi)部電路</p&
27、gt;<p> 在每次單片機(jī)斷電之后,須使延時(shí)電容C上的電荷立刻放掉,以便為隨后可能在很短的時(shí)間內(nèi)再次加電作好準(zhǔn)備。否則,在斷電后C還沒有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應(yīng)有的延遲功能。因此,在圖1.8(a)的基礎(chǔ)上添加一個放電二極管D,上電復(fù)位延時(shí)電路就變成了如圖1.8(c)所示的改進(jìn)電路。也就是說,只有RC支路的充電過程對電路是有用的,放電過程不僅無用,而且會帶來潛在的危害。于是附加一個放電二
28、極管D來大力縮短放電持續(xù)時(shí)間,以便消除隱患。二極管D只有在單片機(jī)斷電的瞬間(即VCC趨近于0 V,可以看作VCC對地短路)正向?qū)ǎ綍r(shí)一直處于反偏截止?fàn)顟B(tài)。</p><p> 手動復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,如果發(fā)生死機(jī),用按鈕開關(guān)操作使單片機(jī)復(fù)位。單片機(jī)要完成復(fù)位,必須向復(fù)位端輸出并持續(xù)兩個機(jī)器周期以上的高電平,從而實(shí)現(xiàn)復(fù)位操作。</p><p> 本設(shè)計(jì)采用上電
29、且開關(guān)復(fù)位電路,如圖1.10所示上電后,由于電容充電,使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><b> 單片機(jī)復(fù)位電路</b></p><p> 2.5 系統(tǒng)總電路的設(shè)
30、計(jì)</p><p> 系統(tǒng)總電路由以上設(shè)計(jì)的顯示電路,時(shí)鐘電路,按鍵電路和復(fù)位電路組成,只要將單片機(jī)與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系統(tǒng)總電路圖附錄B所示。</p><p> 8051單片機(jī)為主電路的核心部分,各個電路均和單片機(jī)相連接,由單片機(jī)統(tǒng)籌和協(xié)調(diào)各個電路的運(yùn)行工作。</p><p> 8051單片機(jī)提供了XTAL1和XTAL2兩個專用引腳
31、接晶振電路,因此只要將晶振電路接到兩個專用引腳即可為單片機(jī)提供時(shí)鐘脈沖,但在焊接晶振電路時(shí)要盡量使晶振電路靠近單片機(jī),這樣可以為單片機(jī)提供穩(wěn)定的始終脈沖。</p><p> 復(fù)位電路同晶振電路,單片機(jī)設(shè)有一個專用的硬件復(fù)位接口,并設(shè)置為高電平有效。</p><p> 按鍵電路與單片機(jī)的端口連接可以由用戶自己設(shè)定,本設(shè)計(jì)中軟件復(fù)位鍵和查看鍵分別接單片機(jī)的P1.1和P2.5,均設(shè)為低電平有
32、效。而另外的開始鍵和暫停鍵兩鍵使用了外部中斷,所以需要連接到單片機(jī)的特殊接口P3.3和P3.2,這兩個I/O口的第二功能分別為單片機(jī)的外部中斷1端口和外部中斷0端口。同樣設(shè)置為位低電平有效。</p><p> 顯示電路由五位數(shù)碼管組成,采用動態(tài)顯示方式,因此有8位段控制端和5位位控制端,八位段控制接P0口,P0.0~P0.7分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp顯示,8051的P0口沒有集成上拉電
33、阻,高電平的驅(qū)動能力很弱,所以需要接上拉電阻來提高P0的高電平驅(qū)動能力。五位位控制則由低位到高位分別接到P2.0~P2.4口,NPN三極管9013做為位控制端的開關(guān),當(dāng)P2.0~P2.4端口任意一個端口為高電平時(shí),與其相對應(yīng)的三極管就導(dǎo)通,對應(yīng)的數(shù)碼管導(dǎo)通顯示。</p><p> 通過以上設(shè)計(jì)已經(jīng)將各部分電路與單片機(jī)有機(jī)的結(jié)合到一起,硬件部分的設(shè)計(jì)以大功告成,剩下的部分就是對單片機(jī)的編程,使單片機(jī)按程序運(yùn)行,實(shí)
34、現(xiàn)數(shù)字電子秒表的全部功能。</p><p><b> 3 系統(tǒng)軟件設(shè)計(jì)</b></p><p> 本設(shè)計(jì)采用了匯編語言編寫,匯編語言由于采用了助記符號來編寫程序,比用機(jī)器語言的二進(jìn)制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點(diǎn)是用符號代替了機(jī)器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機(jī)器語言的靈活性。使用匯編語言能面向機(jī)器并較好地發(fā)揮機(jī)
35、器的特性,得到質(zhì)量較高的程序。</p><p><b> 匯編語言的特點(diǎn):</b></p><p> (1).面向機(jī)器的低級語言,通常是為特定的計(jì)算機(jī)或系列計(jì)算機(jī)專門設(shè)計(jì)的。</p><p> (2).保持了機(jī)器語言的優(yōu)點(diǎn),具有直接和簡捷的特點(diǎn)。</p><p> (3).可有效地訪問、控制計(jì)算機(jī)的各種硬件設(shè)備,
36、如磁盤、存儲器、CPU、I/O端口等。</p><p> (4).目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計(jì)語言。</p><p> (5).經(jīng)常與高級語言配合使用,應(yīng)用十分廣泛。</p><p> 在程序設(shè)計(jì)過程中,為了有效地完成任務(wù),把所要完成的任務(wù)精心的分割成若干個相互獨(dú)立但相互又仍可有聯(lián)系的任務(wù)模塊,這些任務(wù)模塊使得任務(wù)變得相對單純,對外的
37、數(shù)據(jù)交換相對簡單,容易編寫,容易檢測,容易閱讀和維護(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> Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件,它可以仿真、分析(SPICE)各種模擬器件和集成
38、電路。該軟件的主要特點(diǎn)總結(jié)后有以下四點(diǎn):①實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合的功能。②支持目前主流單片機(jī)系統(tǒng)的仿真。③提供了軟件調(diào)試功能,并可以與WAVE聯(lián)合仿真調(diào)試。④具有強(qiáng)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。在電子領(lǐng)域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調(diào)試通過后在焊電路,節(jié)省了不少在硬件調(diào)試上所花的時(shí)間。</p><p&
39、gt; Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面。它包括標(biāo)題欄、主菜單、狀態(tài)欄、標(biāo)準(zhǔn)工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口等十幾個工具,方便了使用者的使用。</p><p> 首先打開已經(jīng)畫好的proteus DSN文件,雙擊圖中的AT89S52芯片,就彈出一個窗口,在Program File項(xiàng)中通過路徑選擇在W
40、AVE中生成的HEX文件,雙擊選中后確定,這樣仿真圖中的AT89S52芯片就已經(jīng)讀取了本設(shè)計(jì)中的HEX文件。單擊“三角形按鈕”進(jìn)行仿真。通過對仿真結(jié)果的觀察來對程序進(jìn)行修改,最終使程序到達(dá)設(shè)計(jì)要求。</p><p><b> 程序仿真圖</b></p><p><b> 總結(jié) </b></p><p> 本設(shè)計(jì)的數(shù)
41、字電子秒表是由8051單片機(jī)、共陰數(shù)碼顯示管、控制按鍵、三極管等器件構(gòu)成的,設(shè)有六位計(jì)時(shí)顯示,開始、暫停、復(fù)位按鍵以及一個系統(tǒng)整機(jī)復(fù)位按鈕。計(jì)時(shí)精度能到達(dá)10ms,設(shè)計(jì)精簡,使用簡單易懂。系統(tǒng)設(shè)計(jì)合理,線路簡單、功能先進(jìn),性能穩(wěn)定,程序精簡。并給出了詳細(xì)的電路設(shè)計(jì)方法。本系統(tǒng)是以單片機(jī)為核心,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,以作完善。所以采用匯編語言來進(jìn)行軟件設(shè)計(jì),利用匯編語言面向機(jī)器
42、并能較好的發(fā)揮機(jī)器的特性,得到較高的程序,同時(shí)匯編語言目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,能提高秒表的精度。</p><p> 通過本次設(shè)計(jì),復(fù)習(xí)鞏固我們以前所學(xué)習(xí)的數(shù)字、模擬電子技術(shù)、單片機(jī)原理及應(yīng)用等課程知識,加深對各門課程及相互關(guān)系的理解,并成功使用了Wave、Protel 99se和Proteus三款電子軟件,使理論知識系統(tǒng)化、實(shí)用化,系統(tǒng)地掌握微機(jī)應(yīng)用系統(tǒng)的一般設(shè)計(jì)方法,培養(yǎng)較強(qiáng)的編程能力、開發(fā)能力
43、。</p><p> 同時(shí),在設(shè)計(jì)的過程中,我也發(fā)現(xiàn)了本系統(tǒng)的許多不足和可以改進(jìn)的地方。但因時(shí)間緊迫等原因沒能改進(jìn)。本設(shè)計(jì)的數(shù)字電子秒表缺少對多次計(jì)時(shí)時(shí)間進(jìn)行記錄的功能。應(yīng)給在單片機(jī)的內(nèi)部存儲區(qū)多設(shè)置一些存儲空間,用來存儲多次計(jì)時(shí)時(shí)間。并在程序中編入對多次計(jì)時(shí)時(shí)間的調(diào)用顯示。雖然存在不足,但本設(shè)計(jì)的數(shù)字電子秒表仍具有它的實(shí)用性。</p><p><b> 參考文獻(xiàn)
44、</b></p><p> [1]王東峰等.單片機(jī)C語言應(yīng)用100例[M].電子工業(yè)出版社,2009.</p><p> [2]陳海宴.51單片機(jī)原理及應(yīng)用[M].北京航空航天大學(xué)出版社,2010.</p><p> [3]占躍華.C語言程序設(shè)計(jì)[M].北京郵電大學(xué)出版社,2010. </p><p> [4]李
45、平等.單片機(jī)入門與開發(fā)[M].機(jī)械工業(yè)出版社,2008. </p><p><b> 附錄A 程序</b></p><p> #include<reg51.h></p><p> #define uint unsigned int</p><p> #define uchar unsig
46、ned char</p><p> Uchar code segcode[]=</p><p> {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//0,1,2,3,4,5,6,7,8,9,-</p><p> uchar code dispbit[]={0x01,0x02,0x04,0x08,
47、0x10,0x20,0x40,0x80};//數(shù)碼管位選碼</p><p> uchar buffer[]={0,0,0,0,0,0,0,0};</p><p> uint min,sec,ms,kk;</p><p> sbit key1=P1^0;</p><p> sbit key2=P1^3;</p><p
48、> uint status;//函數(shù)聲明</p><p> void delayMS(uint t) ; </p><p> void keyprocess(unsigned char key);</p><p> void display();</p><p> void timer0();</p>&l
49、t;p> main() //主函數(shù)</p><p><b> { </b></p><p> bit keyrelease;</p><p> uchar buf;</p><p> uchar keyinput;</p><p> keyrelease=1;&l
50、t;/p><p><b> buf=0xff;</b></p><p> TMOD=0x01; //T0工作在方式1,16位計(jì)數(shù)器</p><p> TH0=(65536-1000)/256; // 定時(shí)器0設(shè)置延時(shí)1ms中斷初始值</p><p> TL0=(65536-1000)%256;&l
51、t;/p><p> TR0=1; </p><p> IE=0x82; //開定時(shí)器0中斷</p><p><b> status=0;</b></p><p> while(1) </p><p> { //鍵掃描程序 </
52、p><p> keyinput=P1&0xf0;</p><p> if(keyinput!=0xf0) </p><p><b> { </b></p><p> delayMS(1);</p><p> if(keyinput!=0xf0)</p><
53、;p><b> {</b></p><p> if(keyrelease==1)</p><p><b> {</b></p><p> keyrelease=0;</p><p> buf = keyinput; //buf用來暫時(shí)存放鍵值</p><p&g
54、t;<b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> keyrelease=1;</p><p> keypr
55、ocess(buf); //調(diào)用按鍵處理函數(shù)</p><p> buf = 0xff;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b>
56、 {</b></p><p> keyrelease=1;</p><p> keyprocess(buf);</p><p><b> buf=0xff;</b></p><p><b> }</b></p><p> display();</
57、p><p><b> }</b></p><p><b> }</b></p><p><b> //延時(shí)函數(shù)</b></p><p> void delayMS(uint t) // 晶振頻率12M</p><p><b>
58、{</b></p><p><b> uint i;</b></p><p> while(t--)</p><p> for(i=0;i<125;i++);</p><p><b> }</b></p><p> void keyprocess(
59、unsigned char key) </p><p><b> { </b></p><p> if(key1==0)</p><p><b> {</b></p><p> delayMS(1);</p><p> while(key1==0)</p
60、><p><b> ;</b></p><p><b> kk++;</b></p><p><b> }</b></p><p> switch(kk)</p><p><b> {</b></p><
61、p><b> case 1:</b></p><p> EA=0;ET0=0;TR0=0;</p><p> if(key2==0)</p><p><b> {</b></p><p> delayMS(1);</p><p> while(key2==0
62、)</p><p><b> ;</b></p><p><b> ms++;</b></p><p> if(ms>999)</p><p><b> ms=0;</b></p><p><b> }</b&g
63、t;</p><p><b> break;</b></p><p> case 2:</p><p> if(key2==0)</p><p><b> {</b></p><p> delayMS(1);</p><p> w
64、hile(key2==0);</p><p><b> sec++;</b></p><p> if(sec>59)</p><p><b> sec=0;</b></p><p><b> }</b></p><p>
65、<b> break;</b></p><p> case 3:</p><p> if(key2==0)</p><p><b> {</b></p><p> delayMS(1);</p><p> while(key2==0)</p>
66、<p><b> ;</b></p><p><b> min++;</b></p><p><b> if(min>9)</b></p><p><b> min=0;</b></p><p><b> }
67、</b></p><p><b> break;</b></p><p><b> case 4:</b></p><p> kk=0;EA=1;ET0=1;TR0=1;</p><p><b> break;</b></p><p
68、><b> }</b></p><p><b> }</b></p><p><b> //數(shù)碼管顯示函數(shù)</b></p><p> void display()</p><p><b> {</b></p><p>
69、;<b> uchar i;</b></p><p><b> //正常計(jì)時(shí)顯示</b></p><p><b> {</b></p><p> buffer[0]=min; // 顯示分的十位</p><p> buffer[1]=10;
70、 // 顯示分的個位</p><p> buffer[2]=sec/10; // 顯示‘-’</p><p> buffer[3]=sec%10; // 顯示秒的十位</p><p> buffer[4]=10; // 顯示秒的個位</p><p> buffer[5]=ms
71、/100; // 顯示‘-’</p><p> buffer[6]=(ms-100*buffer[5])/10; // 顯示毫秒的十位</p><p> buffer[7]=ms-100*buffer[5]-10*buffer[6]; // 顯示毫秒的個位</p><p> for(i=0;i&
72、lt;8;i++)</p><p><b> { </b></p><p> P0=segcode[buffer[i]];</p><p> P2=dispbit[i];</p><p> delayMS(1); //防止數(shù)碼管顯示的時(shí)候閃動</p><p><b>
73、P2=0x0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //定時(shí)器0中斷函數(shù)</p><p> void timer0() inte
74、rrupt 1 using 2 </p><p><b> { </b></p><p> static uint count;</p><p> TH0=(65536-1000)/256; // 定時(shí)器0設(shè)置初始值1ms中斷初始值</p><p> TL0=(65536-1000)%256; &
75、lt;/p><p><b> TR0=1;</b></p><p> count++; //正常計(jì)時(shí)</p><p> if(count>=1) // 定時(shí) 0.01S 到,以下為時(shí)鐘的正常走鐘邏輯</p><p> { </p><p&
76、gt;<b> count=0;</b></p><p><b> ms++;</b></p><p> if(ms>= 1000)</p><p> { </p><p> ms=0; sec++;</p><p> if(s
77、ec>= 60) </p><p> { </p><p> sec=0; min++;</p><p> if(min>= 10) </p><p><b> { </b></p><p><b> min=0; </b><
78、;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b><
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---秒表
- 單片機(jī)秒表課程設(shè)計(jì)
- 秒表(單片機(jī)課程設(shè)計(jì))
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 基于單片機(jī)的秒表設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---秒表設(shè)計(jì)
- 單片機(jī)秒表的課程設(shè)計(jì)
- 單片機(jī)數(shù)字秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字秒表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字秒表
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的秒表課程設(shè)計(jì)
- 單片機(jī)的數(shù)字秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--電子秒表
- 單片機(jī)簡易秒表課程設(shè)計(jì)
- 單片機(jī)秒表系統(tǒng)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——電子秒表
評論
0/150
提交評論