基于51單片機(jī)的簡(jiǎn)易秒表設(shè)計(jì)
《基于51單片機(jī)的簡(jiǎn)易秒表設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的簡(jiǎn)易秒表設(shè)計(jì)(34頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、I 畢業(yè)論文畢業(yè)論文 論文題目論文題目 5151 單片機(jī)的簡(jiǎn)易秒表設(shè)計(jì)單片機(jī)的簡(jiǎn)易秒表設(shè)計(jì) 指導(dǎo)教師指導(dǎo)教師 專專 業(yè)業(yè) 計(jì)算機(jī)應(yīng)用技術(shù)(電子信息工程技術(shù))計(jì)算機(jī)應(yīng)用技術(shù)(電子信息工程技術(shù))班班 級(jí)級(jí) 電子電子 12011201 姓姓 名名 學(xué)學(xué) 號(hào)號(hào) 12032003021203200302 2015 年 3 月 30II基于 51 單片機(jī)的簡(jiǎn)易秒表設(shè)計(jì)摘要:摘要:本次論文設(shè)計(jì)的電子秒表電路主要由 STC89C52 單片機(jī)最小系統(tǒng)電路、數(shù)碼管動(dòng)態(tài)顯示電路和控制電路組成。秒表具備啟動(dòng)、停止、清零功能組計(jì)時(shí)蜂鳴器報(bào)時(shí)等功能,在單片機(jī)最小體系的基礎(chǔ)上增加顯示電路和控制電路來(lái)完成的系統(tǒng)的設(shè)計(jì)的。關(guān)鍵
2、詞關(guān)鍵詞 :51 單片機(jī);秒表;數(shù)碼管;IIIDesign of simple stopwatch based on 51 chip AbstractAbstract:Using this chip STC89C52 chip as the MCU control port control digital tube display minutesand seconds LED digital tube, we must first understand the working principle and the way it, using the button to achieve a sto
3、pwatch start stop reset function packet timing buzzertime accurate to 0.01 seconds.The design of this thesis draw using microcontroller schematic diagram of LED digital tubecircuit diagram and timer mode control, and realize the design of the hardware circuit and programming to complete the final co
4、mmissioning software part of the box in the experimentabove, the stopwatch with start, stop, reset function group timing buzzer timekeeping functions. Through this design deepen the comprehensive understanding of SCM curriculum, and to review and grasp the further understanding of SCM course and its
5、 application. Grasp the external setting and programming principle of interrupt, timer.Through this graduation design, to integrated single-chip programming and program verification.Through the experimental system of single chip microcomputer timer counter,timer and counter the simple design princip
6、le. The design is based on SCM minimumsystem increased on the display circuit and the control circuit design of the system to complete the. Electronic stopwatch circuit mainly by the STC89C52 microcontrollerminimum system circuit, digital tube dynamic display circuit and a control circuit.KeyKey wor
7、dswords: 51 singlechip; stopwatch; circuit;IV目 錄第一章第一章 緒論緒論.1 11.1 選題背景.11.2 研究目標(biāo)和意義.1第第 2 2 章章 系統(tǒng)方案設(shè)計(jì)系統(tǒng)方案設(shè)計(jì).5 52.1 設(shè)計(jì)要求.52.2 工作原理及系統(tǒng)整體方案設(shè)計(jì).22.2.1 工作原理 .22.2.2 系統(tǒng)整體設(shè)計(jì)方案.3第第 3 3 章章 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì).4 43.1 單片機(jī)的選型.43.2 時(shí)鐘電路.43.3 復(fù)位電路.53.5 顯示電路.5第第 4 4 章章 系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì).6 64.1 定時(shí)初值的計(jì)算 .64.2 初始化 .74.3 判斷有無(wú)鍵按下,
8、并進(jìn)行按鍵處理 .74.4 顯示子程序設(shè)計(jì) .74.5 中斷子程序設(shè)計(jì) .8第第 5 5 章章 測(cè)試及仿真結(jié)果測(cè)試及仿真結(jié)果.9 9第第 6 6 章章 結(jié)語(yǔ)結(jié)語(yǔ).1 11 1參考文獻(xiàn)參考文獻(xiàn).1 12 2致致 謝謝.1313附附 錄錄.1414V1第一章第一章 緒論緒論1.11.1 選題背景選題背景 單片機(jī)自上世紀(jì) 70 年代以來(lái),由于其價(jià)格不是很高,因此受到百姓的重視和關(guān)注,所以發(fā)展很快,單片機(jī)目前應(yīng)用廣泛。單片機(jī)的主要特點(diǎn)就是體積小、集成度高、重量強(qiáng)、抗干擾能力強(qiáng)、對(duì)環(huán)境的要求低、價(jià)格低廉、可靠性高、靈活性強(qiáng)、開發(fā)較為容易。正因?yàn)閱纹瑱C(jī)有這些優(yōu)良的特性,所以被廣泛應(yīng)用于工業(yè)自動(dòng)化控制,自動(dòng)
9、檢測(cè),智能儀器,智能化家用電器,航空航天和軍事技術(shù)領(lǐng)域,我們可以利用單片機(jī)系統(tǒng)跟其他系統(tǒng)相結(jié)合,以獲得很高的經(jīng)濟(jì)效益,更重要的意義在于單片機(jī)的應(yīng)用改變了控制系統(tǒng)的設(shè)計(jì)思想和方法,極大推動(dòng)了工業(yè)的發(fā)展。通過硬件以及軟件的組合來(lái)取代單純的硬件確實(shí)能提高系統(tǒng)性能的控制技術(shù)。本文所要論述的就是通過單片機(jī)來(lái)控制 LED 顯示屏顯示秒表數(shù)字,秒表是電器制造、電信、工業(yè)自動(dòng)化控制、國(guó)防、實(shí)驗(yàn)室及科研單位理想的計(jì)時(shí)工具。本秒表/時(shí)鐘設(shè)計(jì)就是利用單片機(jī)的上述特點(diǎn),采用目前市場(chǎng)上性價(jià)比比較高單的 STC89C52 單片機(jī)設(shè)計(jì)而成的最小系統(tǒng)。它在實(shí)際生活中具有十分廣泛的應(yīng)用。1.21.2 研究目標(biāo)和意義研究目標(biāo)和意
10、義 本設(shè)計(jì)是在單片機(jī)最小系統(tǒng)的基礎(chǔ)上增加顯示電路和控制電路來(lái)完成電子秒表的硬件電路,以達(dá)到 0.01s 的精度以及啟動(dòng)、暫停、清零等功能。電子秒表電路主要由 STC89C52 單片機(jī)最小系統(tǒng)電路、四段數(shù)碼管動(dòng)態(tài)顯示電路和控制電路等模塊組成,它能實(shí)現(xiàn)四位數(shù)碼顯示和多次計(jì)時(shí),能通過控制電路能控制時(shí)間的暫停和開始,能夠多次計(jì)時(shí)、查詢計(jì)時(shí)時(shí)間。秒表是一種常用的測(cè)時(shí)儀器。 本設(shè)計(jì)從總體要求出發(fā),本次設(shè)計(jì)采用自頂向下逐步細(xì)化的方法,將系統(tǒng)模塊化,使得系統(tǒng)具有很強(qiáng)的擴(kuò)充性,并且在實(shí)現(xiàn)設(shè)計(jì)的基礎(chǔ)上,采用maxplus 的仿真環(huán)境進(jìn)行仿真實(shí)驗(yàn),得到理想的仿真效果。本設(shè)計(jì)完成的秒數(shù)計(jì)時(shí)功能,實(shí)現(xiàn)了在許多特定場(chǎng)合進(jìn)
11、行時(shí)間追蹤的功能,在社會(huì)生活中具有十分廣泛的應(yīng)用價(jià)值。 2第第 2 2 章章 系統(tǒng)方案設(shè)計(jì)系統(tǒng)方案設(shè)計(jì)2.12.1 設(shè)計(jì)要求設(shè)計(jì)要求數(shù)字秒表設(shè)計(jì)由單片機(jī) AT89C51、數(shù)碼管、開關(guān)、電阻、電容等部分組成。其功能要求是用 AT89C51 設(shè)計(jì)一個(gè) 2 位 LED 數(shù)碼顯示的“秒表”,顯示時(shí)間為00-99 秒,每秒自動(dòng)加一。另外還設(shè)計(jì)了一個(gè)“開始”按鍵、一個(gè)“復(fù)位”按鍵和一個(gè)“暫?!卑存I。按下“啟動(dòng)”按鈕,開始計(jì)數(shù),從 00 開始加二自動(dòng)數(shù)碼管顯示;按“暫停”按鈕,系統(tǒng)停止計(jì)數(shù),數(shù)碼管顯示計(jì)數(shù)。本系統(tǒng)應(yīng)具有以下四種功能:1 1 時(shí)鐘功能時(shí)鐘功能對(duì)于時(shí)鐘功能,我們需要在數(shù)碼管上顯示小時(shí)、分鐘和秒鐘
12、,因此,可以在內(nèi)部存儲(chǔ)空間分別定義它們的顯示、緩存空間,來(lái)存放小時(shí)、分鐘和秒鐘的BCD 碼,每個(gè) BCD 碼各需要 2 個(gè)字節(jié)的儲(chǔ)存空間。隨著時(shí)鐘的不停走動(dòng),因此有必要采取自動(dòng)定時(shí)內(nèi)部定時(shí)器,使用定時(shí)器中斷時(shí)間的數(shù)值刷新定時(shí)處理器。定時(shí)器 51 單片機(jī)的 16 位定時(shí)器工作模式。當(dāng)晶振為 12MHz 時(shí),16 位定時(shí)器的最大定時(shí)值為 60ms;因?yàn)樵谟?jì)秒表功能也需要使用 1 個(gè)定時(shí)器,因此,我們使用第一種方法,只使用 1 定時(shí)器 T0 的使用。由于秒表在計(jì)功能時(shí)也需要用到 1 個(gè)定時(shí)器,因此,我們采用第一個(gè)方法,只使用 1 個(gè)定時(shí)器,例如使用T0。為了達(dá)到較為準(zhǔn)確的計(jì)時(shí),使 T0 的溢出時(shí)間為
13、 50ms,使用一個(gè)字節(jié)作為軟件計(jì)數(shù)器 ST,計(jì)數(shù)值為 20。中斷處理程序定時(shí)器減 1 操作時(shí),ST 是 0,此時(shí)存儲(chǔ)緩沖時(shí)間,顯示更新分鐘,秒。 2 2 計(jì)時(shí)功能計(jì)時(shí)功能 當(dāng)作為一個(gè)計(jì)時(shí)秒表功能,還需要一個(gè)定時(shí)器 10ms,單片機(jī)定時(shí)器 1 在這種情況下使用。在 TIMER1 的中斷處理程序中更新 SS 和 ss 的緩存空間,與上面類似。 3 3 功能按鍵功能按鍵再看按鍵的處理,這 3 鍵可以使用中斷的方法也可以用來(lái)確定查詢的方法。3對(duì)于 A、B 鍵,主要功能在于功能切換和數(shù)值復(fù)位,對(duì)于時(shí)間的要求不是很嚴(yán)格,而 C 鍵主要用于時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此認(rèn)為 A,B 鍵使用查詢模式,
14、和 C 鍵與外部中斷。4 4 中斷嵌套和控制中斷嵌套和控制現(xiàn)在在我的方案中有 3 個(gè)中斷,T0、T1 中斷和外部中斷 INT0。這 3 個(gè)中斷的特點(diǎn)是:T0 的工作是連續(xù)的,可以在誤差范圍內(nèi)可以被打斷但不可以停止;T1 的工作同樣可以在誤差范圍內(nèi)被打斷,但可以被 INT0 停止;INT0 是用來(lái)啟動(dòng)或停止 T1 的。 2.22.2 工作原理及系統(tǒng)整體方案設(shè)計(jì)工作原理及系統(tǒng)整體方案設(shè)計(jì)2.2.12.2.1 工作原理工作原理從00開始計(jì)數(shù)開始按鍵開始計(jì)數(shù)復(fù)位按鍵暫停按鍵數(shù)碼管顯示00數(shù)碼管顯示當(dāng)前數(shù)值圖圖 2.12.1 系統(tǒng)工作原理圖系統(tǒng)工作原理圖該系統(tǒng)主要由三部分組成:鍵控信號(hào)處理軟件,單片機(jī),
15、數(shù)碼管顯示。電路的操作,通過開關(guān)的關(guān)鍵決定其運(yùn)作模式,通過單片機(jī)內(nèi)部程序進(jìn)行相應(yīng)的處理,在數(shù)碼管上顯示。一個(gè)機(jī)器周期的 12M 晶振使用 1 微秒,二延時(shí)所產(chǎn)生的循環(huán),存儲(chǔ)在單片機(jī)(掃描時(shí)間值可以是積極的,也有倒計(jì)時(shí)),并在數(shù)碼管上顯示通過輸出。此外,數(shù)碼管連接的上拉電阻,是為了確保不壓銷的外部鍵,負(fù)載保持引腳是低的電流。系統(tǒng)整體設(shè)計(jì)如圖 2.1 所示。2.2.2 系統(tǒng)整體設(shè)計(jì)方案數(shù)字秒表系統(tǒng)主要完成對(duì)計(jì)時(shí)實(shí)時(shí)的顯示,精度達(dá)到 0.01s,以及通過功能鍵可以使當(dāng)前計(jì)時(shí)暫?;蚯辶?。系統(tǒng)主要包括時(shí)鐘電路、復(fù)位電路、按鍵電路以及數(shù)碼管顯示電路。系統(tǒng)采用六個(gè)共陽(yáng)極數(shù)碼管,其中八位數(shù)據(jù)口與單片機(jī)的 P0
16、 口通過 74LS245 雙向總線收發(fā)器相接,以增加 P0 的驅(qū)動(dòng)能力。6 個(gè)片選信號(hào)連接單片機(jī) P2 口的低六位。該電路可以滿足顯示定時(shí)時(shí)間,顯示 0.01s 的最小單位,顯示時(shí)間范圍在40 到 59 分鐘 59.99 秒。3 個(gè)功能鍵連接到 P3 口的低三位,控制系統(tǒng)的計(jì)時(shí)、暫停和清零。系統(tǒng)的整體組成框圖如圖 2.2 所示。時(shí)鐘電路按鍵電路數(shù)碼管單片機(jī)復(fù)位電路圖 2.2 系統(tǒng)整理組成框圖5第第 3 3 章章 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì) 電路原理圖最基本最重要的要求就是要正確,然后就是布局必須合理不能雜亂無(wú)章,最后是布局還要美觀,下圖 3.1 為本設(shè)計(jì)的硬件總體電路示意圖:圖 3.1 硬件總體
17、電路示意圖3 3.1.1 單片機(jī)的選型單片機(jī)的選型AT89C2052 是一個(gè)低電壓,高性能 CMOS 8 位單片機(jī),AT89C2052 片內(nèi)含 8k bytes 的 Flash 只讀程序存儲(chǔ)器,這些制度程序存儲(chǔ)器是可反復(fù)擦寫的,以及256 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),AT89C2052 器件采用 ATMEL 公司的儲(chǔ)存技術(shù)進(jìn)行生產(chǎn),該技術(shù)具有高密度、非易失性等優(yōu)點(diǎn),并且單片機(jī)兼容標(biāo)準(zhǔn) MCS-51 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器和 Flash 存儲(chǔ)單元,AT89C2052 功能十分強(qiáng)大的,可用于許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合。 AT89C52 單片機(jī)有 40 個(gè)引腳,32
18、個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含 2 個(gè)外中斷口,3 個(gè) 16 位可編程定時(shí)計(jì)數(shù)器,2 個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52 可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和 Flash 存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash 存儲(chǔ)器可有效地降低開發(fā)成本。AT89C52 有 PDIP、PQFP/TQFP 及 PLCC 等三種封裝形式,6以適應(yīng)生產(chǎn)不同產(chǎn)品的需要。 3.23.2 時(shí)鐘電路時(shí)鐘電路時(shí)鐘電路是單片機(jī)最重要的組成部分之一,它的主要作用是產(chǎn)生 CPU 的校準(zhǔn)時(shí)序,AT89C51 時(shí)鐘信號(hào)可以通過 2 中方式得到,分別是內(nèi)部震蕩方式,第二種是
19、外部振蕩方式。這次論文采用的是內(nèi)部震蕩方式。時(shí)鐘電路的時(shí)序控制是通過外界 12MHZ 的晶振來(lái)實(shí)現(xiàn)的。XTAL1 為反向放大器輸出端,XTAL 為正向放大器的輸入端。外部連接晶體電容來(lái)構(gòu)成諧振電路,然后將該電路接到反饋電路里面去,電路接法如圖所示:圖 3.2 反饋電路接法3.33.3 復(fù)位電路復(fù)位電路單片機(jī)復(fù)位的作用是確保 CPU 和系統(tǒng)中的其他功能模塊都處在一個(gè)統(tǒng)一的初始狀態(tài),并從這個(gè)狀態(tài)開始進(jìn)行工作。當(dāng)單片機(jī)剛開始聯(lián)通電源時(shí)需要復(fù)位,斷電后或者發(fā)生故障出現(xiàn)錯(cuò)誤后也需要復(fù)位。51 系列單片機(jī)的復(fù)位信號(hào)是從RST 引腳輸人到芯片的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定之后,如
20、果 RST 引腳有一個(gè)高電平并維持 2 個(gè)系統(tǒng)機(jī)器周期(24 個(gè)振蕩周期),則 CPU 就可馬上進(jìn)行響應(yīng)并且將系統(tǒng)進(jìn)行復(fù)位處理。復(fù)位分為上電復(fù)位手動(dòng)復(fù)位和電源復(fù)位兩種情況。圖 3.2 系統(tǒng)復(fù)位電路的示意圖:7圖 3.3 復(fù)位電路示意圖3.43.4 按鍵電路按鍵電路本系統(tǒng)設(shè)置 3 個(gè)功能按鍵分別為 KEY1、 KEY2 和 KEY3, 其中 KEY1 是開始按鍵, 與 P3.0 相連,按下時(shí)數(shù)碼管開始計(jì)時(shí);KEY2 是停止按鈕,連接 P3.1數(shù)碼管,當(dāng)你按下的時(shí)候數(shù)碼管停止時(shí)間走動(dòng);KEY3 是清零按鍵,與 P3.2 相連,按下時(shí)數(shù)碼管全部清零,即全部顯示為零。當(dāng)數(shù)碼管開始計(jì)數(shù)的時(shí)候,不能直接按
21、“清除”按鈕需要首先,按下停止按鈕停止,然后按復(fù)位鍵初始化所有顯示 0。3.53.5 顯示電路顯示電路LED 顯示驅(qū)動(dòng)器的設(shè)計(jì)是一個(gè)非常重要的問題,顯示電路由 LED 顯示,驅(qū)動(dòng)電路和驅(qū)動(dòng)電路部分組成。LCD1620 液晶也被稱為 1602 字符型液晶顯示器,它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)的點(diǎn)陣型液晶模塊。它有若干個(gè) 5X7或者 5X11 等點(diǎn)陣字符位組成。每個(gè)點(diǎn)陣字符都可以顯示一個(gè)字符。每個(gè)也有間隔之間扮演的角色間距和排間距的影響因?yàn)檫@樣他可以顯示圖形 n1602lcd 指顯示每個(gè)線的距離間隔 16x2 內(nèi)容。位驅(qū)動(dòng)電路通過六只 NPN 三極管驅(qū)動(dòng)使 P2 口的低六位作為位選信號(hào),使之
22、產(chǎn)生足夠大的電流,來(lái)驅(qū)動(dòng) LED達(dá)到足夠的亮度,顯示器才能正常工作。如果驅(qū)動(dòng)電路能力差,即驅(qū)動(dòng)電流過小,數(shù)碼管顯示亮度低,而驅(qū)動(dòng)電路驅(qū)動(dòng)電流太大,這種情況下特別容易損壞數(shù)碼管。LED 顯示屏具有兩種控制模式:靜態(tài)和動(dòng)態(tài)。設(shè)計(jì)方案的選擇是動(dòng)態(tài)控制方法。由于數(shù)據(jù)顯示由信號(hào)部分代碼和代碼一起完成的,因此,也應(yīng)考慮一段和驅(qū)動(dòng)能力,驅(qū)動(dòng)能力部分必須定位驅(qū)動(dòng)能力。LDE 顯示模塊如圖 3.3 所示:8圖 3.4 顯示模塊原理圖第 4 章 系統(tǒng)軟件設(shè)計(jì)利用主程序的子程序的設(shè)計(jì)方法,來(lái)初始化定時(shí)器和相關(guān)寄存器和內(nèi)存單元的主程序,調(diào)用按鍵掃描子程序和顯示子程序,判斷時(shí)間是否為 9 分鐘 59 秒的時(shí)間。主程序設(shè)
23、計(jì)流程圖如圖 4-1 所示。 調(diào)用按鍵掃表子程序開始語(yǔ)音初始化計(jì)時(shí)時(shí)間到了9分59秒?將計(jì)數(shù)單元3FH-42H清零,將存放按鍵次數(shù)的寄存器R7清零,將存放位選值的寄存器R2清零,關(guān)閉定時(shí)器。NY調(diào)用顯示子程序計(jì)數(shù)單元清零圖 4.1 主程序設(shè)計(jì)流程圖4.14.1 定時(shí)初值的計(jì)算定時(shí)初值的計(jì)算 根據(jù)計(jì)算的時(shí)鐘頻率為 12MHz,機(jī)器周期為 1s,使用定時(shí)器/計(jì)數(shù)器 19的工作方式,定時(shí)時(shí)間 50ms。計(jì)算初值如下: 計(jì)數(shù)值 N=定時(shí)/計(jì)數(shù)器最大值 M,定時(shí)/計(jì)數(shù)器初值 X 則初值 X=M/N 機(jī)器周期 TM = 12 * 12 * 1 / 12 OSC =106 = 1 秒采用定時(shí)器工作方式 1,
24、所以初值為 X=216,50ms/1us=15536=3CB0H 所以 TH0=3CH,TL0=B0H4.24.2 初始化初始化 通過初始化設(shè)置定時(shí)器 0 和 1,總開定時(shí)器 0 中斷,分別存儲(chǔ)毫秒,秒,分鐘計(jì)數(shù)單元,3FH,40h,41h 42h,復(fù)位。關(guān)閉定時(shí)器/計(jì)數(shù)器 T0,數(shù)字鍵存儲(chǔ)寄存器 R1 復(fù)位。4.34.3 判斷有無(wú)鍵按下,并進(jìn)行按鍵處理判斷有無(wú)鍵按下,并進(jìn)行按鍵處理 因?yàn)橹挥幸粋€(gè)連接到 P3.0 連接獨(dú)立按鍵,所以連接 P3.0 使用,讀取按鈕狀態(tài) keyend 命令。當(dāng) P3.00 是一個(gè)鍵被按下,然后去抖延時(shí)去抖延時(shí)10ms,將存儲(chǔ)的數(shù)字鍵再加上 1 的 R7 寄存器,然
25、后判斷 R1 的值是什么,如果是 1(代表第一個(gè)按鈕)和 SETB tr0。則用 SETB TR0 指令啟動(dòng)定時(shí)器 T0;如果是 2 則用 CLR TR0 指令關(guān)閉定時(shí)器 T0;如果是 3 則將存放時(shí)間的3FH,40H,41H,42H 單元及存放按鍵次數(shù)的 R1 清零。程序設(shè)計(jì)流程圖如圖 4.2所示:10開始將累加器A的內(nèi)容壓入堆棧N按鍵按下次數(shù)子程序返回有鍵按下嗎?按鍵延時(shí)消抖關(guān)閉定時(shí)器秒表停止計(jì)數(shù)秒表復(fù)位顯示0啟動(dòng)定時(shí)器秒表開始計(jì)數(shù)將堆棧內(nèi)容彈出至累加器AN圖 4.2 節(jié)點(diǎn)無(wú)線通信模塊的軟件流程4 4.4.4 顯示子程序設(shè)計(jì)顯示子程序設(shè)計(jì) 顯示子程序是用來(lái)儲(chǔ)藏在 3Fh,40h,41h,4
26、2 單位計(jì)數(shù)的值,查找和計(jì)算相應(yīng)的代碼段,然后將信息發(fā)送給對(duì)應(yīng)的 LED 數(shù)碼管顯示 。程序設(shè)計(jì)流程圖如圖 4-3 所示。 開始將R0賦初值3FH,R2賦初值08H,R3賦初值4N中斷返回Y累加器A清零,通過MOVA,R0指令讀數(shù)計(jì)數(shù)單元的值根據(jù)計(jì)數(shù)單元的值,通過查表指令,找到跟計(jì)數(shù)值相對(duì)應(yīng)的顯示斷碼。將查表的顯示送數(shù)碼顯示器,并從R2讀取位選碼,并送P2口。顯示延時(shí)R0加1,準(zhǔn)備讀取下一計(jì)數(shù)單元,修改R2的值,準(zhǔn)備顯示下個(gè)數(shù)碼管。4個(gè)數(shù)碼管掃描管顯示完了嗎?圖 4.3 顯示子程序流程圖4 4.5.5 中斷子程序設(shè)計(jì)中斷子程序設(shè)計(jì)11這個(gè)任務(wù)定時(shí)器 T0 定時(shí)器 50ms,每 50ms,T0
27、產(chǎn)生中斷,進(jìn)入中斷服務(wù)程序。在中斷服務(wù)程序過程中,將第一內(nèi)容能入棧,保護(hù)現(xiàn)場(chǎng),然后重新安裝到初始值。而后 50ms 計(jì)數(shù)單元加 1,再判別計(jì)數(shù)單元是不是、加到 2,若沒有則中止返回,然后判斷是否為 10 毫秒計(jì)數(shù)單元(即 1s),如果沒有的話,中斷返回;若到了 10,則將毫秒計(jì)數(shù)單元清零。然后將秒的個(gè)位計(jì)數(shù)單元加 1,秒的個(gè)位計(jì)數(shù)單元加 1 后判斷是否加到 10,若不是則中斷返回;如果這將是一個(gè)位計(jì)數(shù)單元復(fù)位秒 10 位計(jì)數(shù)單元,加上 1 秒,然后將開始初始化初始值 R0 3FH,R2 R3 08H,初始值 4 累加器復(fù)位,通過自轉(zhuǎn)、MOV、R0 指令讀取計(jì)數(shù)單元的值根據(jù)計(jì)數(shù)單元的值,通過查表
28、指令,找到跟計(jì)數(shù)值相對(duì)應(yīng)的顯示段碼將查表得顯示段碼送顯示器,并從 R2 讀取位選碼,并送 P2 口顯示延時(shí) R0 加1,準(zhǔn)備讀取下一計(jì)數(shù)單元,修改 R2 的值,準(zhǔn)備顯示下個(gè)數(shù)碼管 4 個(gè)數(shù)碼管掃描顯示完嗎,子程序返回,再判斷秒的 10 位計(jì)數(shù)單元是否到 6,若不是則中斷返回;若是則將秒的十位清零,分計(jì)數(shù)單元加 1。程序設(shè)計(jì)流程圖如圖 4-4 所示。 12開始將A中內(nèi)容壓入堆棧,單元43H中的內(nèi)容加1Y中斷了2次嗎?N中斷次數(shù)單元清零,毫秒計(jì)數(shù)單元值加1毫秒計(jì)數(shù)單元等于10嗎毫秒計(jì)數(shù)單元清零,秒的個(gè)位計(jì)數(shù)單元值加1秒的各位等于10嗎秒計(jì)數(shù)單元清零,分的計(jì)數(shù)單元值加1秒的十位等于6嗎、中斷返回秒十
29、位計(jì)數(shù)單元清零,分的計(jì)數(shù)單元值加1NNNYYY圖 4.4 中斷程序流程圖13第第 5 5 章章 測(cè)試及仿真結(jié)果測(cè)試及仿真結(jié)果Proteus 仿真測(cè)試結(jié)果及分析如下圖示:當(dāng)按了啟動(dòng)按鈕后,系統(tǒng)計(jì)時(shí)開始,如下圖所示:當(dāng)按了復(fù)位時(shí),記時(shí)清零,如圖所示:運(yùn)行測(cè)試結(jié)果證明,系統(tǒng)能夠正常運(yùn)行,達(dá)到了設(shè)計(jì)的目的。14第第 6 6 章章 結(jié)語(yǔ)結(jié)語(yǔ)本次以單片機(jī)為核心,跟其他相關(guān)元器件相結(jié)合再編寫相應(yīng)的軟件,實(shí)現(xiàn)了秒表的功能,測(cè)試結(jié)果表明,系統(tǒng)能夠正常工作,達(dá)到了之前的想法。通過這次的論文設(shè)計(jì),我對(duì)單片機(jī)有了更深一層次的理解,對(duì)單片機(jī)的硬件設(shè)計(jì)以及軟件設(shè)計(jì)還有單片機(jī)系統(tǒng)的工作原理有了更高一層次的認(rèn)識(shí)。這次設(shè)計(jì),是
30、我第一次編寫較大的程序內(nèi)容,在編寫程序中,遇到了很多的困難,并及時(shí)向同學(xué)、學(xué)長(zhǎng)、老師進(jìn)行了請(qǐng)教,都一一解決了問題,在今后的學(xué)習(xí)和實(shí)踐中也將能夠運(yùn)用這些知識(shí)和技能。在編寫程序過程中,我將課本上學(xué)到的知識(shí)與實(shí)際相結(jié)合,解決了很多的問題,把程序分成多個(gè)部分,然后對(duì)每個(gè)部分分別編寫程序,探后一一調(diào)試,如果越到困難,則仔細(xì)思考、翻閱書籍課本查閱資料,或者向同學(xué)請(qǐng)教,嚴(yán)格謹(jǐn)慎的分析,一定能夠解決困難,這次設(shè)計(jì)也讓我更清醒的認(rèn)識(shí)到自己的知識(shí)量太少了,自身有很多的不足,欠缺。學(xué)到的東西也不能靈活運(yùn)用,基礎(chǔ)差,今后,自己應(yīng)該更加嚴(yán)格要求自己,努力學(xué)習(xí)提升自己的綜合水平與能力。 15參考文獻(xiàn)參考文獻(xiàn)1馬爭(zhēng).微計(jì)算
31、機(jī)與單片機(jī)原理及應(yīng)用,北京:高等教育出版社,2009 2楊素行.模擬電子技術(shù)基礎(chǔ)簡(jiǎn)明教程,第三版.北京:高等教育出版社,2006 3郭天翔.新概念51單片機(jī)C語(yǔ)言教程,北京:電子工業(yè)出版社,2009 4張?zhí)旆?完全手冊(cè)51單片機(jī)C語(yǔ)言開發(fā)詳解,北京:電子工業(yè)出版社,2008 5胡翔駿.電路分析,北京:高等教育出版社,2002 6張毅剛.彭喜元.單片機(jī)原理與應(yīng)用設(shè)計(jì),北京:電子工業(yè)出版社,2004 7張毅剛.單片機(jī)原理及應(yīng)用,北京:高等教育出版社,2006 8張毅坤.單片機(jī)微型技術(shù)原理及應(yīng)用第二版.西安:西安電子科技大學(xué)出版社,2009 9李全利,遲榮強(qiáng).單片機(jī)原理及接口技術(shù),北京:高等教育出版
32、社,2008 10康華光.電子技術(shù)基礎(chǔ).北京:高等教育出版社,2001 11閻石.模擬電子技術(shù)基礎(chǔ).北京:高等教育出版社,2001 12陳光東.單片機(jī)微型計(jì)算機(jī)原理及其C語(yǔ)言程序設(shè)計(jì),武漢:華中科技大學(xué)出版社2004 13楊宇.單片機(jī)與控制技術(shù),北京:北京航空航天大學(xué)出版社,2005 14張?chǎng)?,華臻,陳書謙,單片機(jī)原理及應(yīng)用,電子工業(yè)出版社,2005.8,15楊光友,朱宏輝,單片微型計(jì)算機(jī)原理及接口技術(shù),水利水電出版社2002.9 ,16楊文龍,單片機(jī)原理及應(yīng)用,西安電子科技大學(xué)出版社1993,6, 第1 版 17夏路易,石宗義,電路原理圖與電路板設(shè)計(jì)教程北京希望電子工業(yè)出版2002 18毛謙
33、敏.單片機(jī)原理及應(yīng)用設(shè)計(jì)系統(tǒng)M北京:國(guó)防工業(yè)出版社,2008 16致致 謝謝時(shí)光總是在回首時(shí)才發(fā)現(xiàn)它的短暫,真情總是在彼此相處中才體現(xiàn)它的可貴!回首三年的求學(xué)之路,不僅在知識(shí)上有了更多的沉淀,更結(jié)交了我人生中很多的貴人,他們是我的師長(zhǎng),是我的同窗,是我的學(xué)長(zhǎng)。是他們?cè)谖覠o(wú)助時(shí)給我?guī)椭?,在我彷徨時(shí)給我指引,在我奮力向前時(shí)給我前行的力量!為自己出生社會(huì)打下了堅(jiān)實(shí)的基礎(chǔ)。感謝學(xué)校的培養(yǎng),為我們插上理想的翅膀,助力我們揚(yáng)帆遠(yuǎn)航!感謝所有在這里關(guān)心我和幫助我的師長(zhǎng)、和同學(xué)!在攻校期間,我也得到了所有任課老師的幫助,對(duì)此表示衷心的謝意。感謝我的師弟師妹們對(duì)我在學(xué)習(xí)與論文寫作過程中的幫助和支持,同時(shí)也感謝所
34、有關(guān)心和幫助過我的其他老師同學(xué)!特別感謝我的父母,感謝他們對(duì)我求學(xué)生涯的支持和鼓勵(lì)!最后感謝周老師,他抽出珍貴時(shí)間為我評(píng)審論文,在此特向他表示感謝!17附 錄 一 /*秒表*/ #include #define uchar unsigned char #define uint unsigned int sbit key1=P32; sbit key2=P33; sbit T=P34; sbit buzzer=P12; /*不帶小數(shù)點(diǎn)數(shù)碼管數(shù)值*/ uchar code table= 0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0
35、 x6f, ; /*帶小數(shù)點(diǎn)數(shù)碼管數(shù)值*/ uchar code apple= 0 xbf,0 x86,0 xdb,0 xcf,0 xe6, 0 xed,0 xfd,0 x87,0 xff,0 xef, ; /*組別顯示*/ uchar code group= 18 0 x06,0 x5b,0 x4f,0 x66,0 x6d, ; uint a,x; static int b, num,num1,num2,num3,num4; static int num_1,num1_1,num2_1,num3_1,num4_1; static int num_2,num1_2,num2_2,num3_2,
36、num4_2; void delay(uint z); void Buzzer(); void display_1(); void display_2(); void display_3(); void main() T2MOD=0; T2CON=0; RCAP2H=(65536-10000)/256; RCAP2L=(65536-10000)%256; TH2=RCAP2H; TL2=RCAP2H; EA=1; ET2=1; TR2=0; EX1=1; IT1=1; EX0=1; IT0=1; while(1) 19 if(b=0) for(x=0;x11;x+) display_1();
37、; if(b=1) for(x=0;x11;x+) display_2(); ; if(b=2) for(x=0;x11;x+) display_3(); ; if(TR2=0&T=0) b+; while(!T) , if(b=0) for(x=0;x11;x+) display_1(); ; if(b=1) for(x=0;x11;x+) 20 display_2(); ; if(b=2) for(x=0;x11;x+) display_3(); ; if(b=3) for(x=0;x11;x+) display_1(); b=0; ; void display_1() P0=tablen
38、um%10; P2=7; delay(50); P0=tablenum/10; P2=6; delay(50); P0=applenum1; 21 P2=5; delay(50); P0=tablenum2; P2=4; delay(50); P0=applenum3; P2=3; delay(50); P0=tablenum4; P2=2; delay(50); P0=0 x40; P2=1; delay(50); P0=groupb; P2=0; delay(50); if(num=100) num=0; num1+; buzzer=0; delay(1); buzzer=1; if(nu
39、m1=10) 22 num1=0; num2+; if(num2=6) um=0; num1=0; num2=0; num3+; Buzzer(); if(um3=10) num3=0; num4+; if(num4=6) num=0; num1=0; num2=0; num3=0; num4=0; void display_2() 23 P0=tablenum_1%10; P2=7; delay(50); P0=tablenum_1/10; P2=6; delay(50); P0=applenum1_1; 附錄 P2=5; delay(50); P0=tablenum2_1; P2=4; d
40、elay(50); P0=applenum3_1; P2=3; delay(50); P0=tablenum4_1; P2=2; delay(50); P0=0 x40; P2=1; delay(100); P0=groupb; P2=0; delay(50); if(num_1=100) num_1=0; num1_1+; buzzer=0; 24 delay(1); buzzer=1; if(num1_1=10) num1_1=0; num2_1+; if(num2_1=6) num_1=0; , num1_1=0; num2_1=0; num3_1+; Buzzer(); if(num3
41、_1=10) num3_1=0; num4_1+; if(num4_1=6) num_1=0; num1_1=0; num2_1=0; num3_1=0; num4_1=0; 25 void display_3() P0=tablenum_2%10; P2=7; delay(50); P0=tablenum_2/10; P2=6; delay(50); P0=applenum1_2; P2=5; delay(50); P0=tablenum2_2; P2=4; delay(50); P0=applenum3_2; P2=3; delay(50); P0=tablenum4_2; P2=2; d
42、elay(50); P0=0 x40; P2=1; delay(50); P0=groupb; P2=0; 26 delay(50); if(num_2=100) num_2=0; num1_2+; buzzer=0; delay(1); buzzer=1; if(num1_2=10) num1_2=0; num2_2+; if(num2_2=6) num_2=0; num1_2=0; num2_2=0; num3_2+; Buzzer(); if(num3_2=10) num3_2=0; num4_2+; if(num4_2=6) 27 num_2=0; num1_2=0; num2_2=0
43、; num3_2=0; num4_2=0; void dingshi0() interrupt 5 TF2=0; if(b=0) num+; if(b=1) num_1+; if(b=2) num_2+; void exter0() interrupt 0 TR2=TR2; void zhongduan() interrupt 2 if(TR2=0) num=0; num1=0; num2=0; num3=0; num4=0; num_1=0; num1_1=0; num2_1=0; num3_1=0; 28 num4_1=0; num_2=0; num1_2=0; num2_2=0; num
44、3_2=0; num4_2=0; b=0; else / TR2=0; b+; if(b=3) b=0; void Buzzer() if(b=0) for(x=0;x40;x+) , display_1(); buzzer=buzzer; ; if(b=1) for(x=0;x40;x+) display_2(); buzzer=buzzer; ; if(b=2) for(x=0;x40;x+) display_3(); buzzer=buzzer; ; if(b=3) display_1(); buzzer=buzzer; b=0; ; buzzer=1; 29void delay(uint z) while(z-); 附錄二附錄二元件清單序號(hào)元件名稱用量備注1STC89C52 單片機(jī)1212M 晶振1330P 瓷片電容2410UF 電解電容1510K 電阻1610K 排阻17四位一體數(shù)碼管18855049按鍵310電源座111開關(guān)1
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防凍教育安全教育班會(huì)全文PPT
- 2025年寒假安全教育班會(huì)全文PPT
- 初中2025年冬季防溺水安全教育全文PPT
- 初中臘八節(jié)2024年專題PPT
- 主播直播培訓(xùn)提升人氣的方法正確的直播方式如何留住游客
- XX地區(qū)機(jī)關(guān)工委2024年度年終黨建工作總結(jié)述職匯報(bào)
- 心肺復(fù)蘇培訓(xùn)(心臟驟停的臨床表現(xiàn)與診斷)
- 我的大學(xué)生活介紹
- XX單位2024年終專題組織生活會(huì)理論學(xué)習(xí)理論學(xué)習(xí)強(qiáng)黨性凝心聚力建新功
- 2024年XX單位個(gè)人述職述廉報(bào)告
- 一文解讀2025中央經(jīng)濟(jì)工作會(huì)議精神(使社會(huì)信心有效提振經(jīng)濟(jì)明顯回升)
- 2025職業(yè)生涯規(guī)劃報(bào)告自我評(píng)估職業(yè)探索目標(biāo)設(shè)定發(fā)展策略
- 2024年度XX縣縣委書記個(gè)人述職報(bào)告及2025年工作計(jì)劃
- 寒假計(jì)劃中學(xué)生寒假計(jì)劃安排表(規(guī)劃好寒假的每個(gè)階段)
- 中央經(jīng)濟(jì)工作會(huì)議九大看點(diǎn)學(xué)思想強(qiáng)黨性重實(shí)踐建新功