單片機(jī)原理及接口技術(shù) 電子秒表課程設(shè)計(jì)_第1頁(yè)
單片機(jī)原理及接口技術(shù) 電子秒表課程設(shè)計(jì)_第2頁(yè)
單片機(jī)原理及接口技術(shù) 電子秒表課程設(shè)計(jì)_第3頁(yè)
單片機(jī)原理及接口技術(shù) 電子秒表課程設(shè)計(jì)_第4頁(yè)
單片機(jī)原理及接口技術(shù) 電子秒表課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、單片機(jī)原理及接口技術(shù)課程設(shè)計(jì) 單片機(jī)秒表的設(shè)計(jì)學(xué) 院: 機(jī)電工程學(xué)院 專業(yè)班級(jí): 10級(jí)電氣工程二班 姓 名: 姚杜村 學(xué) 號(hào): 指導(dǎo)教師: 宋東亞 楊坤漓 時(shí) 間:2012年11月20日2013年01月05日目 錄序 言0第一章 緒 論11.1 概 述11.2 設(shè)計(jì)任務(wù)21.3 設(shè)計(jì)目的2第二章 設(shè)計(jì)任務(wù)及內(nèi)容22.1 設(shè)計(jì)題目22.2 設(shè)計(jì)內(nèi)容22.3 功能分析2第三章總體設(shè)計(jì)及核心器件簡(jiǎn)介33.1 硬件設(shè)計(jì)33.1.1 89C51單片機(jī)33.1.2 晶體振蕩電路43.1.3 復(fù)位電路53.1.4 按鍵電路53.1.5 顯示電路63.2 軟件設(shè)計(jì)63.2.1 程序設(shè)計(jì)思想63.2.2 系統(tǒng)

2、資源的分配63.2.3 主程序設(shè)計(jì)73.2.4 中斷程序設(shè)計(jì)7第四章 數(shù)字電子秒表的調(diào)試94.1 軟件的仿真與調(diào)試94.2 硬件的調(diào)試104.2.1 晶振電路的測(cè)試104.2.2 復(fù)位電路的測(cè)試104.3 程序設(shè)計(jì)114.3.1 秒表的初始化114.3.2 開始計(jì)時(shí)114.3.3 計(jì)時(shí)程序114.3.4 暫停計(jì)時(shí)114.3.5 秒表清零11心 得 體 會(huì)14附錄A 秒表仿真電路圖15附錄B 源程序15參 考 文 獻(xiàn)18序 言隨著電子技術(shù)的發(fā)展,電子技術(shù)在各個(gè)領(lǐng)域的運(yùn)用也越來越廣泛,人對(duì)它的認(rèn)識(shí)也逐步加深。作為一個(gè)學(xué)習(xí)電氣專業(yè)的當(dāng)代大學(xué)生來說,我們不但要有扎實(shí)的基礎(chǔ)知識(shí)、課本知識(shí),還應(yīng)有較強(qiáng)的動(dòng)

3、手能力?,F(xiàn)實(shí)也要求我們既精通電子技術(shù)理論,更要掌握電子電路設(shè)計(jì)、實(shí)驗(yàn)研究和調(diào)試技術(shù)。秒表計(jì)時(shí)器秒表計(jì)時(shí)器常常用于體育競(jìng)賽及各種其他要求有較精確時(shí)間的各領(lǐng)域中。其中啟/停開關(guān)的使用方法與傳統(tǒng)的機(jī)械計(jì)時(shí)器相同,即按一下啟/停開關(guān),啟動(dòng)計(jì)時(shí)器開始計(jì)時(shí),再按一下啟/停開關(guān)計(jì)時(shí)終止。而復(fù)位開關(guān)可以在任何情況下使用,即使在計(jì)時(shí)過程中,只要按一下復(fù)位開關(guān),計(jì)時(shí)應(yīng)立即終止,并對(duì)計(jì)時(shí)器清零。本設(shè)計(jì)就是利用所學(xué)到的電子元器件將脈沖源用數(shù)碼管顯示出來,以制承諾簡(jiǎn)易的秒表。電子秒表是重要的計(jì)時(shí)工具,廣泛應(yīng)用于各行各業(yè)??梢杂脕頊y(cè)量物體的速度和加速度,可以用來驗(yàn)證牛頓第二定律和機(jī)械能守恒等物理實(shí)驗(yàn)。相對(duì)其他計(jì)時(shí)工具具有

4、便捷、準(zhǔn)確、可比性高等優(yōu)點(diǎn)。減少工作人員的負(fù)擔(dān),降低錯(cuò)誤率。姚 杜 村第一章 緒 論1.1 概 述單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),又稱微控制器,是微型計(jì)算機(jī)的一個(gè)重要分支。單片機(jī)是20世紀(jì)七十年代中期發(fā)展起來的一種大規(guī)模集成電路芯片,是集CPU、RAM、ROM、I/O接口和終端系統(tǒng)與同一硅片的器件。20世紀(jì)八十年代以來單片機(jī)發(fā)展迅速各類新產(chǎn)品不斷涌現(xiàn)出現(xiàn)許多新產(chǎn)品,出現(xiàn)了許多高性能新型機(jī)種現(xiàn)已成為工業(yè)控制和各控制領(lǐng)域的支柱產(chǎn)業(yè)之一。由于單片機(jī)功能強(qiáng)、體積小、可靠性好、價(jià)格便宜等獨(dú)特優(yōu)點(diǎn)因而受到人們的高度重視并取到了一系列的科研成果,成為傳統(tǒng)工業(yè)技術(shù)改造和新產(chǎn)品更新?lián)Q代的理想機(jī)種,并具有廣闊的發(fā)展前景

5、。本設(shè)計(jì)運(yùn)用所學(xué)的單片機(jī)知識(shí),將單片機(jī)與普通秒表相結(jié)合設(shè)計(jì)了電子秒表,具有顯示直觀、讀取方便、精度高等優(yōu)良特點(diǎn),在計(jì)時(shí)中應(yīng)用廣泛。1.2 設(shè)計(jì)任務(wù)以單片機(jī)為核心,設(shè)計(jì)一個(gè)秒表,具有計(jì)時(shí)功能,按鍵有啟動(dòng)計(jì)時(shí)、數(shù)據(jù)清零、停止、時(shí)間顯示。1.3 設(shè)計(jì)目的加強(qiáng)對(duì)51系列單片機(jī)的構(gòu)造了解及應(yīng)用,熟悉匯編語(yǔ)言或C語(yǔ)言編程,綜合掌握和理解設(shè)計(jì)各部分的工作原理、設(shè)計(jì)過程、芯片器件的選擇方法、模塊化編程等多項(xiàng)知識(shí)。 (1)用單片機(jī)模擬實(shí)現(xiàn)具體應(yīng)用使個(gè)人設(shè)計(jì)系統(tǒng)能夠真正使用;(2)把理論知識(shí)與實(shí)踐知識(shí)相結(jié)合,充分發(fā)揮個(gè)人能力,并在實(shí)踐中得到鍛煉;(3)提高利用已學(xué)的知識(shí)分析和解決問題的能力;(4)提高動(dòng)手實(shí)踐能力

6、。第二章 設(shè)計(jì)任務(wù)及內(nèi)容2.1 設(shè)計(jì)題目秒表的設(shè)計(jì)2.2 設(shè)計(jì)內(nèi)容(1)填寫設(shè)計(jì)任務(wù)書;(2)進(jìn)行總體設(shè)計(jì),畫出設(shè)計(jì)原理圖;(3)用PROTEUS軟件畫出設(shè)計(jì)電路圖;(4)用Keil軟件編寫程序;(5)在PROTEUS里模擬并調(diào)試程序達(dá)到期望功能。2.3 功能分析采用3個(gè)LED數(shù)碼管顯示時(shí)間,計(jì)時(shí)范圍設(shè)置為099.9秒,即精確到0.1秒,用按鍵控制秒表的“開始”、“暫?!?、“復(fù)位”,按“開始”按鍵,開始計(jì)時(shí);按“暫?!卑存I,系統(tǒng)暫停計(jì)時(shí);再按“開始”鍵,系統(tǒng)繼續(xù)計(jì)時(shí);數(shù)碼管顯示當(dāng)前計(jì)時(shí)值;按“復(fù)位”按鍵,系統(tǒng)清零。第三章 總體設(shè)計(jì)及核心器件簡(jiǎn)介本實(shí)驗(yàn)利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)的原理,

7、通過采用Proteus仿真軟件來模擬實(shí)現(xiàn)。模擬AT89C51單片機(jī)、LED數(shù)碼管以及控件來控制秒表的計(jì)數(shù)以及計(jì)時(shí)的開啟、暫停、繼續(xù)、與復(fù)位。其中有三個(gè)數(shù)碼管來顯示數(shù)據(jù),兩個(gè)數(shù)碼管顯示秒(兩位),另一個(gè)數(shù)碼管顯示十分之一秒,十分之一秒的數(shù)碼管計(jì)數(shù)從09,滿十進(jìn)一后顯示秒得數(shù)碼管的個(gè)位加一,并且十分之一秒顯示清零重新從零計(jì)數(shù)。同理當(dāng)個(gè)位滿十進(jìn)一后個(gè)位也清零重新計(jì)數(shù) ,當(dāng)計(jì)時(shí)超過范圍(即超過99.9秒)后,所有數(shù)碼管全部清零重新計(jì)數(shù)。 3.1 硬件設(shè)計(jì) 3.1.1 89C51單片機(jī)MCS-51系列單片機(jī)是8位單片機(jī)產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個(gè)部分:(1) CPU:89C51

8、的CPU是8位的,另外89C51內(nèi)部有1個(gè)位處理器(2) R0M:4KB的片內(nèi)程序存儲(chǔ)器,存放開發(fā)調(diào)試完成的應(yīng)用程序(3) RAM:256B的片內(nèi)數(shù)據(jù)存儲(chǔ)器,容量小,但作用大(4) I/O口:P0-P3,共4個(gè)口32條雙向且可位尋址的I/O口線(5) 中斷系統(tǒng):共5個(gè)中斷源,3個(gè)內(nèi)部中斷,2個(gè)外部中斷(6) 定時(shí)器/計(jì)數(shù)器:2個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器(7) 通用串行口:全雙工通用異步接收器/發(fā)送器(8) 振蕩器:89C51的外接晶振與內(nèi)部時(shí)鐘振蕩器為CPU提供時(shí)鐘信號(hào)(9) 總線控制:89C51對(duì)外提供若干控制總線,便于系統(tǒng)擴(kuò)展 89C51的引腳如下圖:89C51單片機(jī)引腳圖 3.1.2

9、 晶體振蕩電路89C51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反相放大器,引線XTAL1和XTAL2分別為反相振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來自反相振蕩器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。這里選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電路如下:C2、C3起穩(wěn)定振蕩頻率、快速起振的作用晶振電路3.1.3 復(fù)位電路采用上電復(fù)位,上電后,由于電容充電,使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電復(fù)位操作。這不僅能使單片機(jī)復(fù)位,還能是單片機(jī)的外圍設(shè)備同時(shí)復(fù)位,當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。電路圖如下: 復(fù)位電路3.1.4 按鍵電路當(dāng)按鍵被按下時(shí),相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,

10、并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。電路圖如下:按鍵電路3.1.5 顯示電路采用個(gè)LED數(shù)碼管,LED是七段顯示器,內(nèi)部有7個(gè)條形發(fā)光二極管和1個(gè)小圓點(diǎn)發(fā)光二極管,根據(jù)各管的亮暗組成字符。在用數(shù)碼管顯示時(shí),有靜態(tài)和動(dòng)態(tài)兩種選擇,這里采用LED動(dòng)態(tài)顯示,用P0、P1、 P2口驅(qū)動(dòng)顯示,由于P0口沒有上拉電阻,因此P0口需要外接上拉電阻才能輸出高電平,這里使用8個(gè)4.7k的電阻作為上拉電阻。電路圖如下:顯示電路3.1.53. 2 軟件設(shè)計(jì)3.2.1 程序設(shè)計(jì)思想結(jié)合電路,程序的總體思路 如圖3.1.5。3.2.2 系統(tǒng)資源的分配本設(shè)計(jì)系統(tǒng)所用到的單片機(jī)端口數(shù)比較多,所以在這

11、里將對(duì)數(shù)字電子秒表的硬件資源的大概分配加以說明。片內(nèi)RAM的分配、各功能鍵的定義以及各端口的分配安排如表3.3所示。表3.3 端口的分配安排表名稱功能描述初始化值7BH-7DH0.1s-10s位顯示寄存區(qū)00HR3- R50.1s-10s位溢出計(jì)數(shù)區(qū)定時(shí)器T0控制秒表的最小精度3CB0H外部中斷INT0停止中斷信號(hào)入口外部中斷INT1開始中斷信號(hào)入口3.2.3 主程序設(shè)計(jì)本系統(tǒng)程序主要模塊由主程序、定時(shí)中斷服務(wù)程序、外部中斷INT0服務(wù)程序和外部中斷INT1服務(wù)程序組成。其中主程序是整個(gè)程序的主體??梢詫?duì)各個(gè)中斷程序進(jìn)行調(diào)用,協(xié)調(diào)各個(gè)子程序之間的聯(lián)系。系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程

12、圖如圖3.11。首先對(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ì)P3.4進(jìn)行一次掃描,查詢啟動(dòng)鍵P3.4是否按下,當(dāng)啟動(dòng)鍵按下后,數(shù)碼管全零顯示,沒有按下則返回開始,重新循環(huán)顯示數(shù)字8。在主程序中還進(jìn)行了賦寄存區(qū)的初始值、設(shè)置定時(shí)器初值以及開啟外部中斷等操作,當(dāng)定時(shí)時(shí)間到后就轉(zhuǎn)去執(zhí)行定時(shí)中斷程序。當(dāng)外部中斷有請(qǐng)求則去執(zhí)行外部中斷服務(wù)程序,并在執(zhí)行完后返回主程序。3.2.4 中斷程序設(shè)計(jì)現(xiàn)在方案中采用了兩個(gè)中斷,外部中斷INT0,INT

13、1。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í)行原來較低級(jí)的中斷服務(wù)程序。而當(dāng)CPU為級(jí)別高的終端服務(wù)程序服務(wù)時(shí),如果級(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)重要的。80C51的自然優(yōu)先級(jí)順序排列如

14、下:中斷源 最高外部中斷INT0定時(shí)/計(jì)數(shù)器T0溢出中斷外部中斷INT1定時(shí)/計(jì)數(shù)器T1溢出中斷串行口中斷 最低數(shù)字式秒表中的兩個(gè)按鍵采用了中斷實(shí)現(xiàn)功能。開始采用外部中斷INT0,停止采用外部中斷INT1。另外程序中還用到了定時(shí)/計(jì)數(shù)器0溢出中斷進(jìn)行計(jì)時(shí)。依據(jù)設(shè)計(jì)要求,停止的外部中斷INT1中斷級(jí)別最高,計(jì)時(shí)的定時(shí)/計(jì)數(shù)器0溢出中斷次之,開始的外部中斷INT0級(jí)別最低。(1)外部中斷INT0服務(wù)程序外部中斷INT0服務(wù)程序結(jié)合外部P3.2開始鍵實(shí)現(xiàn)數(shù)字電子秒表的計(jì)時(shí)開始功能,具體流程圖如圖2.12。當(dāng)按下P3.2開始鍵按下向CPU發(fā)出外部中斷請(qǐng)求,CPU轉(zhuǎn)向外部中斷0服務(wù)程序執(zhí)行,啟動(dòng)定時(shí)器T

15、0。主程序流程圖第四章 數(shù)字電子秒表的調(diào)試4.1 軟件的仿真與調(diào)試Proteus ISIS是英國(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)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。在電子領(lǐng)域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調(diào)試通過后在焊電路,節(jié)省了不少在硬件調(diào)試上所花的時(shí)間。Prot

16、eus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面。它包括標(biāo)題欄、主菜單、狀態(tài)欄、標(biāo)準(zhǔn)工具欄、繪圖工具欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口等十幾個(gè)工具,方便了使用者的使用。Proteus SISI繪制原理圖的操作與Protel 99se繪制原理圖的操作基本相同,在這里就不再作贅述。下面拿本設(shè)計(jì)中的一個(gè)仿真例子作簡(jiǎn)述說明。運(yùn)行Proteus SISI后,繪制病床呼叫系統(tǒng)的原理圖。首先打開已經(jīng)畫好的proteus DSN文件,雙擊圖中的80C51芯片,就彈出一個(gè)窗口,在Program File項(xiàng)中通過路徑選擇在WAVE中生成的HEX

17、文件,雙擊選中后確定,這樣仿真圖中的80C51芯片就已經(jīng)讀取了本設(shè)計(jì)中的HEX文件。單擊“三角形按鈕”進(jìn)行仿真。通過對(duì)仿真結(jié)果的觀察來對(duì)程序進(jìn)行修改,最終使程序到達(dá)設(shè)計(jì)要求。4. 2 硬件的調(diào)試按照之前設(shè)計(jì)好的數(shù)字電子秒表原理圖,檢測(cè)電路中是否存在短路。因?yàn)橄到y(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。4.2.1 晶振電路的測(cè)試在單片機(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)行,因此系統(tǒng)時(shí)鐘是否振動(dòng)是通電檢查的首要環(huán)節(jié)。4.2.2 復(fù)位電路的測(cè)試復(fù)位不正常也會(huì)導(dǎo)致系統(tǒng)不能工作。如果復(fù)位引腳始終為高電平,

18、系統(tǒng)將始終處于復(fù)位狀態(tài);如果始終為低電平,不能產(chǎn)生復(fù)位所需的高電平信號(hào)脈沖,則系統(tǒng)也可能無(wú)法正常工作。單片機(jī)正常工作時(shí),RST復(fù)位引腳應(yīng)為0V,按下復(fù)位按鍵時(shí),復(fù)位引腳為高電平5V左右。4.3 程序設(shè)計(jì)程序的各個(gè)組成模塊及工作流程描述:4.3.1 秒表的初始化根據(jù)程序流程圖,先進(jìn)行秒表的初始化,即:將I/O口P3全寫一,為秒表的控制輸入做好準(zhǔn)備;將數(shù)碼管全部置零,使其處于秒表計(jì)時(shí)的初始狀態(tài);將工作寄存器R0R2以及30H初始化,留待后面的計(jì)時(shí)程序備用;將定時(shí)器0置于工作方式1,并為其裝入計(jì)時(shí)預(yù)置數(shù)D8FE(因?yàn)槌绦蜻\(yùn)行過程中占用的時(shí)間會(huì)導(dǎo)致一定誤差,此為經(jīng)實(shí)物測(cè)試之后的修正值),即將定時(shí)器定為

19、每10ms溢出;開總中斷允許和定時(shí)器0中斷允許。初始化完成后,即進(jìn)入之后的按鍵掃描程序。4.3.2 開始計(jì)時(shí)若確認(rèn)“開始計(jì)時(shí)”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“RUN”處,將定時(shí)器0計(jì)時(shí)允許控制位TR0置位,則定時(shí)器開始運(yùn)行。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。4.3.3 計(jì)時(shí)程序定時(shí)器0計(jì)時(shí)至10ms,溢出,引發(fā)中斷,程序跳轉(zhuǎn)至定時(shí)器0中斷服務(wù)程序入口000BH處執(zhí)行。程序跳轉(zhuǎn)至中斷服務(wù)程序TIME0。由于秒表的最小計(jì)時(shí)單位是0.1s,即100ms,因此需加入軟件計(jì)時(shí),使定時(shí)器0溢出10次之后才改變數(shù)碼管的顯示狀態(tài)。因此每來一次中斷就將30H中的數(shù)加1,若30H中的數(shù)沒有到10

20、,則給定時(shí)器0重新裝入預(yù)置數(shù),之后中斷返回并繼續(xù)等待中斷;到10了,才進(jìn)入顯示程序,改變數(shù)碼管的顯示狀態(tài),執(zhí)行完畢之后中斷返回并繼續(xù)等待中斷。4.3.4 暫停計(jì)時(shí)若確認(rèn)“暫停計(jì)時(shí)”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“PAUSE”處,將定時(shí)器0計(jì)時(shí)允許控制位TR0置零,則定時(shí)器暫停運(yùn)行。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。4.3.5 秒表清零若確認(rèn)“秒表清零”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“STOP”處,將TR0置零,關(guān)閉定時(shí)器0運(yùn)行。并且將數(shù)碼管、工作寄存器、定時(shí)器0預(yù)置數(shù)全部重置,使其處于秒表計(jì)時(shí)的初始狀態(tài)。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。程序清單如下:ORG

21、 0000H ;程序開始AJMP START ;跳轉(zhuǎn)到主程序START ORG 000BH ;定時(shí)器0中斷的地址入口AJMP TIME0 ;定時(shí)器0溢出,跳轉(zhuǎn)到中斷程序TIME0START: ;主程序MOV P3,#0FFH ;輸入端口P3全寫1MOV P0,#3FH ;MOV P1,#3FH ;MOV P2,#0BFH ;數(shù)碼管初始化MOV 30H,#00H ;MOV R0,#00H ;MOV R1,#0AH ;MOV R2,#00H ;工作寄存器初始化MOV TMOD,#01H ;定時(shí)器0工作于方式1MOV TH0,#0D8H ;MOV TL0,#0FEH ;定時(shí)器0預(yù)置數(shù)(D8FEH=5

22、5550D)SETB EA ;開總中斷允許SETB ET0 ;開定時(shí)器0中斷允許READ: ;讀鍵程序L1:JB P3.2,L2 ;LCALL DELAY ;按鍵延時(shí)防抖JB P3.2,L1 ;AJMP RUN ;確認(rèn)計(jì)時(shí)鍵被按下,開始/繼續(xù)計(jì)時(shí)L2:JB P3.3,L3 ;LCALL DELAY ;按鍵延時(shí)防抖JB P3.3,L2 ;AJMP PAUSE ;確認(rèn)暫停鍵被按下,暫停計(jì)時(shí)L3:JB P3.4,L1 ;LCALL DELAY ;按鍵延時(shí)防抖JB P3.4,L3 ;AJMP STOP ;確認(rèn)清零鍵被按下,秒表重置RUN: ;計(jì)時(shí)鍵按下,跳轉(zhuǎn)至此SETB TR0 ;定時(shí)器0開始/繼續(xù)運(yùn)

23、行AJMP READ ;PAUSE: ;暫停鍵按下,跳轉(zhuǎn)至此CLR TR0 ;AJMP READ ; TIME0: ;定時(shí)器0溢出,中斷,跳轉(zhuǎn)至此INC 30H ;MOV A,30H ;CJNE A,#0AH,TIME1 ;30H單元中的值到10了嗎?(計(jì)時(shí)到10毫秒了嗎,也就是說,該向毫秒位送數(shù)了嗎?)MOV DPTR,#TAB ;30H中的值到10了,順序執(zhí)行MOV A,R0 ;INC R0 ;CJNE R0,#0AH,GET ;R0中的值到10了嗎?(該向秒位進(jìn)位了嗎?)MOV R0,#00H ;LCALL SECOND ;到了,R0清零,調(diào)用進(jìn)位子程序SECOND,向秒位進(jìn)位GET:

24、;沒到,跳過進(jìn)位子程序MOVC A,A+DPTR ;MOV P1,A ;查表并向數(shù)碼管毫秒位送數(shù)MOV 30H,#00H ;重置30H單元TIME1: ;MOV TH0,#0D8H ;MOV TL0,#0FEH ;給定時(shí)器0重新預(yù)置數(shù)RETI ;中斷返回SECOND: ;秒位進(jìn)位子程序PUSH ACC ;PUSH PSW ;將ACC和PSW推入堆棧保護(hù)MOV A,R1 ;INC R1 ;CJNE R1,#14H,GET1 ;R1中的值到20了嗎,也就是說,該向十秒位進(jìn)位了嗎?MOV R1,#0AH ;LCALL SECOND1 ;到了。R1重置,調(diào)用進(jìn)位子程序SECOND1,向十秒位進(jìn)位GET

25、1: ;沒到,跳過進(jìn)位子程序MOVC A,A+DPTR ;MOV P2,A ;查表并向數(shù)碼管秒位送數(shù)POP PSW ;POP ACC ;PSW,ACC出棧RET ;子程序返回SECOND1: ;十秒位進(jìn)位子程序PUSH ACC ;PUSH PSW ;將ACC和PSW推入堆棧保護(hù)MOV A,R2 ;INC R2 ;CJNE R2,#0AH,GET2 ;R2中的值到10了嗎,也就是說,該將此位歸零了嗎?MOV R2,#00H ;到了,R2清零GET2: ;沒到,跳過清零程序MOVC A,A+DPTR ;MOV P0,A ;查表并向數(shù)碼管十秒位送數(shù)POP PSW ;POP ACC ;PSW,ACC出

26、棧RET ;子程序返回STOP: ;清零鍵按下,跳轉(zhuǎn)至此MOV P3,#0FFH ;MOV P0,#3FH ;MOV P1,#3FH ;MOV P2,#0BFH ;數(shù)碼管清零MOV 30H,#00H ;MOV R0,#00H ;MOV R1,#0AH ;MOV R2,#00H ;工作寄存器初始化CLR TR0 ;計(jì)時(shí)器0停止計(jì)時(shí)MOV TH0,#0D8H ;MOV TL0,#0FEH ;定時(shí)器0預(yù)置數(shù)AJMP READ ;DELAY: ;延時(shí)10ms子程序MOV R3,#50D ;D1:MOV R4,#100D ;D2:DJNZ R4,D2 ;DJNZ R3,D1 ;RET ;子程序返回TAB

27、: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH ;數(shù)碼管段選碼數(shù)表END ;程序結(jié)束心 得 體 會(huì)在此次課程設(shè)計(jì)中,我主要承擔(dān)程序設(shè)計(jì)的工作。雖然秒表是一個(gè)非常簡(jiǎn)單的功能,但要在單片機(jī)中使用匯編語(yǔ)言來實(shí)現(xiàn)這個(gè)功能,仍然花了我不少心思。首先是計(jì)時(shí)的問題,由于單片機(jī)計(jì)時(shí)器最大只能計(jì)時(shí)65.5ms,因此要實(shí)現(xiàn)毫秒位的變化,我采用了軟件計(jì)時(shí)的方法,單片機(jī)只需計(jì)時(shí)10ms,然后用軟件重復(fù)10次,即可達(dá)到計(jì)時(shí)100ms的目的。顯示方面,為了使編程簡(jiǎn)單,我使用了靜態(tài)顯示。

28、不過這使得占用I/O口線過多,而且連線復(fù)雜繁瑣,為實(shí)物的制作帶來了不便。在以后的學(xué)習(xí)和應(yīng)用中我會(huì)努力加深動(dòng)態(tài)掃描顯示的理解,爭(zhēng)取熟練運(yùn)用。根據(jù)書本知識(shí),我們一開始只給P0口加上了上拉電阻,但是實(shí)物做成后我們發(fā)現(xiàn)P1和P2口得輸出顯示非常暗,初步確定是驅(qū)動(dòng)能力不足的問題后,我們給二者也加上了上拉電阻,結(jié)果使得顯示正常了。由此我們了解到,實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),有時(shí)候書本上的知識(shí)需要經(jīng)過實(shí)踐的改進(jìn),才能運(yùn)用到實(shí)際中。此次課程設(shè)計(jì)鞏固了我的基礎(chǔ)知識(shí),提高了我的應(yīng)用水平,鍛煉了我的動(dòng)手能力,使我受益匪淺。然而,在吸取經(jīng)驗(yàn)的同時(shí),我也吃了不少教訓(xùn)。在編程、仿真方面都走了不少?gòu)澛?。但是,學(xué)則要有所收獲

29、,經(jīng)過此次的鍛煉,我在很多方面都已經(jīng)有所提高,知識(shí)也掌握得更加扎實(shí)了。 在今后的學(xué)習(xí)和實(shí)踐中,我將繼續(xù)努力鉆研,提高自己,爭(zhēng)取在學(xué)術(shù)和記憶上獲得更大的進(jìn)步。附錄A 秒表仿真電路圖附錄B 源程序ORG 0000H ;程序開始AJMP START ;跳轉(zhuǎn)到主程序START ORG 000BH ;定時(shí)器0中斷的地址入口AJMP TIME0 ;定時(shí)器0溢出,跳轉(zhuǎn)到中斷程序TIME0START: ;主程序MOV P3,#0FFH ;輸入端口P3全寫1MOV P0,#3FH ;MOV P1,#3FH ;MOV P2,#0BFH ;數(shù)碼管初始化MOV 30H,#00H ;MOV R0,#00H ;MOV R

30、1,#0AH ;MOV R2,#00H ;工作寄存器初始化MOV TMOD,#01H ;定時(shí)器0工作于方式1MOV TH0,#0D8H ;MOV TL0,#0FEH ;定時(shí)器0預(yù)置數(shù)(D8FEH=55550D)SETB EA ;開總中斷允許SETB ET0 ;開定時(shí)器0中斷允許READ: ;讀鍵程序L1:JB P3.2,L2 ;LCALL DELAY ;按鍵延時(shí)防抖JB P3.2,L1 ;AJMP RUN ;確認(rèn)計(jì)時(shí)鍵被按下,開始/繼續(xù)計(jì)時(shí)L2:JB P3.3,L3 ;LCALL DELAY ;按鍵延時(shí)防抖JB P3.3,L2 ;AJMP PAUSE ;確認(rèn)暫停鍵被按下,暫停計(jì)時(shí)L3:JB P

31、3.4,L1 ;LCALL DELAY ;按鍵延時(shí)防抖JB P3.4,L3 ;AJMP STOP ;確認(rèn)清零鍵被按下,秒表重置RUN: ;計(jì)時(shí)鍵按下,跳轉(zhuǎn)至此SETB TR0 ;定時(shí)器0開始/繼續(xù)運(yùn)行AJMP READ ;PAUSE: ;暫停鍵按下,跳轉(zhuǎn)至此CLR TR0 ;AJMP READ ; TIME0: ;定時(shí)器0溢出,中斷,跳轉(zhuǎn)至此INC 30H ;MOV A,30H ;CJNE A,#0AH,TIME1 ;30H單元中的值到10了嗎?(計(jì)時(shí)到10毫秒了嗎,也就是說,該向毫秒位送數(shù)了嗎?)MOV DPTR,#TAB ;30H中的值到10了,順序執(zhí)行MOV A,R0 ;INC R0 ;CJNE R0,#0AH,GET ;R0中的值到10了嗎?(該向秒位進(jìn)位了嗎?)MOV R0,#00H ;LCALL SECOND ;到了,R0清零,調(diào)用進(jìn)位子程序SECOND,向秒位進(jìn)位GET: ;沒到,跳過進(jìn)位子程序MOVC A,A+DPTR ;MOV P1,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ù)網(wǎng)僅提供信息存儲(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)論