當前位置:文範網 >

實用文 >實用文精選 >

基於89C51微控制器的秒錶課程設計(多篇)

基於89C51微控制器的秒錶課程設計(多篇)

基於89C51微控制器的秒錶課程設計(多篇)

微控制器課程設計之秒錶 篇一

微控制器課程設計報告

題目:基於stc89c52rc的秒錶設計

學生:唐偉軒 11071339

指導老師:

日期:2013年12月8日

基於stc89c52rc的秒錶設計

此設計中硬體部分由王華杲完成,軟體由唐偉軒完成一、設計要求

使用STC89C52RC微控制器設計一個2位LED數碼管顯示的秒錶,顯示時間為00—99秒,每秒自動加1,設計開始、停止、復位鍵。

二、設計思路

為了功能拓展,本設計硬體部分採用了四位一體共陽數碼管作為顯示單元,採用三極體進行陽極位選驅動,陰極直接接限流電阻接微控制器P0口;採用“4+1”按鍵,分別為“系統復位”、“計數停止”、“復位秒錶”、“翻頁”、“預留”功能,“系統復位”為系統總復位按鍵;“計數停止”和“復位秒錶”按鍵接到微控制器中斷口(即INT0引腳與INT1引腳)。微控制器的時鐘晶振為12M。

軟體部分設計採用“動態重新整理”和“定時器精確計時”的方式實現秒錶功能,時間最小刻度為0.01s,同時採用外部按鍵中斷的方式實現“計數停止”、“復位秒錶”功能,採用按鍵掃描實現“翻頁”功能。

本設計秒錶可在一次計時鐘儲存最多十次計時值。

三、硬體設計與分析

1、微控制器最小系統

51微控制器最小系統由復位電路和時鐘電路組成。

51微控制器的Reset引腳為微控制器的復位引腳,在該引腳上保持兩個機器週期的高電平,微控制器復位,PC值復位至0000H,並在Reset引腳恢復至低電平時重新開始執行ROM中的程式,由此可設計典型微控制器上電覆位與手動復位一體的復位電路,該自動復位電路能在上電後在微控制器Reset引腳上保持ms級的高電平時間,滿足設計要求,電路如圖3.1所示。

51微控制器的時鐘系統可選擇使用外部時鐘或內部RC時鐘(不準確),xtal1與xtal2引腳為微控制器外部時鐘引腳,51微控制器的機器週期為12個時鐘週期,採用12M晶體振盪器時,機器週期為1us,外部晶振電路如圖3.2所示。

圖3.1圖3.

22、數碼管顯示電路設計

本設計中採用4位一體共陽數碼管,4個共陽極使用三極體s9012進行控電平的電流放大,8個共陰極接限流電阻接到微控制器P0口;51微控制器P0屬於漏極開路結構,在老式51微控制器中作為外部資料匯流排使用,可在較高輸入輸出頻率下使用,在本設計中,使用了P0的該特點,作為數碼管的段碼資料控制。

3、中斷按鍵與按鍵掃描

51微控制器支援兩路外部中斷,分別為INT0引腳和INT1引腳,恰當使用外部中斷功能可極大地提高外部觸發訊號的響應速度。本設計中,共使用了4個按鍵,其中兩個接在兩個外部中斷引腳上以提高其響應速度實現高階功能,另外兩個按鍵接普通IO實現一般功能。

4、電路圖

圖3.

3四、軟體設計與分析

1、重新整理顯示程式

數碼管顯示部分由於其公共端共接結構,需採用重新整理顯示的方式驅動,驅動部分C語言程式如下:

P1=0xFE;//四位數碼管掃描

P0=codetab[one];

delay(3);

P1=0xFD;

P0=codetab[two];

delay(3);

P1=0xFB;

P0=0X7F;//顯示小數點

delay(3);

P0=codetab[three];

delay(3);

P1=0xF7;

P0=codetab[four];

delay(3);

2、定時器的應用

51微控制器中含有兩個定時器,分別為T0和T1,共有13位計數定時、16位計數定時、8位自動重灌計數定時三種工作模式,每個定時器可產生獨立的中斷訊號。51微控制器定時器採用“向上計數”的方式,即加滿溢位後產生中斷,定時時鐘源為系統時鐘,每1個機器週期加1,本設計中採用12M外部時鐘,對應定時器時鐘為1us,要實現0.01s精度顯示,即定時最大為10ms,這裡採用定時20us,C語言程式設計如下:

void time0()

{//定時器初始化,定時20us

TMOD=0X01;

TH0 =0XF8;

TL0 =0X30;

//TR0 =1;

EA=1;

ET0 =1;

}

3、程式流程圖

圖4.

1五、資料測試

1、秒錶計時誤差:小於0.1% 2.各按鍵觸發功能是否正常:正常 3.最大單次計時記錄次數:10次

六、參考文獻

【1】劉煥成。《工程背景下的微控制器原理及系統設計(第2版)》。清華大學出版社。2011年10月

實習報告-微控制器秒錶設計 篇二

目 錄

第1章 微控制器系統硬體電路 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 1

1.1 實習目的 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 1 1.2 微控制器型號及特性 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 1 1.3 微控制器開發板 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 2

第2章 微控制器應用系統軟體 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 5

2.1 STC下載軟體 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 5 2.2 Keil軟體 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 5 2.3 外部電路驅動 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 6

第3章 00-59秒計時器設計 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 7

3.1 電路原理圖 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 7 3.2 設計原理 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 7 3.3 實現方法 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 8

第4章 實習總結 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 9

4.1 實習體會 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 9 4.2 設計硬體體會 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 9

參考文獻 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 10 附錄1 實物圖 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 11 附錄2 系統主要程式 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 12

I

東北石油大學生產實習總結報告

第1章 微控制器系統硬體電路

1.1 實習目的

瞭解微控制器最小系統;

瞭解keilc軟體操作,程式下載及除錯方法; 掌握微控制器外部電路使用; 掌握鍵盤和數碼管顯示程式設計方法; 應用微控制器開發板進行實驗開發;

1.2 微控制器型號及特性

1、AT89S51微控制器功能及特點

5l系列微控制器中典型晶片(AT89S51)採用40引腳雙列直插封裝(DIP)形式,內部由CPU,4kB的ROM,256 B的RAM,2個16b的定時/計數器TO和T1,4個8 b的I/O端I:IP0,P1,P2,P3,一個全雙功序列通訊口等組成。特別是該系列微控制器片內的Flash可程式設計、可擦除只讀儲存器(E~PROM),使其在實際中有著十分廣泛的用途,在行動式、省電及特殊資訊儲存的儀器和系統中更為有用。5l系列微控制器提供以下功能:4 kB儲存器;256 BRAM;32條I/O線;2個16b定時/計數器;5個2級中斷源;1個全雙向的序列口以及時鐘電路。空閒方式:CPU停止工作,而讓RAM、定時/計數器、序列口和中斷系統繼續工作。掉電方式:儲存RAM的內容,振盪器停振,禁止晶片所有的其他功能直到下一次硬體復位。5l系列微控制器為許多控制提供了高度靈活和低成本的解決辦法。充分利用他的片內資源,即可在較少外圍電路的情況下構成功能完善的超聲波測距系統。 ATMEL的AT89S51是一種高效微控制器,AT89S2051是它的一種精簡版本。AT89S微控制器為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。

2、STC89C52微控制器功能及特點

STC89C52是一種帶8K位元組閃爍可程式設計可檫除只讀儲存器(FPEROM-Flash Programable and Erasable Read Only Memory )的低電壓,高效能COMOS8的微處理器,俗稱微控制器。該器件採用ATMEL搞密度非易失儲存器製造技術製造,與工業

東北石油大學生產實習總結報告

標準的MCS-51指令集和輸出管腳相相容。

STC89C52完全相容AT89C51 AT89C52 AT89S51 AT89S52 而且加入了更多新功能, 它內部有1280位元組的SRAM、8-64K位元組的內部程式儲存器、2-8K位元組的ISP引導碼、除P0-P3口外還多P4口(PLCC封裝)、片內自帶8路8位AD(AD系列),片內自帶EEPROM、片機自帶看門狗、雙資料指標等。

1.3 微控制器開發板

1、復位電路

圖1-1復位電路圖

復位是微控制器的初始化操作。其主要功能是把PC初始化為0000H,使微控制器從0000H單元開始執行程式。除了進入系統的正常初始化之外,當由於程式執行出錯或操作錯誤使系統處於死鎖狀態時,為擺脫困境,也需按復位鍵重新啟動。

RST引腳是復位訊號的輸入端。復位訊號是高電平有效,其有效時間應持續24個振盪週期(即二個機器週期)以上。若使用頻率為6MHz的晶振,則復位訊號持續時間應超過4us才能完成復位操作。

東北石油大學生產實習總結報告

2、晶振電路

圖1-2晶振電路圖

簡單地說,沒有晶振,就沒有時鐘週期,沒有時鐘週期,就無法執行程式程式碼,微控制器就無法工作。

對於一個高可靠性的系統設計,晶體的選擇非常重要,尤其設計帶有睡眠喚醒,往往用低電壓以求低功耗的系統,這是因為低供電電壓使提供給晶體的激勵功率減少,造成晶體起振很慢或根本就不能起振,這一現象在上電覆位時並不特別明顯,原因是上電時電路有足夠的擾動,很容易建立振盪,在睡眠喚醒時,電路的擾動要比上電時小得多,起振變得很不容易,在振盪迴路中,晶體既不能過激勵,容易振到高次諧波上,也不能欠激勵不容易起振,晶體的選擇至少必須考慮、諧振頻點、負載電容、激勵功率、溫度特性長期穩定性。

8051的時鐘週期即CPU的晶振的振盪頻率的振盪週期(頻率的倒數) 當振盪頻率為10MHZ時,振盪週期=1/10MHZ=0.1us機器週期是完成一個基本操作的時間單元,一個機器週期=12個時鐘週期,當振盪頻率為10MHZ時,機器週期=12x0.1=1.2us 8051的指令週期,指取出並執行一條指令的時間。一般為1-4個機器週期

3、鍵盤和中斷

矩陣式鍵盤中,行、列線分別連線到按鍵開關的兩端,行線通過上拉電阻接到+5V上。當無鍵按下時,行線處於高電平狀態;當有鍵按下時,行、列線將導通,此時,行線電平將由與此行線相連的列線電平決定。這一點是識別矩陣按鍵是否被按下的關鍵。然而,矩陣鍵盤中的行線、列線和多個鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線訊號配合起來作適當處理,才能確定閉合鍵的位置。

按鍵按下時,與此鍵相連的行線與列線導通,行線在無鍵按下時處在高電平,顯然,如果讓所有的列線也處在高電平,那麼,按鍵按下與否不會引起行線電平的變化,因此,必須使所有列線處在低電平,只有這樣,當有鍵按下時,該鍵所在的東北石油大學生產實習總結報告

行電平才會由高電平變為低電平。CPU根據行平電的變化,便能判定相應的行有鍵按下。8號鍵按下時,第2行一定為低電平,然而,第2行為低電平時,能否肯定是8號鍵按下呢?回答是否定的,因為9、10、11號鍵按下同樣使第2行為低電平。為進一步確定具體鍵,不能使所有列線在同一時刻都處在低電平,可在某一時刻只讓一條列線處於低電平,其餘列線均處於高電平,另一時刻,讓下一列處在低電平,依次迴圈,這種依次輪流每次選通一列的工作方式稱為鍵盤掃描。

外部中斷請求源:即外中斷0和1,經由外部管腳引入的,在微控制器上有兩個管腳,名稱為INT0、INT1,也就是P3.2、P3.3這兩個管腳。在內部的TCON中有四位是與外中斷有關的。IT0:INT0觸發方式控制位,可由軟體進行置位和復位,IT0=0,INT0為低電平觸發方式,IT0=1,INT0為負跳變觸發方式。IE0:INT0中斷請求標誌位。當有外部的中斷請求時,這位就會置1(這由硬體來完成),在CPU響應中斷後,由硬體將IE0清0。IT1、IE1的用途和IT0、IE0相同。內部中斷請求源TF0:定時器T0的溢位中斷標記,當T0計數產生溢位時,由硬體置位TF0。當CPU響應中斷後,再由硬體將TF0清0。TF1:與TF0類似。TI、RI:序列口傳送、接收中斷,中斷允許暫存器IE在MCS-51中斷系統中,中斷的允許或禁止是由片內可進行位定址的8位中斷允許暫存器IE來控制的。

圖1-3矩陣式鍵盤的結構

東北石油大學生產實習總結報告

第2章 微控制器應用系統軟體

2.1 STC下載軟體

圖2-1 總體方案原理框圖

2.2 Keil軟體

目前流行的51系列微控制器開發軟體是德國Keil公司推出的Keil C51軟體,它是一個基於32位Windows環境的應用程式,支援C語言和組合語言程式設計,其6.0以上的版本將編譯和模擬軟體統一為μVision(通常稱為μV2)。Keil提供包括C編譯器、巨集彙編、聯結器、庫管理和一個功能強大的模擬偵錯程式等在內的完整開發方案,由以下幾部分組成:μVision IDE整合開發環境(包括工程管理器①、源程式編輯器②、程式偵錯程式③,C51編譯器、A51彙編器、LIB51庫管理器、BL51連線/定位器、OH51目標檔案生成器以及 Monitor-

51、RTX51實時作業系統。

東北石油大學生產實習總結報告

應用Keil進行軟體模擬開發的主要步驟為:編寫源程式並儲存—建立工程並新增原始檔—設定工程—編譯/彙編、連線,產生目標檔案—程式除錯。Keil使用“工程”(Project)的概念,對工程(而不能對單一的源程式)進行編譯/彙編、連線等操作。工程的建立、設定、編譯/彙編及連線產生目標檔案的方法非常易於掌握。首先選擇選單File-New…,在源程式編輯器中輸入組合語言或C語言源程式(或選擇File-Open…,直接開啟已用其它編輯器編輯好的源程式文件)並儲存,注意儲存時必須在檔名後加上副檔名。asm(。a51)或。c;然後選擇菜Project-New Project…,建立新工程並儲存(儲存時無需加副檔名,也可加上副檔名。uv2);工程儲存後會立即彈出一個裝置選擇對話方塊,選擇CPU後點確定返回主介面。這時工程管理視窗的檔案頁(Files)會出現“Target1”,將其前面+號展開,接著選擇Source Group1,右擊滑鼠彈出快捷選單,選擇“Add File to Group „Source Group1‟”,出現一個對話方塊,要求尋找並加入原始檔(在加入一個原始檔後,該對話方塊不會消失,而是等待繼續加入其它檔案)。加入檔案後點close返回主介面,展開“Source Group1”前面+號,就會看到所加入的檔案,雙擊檔名,即可開啟該源程式檔案。緊接著對工程進行設定,選擇工程管理視窗的Target1,再選擇Project-Option forTarget „Target1‟(或點右鍵彈出快捷選單再選擇該選項),開啟工程屬性設定對話方塊,共有8個選項卡,主要設定工作包括在Target選項卡中設定晶振頻率、在Debug選項卡中設定實驗模擬板等,如要寫片,還必須在Output選項卡中選中“Creat Hex Fi”;其它選項卡內容一般可取預設值。工程設定後按F7鍵(或點選編譯工具欄上相應圖示)進行編譯/彙編、連線以及產生目標檔案。

2.3 外部電路驅動

1、串列埠

2、定時器

3、中斷

東北石油大學生產實習總結報告

第3章 00-59秒計時器設計

3.1 電路原理圖

圖3-1電路原理圖

3.2 設計原理

在設計過程中我們用一個儲存單元作為秒計數單元,當一秒鐘到來時,就讓秒計數單元加 1 ,當秒計數達到 60 時,就自動返回到 0 ,從新秒計數。

對於秒計數單元中的資料要把它十位數和個數分開,方法仍採用對 10 整除和對 10 求餘。

東北石油大學生產實習總結報告

在數碼上顯示,仍通過查表的方式完成。

一秒時間的產生在這裡我們採用軟體精確延時的方法來完成,經過精確計算得到 1 秒時間為 1.002 秒。

圖3-1 程式流程圖

3.3 實現方法

系統的軟體設計也是工具系統功能的設計。微控制器軟體的設計主要包括執行軟體(完成各種實質性功能)的設計和監控軟體的設計。微控制器的軟體設計通常要考慮以下幾個方面的問題:

(1)根據軟體功能要求,將系統軟體劃分為若干個相對獨立的部分,設計出合理的總體結構,使軟體開發清晰、簡潔和流程合理;

(2)培養良好的程式設計風格,如考慮結構化程式設計、實行模組化、子程式化。既便於除錯、連結,又便於移植和修改;

(3)繪製程式流程圖; (4)合理分配系統資源;

(5)為程式加入註釋,提高可讀性,實施軟體工程;

東北石油大學生產實習總結報告

第4章 實習總結

4.1 實習體會

大約20天的的實習已經結束了,通過這次的實習鍛鍊了我們的實踐能力,也是對我們以後的實際工作能力的具體訓練和考察過程。現在是一個高科技的時代,微控制器已經成為當今計算機應用中空前活躍的領域。因此對於我們這一專業的同學來說,學好微控制器,並正確應用微控制器是非常重要的。

此次微控制器課程設計,從選題到定稿,從理論到實踐,學到了很多的東西。同時不僅鞏固了以前所學過的知識,而且還學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,要把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。這次的課程設計還讓我學會了如何去培養我們的創新精神,從而不斷地戰勝自己,超越自己。更重要的是,我在這一設計過程中,學會了堅持不懈,不輕言放棄。

4.2 設計硬體體會

設計過程,常有一些不如意,但畢竟這是第一次做,難免會遇到各種各樣的問題。在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。在整個設計中也培養了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今後的學習工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創造過程中探索的艱難和成功時的喜悅。

微控制器實習雖然結束了,但通過實習所學到的東西將長久存在。相信這次微控制器設計帶給我們的嚴謹的學習態度和一絲不苟的科學作風將會給我們未來的工作和學習打下一個更堅實的基礎。

東北石油大學生產實習總結報告

參考文獻

[1] 張佔鬆,孫時生,伍言真。 電路和系統的模擬實踐。 北京:科學出版社電路。2000年1月

[2] Akagi H. Kanazawa Y ,Nabe A. Instantaneous reactive power compensators comprising switching devices without energy storage Trans. Ind. Applicat.,1984,20(3) 。625-630 [3] Peng F Z, Akagi H,A H;Nabae A. A novel harmonic power Record,1988,1151-1159 [4] 朱東起,姜新建,馬大銘。 無源和有源濾波器構成的並聯型綜合電力濾波系統。北京:清華大學學報(自然科學版),1999,39(3):49-52 [5] 鄧肖粵、胡曉雲《EDA在電子技術教學中的應用》 《實驗與探索》 2000年12月

[6] 張佔鬆,孫時生,伍言真。 電路和系統的模擬實踐。 北京:科學出版社電路。2000年1月

[7] 鄭春龍.Pspice在數模混合電路分析中的應用. 電子技術.1999(12) [8] 紀良文,蔣靜坪.機器人超聲測距資料的採集與處理.電子技術應用.2001(4)

東北石油大學生產實習總結報告

附錄1 實物圖

東北石油大學生產實習總結報告

附錄2 系統主要程式

#include

code unsigned char tab[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; // 0-9

unsigned char Shiwei;//定義十位 unsigned char Gewei; //定義個位 void delay(unsigned int cnt) { while(--cnt); } main() { TMOD |=0x01;//工作在模式1,16位定時 TH0=(65535-45872)/256; TL0=(65535-45872)%256; IE= 0x82; //開啟中斷 TR0=1;

//開啟定時開關

while(1)

{

P0=Shiwei;//顯示十位

P1=0xdf;

delay(300);

//短暫延時

P0=Gewei; //顯示個位

P1=0xef;

delay(300);

} }

/*

定時器中斷函式

*/

東北石油大學生產實習總結報告

void tim(void) interrupt 1 using 1 { static unsigned char second,count; TH0=(65535-45872)/256; TL0=(65535-45872)%256;

count++;

if (count==20)

{

count=0;

second++;

//秒加1

if(second==60)

second=0; Shiwei=tab[second/10];//十位顯示值處理

Gewei=tab[second%10]; //個位顯示處理

}

}

東北石油大學生產實習總結報告

微控制器課程設計報告多功能秒錶 篇三

青島理工大學琴島學院

課程設計報告

課題名稱:微控制器原理課程設計 學院:機電工程系

專業班級:電氣工程及其自動化103班 學號:201002

學生:

指導老師:

青島理工大學琴島學院教務處2012年 12月21 日

微控制器課程設計秒錶系統設計 篇四

微控制器課程設計

學院:資訊工程專業:

——秒錶系統設計

一,設計目的:

1,熟悉51微控制器的內部結構,計數器,中斷控制器等的用法,來實現簡單的控制應用系統。

2,通過簡單系統的設計瞭解微控制器應用系統的設計與開發過程及其相應的除錯程式過程。

二,設計任務:

實驗通過微控制器的定時器/計數器定時和計數原理,設計簡單的計時器系統,擁有正確的計時、暫停、清零、快加功能,並同時可以用數碼管顯示,在現實生活中應用廣泛,具有現實意義。

三,設計題目:

秒錶系統設計——用AT89C51設計一個2位LED數碼顯示“秒錶”,顯示時間為00~99秒,每秒自動加一。另設計一個“開始”按鍵和一個“復位”按鍵。呼叫子程式:暫停鍵子程式,計時鍵子程式,清0鍵子程式,加一子程式, 顯示子程式,定時子程式,所用特殊暫存器:暫存器A,暫存器C,所用中斷:外部中斷INT0、INT1,定時器T0、T1

四,設計的硬體接線圖:

五,設計思路及描述

要求進行計時並在數碼管上顯示時間,則可利用DVCC系列微控制器微機模擬實驗系統中的晶片8032(晶片的功能類似於晶片AT89C51,其管腳功能也和AT89C51的管腳功能類似)中的P3.2管腳做為外部中斷0的入口地址,並實現“開始”按鍵的功能;將P3.3做為外部中斷1的入口地址,並實現“清零”按鍵的功能;將P3.0做為資料訊號DATA輸入的入口地址;將P3.1做為時鐘訊號CLK輸入的入口地址。定時器T0作為每秒加一的定時器;定時器T1作為“快加”鍵的定時器。其中“開始”按鍵當開關由1撥向0(由上向下撥)時開始計時;“清零”按鍵當開關由1撥向0(由上向下撥)時數碼管清零,此時若再撥“開始”按鍵則又可重新開始計時。

六,流程圖

七,程式 源程式: ORG

0000H AJMP

MIAN ;主程式入口地址 ORG

0003H

AJMP

ZHONGDUAN0 ;中斷0入口地址

ORG

000BH

AJMP YANSHI ;定時器T0入口地址

ORG

0013H

AJMP

ZHONGDUAN1 ;中斷1入口地址

ORG

001BH

AJMP

DINGSHI1 ;定時器T1入口地址

ORG

0030H

; 主程式

;***********************************************************

MAIN: MOV

TCON,#05H ;主程式開始 外部中斷跳變模式

MOV

TMOD,#11H;定時器0,1模式1 MOV

IE,#8FH ;開總中斷,中斷0,1,定時器0,1 MOV

DPTR,#TAB MOV

R1,#00H MOV

R2,#00h MOV

R3,#40 ;迴圈次數40 MOV

TL0#2CH ;置初值,定時25MS

MOV

TH0,#0CFH

MOV

TL1#78H ;置初值,定時10MS

MOV

TH1,#0ECH CLR TR0 ;關定時器

CLR

TR1 ;*********************************************************** ; 暫停鍵K3,快加鍵K4程式

;*********************************************************** HERE:JB P1.0,HERE SHOW:

CLR

TR1 CLR

TR0 ACALL

XIANSHI KUAIJIA

:JB P1.2,KUAIJIA ;等待P1.2為0 快加 CLR

TR0 SETB

TR1

HERE 3JNB

P1.2,HERE 3 AJMP

HERE ;*********************************************************** ; 外部中斷INT0子程式-----計時按鍵K1子程式

;***********************************************************

ZHONGDUAN 0:

SETB TR0 ;計時按鍵 RETI ;*********************************************************** ; 外部中斷INT1子程式----復位按鍵K2子程式

;***********************************************************

ZHONGDUAN 1: CLR TR0 ;復位按鍵

CLR

TR1

MOV

12H,#00H

MOV

11H,#00H ACALL

XIANSHI ;呼叫顯示子程式

MOV

R1,#00H

MOV

R2,#00H RETI ;*********************************************************** ; 加一子程式

;***********************************************************

JIA1:

INC

R1 ;加1子程式

CJNE R1,

#0AH ,LOOP ;判斷是否到表尾

MOV

R1,#00H INC

R2

CJNE

R2,#0AH,LOOP

MOV

R2,#00H

LOOP: MOV

12H,R1 ;重新賦值

MOV

11H,R2

RET ;*********************************************************** ; 顯示子程式

;*********************************************************** XIANSHI: MOV R7,#02H ;2個數碼管顯示子程式 MOV R0,#12H LOOP5: MOV R6,#08H ;8位2進位制數 MOV A,@R0 MOVC A,@A+DPTR LOOP6: RLC A ;迴圈左移 CLR P3.1 MOV P3.0,c SETB P3.1 DJNZ R6,LOOP6 DEC R0 DJNZ R7,LOOP5 RET ;*********************************************************** ; 定時器T0子程式 ;*********************************************************** YANSHI: MOV Tl0,#2CH ;定時子程式 MOV TH0,#0CFH DJNZ R3,LOOP7 ACALL JIA1 ;呼叫加1子程式 ACALL XIANSHI ;呼叫顯示子程式 MOV R3,#40 LOOP7: RETI ;*********************************************************** ;定時器T1子程式

;*********************************************************** DINGSHI1:MOV Tl1,#78H ;置初值,定時10MS MOV TH1,#0ECH CLR TR0 SETB TR1 MOV 12H ,R1 MOV 11H,R2 JNB p1.0,SHOW ACALL JIA1 ACALL XIANSHI LOP7:TETI ;*********************************************************** TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END

八,內容提要

利用微控制器的定時器/計數器定時和記數的原理,結合dvcc實驗箱上的積體電路晶片8032、LED數碼管以及實驗箱上的按鍵來設計計時器。將軟、硬體有機地結合起來,使得系統能夠正確地進行計時,數碼管能夠正確地顯示時間。其中本設計了四個開關按鍵:其中一個按鍵按下去時以1秒加一開始計時,即秒錶開始鍵(本實驗中當開關從1變為0時開始計時),另一個按鍵按下去時暫停計時,使秒錶停留在原先的計時(本實驗中當相應開關從1變為0時即停止計時),第三個按鍵按下去時清0(本實驗中當相應開關從1變為0時即停止計時),第四按鍵按下去則是以每10ms秒快速加一計時(本實驗中當開關從1變為0時開始計時)。本設計中開始時都要使各按鍵回到各初始位置,即都處於1狀態。

九,課程設計心得體會

選擇適當的課題,不益太簡單或者太難。做到既能把課題完成又能鍛鍊自己的能力! 根據課題要求,複習相關的知識,查詢相關的資料。 根據實驗條件,找到適合的方案,找到需要的元器件及工具,準備實驗。 根據課程設計的要求和自己所要增加的功能寫好程式流程圖,在程式流程圖的基礎上,根據晶片的功能寫出相應的程式。然後再進行程式除錯和相應的修改,以達到能夠實現所要求的功能的目的。 還要根據實驗的實際情況,新增些額外程式來使系統更加的穩定,如開關的消震盪(採用延遲)。 程式要儘量做到由各個子程式組成,在有些程式後面最好加註釋,這樣在程式出錯的檢查過程中可以更容易查詢的到,也更簡潔,更明白易懂。該設計的程式可以參考DVCC系列微控制器微機模擬實驗系統實驗指導書中的串並轉換實驗,也可自己根據自己熟悉的方法來程式設計。在設計控制開關時,注意2箇中斷的開啟和關閉的先後順序,否則就會出錯。 這次的微控制器課程設計重點是理論與實際的相結合。不再只讀書了。 該設計從頭到尾都要自己參與,熟悉了對整個設計的過程,更系統的鍛鍊了自己。

十、參考文獻

蘇家健等編的《微控制器原理及應用技術》 高等教育出版社 2004年11月 餘錫存等,《微控制器原理及介面技術》 西安電子科技大學出版社 2004

孫涵芳等 《微控制器原理及應用》 北京航空航天大學出版社 1990

吳金戌等 《8051電片機的實踐與應用》 清華大學出版社

基於89C51微控制器的秒錶課程設計 篇五

摘要

隨著電子技術的發展,電子技術在各個領域的運用也越來越廣泛,人對它的認識也逐步加深。秒錶計時器秒錶計時器常常用於體育競賽及各種其他要求有較精確時間的各領域中。其中啟/停開關的使用方法與傳統的機械計時器相同,即按一下啟/停開關,啟動計時器開始計時,再按一下啟/停開關計時終止。而復位開關可以在任何情況下使用,即使在計時過程中,只要按一下復位開關,計時應立即終止,並對計時器清零。本設計就是利用所學到的電子元器件將脈衝源用數碼管顯示出來,以制承諾簡易的秒錶。

以微控制器為核心,設計一個秒錶,具有計時功能,按鍵有啟動計時、資料清零、停止、時間顯示。

採用3個LED數碼管顯示時間,計時範圍設定為0~99.9秒,即精確到0.1秒,用按鍵控制秒錶的“開始”、“暫停”、“復位”,按“開始”按鍵,開始計時;按“暫停”按鍵,系統暫停計時;再按“開始”鍵,系統繼續計時;數碼管顯示當前計時值;按“復位”按鍵,系統清零。

目錄

一、設計任務 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 3

二、設計題目 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 3

三、功能分析 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 3

四、總體設計 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 3

4.1硬體設計 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 4

4.1.1 89C51微控制器 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 4

4.1.2晶體振盪電路 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 5

4.1.3復位電路 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 6

4.1.4按鍵電路 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 7

4.1.5顯示電路 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 8

4.2引腳控制 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 9

五、電路原理圖 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 10

六、程式流程圖及程式設計 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 11

6.1程式流程圖 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 11

6.2程式設計 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 12

七、程式模擬 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 21

八、心得體會 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 22

九、致謝 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 23

十、參考文獻 。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 24

一、設計任務

以微控制器為核心,設計一個秒錶,具有計時功能,按鍵有啟動計時、資料清零、停止、時間顯示。

二、設計題目

秒錶的設計

三、功能分析

採用3個LED數碼管顯示時間,計時範圍設定為0~99.9秒,即精確到0.1秒,用按鍵控制秒錶的“開始”、“暫停”、“復位”,按“開始”按鍵,開始計時;按“暫停”按鍵,系統暫停計時;再按“開始”鍵,系統繼續計時;數碼管顯示當前計時值;按“復位”按鍵,系統清零。

四、總體設計

本實驗利用微控制器的定時器/計數器定時和計數的原理,通過採用Proteus模擬軟體來模擬實現。模擬AT89C51微控制器、LED數碼管以及控制元件來控制秒錶的計數以及計時的開啟、暫停、繼續、與復位。其中有三個數碼管來顯示資料,兩個數碼管顯示秒(兩位),另一個數碼管顯示十分之一秒,十分之一秒的數碼管計數從0~9,滿十進一後顯示秒得數碼管的個位加一,並且十分之一秒顯示清零

重新從零計數。同理當個位滿十進一後個位也清零重新計數 ,當計時超過範圍(即超過99.9秒)後,所有數碼管全部清零從新計數

4.1硬體設計

4.1.1 89C51微控制器

MCS-51系列微控制器是8位微控制器產品,89C51是其中的典型代表,基本模組包括以下幾個部分:

(1) CPU:89C51的CPU是8位的,另外89C51內部有1個位處理器

(2) R0M:4KB的片內程式儲存器,存放開發除錯完成的應用程式

(3) RAM:256B的片內資料儲存器,容量小,但作用大

(4) I/O口:P0-P3,共4個口32條雙向且可位定址的I/O口線

(5) 中斷系統:共5箇中斷源,3個內部中斷,2個外部中斷

(6) 定時器/計數器:2個16位的可程式設計定時器/計數器

(7) 通用序列口:全雙工通用非同步接收器/傳送器

(8) 振盪器:89C51的外接晶振與內部時鐘振盪器為CPU提供時鐘訊號

(9) 匯流排控制:89C51對外提供若干控制匯流排,便於系統擴充套件

89C51微控制器引腳如下圖:

4.1.2晶體振盪電路

89C51微控制器內部的振盪電路是一個高增益反相放大器,引線XTAL1和XTAL2分別為反相振盪放大器的輸入及內部時鐘工作電路的輸入和來自反相

振盪器的輸出,該反相放大器可以配置為片內振盪器。

這裡選用51微控制器12MHZ的內部振盪方式,電路如下:C2、C3起穩定振盪頻率、快速起振的作用。

晶振電路

4.1.3復位電路

採用上電覆位,上電後,由於電容充電,使RST持續一段時間的高電平,從而實現上電覆位操作。這不僅能使微控制器復位,還能是微控制器的外圍裝置同時復位,當程式出現錯誤時,可以隨時使電路復位。

電路圖如下:

復位電路

4.1.4按鍵電路

當按鍵被按下時,相應的引腳被拉低,經掃描後,獲得鍵值,並執行鍵功能程式,因此按下不同的按鍵,將執行不同的功能程式。

電路圖如下:

按鍵電路

4.1.5顯示電路

採用3個LED數碼管,LED是七段顯示器,內部有7個條形發光二極體和1個小圓點發光二極體,根據各管的亮暗組成字元。

在用數碼管顯示時,有靜態和動態兩種選擇,這裡採用LED動態顯示,用P0、P1、P2口驅動顯示,由於P0口沒有上拉電阻,因此P0口需要外接上拉

電阻才能輸出高電平,這裡使用8個4.7k的電阻作為上拉電阻。

電路圖如下:

顯示電路

4.2引腳控制

P0.0—P0.7、P2.0—P2.

7、P1.0—P1.7對應三個數碼管的a、b、c、d、e、f、g段和小數點位;P0控制數碼管十位的顯示,P2控制數碼管個位的現實,P1控制小數點後一問的顯示,P3.2、P3.

3、P3.4分別接。

五、電路原理圖

用Proteus軟體畫出主電路圖如下:

六、程式流程圖及程式設計

6.1程式流程圖

6.2程式設計

程式的各個組成模組及工作流程描述:

(1)秒錶的初始化

根據程式流程圖,先進行秒錶的初始化,即:①將I/O口P3全寫一,為秒錶的控制輸入做好準備;②將數碼管全部置零,使其處於秒錶計時的初始狀態;③將工作暫存器R0~R2以及30H初始化,留待後面的計時程式備用;④將定時器0置於工作方式1,併為其裝入計時預置數D8FE(因為程式執行過程中佔用的時間會導致一定誤差,此為經實物測試之後的修正值),即將定時器定為每10ms溢位;⑤開總中斷允許和定時器0中斷允許。初始化完成後,即進入之後的按鍵掃描程式。

(2)按鍵檢測程式

輪流檢測開始計時(P3.2)、暫停計時(P3.3)、秒錶清零(P3.4)三個按鍵。若發現有一個按鍵出現低電平(可能被按下),則延時10ms(呼叫延時子程式DELAY),延時完成後,若發現低電平消失,則說明該按鍵實際上未被按下,此時轉回按鍵檢測處繼續檢測;若發現仍然是低電平,則說明此鍵確實被按下了,此時就跳轉至相應的程式標號處,執行相應的功能。

(3)開始計時

若確認“開始計時”鍵被按下,則跳轉至程式標號“RUN”處,將定時器0計時允許控制位TR0置位,則定時器開始執行。此動作完成後,返回按鍵檢測程式,等待操作者的下一次指令。

(4)計時程式

定時器0計時至10ms,溢位,引發中斷,程式跳轉至定時器0中斷服務程式入口000BH處執行。程式跳轉至中斷服務程式TIME0。由於秒錶的最小計時單位是0.1s,即100ms,因此需加入軟體計時,使定時器0溢位10次之後才改變數碼管的顯示狀態。因此每來一次中斷就將30H中的數加1,若30H中的數沒有到10,則給定時器0重新裝入預置數,之後中斷返回並繼續等待中斷;到10了,才進入顯示程式,改變數碼管的顯示狀態,執行完畢之後中斷返回並繼續等待中斷。

(5)顯示程式

將數碼管的段選碼放在數表TAB中。每次100ms計時完成後,將R0中的值(初值為0)送入A,然後自加1。。若R0中的值沒到10,則使用累加器A查表,並將查得的數碼管段選碼送入毫秒位數碼管。之後將30H中的數置零,中斷返回。若發現R0中的數到10了,則將R0置零,並轉入秒位進位子程式SECOND,向秒位進位,之後,繼續照常向毫秒位送數。

在秒位進位子程式SECOND中,由於要用到累加器A,因此先將其推入堆疊保護。將R1中的值(初值為10)送入A,然後自加1。。若R1中的值沒到20,則使用累加器A查表,並將查得的數碼管段選碼送入秒位數碼管。若發現R1中的數到20了,則將R1重置為10,並轉入十秒位進位子程式SECOND1,向十秒位進位,之後,繼續照常向秒位送數。完成後,彈出ACC和PSW,子程式返回。

十秒位進位子程式與秒位進位子程式相似,只是沒有向下一位進位的功能。

(6)暫停計時

若確認“暫停計時”鍵被按下,則跳轉至程式標號“PAUSE”處,將定時器0計時允許控制位TR0置零,則定時器暫停執行。此動作完成後,返回按鍵檢測程式,等待操作者的下一次指令。

(7)秒錶清零

若確認“秒錶清零”鍵被按下,則跳轉至程式標號“STOP”處,將TR0置零,關閉定時器0執行。並且將數碼管、工作暫存器、定時器0預置數全部重置,使其處於秒錶計時的初始狀態。此動作完成後,返回按鍵檢測程式,等待操作者的下一次指令。

(8)延時程式

用於按鍵延時防抖,延時10ms。

程式清單如下:

ORG 0000H ;程式開始

AJMP START ;跳轉到主程式START ORG 000BH ;定時器0中斷的地址入口

AJMP TIME0 ;定時器0溢位,跳轉到中斷程式TIME0 START: ;主程式

MOV P3,#0FFH ;輸入埠P3全寫1 MOV P0,#3FH ; MOV P1,#3FH ;

MOV P2,#0BFH ;數碼管初始化

MOV 30H,#00H ; MOV R0,#00H ; MOV R1,#0AH ; MOV R2,#00H ;MOV TMOD,#01H ;MOV TH0,#0D8H ; MOV TL0,#0FEH ;SETB EA ;SETB ET0 ;READ: ;L1:JB P3.2,L2 ; LCALL DELAY ;JB P3.2,L1 ; AJMP RUN ;L2:JB P3.3,L3 ;

工作暫存器初始化

定時器0工作於方式1

定時器0預置數(D8FEH=55550D)

開總中斷允許

開定時器0中斷允許

讀鍵程式

按鍵延時防抖

確認計時鍵被按下,開始/繼續計時15

LCALL DELAY ;按鍵延時防抖

JB P3.3,L2 ; AJMP PAUSE ;確認暫停鍵被按下,暫停計時

L3:JB P3.4,L1 ; LCALL DELAY ;JB P3.4,L3 ; AJMP STOP ;RUN: ;SETB TR0 ;AJMP READ ; PAUSE: ;CLR TR0 ; AJMP READ ; TIME0: ;INC 30H ; MOV A,30H ;

按鍵延時防抖

確認清零鍵被按下,秒錶重置

計時鍵按下,跳轉至此

定時器0開始/繼續執行

暫停鍵按下,跳轉至此

定時器0溢位,中斷,跳轉至此16

CJNE A,#0AH,TIME1 ;30H單元中的值到10了嗎?(計時到10毫秒了嗎,也就是說,該向毫秒位送數了嗎?) MOV DPTR,#TAB ;30H中的值到10了,順序執行

MOV A,R0 ; INC R0 ; CJNE R0,#0AH,GET ;R0MOV R0,#00H ; LCALL SECOND ;進位

GET: ;MOVC A,@A+DPTR ; MOV P1,A ;MOV 30H,#00H ;TIME1: ; MOV TH0,#0D8H ; MOV TL0,#0FEH ;RETI ;中的值到10了嗎?(該向秒位進位了嗎?)

到了,R0清零,呼叫進位子程式SECOND,向秒位沒到,跳過進位子程式

查表並向數碼管毫秒位送數

重置30H單元

給定時器0重新預置數

中斷返回

SECOND: ;秒位進位子程式

PUSH ACC ; PUSH PSW ;將ACC和PSW推入堆疊保護

MOV A,R1 ; INC R1 ; CJNE R1,#14H,GET1 ;R1了嗎?

MOV R1,#0AH ; LCALL SECOND1 ;位進位

GET1: ;MOVC A,@A+DPTR ; MOV P2,A ;POP PSW ; POP ACC ;PSW,ACCRET ;SECOND1: ;中的值到20了嗎,也就是說,該向十秒位進位到了。R1重置,呼叫進位子程式SECOND1,向十秒沒到,跳過進位子程式

查表並向數碼管秒位送數

出棧

子程式返回

十秒位進位子程式

PUSH ACC ; PUSH PSW ;將ACC和PSW推入堆疊保護

MOV A,R2 ; INC R2 ; CJNE R2,#0AH,GET2 ;R2

MOV R2,#00H ;GET2: ;MOVC A,@A+DPTR ; MOV P0,A ;POP PSW ; POP ACC ;PSWRET ;STOP: ;MOV P3,#0FFH ; MOV P0,#3FH ; MOV P1,#3FH ;

中的值到10了嗎,也就是說,該將此位歸零了到了,R2清零

沒到,跳過清零程式

查表並向數碼管十秒位送數 ,ACC出棧

子程式返回

清零鍵按下,跳轉至此 嗎?

MOV P2,#0BFH ;數碼管清零

MOV 30H,#00H ; MOV R0,#00H ; MOV R1,#0AH ; MOV R2,#00H ;CLR TR0 ;MOV TH0,#0D8H ; MOV TL0,#0FEH ;AJMP READ ; DELAY: ;MOV R3,#50D ; D1:MOV R4,#100D ; D2:DJNZ R4,D2 ; DJNZ R3,D1 ; RET ;工作暫存器初始化計時器0停止計時定時器0預置數

延時10ms子程式

子程式返回

TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH ;數碼管段選碼數表

END ;程式結束

七、程式模擬

將以上程式清單匯入先前做好的Proteus模擬電路,彙編之後,按 鍵開始進行模擬。

模擬結果如下:

模擬結果描述:

按“開始”鍵,秒錶開始計時;按“暫停”鍵,秒錶暫停計時;再按“開始”鍵,秒錶繼續計時;按“清零”鍵,秒錶清零。

八、心得體會

雖然秒錶是一個非常簡單的功能,但要在微控制器中使用匯編語言來實現這個功能,仍然花了我不少心思。

首先是計時的問題,由於微控制器計時器最大隻能計時65.5ms,因此要實現毫秒位的變化,我採用了軟體計時的方法,微控制器只需計時10ms,然後用軟體重複10次,即可達到計時100ms的目的。

顯示方面,為了使程式設計簡單,我使用了靜態顯示。不過這使得佔用I/O口線過多,而且連線複雜繁瑣,為實物的製作帶來了不便。在以後的學習和應用中我會努力加深動態掃描顯示的理解,爭取熟練運用。

根據書本知識,我們一開始只給P0口加上了上拉電阻,但是實物做成後我們發現P1和P2口得輸出顯示非常暗,初步確定是驅動能力不足的問題後,我們給二者也加上了上拉電阻,結果使得顯示正常了。由此我們瞭解到,實踐才是檢驗真理的唯一標準,有時候書本上的知識需要經過實踐的改進,才能運用到實際中。

此次課程設計鞏固了我的基礎知識,提高了我的應用水平,鍛鍊了我的動手能力,使我受益匪淺。然而,在吸取經驗的同時,我也吃了不少教訓。在程式設計、模擬、焊接方面都走了不少彎路。但是,學則要有所收穫,經過此次的鍛鍊,我在很多方面都已經有所提高,知識也掌握得更加紮實了。

在今後的學習和實踐中,我將繼續努力鑽研,提高自己,爭取在學術和記憶上獲得更大的進步。

九、致謝

本設計是在李芳老師的悉心指導下完成的,李老師淵博的知識,嚴謹的治學態度,一絲不苟的工作作風,平易近人的性格都是我學習的楷模。在論文的研究及整理期間,李老師給了我很大的支援和鼓勵,才使得論文得以順利的完成,在此謹嚮導師表示忠心的感謝和崇高的敬意。

同時還要感謝同學們,他們也給了我很大的支援和幫助。

十、參考文獻

1) 《微控制器與介面技術》。虞滄。電子工業出版社。2012.10 2) 李朝青。 微控制器原理及介面技術[M]。 北京:北京航空航天大學出版社。2005.10 3) 夏繼強。 微控制器實驗北京:北京航空航天大學出版社。2001. 4) 孫德輝,鄭士富。 微型計算機控制系統。 北京:冶金工業出版社。2002

5) 肖洪兵。 跟我學用微控制器。 北京:北京航空航天大學出版社。2002.8 6) 陳汝全。 實用微機與微控制器控制技術。 電子科技大學出版社。1995.7 7) 王湧。 微控制器與嵌入式系統應用[J],2002(3):58-61 8) 羅亞非。 凌陽16位微控制器應用基礎[M]。 北京:北京航空航天大學出版社。2003.5 9) 李慶。 Keil C51 使用詳解 V3.0[M]。 北京:北京理工大學出版

10) 李華。 MCS-51系列微控制器實用介面技術。 北京航空航天大學出版社。1993,162-229 11) 溫鋼雲,黃道平。 計算機控制技術。 廣州:華南理工大學出版社。2002 12) 肖洪兵。 微控制器應用技術。 自編教材

13) 孫德輝,鄭士富。 微型計算機控制系統。 北京:冶金工業出版社。2002 14) 韓來吉。用 89C51實現急救車優先的交通燈控制系統[J] 15) 陳志強,芮延年, 城市路口交通燈多級智慧控制方法的研究J.2007 16) 李廣弟。 微控制器基礎。 北京:北京航空航天大學出版社。2001,56 17) 馬忠梅等。 微控制器的C語言應用程式設計。 北京航空航天出版社。1999

18) 劉瑞新,微控制器原理及應用教程,北京機械工業出版社,2003 19) 李傳軍,微控制器原理及應用,河南科技出版社,2006 20) 饒慶, 89C51微控制器課程設計實訓教材,北京人民郵電出版社,2003

  • 文章版權屬於文章作者所有,轉載請註明 https://wenfanwang.com/zh-tw/shiyongwen/shiyongjingxuan/ppezrm.html
專題