




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)原理及接口技術(shù)課程設(shè)計 單片機(jī)秒表的設(shè)計學(xué) 院: 機(jī)電工程學(xué)院 專業(yè)班級: 10級電氣工程二班 姓 名: 姚杜村 學(xué) 號: 指導(dǎo)教師: 宋東亞 楊坤漓 時 間:2012年11月20日2013年01月05日目 錄序 言0第一章 緒 論11.1 概 述11.2 設(shè)計任務(wù)21.3 設(shè)計目的2第二章 設(shè)計任務(wù)及內(nèi)容22.1 設(shè)計題目22.2 設(shè)計內(nèi)容22.3 功能分析2第三章總體設(shè)計及核心器件簡介33.1 硬件設(shè)計33.1.1 89C51單片機(jī)33.1.2 晶體振蕩電路43.1.3 復(fù)位電路53.1.4 按鍵電路53.1.5 顯示電路63.2 軟件設(shè)計63.2.1 程序設(shè)計思想63.2.2 系統(tǒng)
2、資源的分配63.2.3 主程序設(shè)計73.2.4 中斷程序設(shè)計7第四章 數(shù)字電子秒表的調(diào)試94.1 軟件的仿真與調(diào)試94.2 硬件的調(diào)試104.2.1 晶振電路的測試104.2.2 復(fù)位電路的測試104.3 程序設(shè)計114.3.1 秒表的初始化114.3.2 開始計時114.3.3 計時程序114.3.4 暫停計時114.3.5 秒表清零11心 得 體 會14附錄A 秒表仿真電路圖15附錄B 源程序15參 考 文 獻(xiàn)18序 言隨著電子技術(shù)的發(fā)展,電子技術(shù)在各個領(lǐng)域的運(yùn)用也越來越廣泛,人對它的認(rèn)識也逐步加深。作為一個學(xué)習(xí)電氣專業(yè)的當(dāng)代大學(xué)生來說,我們不但要有扎實(shí)的基礎(chǔ)知識、課本知識,還應(yīng)有較強(qiáng)的動
3、手能力。現(xiàn)實(shí)也要求我們既精通電子技術(shù)理論,更要掌握電子電路設(shè)計、實(shí)驗(yàn)研究和調(diào)試技術(shù)。秒表計時器秒表計時器常常用于體育競賽及各種其他要求有較精確時間的各領(lǐng)域中。其中啟/停開關(guān)的使用方法與傳統(tǒng)的機(jī)械計時器相同,即按一下啟/停開關(guān),啟動計時器開始計時,再按一下啟/停開關(guān)計時終止。而復(fù)位開關(guān)可以在任何情況下使用,即使在計時過程中,只要按一下復(fù)位開關(guān),計時應(yīng)立即終止,并對計時器清零。本設(shè)計就是利用所學(xué)到的電子元器件將脈沖源用數(shù)碼管顯示出來,以制承諾簡易的秒表。電子秒表是重要的計時工具,廣泛應(yīng)用于各行各業(yè)。可以用來測量物體的速度和加速度,可以用來驗(yàn)證牛頓第二定律和機(jī)械能守恒等物理實(shí)驗(yàn)。相對其他計時工具具有
4、便捷、準(zhǔn)確、可比性高等優(yōu)點(diǎn)。減少工作人員的負(fù)擔(dān),降低錯誤率。姚 杜 村第一章 緒 論1.1 概 述單片微型計算機(jī)簡稱單片機(jī),又稱微控制器,是微型計算機(jī)的一個重要分支。單片機(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)、體積小、可靠性好、價格便宜等獨(dú)特優(yōu)點(diǎn)因而受到人們的高度重視并取到了一系列的科研成果,成為傳統(tǒng)工業(yè)技術(shù)改造和新產(chǎn)品更新?lián)Q代的理想機(jī)種,并具有廣闊的發(fā)展前景
5、。本設(shè)計運(yùn)用所學(xué)的單片機(jī)知識,將單片機(jī)與普通秒表相結(jié)合設(shè)計了電子秒表,具有顯示直觀、讀取方便、精度高等優(yōu)良特點(diǎn),在計時中應(yīng)用廣泛。1.2 設(shè)計任務(wù)以單片機(jī)為核心,設(shè)計一個秒表,具有計時功能,按鍵有啟動計時、數(shù)據(jù)清零、停止、時間顯示。1.3 設(shè)計目的加強(qiáng)對51系列單片機(jī)的構(gòu)造了解及應(yīng)用,熟悉匯編語言或C語言編程,綜合掌握和理解設(shè)計各部分的工作原理、設(shè)計過程、芯片器件的選擇方法、模塊化編程等多項知識。 (1)用單片機(jī)模擬實(shí)現(xiàn)具體應(yīng)用使個人設(shè)計系統(tǒng)能夠真正使用;(2)把理論知識與實(shí)踐知識相結(jié)合,充分發(fā)揮個人能力,并在實(shí)踐中得到鍛煉;(3)提高利用已學(xué)的知識分析和解決問題的能力;(4)提高動手實(shí)踐能力
6、。第二章 設(shè)計任務(wù)及內(nèi)容2.1 設(shè)計題目秒表的設(shè)計2.2 設(shè)計內(nèi)容(1)填寫設(shè)計任務(wù)書;(2)進(jìn)行總體設(shè)計,畫出設(shè)計原理圖;(3)用PROTEUS軟件畫出設(shè)計電路圖;(4)用Keil軟件編寫程序;(5)在PROTEUS里模擬并調(diào)試程序達(dá)到期望功能。2.3 功能分析采用3個LED數(shù)碼管顯示時間,計時范圍設(shè)置為099.9秒,即精確到0.1秒,用按鍵控制秒表的“開始”、“暫停”、“復(fù)位”,按“開始”按鍵,開始計時;按“暫停”按鍵,系統(tǒng)暫停計時;再按“開始”鍵,系統(tǒng)繼續(xù)計時;數(shù)碼管顯示當(dāng)前計時值;按“復(fù)位”按鍵,系統(tǒng)清零。第三章 總體設(shè)計及核心器件簡介本實(shí)驗(yàn)利用單片機(jī)的定時器/計數(shù)器定時和計數(shù)的原理,
7、通過采用Proteus仿真軟件來模擬實(shí)現(xiàn)。模擬AT89C51單片機(jī)、LED數(shù)碼管以及控件來控制秒表的計數(shù)以及計時的開啟、暫停、繼續(xù)、與復(fù)位。其中有三個數(shù)碼管來顯示數(shù)據(jù),兩個數(shù)碼管顯示秒(兩位),另一個數(shù)碼管顯示十分之一秒,十分之一秒的數(shù)碼管計數(shù)從09,滿十進(jìn)一后顯示秒得數(shù)碼管的個位加一,并且十分之一秒顯示清零重新從零計數(shù)。同理當(dāng)個位滿十進(jìn)一后個位也清零重新計數(shù) ,當(dāng)計時超過范圍(即超過99.9秒)后,所有數(shù)碼管全部清零重新計數(shù)。 3.1 硬件設(shè)計 3.1.1 89C51單片機(jī)MCS-51系列單片機(jī)是8位單片機(jī)產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個部分:(1) CPU:89C51
8、的CPU是8位的,另外89C51內(nèi)部有1個位處理器(2) R0M:4KB的片內(nèi)程序存儲器,存放開發(fā)調(diào)試完成的應(yīng)用程序(3) RAM:256B的片內(nèi)數(shù)據(jù)存儲器,容量小,但作用大(4) I/O口:P0-P3,共4個口32條雙向且可位尋址的I/O口線(5) 中斷系統(tǒng):共5個中斷源,3個內(nèi)部中斷,2個外部中斷(6) 定時器/計數(shù)器:2個16位的可編程定時器/計數(shù)器(7) 通用串行口:全雙工通用異步接收器/發(fā)送器(8) 振蕩器:89C51的外接晶振與內(nèi)部時鐘振蕩器為CPU提供時鐘信號(9) 總線控制:89C51對外提供若干控制總線,便于系統(tǒng)擴(kuò)展 89C51的引腳如下圖:89C51單片機(jī)引腳圖 3.1.2
9、 晶體振蕩電路89C51單片機(jī)內(nèi)部的振蕩電路是一個高增益反相放大器,引線XTAL1和XTAL2分別為反相振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反相振蕩器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。這里選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電路如下:C2、C3起穩(wěn)定振蕩頻率、快速起振的作用晶振電路3.1.3 復(fù)位電路采用上電復(fù)位,上電后,由于電容充電,使RST持續(xù)一段時間的高電平,從而實(shí)現(xiàn)上電復(fù)位操作。這不僅能使單片機(jī)復(fù)位,還能是單片機(jī)的外圍設(shè)備同時復(fù)位,當(dāng)程序出現(xiàn)錯誤時,可以隨時使電路復(fù)位。電路圖如下: 復(fù)位電路3.1.4 按鍵電路當(dāng)按鍵被按下時,相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,
10、并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。電路圖如下:按鍵電路3.1.5 顯示電路采用個LED數(shù)碼管,LED是七段顯示器,內(nèi)部有7個條形發(fā)光二極管和1個小圓點(diǎn)發(fā)光二極管,根據(jù)各管的亮暗組成字符。在用數(shù)碼管顯示時,有靜態(tài)和動態(tài)兩種選擇,這里采用LED動態(tài)顯示,用P0、P1、 P2口驅(qū)動顯示,由于P0口沒有上拉電阻,因此P0口需要外接上拉電阻才能輸出高電平,這里使用8個4.7k的電阻作為上拉電阻。電路圖如下:顯示電路3.1.53. 2 軟件設(shè)計3.2.1 程序設(shè)計思想結(jié)合電路,程序的總體思路 如圖3.1.5。3.2.2 系統(tǒng)資源的分配本設(shè)計系統(tǒng)所用到的單片機(jī)端口數(shù)比較多,所以在這
11、里將對數(shù)字電子秒表的硬件資源的大概分配加以說明。片內(nèi)RAM的分配、各功能鍵的定義以及各端口的分配安排如表3.3所示。表3.3 端口的分配安排表名稱功能描述初始化值7BH-7DH0.1s-10s位顯示寄存區(qū)00HR3- R50.1s-10s位溢出計數(shù)區(qū)定時器T0控制秒表的最小精度3CB0H外部中斷INT0停止中斷信號入口外部中斷INT1開始中斷信號入口3.2.3 主程序設(shè)計本系統(tǒng)程序主要模塊由主程序、定時中斷服務(wù)程序、外部中斷INT0服務(wù)程序和外部中斷INT1服務(wù)程序組成。其中主程序是整個程序的主體。可以對各個中斷程序進(jìn)行調(diào)用,協(xié)調(diào)各個子程序之間的聯(lián)系。系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程
12、圖如圖3.11。首先對系統(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)顯示。顯示一次就對P3.4進(jìn)行一次掃描,查詢啟動鍵P3.4是否按下,當(dāng)啟動鍵按下后,數(shù)碼管全零顯示,沒有按下則返回開始,重新循環(huán)顯示數(shù)字8。在主程序中還進(jìn)行了賦寄存區(qū)的初始值、設(shè)置定時器初值以及開啟外部中斷等操作,當(dāng)定時時間到后就轉(zhuǎn)去執(zhí)行定時中斷程序。當(dāng)外部中斷有請求則去執(zhí)行外部中斷服務(wù)程序,并在執(zhí)行完后返回主程序。3.2.4 中斷程序設(shè)計現(xiàn)在方案中采用了兩個中斷,外部中斷INT0,INT
13、1。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ù)時,如果級別低的中斷發(fā)出中斷請求,此時CPU是不會響應(yīng)的,所以為了避免開始和暫停兩個按鍵中的一個出現(xiàn)沒有響應(yīng)的情況,在進(jìn)行程序編輯時要注意對中斷的使用,避免出現(xiàn)中斷的嵌套。,合理分配中斷對本設(shè)計的實(shí)現(xiàn)是至關(guān)重要的。80C51的自然優(yōu)先級順序排列如
14、下:中斷源 最高外部中斷INT0定時/計數(shù)器T0溢出中斷外部中斷INT1定時/計數(shù)器T1溢出中斷串行口中斷 最低數(shù)字式秒表中的兩個按鍵采用了中斷實(shí)現(xiàn)功能。開始采用外部中斷INT0,停止采用外部中斷INT1。另外程序中還用到了定時/計數(shù)器0溢出中斷進(jìn)行計時。依據(jù)設(shè)計要求,停止的外部中斷INT1中斷級別最高,計時的定時/計數(shù)器0溢出中斷次之,開始的外部中斷INT0級別最低。(1)外部中斷INT0服務(wù)程序外部中斷INT0服務(wù)程序結(jié)合外部P3.2開始鍵實(shí)現(xiàn)數(shù)字電子秒表的計時開始功能,具體流程圖如圖2.12。當(dāng)按下P3.2開始鍵按下向CPU發(fā)出外部中斷請求,CPU轉(zhuǎn)向外部中斷0服務(wù)程序執(zhí)行,啟動定時器T
15、0。主程序流程圖第四章 數(shù)字電子秒表的調(diào)試4.1 軟件的仿真與調(diào)試Proteus ISIS是英國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)大的原理圖繪制功能。總之,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。在電子領(lǐng)域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調(diào)試通過后在焊電路,節(jié)省了不少在硬件調(diào)試上所花的時間。Prot
16、eus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面。它包括標(biāo)題欄、主菜單、狀態(tài)欄、標(biāo)準(zhǔn)工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口等十幾個工具,方便了使用者的使用。Proteus SISI繪制原理圖的操作與Protel 99se繪制原理圖的操作基本相同,在這里就不再作贅述。下面拿本設(shè)計中的一個仿真例子作簡述說明。運(yùn)行Proteus SISI后,繪制病床呼叫系統(tǒng)的原理圖。首先打開已經(jīng)畫好的proteus DSN文件,雙擊圖中的80C51芯片,就彈出一個窗口,在Program File項中通過路徑選擇在WAVE中生成的HEX
17、文件,雙擊選中后確定,這樣仿真圖中的80C51芯片就已經(jīng)讀取了本設(shè)計中的HEX文件。單擊“三角形按鈕”進(jìn)行仿真。通過對仿真結(jié)果的觀察來對程序進(jìn)行修改,最終使程序到達(dá)設(shè)計要求。4. 2 硬件的調(diào)試按照之前設(shè)計好的數(shù)字電子秒表原理圖,檢測電路中是否存在短路。因?yàn)橄到y(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。4.2.1 晶振電路的測試在單片機(jī)正常運(yùn)行的必要條件是單片機(jī)系統(tǒng)的時鐘穩(wěn)定正常。實(shí)際中,因?yàn)楦鞣N原因?qū)е孪到y(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運(yùn)行,因此系統(tǒng)時鐘是否振動是通電檢查的首要環(huán)節(jié)。4.2.2 復(fù)位電路的測試復(fù)位不正常也會導(dǎo)致系統(tǒng)不能工作。如果復(fù)位引腳始終為高電平,
18、系統(tǒng)將始終處于復(fù)位狀態(tài);如果始終為低電平,不能產(chǎn)生復(fù)位所需的高電平信號脈沖,則系統(tǒng)也可能無法正常工作。單片機(jī)正常工作時,RST復(fù)位引腳應(yīng)為0V,按下復(fù)位按鍵時,復(fù)位引腳為高電平5V左右。4.3 程序設(shè)計程序的各個組成模塊及工作流程描述:4.3.1 秒表的初始化根據(jù)程序流程圖,先進(jìn)行秒表的初始化,即:將I/O口P3全寫一,為秒表的控制輸入做好準(zhǔn)備;將數(shù)碼管全部置零,使其處于秒表計時的初始狀態(tài);將工作寄存器R0R2以及30H初始化,留待后面的計時程序備用;將定時器0置于工作方式1,并為其裝入計時預(yù)置數(shù)D8FE(因?yàn)槌绦蜻\(yùn)行過程中占用的時間會導(dǎo)致一定誤差,此為經(jīng)實(shí)物測試之后的修正值),即將定時器定為
19、每10ms溢出;開總中斷允許和定時器0中斷允許。初始化完成后,即進(jìn)入之后的按鍵掃描程序。4.3.2 開始計時若確認(rèn)“開始計時”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號“RUN”處,將定時器0計時允許控制位TR0置位,則定時器開始運(yùn)行。此動作完成后,返回按鍵檢測程序,等待操作者的下一次指令。4.3.3 計時程序定時器0計時至10ms,溢出,引發(fā)中斷,程序跳轉(zhuǎn)至定時器0中斷服務(wù)程序入口000BH處執(zhí)行。程序跳轉(zhuǎn)至中斷服務(wù)程序TIME0。由于秒表的最小計時單位是0.1s,即100ms,因此需加入軟件計時,使定時器0溢出10次之后才改變數(shù)碼管的顯示狀態(tài)。因此每來一次中斷就將30H中的數(shù)加1,若30H中的數(shù)沒有到10
20、,則給定時器0重新裝入預(yù)置數(shù),之后中斷返回并繼續(xù)等待中斷;到10了,才進(jìn)入顯示程序,改變數(shù)碼管的顯示狀態(tài),執(zhí)行完畢之后中斷返回并繼續(xù)等待中斷。4.3.4 暫停計時若確認(rèn)“暫停計時”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號“PAUSE”處,將定時器0計時允許控制位TR0置零,則定時器暫停運(yùn)行。此動作完成后,返回按鍵檢測程序,等待操作者的下一次指令。4.3.5 秒表清零若確認(rèn)“秒表清零”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號“STOP”處,將TR0置零,關(guān)閉定時器0運(yùn)行。并且將數(shù)碼管、工作寄存器、定時器0預(yù)置數(shù)全部重置,使其處于秒表計時的初始狀態(tài)。此動作完成后,返回按鍵檢測程序,等待操作者的下一次指令。程序清單如下:ORG
21、 0000H ;程序開始AJMP START ;跳轉(zhuǎn)到主程序START ORG 000BH ;定時器0中斷的地址入口AJMP TIME0 ;定時器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 ;定時器0工作于方式1MOV TH0,#0D8H ;MOV TL0,#0FEH ;定時器0預(yù)置數(shù)(D8FEH=5
22、5550D)SETB EA ;開總中斷允許SETB ET0 ;開定時器0中斷允許READ: ;讀鍵程序L1:JB P3.2,L2 ;LCALL DELAY ;按鍵延時防抖JB P3.2,L1 ;AJMP RUN ;確認(rèn)計時鍵被按下,開始/繼續(xù)計時L2:JB P3.3,L3 ;LCALL DELAY ;按鍵延時防抖JB P3.3,L2 ;AJMP PAUSE ;確認(rèn)暫停鍵被按下,暫停計時L3:JB P3.4,L1 ;LCALL DELAY ;按鍵延時防抖JB P3.4,L3 ;AJMP STOP ;確認(rèn)清零鍵被按下,秒表重置RUN: ;計時鍵按下,跳轉(zhuǎn)至此SETB TR0 ;定時器0開始/繼續(xù)運(yùn)
23、行AJMP READ ;PAUSE: ;暫停鍵按下,跳轉(zhuǎn)至此CLR TR0 ;AJMP READ ; TIME0: ;定時器0溢出,中斷,跳轉(zhuǎn)至此INC 30H ;MOV A,30H ;CJNE A,#0AH,TIME1 ;30H單元中的值到10了嗎?(計時到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 ;給定時器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 ;計時器0停止計時MOV TH0,#0D8H ;MOV TL0,#0FEH ;定時器0預(yù)置數(shù)AJMP READ ;DELAY: ;延時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é)束心 得 體 會在此次課程設(shè)計中,我主要承擔(dān)程序設(shè)計的工作。雖然秒表是一個非常簡單的功能,但要在單片機(jī)中使用匯編語言來實(shí)現(xiàn)這個功能,仍然花了我不少心思。首先是計時的問題,由于單片機(jī)計時器最大只能計時65.5ms,因此要實(shí)現(xiàn)毫秒位的變化,我采用了軟件計時的方法,單片機(jī)只需計時10ms,然后用軟件重復(fù)10次,即可達(dá)到計時100ms的目的。顯示方面,為了使編程簡單,我使用了靜態(tài)顯示。
28、不過這使得占用I/O口線過多,而且連線復(fù)雜繁瑣,為實(shí)物的制作帶來了不便。在以后的學(xué)習(xí)和應(yīng)用中我會努力加深動態(tài)掃描顯示的理解,爭取熟練運(yùn)用。根據(jù)書本知識,我們一開始只給P0口加上了上拉電阻,但是實(shí)物做成后我們發(fā)現(xiàn)P1和P2口得輸出顯示非常暗,初步確定是驅(qū)動能力不足的問題后,我們給二者也加上了上拉電阻,結(jié)果使得顯示正常了。由此我們了解到,實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),有時候書本上的知識需要經(jīng)過實(shí)踐的改進(jìn),才能運(yùn)用到實(shí)際中。此次課程設(shè)計鞏固了我的基礎(chǔ)知識,提高了我的應(yīng)用水平,鍛煉了我的動手能力,使我受益匪淺。然而,在吸取經(jīng)驗(yàn)的同時,我也吃了不少教訓(xùn)。在編程、仿真方面都走了不少彎路。但是,學(xué)則要有所收獲
29、,經(jīng)過此次的鍛煉,我在很多方面都已經(jīng)有所提高,知識也掌握得更加扎實(shí)了。 在今后的學(xué)習(xí)和實(shí)踐中,我將繼續(xù)努力鉆研,提高自己,爭取在學(xué)術(shù)和記憶上獲得更大的進(jìn)步。附錄A 秒表仿真電路圖附錄B 源程序ORG 0000H ;程序開始AJMP START ;跳轉(zhuǎn)到主程序START ORG 000BH ;定時器0中斷的地址入口AJMP TIME0 ;定時器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 ;定時器0工作于方式1MOV TH0,#0D8H ;MOV TL0,#0FEH ;定時器0預(yù)置數(shù)(D8FEH=55550D)SETB EA ;開總中斷允許SETB ET0 ;開定時器0中斷允許READ: ;讀鍵程序L1:JB P3.2,L2 ;LCALL DELAY ;按鍵延時防抖JB P3.2,L1 ;AJMP RUN ;確認(rèn)計時鍵被按下,開始/繼續(xù)計時L2:JB P3.3,L3 ;LCALL DELAY ;按鍵延時防抖JB P3.3,L2 ;AJMP PAUSE ;確認(rèn)暫停鍵被按下,暫停計時L3:JB P
31、3.4,L1 ;LCALL DELAY ;按鍵延時防抖JB P3.4,L3 ;AJMP STOP ;確認(rèn)清零鍵被按下,秒表重置RUN: ;計時鍵按下,跳轉(zhuǎn)至此SETB TR0 ;定時器0開始/繼續(xù)運(yùn)行AJMP READ ;PAUSE: ;暫停鍵按下,跳轉(zhuǎn)至此CLR TR0 ;AJMP READ ; TIME0: ;定時器0溢出,中斷,跳轉(zhuǎn)至此INC 30H ;MOV A,30H ;CJNE A,#0AH,TIME1 ;30H單元中的值到10了嗎?(計時到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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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īng)用技術(shù)學(xué)院《土木工程預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州電子信息職業(yè)技術(shù)學(xué)院《商品學(xué)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 河源職業(yè)技術(shù)學(xué)院《新媒體綜合實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林農(nóng)業(yè)大學(xué)《巖土力學(xué)綜合實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶海聯(lián)職業(yè)技術(shù)學(xué)院《體育(一)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省大連市中山區(qū)2024-2025學(xué)年初三第五次月考英語試題含答案
- 海口經(jīng)濟(jì)學(xué)院《媒介經(jīng)營與管理業(yè)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西北民族大學(xué)《英語閱讀(V)》2023-2024學(xué)年第一學(xué)期期末試卷
- 河南醫(yī)學(xué)高等專科學(xué)校《數(shù)碼攝影基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣西電力職業(yè)技術(shù)學(xué)院《新媒體教育應(yīng)用研究》2023-2024學(xué)年第二學(xué)期期末試卷
- DB4401∕T 5-2018 房屋面積測算規(guī)范
- DIN1783厚度在0.35mm以上冷軋的鋁及鋁塑性合金帶材和板材、尺寸
- 腳手架或模板支架立桿底地基承載力計算
- GB∕T 40741-2021 焊后熱處理質(zhì)量要求
- Model5000功率計(介紹及操作)
- 超導(dǎo)材料應(yīng)用舉例PPT課件
- 現(xiàn)場總線技術(shù)03 PROFIBUS總線
- 2020年超星爾雅重說中國近代史通識課期末考試答案
- 輪胎式裝載機(jī)檢測報告(共5頁)
- 抗菌藥物分級管理目錄(完整資料).doc
- 基于語音信號去噪處理的FIR濾波器設(shè)計
評論
0/150
提交評論