當前位置:文範網 >

實用文 >實用文精選 >

基於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/shiyongwen/shiyongjingxuan/ppezrm.html
專題