基于單片機(jī)電子秒表系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)說(shuō)明_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  《測(cè)控儀器設(shè)計(jì)》課程設(shè)計(jì)說(shuō)明書(shū)</p><p>  設(shè)計(jì)題目: 基于單片機(jī)電子秒表系統(tǒng)設(shè)計(jì) </p><p>  院 系: 機(jī)械與材料工程學(xué)院 </p><p>  專(zhuān) 業(yè): 測(cè)控技術(shù)與儀器 </p><p>  班 級(jí):

2、 A1121 班 </p><p>  學(xué) 號(hào): X X </p><p>  姓 名: X X </p><p>  指導(dǎo)教師: X X </p><p>  二零一四 年

3、十一月</p><p><b>  目錄</b></p><p>  一、設(shè)計(jì)要求 ............................................................................................1</p><p>  二、設(shè)計(jì)方案分析 ……………………………………….……

4、………..1</p><p>  2.1方案設(shè)計(jì) …………………………………………………….…1</p><p>  2.2背景知識(shí)介紹 ……………………………………………....….2</p><p>  三、硬件分析 ……………………………………….…………….……..5</p><p>  3.1單片機(jī)簡(jiǎn)介 ……………………………………

5、……………….5</p><p>  3.2電源電路 …………………………………………………...…..5</p><p>  3.3晶體振蕩電路 ………………………………………………….5</p><p>  3.4復(fù)位電路 ………………………………………………….……5</p><p>  3.5顯示電路 …………………………………………

6、…………….6</p><p>  3.6鍵盤(pán)電路 ………………………………………………...……..6</p><p>  四、硬件主電路圖設(shè)計(jì) ………………….………………….…….……7</p><p>  五、軟件設(shè)計(jì) ……………………………………………………………7</p><p>  5.1軟件設(shè)計(jì)概述 ……………………………….

7、…………………7</p><p>  5.2主程序流程圖 ……………………………………….…………7</p><p>  六、測(cè)試數(shù)據(jù)及設(shè)計(jì)結(jié)果 …………………………………….………..8</p><p>  七、總結(jié) …………………………………………………….……..……8</p><p>  附錄1 程序 ………………..……………………

8、……………..….…….9</p><p>  附錄2 protues電路圖 ………………………..…………...…………..16</p><p>  附錄3仿真圖 ………………………………………………...………..17</p><p>  參考文獻(xiàn) ………………………………………………………...…….18</p><p><b&g

9、t;  一、設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)一個(gè)電子秒表,與通用秒表功能類(lèi)似,有啟動(dòng),暫停、復(fù)位等鍵。計(jì)時(shí)長(zhǎng)長(zhǎng)度為300秒,需顯示百分秒。</p><p><b>  設(shè)計(jì)方案分析</b></p><p><b>  2.1方案設(shè)計(jì)</b></p><p>  數(shù)字電子秒表具有

10、顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡(jiǎn)單、精度高為目標(biāo)。</p><p>  本系統(tǒng)采用C51系列單片機(jī)為中心器件,利用其定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等來(lái)設(shè)計(jì)計(jì)時(shí)器,將軟、硬件有機(jī)地結(jié)合起來(lái)。其中軟件系統(tǒng)采用匯編語(yǔ)言編寫(xiě)程序,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來(lái)實(shí)現(xiàn),簡(jiǎn)單切易于觀察,

11、在仿真中就可以觀察到實(shí)際的工作狀態(tài)。</p><p>  本設(shè)計(jì)利用AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開(kāi)始暫停的功能。根據(jù)要求知道秒表設(shè)計(jì)主要實(shí)現(xiàn)的功能是計(jì)時(shí)和顯示。因此設(shè)置了兩個(gè)按鍵和LCD顯示時(shí)間,兩個(gè)按鍵分別是開(kāi)始、停止和復(fù)位按鍵。利用這兩個(gè)建來(lái)實(shí)現(xiàn)秒表的全部功能,而LCD則能顯示最多4.59.99秒的計(jì)時(shí)。電路原理圖設(shè)計(jì)最基本的要求是正確性,其次是

12、布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照?qǐng)D1.1進(jìn)行設(shè)計(jì)。</p><p>  圖1.1 數(shù)字秒表硬件電路基本原理圖</p><p>  本設(shè)計(jì)中,數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元31H-33H中。其中31H存放分鐘變量,32H存放秒鐘變量,33H存放10ms計(jì)數(shù)值,即存放毫秒位數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制BCD碼。由于采用軟件動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制

13、BCD碼數(shù)據(jù)的對(duì)應(yīng)段碼存放在ROM表中。顯示時(shí),先取出31H-33H某一地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示位,并從P1口輸出,就能顯示該地址單元的數(shù)據(jù)值。</p><p>  計(jì)時(shí)通過(guò)中斷完成,定時(shí)溢出中斷周期為1ms,當(dāng)一處中斷后向CPU發(fā)出溢出中斷請(qǐng)求,每發(fā)出一次中斷請(qǐng)求就對(duì)毫秒計(jì)數(shù)單元進(jìn)行加一,達(dá)到10次就對(duì)十毫秒位進(jìn)行加一,依次類(lèi)推,直到4.59.99秒重新復(fù)位。 </p><p>

14、  再看按鍵的處理。這兩個(gè)鍵可以采用中斷的方法,也可以采用掃描的方法來(lái)識(shí)別。復(fù)位鍵主要功能在于數(shù)值復(fù)位,對(duì)于時(shí)間的要求不是很?chē)?yán)格。而開(kāi)始和停止鍵則是用于對(duì)時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此可以對(duì)復(fù)位按鍵采取掃描的方式。而對(duì)開(kāi)始和停止鍵采用外部中斷的方式。</p><p>  設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,顯示電路和回零、啟動(dòng)、查看、停表電路等。主控制器采用單片機(jī)STC89C

15、52,顯示電路采用LCD顯示計(jì)時(shí)時(shí)間,兩個(gè)按鍵均采用觸點(diǎn)式按鍵。 </p><p><b>  2.2背景知識(shí)介紹</b></p><p>  2.2.1 單片機(jī)相關(guān)知識(shí)</p><p>  本課題在選取單片機(jī)時(shí),充分借鑒了許多成形產(chǎn)品使用單片機(jī)的經(jīng)驗(yàn),并根據(jù)自己的實(shí)際情況,  選擇了AT89C51。</p><p

16、>  AT89C51單片機(jī)采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖, 40條引腳說(shuō)明如下:</p><p>  主電源引腳Vss和Vcc</p><p><b> ?、?Vss接地</b></p><p>  ② Vcc正常操作時(shí)為+5伏電源</p><p>  外接晶振引腳XTAL1和XTAL2&

17、lt;/p><p> ?、?XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。 </p><p> ?、?XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。 1.2 STC89C51單片機(jī)引腳圖</p><p>  控制或與其

18、它電源復(fù)用引腳RST/VPD,ALE/,和/Vpp</p><p> ?、?RST/VPD 當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。</p><p> ?、?ALE/正常操作時(shí)為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引

19、腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號(hào)。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。但要注意,每當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖,ALE 端可以驅(qū)動(dòng)(吸收或輸出電流)八個(gè)LSTTL電路。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈沖(功能)</p><p>  ③ 外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或數(shù)據(jù))期間,在每個(gè)機(jī)器周期內(nèi)兩次有效。

20、同樣可以驅(qū)動(dòng)八LSTTL輸入。</p><p> ?、?/Vpp、/Vpp為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng)/Vpp為高電平時(shí),訪(fǎng)問(wèn)內(nèi)部程序存儲(chǔ)器,當(dāng)/Vpp為低電平時(shí),則訪(fǎng)問(wèn)外部程序存儲(chǔ)器。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。</p><p>  輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 -

21、P2.7,P3.0 - P3.7。</p><p> ?、?P0口(P0.0 - P0.7)是一個(gè)8位漏極開(kāi)路型雙向I/O口,在訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線(xiàn),P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。</p><p> ?、?P1口(P1.0 - P1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p

22、><p> ?、?P2口(P2.0 - P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p><p> ?、?P3口(P3.0 - P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p><p>  AT89C51具

23、有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O口線(xiàn),看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C52可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。CP

24、U是單片機(jī)的核心部件。它由運(yùn)算器和控制器等部件組成。</p><p><b> ?。?) 運(yùn)算器</b></p><p>  運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算??梢詫?duì)半字節(jié)(4位)、單字節(jié)等數(shù)據(jù)進(jìn)行操作。例如能完成加、減、乘、除、加1、減1、BCD碼十進(jìn)制調(diào)整、比較等算術(shù)運(yùn)算和與、或、異或、求補(bǔ)、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存器。</p>

25、;<p>  89C51運(yùn)算器還包含有一個(gè)布爾處理器,用來(lái)處理位操作。它是以進(jìn)位標(biāo)志位C為累加器的,可執(zhí)行置位、復(fù)位、取反、等于1轉(zhuǎn)移、等于0轉(zhuǎn)移、等于1轉(zhuǎn)移且清0以及進(jìn)位標(biāo)志位與其他可尋址的位之間進(jìn)行數(shù)據(jù)傳送等位操作,也能使進(jìn)位標(biāo)志位與其他可移位尋址的位之間進(jìn)行邏輯與、或操作。</p><p> ?。?) 程序計(jì)數(shù)器PC</p><p>  程序計(jì)數(shù)器PC用來(lái)存放即將要執(zhí)行

26、的指令地址,共16位,可對(duì)64K程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。</p><p><b> ?。?) 令寄存器</b></p><p>  指令寄存器中存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令功能。</p><p

27、>  本設(shè)計(jì)采用ATMEL的AT89C51微處理器,主要基于以下幾個(gè)因素:</p><p> ?、?AT89C52為51內(nèi)核,仿真調(diào)試的軟硬件資源豐富。</p><p> ?、?性?xún)r(jià)比高,貨源充足。</p><p> ?、?功耗低,功能強(qiáng),靈活性高。</p><p> ?、?DIP40封裝,體積小,便于產(chǎn)品小型化。</p&

28、gt;<p> ?、?為EEPROM程序存儲(chǔ)介質(zhì),1000次以上擦寫(xiě)周期,便于編程調(diào)試。</p><p> ?、?工作電壓范圍寬:2.7V-6V,便于交直流供電。</p><p>  2.2.2 TC1602</p><p>  LCD 的構(gòu)造是在兩片平行的玻璃當(dāng)中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細(xì)小電線(xiàn),透過(guò)通電與否來(lái)控制桿狀水晶

29、分子改變方向,將光線(xiàn)折射出來(lái)產(chǎn)生畫(huà)面。比CRT要好的多,但是價(jià)錢(qián)較其貴。</p><p><b>  1)LCD的特點(diǎn)</b></p><p><b>  低壓微功耗 </b></p><p><b>  平板型結(jié)構(gòu) </b></p><p>  被動(dòng)顯示型(無(wú)眩光,不刺激人眼

30、,不會(huì)引起眼睛疲勞) </p><p>  顯示信息量大(因?yàn)橄袼乜梢宰龅煤苄? </p><p>  易于彩色化(在色譜上可以非常準(zhǔn)確的復(fù)現(xiàn)) </p><p>  無(wú)電磁輻射(對(duì)人體安全,利于信息保密) </p><p>  長(zhǎng)壽命(這種器件幾乎沒(méi)有什么劣化問(wèn)題,因此壽命極長(zhǎng),但是液晶背光壽命有限,不過(guò)背光部分可以更換)</p>

31、;<p><b>  三、硬件設(shè)計(jì)</b></p><p>  本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等。</p><p><b>  3.1單片機(jī)簡(jiǎn)介</b></p><p>  本系統(tǒng)設(shè)計(jì)采用C51系列單片機(jī)。</p><p>  AT89

32、C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容(由于在微機(jī)原理中學(xué)過(guò)C-51的具體知識(shí),這里不再詳細(xì)說(shuō)明)。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,AT89C51是一種高效的微控制器。</p><p><b>  3.2電源電路</b><

33、/p><p>  電源電路是系統(tǒng)最基本的部分,任何電路都離不開(kāi)電源部分,由于三端集成穩(wěn)壓器件所組成的穩(wěn)壓電源線(xiàn)路簡(jiǎn)單,性能穩(wěn)定,工作可靠,調(diào)整方便,已逐漸取代分立元件,在生產(chǎn)中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5V穩(wěn)壓電壓。</p><p><b>  3.3晶體振蕩電路</b></p><p>  MCS--51單片機(jī)內(nèi)部的振蕩

34、電路是一個(gè)高增益反相放大器,引線(xiàn) XTAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來(lái)自反向振蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器。</p><p>  這里,我們選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線(xiàn)時(shí)要使晶體振蕩器X1盡可能接近單片機(jī)。</p>&l

35、t;p><b>  圖2 晶體振蕩電路</b></p><p><b>  3.4復(fù)位電路</b></p><p>  采用上電+按鍵復(fù)位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使用使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電加開(kāi)關(guān)復(fù)位的操作。這不僅能使單片機(jī)復(fù)位,而且還能使</p&

36、gt;<p>  單片機(jī)的外圍芯片也同時(shí)復(fù)位。當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。</p><p><b>  電路圖如下:</b></p><p><b>  圖3 復(fù)位電路</b></p><p><b>  3.5顯示電路</b></p><p>  顯示

37、電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用2個(gè)共陽(yáng)極LED顯示,LED是七段式顯示器,內(nèi)部有7個(gè)條形發(fā)光二極管和1個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。</p><p>  在用數(shù)碼管顯示時(shí),我們有靜態(tài)和動(dòng)態(tài)兩種選擇,靜態(tài)顯示程序簡(jiǎn)單,顯示穩(wěn)定,但是占用端口比較多;動(dòng)態(tài)顯示所使用的端口比較少,可以節(jié)省單片機(jī)的I/O口。</p><p>  在

38、設(shè)計(jì)中,我們采用LED動(dòng)態(tài)顯示,用P0口驅(qū)動(dòng)顯示。由于P0口的輸出級(jí)是開(kāi)漏電路,用它驅(qū)動(dòng)時(shí)需要外接上拉電阻才能輸出高電平。</p><p><b>  電路圖如下所示:</b></p><p><b>  圖4 顯示電路</b></p><p><b>  3.6鍵盤(pán)電路</b></p>

39、<p>  在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過(guò)I/O口設(shè)計(jì)一個(gè)鍵盤(pán),然后通過(guò)鍵盤(pán)掃描程序判斷是否有鍵按下等。鍵盤(pán)掃描電路節(jié)省I/O口,但編程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個(gè)小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡(jiǎn)化,我們采用按鍵電路,用部分P3口做開(kāi)關(guān),P3.3為開(kāi)始停止,P3.4為清零,用外部中斷INT1開(kāi)始,另外用軟件法消除抖動(dòng)。電路圖如下所示:</p>&l

40、t;p><b>  圖5 鍵盤(pán)電路</b></p><p>  四、硬件主電路圖設(shè)計(jì)</p><p>  用pretues畫(huà)出其硬件主電路圖詳見(jiàn)附錄。</p><p><b>  五、軟件設(shè)計(jì)</b></p><p><b>  5.1軟件設(shè)計(jì)概述</b></p&g

41、t;<p>  在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯的優(yōu)點(diǎn)。把一個(gè)多功能的復(fù)雜的程序劃分為若干個(gè)簡(jiǎn)單的、功能單一的程序模塊,有利于程序的設(shè)計(jì)和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。</p><p>  應(yīng)用系統(tǒng)的程序由包含多個(gè)模塊的主程序和各種子程序組成。各程序模塊都要完成一個(gè)明確的任務(wù),實(shí)現(xiàn)某個(gè)具體的功能,在具體需要時(shí)調(diào)用相應(yīng)的模塊即

42、可。</p><p>  功能描述:用LCD1602液晶顯示"秒表",顯示時(shí)間為0.00.00—4.59.99秒,每秒自動(dòng)加1;一個(gè)"開(kāi)始""暫停"鍵,一個(gè)"清零"鍵。</p><p><b>  5.2主程序流程圖</b></p><p>  這里采用順序結(jié)構(gòu),通

43、過(guò)對(duì)按鍵的掃描,判斷要實(shí)現(xiàn)什么功能。如下所示:</p><p>  六、測(cè)試數(shù)據(jù)及設(shè)計(jì)結(jié)果</p><p><b>  詳見(jiàn)附錄。</b></p><p><b>  七、總結(jié)</b></p><p>  通過(guò)此次設(shè)計(jì),我學(xué)到了很多知識(shí),將學(xué)習(xí)的理論知識(shí)通過(guò)實(shí)驗(yàn)融會(huì)貫通,讓我對(duì)它的理解更加深刻。對(duì)于

44、Proteus及Keil軟件及系統(tǒng)運(yùn)行及操作又有了更進(jìn)一步的了解和運(yùn)用,并增強(qiáng)了我們的動(dòng)手能力,也更深刻的接觸所學(xué)與實(shí)物的結(jié)合。由于這次課程設(shè)計(jì)不僅設(shè)計(jì)編程方面的知識(shí),還涉及了其它學(xué)科的知識(shí),例如PROTEUS等的基本知識(shí)。總之,通過(guò)這次課程設(shè)計(jì),不僅加深了我對(duì)單片機(jī)理論方面的理解,將理論更好的運(yùn)用的實(shí)踐方面,而且鍛煉了我們各方面的能力,培養(yǎng)了堅(jiān)強(qiáng)的毅力和做事的耐心和細(xì)心,同時(shí)也認(rèn)識(shí)到在團(tuán)隊(duì)工作中需要有合作精神,我想這會(huì)為今后自己踏上工

45、作崗位、更好地融入新的團(tuán)隊(duì)打下良好的基礎(chǔ)。</p><p><b>  附錄1:(程序)</b></p><p>  ; 定義計(jì)時(shí)單元地址</p><p>  MIN EQU 31H ;存放分鐘變量</p><p>  SEC EQU 32H ;存放秒鐘變量</p

46、><p>  DEDA EQU 33H ;存放10ms計(jì)數(shù)值 </p><p><b>  ; 按鍵端口狀況值</b></p><p>  K1_N EQU 34H ;存放按鍵當(dāng)前端口狀況值</p><p>  K1_P EQU 35H ;存放按

47、鍵上次端口狀況值</p><p>  K1_C EQU 37H ;存放按鍵計(jì)數(shù)單元 </p><p>  X EQU 36H ;LCD 地址變量 </p><p><b>  ; 按鍵引腳定義</b></p><p>  K1

48、 EQU P3.3 ;按鍵1引腳定義</p><p>  K2 EQU P3.4 ;按鍵2引腳定義</p><p><b>  ;LCD 引腳定義</b></p><p>  RS EQU P3.5 ;LCD RS引腳定義</p><p>  

49、RW EQU P3.6 ;LCD RW引腳定義</p><p>  E EQU P3.7 ;LCD RS引腳定義 </p><p>  ORG 0000H ;程序由地址0開(kāi)始執(zhí)行</p><p>  JMP MAIN</p><p>  O

50、RG 0BH ;定時(shí)器0中斷地址設(shè)置</p><p>  JMP T0_INT</p><p>  ;――――――――――――― 主程序 ――――――――――――――</p><p>  MAIN: ;開(kāi)始</p><p>  MOV SP,#60H

51、 ;堆棧指針指向60H </p><p>  CLR E ;E=0,禁止讀/寫(xiě)LCD</p><p>  ACALL SET_LCD ;調(diào)LCD控制子程序</p><p>  ACALL INIT ;初始化變量</p><p>  MOV

52、 K1_P,#01H ;按鍵上次端口設(shè)置1</p><p>  ACALL INIT_TIMER ;調(diào)用初始化定時(shí)器</p><p>  ACALL MEU ;調(diào)用工作菜單子程序</p><p>  LOOP:ACALL CONV ;時(shí)間計(jì)數(shù)處理</p><

53、p>  ACALL LOOP1 ;調(diào)用清零鍵子程序</p><p>  ACALL KEY ;判斷是否有鍵按下</p><p>  JZ LOOP ;無(wú)鍵按下轉(zhuǎn)LOOP</p><p>  MOV K1_P,K1_N ;交換數(shù)據(jù)</p>

54、<p>  ACALL KEY0 ;調(diào)用按鍵功能子程序</p><p>  JMP LOOP ;跳LOOP處循環(huán) </p><p>  ; 初始變量清零子程序</p><p>  INIT: ;初始變量清零</p><

55、p>  CLR A ;A清為零</p><p>  MOV K1_C,A ;K1_C 初始為0</p><p>  MOV DEDA,A ;百分秒DEDA初始為0</p><p>  MOV SEC,A ;秒SEC初始為0</p>

56、<p>  MOV MIN,A ;分MIN初始為0</p><p>  MOV K1_N,A ;K1_N初始為0</p><p>  MOV K1_P,A ;K1_P初始為0</p><p>  CLR TR0 ;啟動(dòng)中斷</p>

57、<p>  RET </p><p>  ;―――――――――――――――――――――</p><p>  ;定時(shí)器初始化設(shè)置子程序</p><p>  INIT_TIMER: ;定時(shí)器初始化</p><p>  MOV TMOD,

58、#00000001B ;定時(shí)器0模式1</p><p>  MOV IE, #10000010B ;開(kāi)通中斷</p><p>  MOV TL0,#LOW(65536-10000);定時(shí)初值裝入低位</p><p>  MOV TH0,#HIGH(65536-10000);定時(shí)初值裝入高位</p><p>  RET

59、 </p><p><b>  ;中斷服務(wù)程序 </b></p><p>  T0_INT: ;定時(shí)器T0中斷程序 </p><p>  PUSH ACC ;入棧保護(hù)</p><p>  

60、MOV TL0,#LOW(65536-10000) ;重加載</p><p>  MOV TH0,#HIGH(65536-10000)</p><p><b>  INC DEDA</b></p><p>  MOV A,DEDA ;10ms 計(jì)數(shù)值加1</p><p>  CJNE A,

61、#100,TT</p><p>  MOV DEDA,#0</p><p>  INC SEC ;秒加1</p><p>  MOV A,SEC</p><p>  CJNE A,#60,TT</p><p>  INC MIN ;分加1<

62、/p><p>  MOV SEC,#0</p><p>  MOV A,MIN</p><p>  CJNE A,#05,TT</p><p>  MOV DEDA,#0 ;百、分、秒單元清0</p><p>  MOV SEC,#0 </p><

63、;p>  MOV MIN,#0</p><p>  TT: POP ACC ;出棧</p><p>  RETI ;中斷程序返回 </p><p>  ;―――――――――――――――――――――</p><p>  ;判斷鍵是否按下子程序</p&

64、gt;<p><b>  LOOP1:</b></p><p>  JB K2,LOOP2 ;判清零鍵是否按下</p><p>  JMP MAIN ;跳轉(zhuǎn)主程序處</p><p>  LOOP2: RET &l

65、t;/p><p>  ; 判斷K1鍵是否按下</p><p><b>  KEY: </b></p><p>  CLR A ;A清零</p><p>  MOV K1_N,A ;A值送入K1_N</p><p>  MOV C,K1

66、 ;K1值送入C</p><p>  RLC A ;同進(jìn)位標(biāo)志左移一位</p><p>  ORL K1_N,A ;兩個(gè)位作邏輯OR運(yùn)算</p><p>  MOV A,K1_N ;K1_N值送入A</p><p>  XRL A,K1_P

67、 ;有鍵按下,A 中內(nèi)容不為零</p><p>  RET </p><p><b>  ;功能鍵子程序</b></p><p>  ;K1鍵第一次按功能子程序</p><p>  KEY0: </p><p>  MOV A

68、, K1_P ;K1_P值送入A</p><p>  JB ACC.0,KEY3 ;A的0位是1,轉(zhuǎn)KEY3</p><p>  INC K1_C ;K1_C加1</p><p>  MOV A, K1_C ;K1_C值送入A </p><p>  CJNE A,

69、#01H,KEY1 ;K1鍵是否第一次按?</p><p>  MOV DPTR,#MENU1 ;是,存入MENU1信息</p><p>  MOV A,#1 ;設(shè)置第一行顯示</p><p>  CALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p>  SETB T

70、R0 ;啟動(dòng)中斷</p><p>  RET </p><p>  ;K1鍵第二次按功能子程序</p><p>  KEY1: </p><p>  MOV A,K1_C ;K1_C值送入A </p>

71、<p>  CJNE A,#02H,KEY2 ;K1鍵是否第二次按?</p><p>  MOV DPTR,#MENU2 ;是,存入MENU2信息</p><p>  MOV A,#1 ;設(shè)置第一行顯示</p><p>  CALL LCD_PRINT ;調(diào)用顯示字符子程序</p&

72、gt;<p>  CLR TR0 ;停止中斷</p><p>  RET ; </p><p>  ;K1鍵第三次按功能子程序</p><p>  KEY2: </p><p>  MOV A, K1_C

73、 ;K1_C值送入A</p><p>  CJNE A, #03H,KEY3 ;K1鍵是否第三次按?</p><p>  MOV DPTR,#MENU3 ;是,存入MENU3信息</p><p>  MOV A, #1 ;設(shè)置第一行顯示</p><p>  CALL LCD_P

74、RINT ;調(diào)用顯示字符子程序</p><p>  SETB TR0 ;啟動(dòng)中斷</p><p>  RET </p><p>  ;K1鍵第四按功能子程序</p><p>  KEY3: &

75、lt;/p><p>  MOV A,K1_C ;K1_C值送入A</p><p>  CJNE A,#04H,KEY4 ;K1鍵是否第四次按?</p><p>  MOV DPTR,#MENU4 ;是,存入MENU4信息</p><p>  MOV A,#1 ;設(shè)置第一

76、行顯示</p><p>  CALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p>  CLR TR0 ;啟動(dòng)中斷</p><p><b>  KEY4: </b></p><p>  RET ;子程序返回 <

77、/p><p>  ;――――――――――――― LCD顯示 ――――――――――――――</p><p>  ; LCD控制子程序</p><p>  SET_LCD: ; </p><p><b>  CLR E</b></p><p>  ACALL INIT_LCD

78、 ;初始化 LCD</p><p>  MOV R5,#10</p><p>  ACALL DELAY</p><p>  MOV DPTR,#LMESS1 ;指針指到顯示消息1</p><p>  MOV A,#1 ;顯示在第一行</p><p>  ACALL LCD_PRINT

79、 ;調(diào)用顯示字符子程序</p><p>  MOV DPTR,#LMESS2 ;指針指到顯示消息2</p><p>  MOV A,#2 ;顯示在第二行</p><p>  ACALL LCD_PRINT ;調(diào)用顯示字符子程序</p><p>  RET

80、 </p><p>  LMESS1: DB " ",0 ;LCD 第一行顯示消息</p><p>  LMESS2: DB "TIME ",0 ;LCD 第二行顯示消息</p><p>  ;LCD初始化子程序</p><p>  INIT_

81、LCD: </p><p>  MOV A,#38H ;設(shè)置8位、2行、5x7點(diǎn)陣 </p><p>  ACALL WR_COMM ; 調(diào)用寫(xiě)指令子程序</p><p>  ACALL DELAY1 ;調(diào)用延時(shí)子程序</p><p>  MOV A,#0CH

82、 ;開(kāi)顯示,光標(biāo)不閃爍</p><p>  ACALL WR_COMM ;調(diào)用寫(xiě)指令子程序 ;</p><p>  ACALL DELAY1 ;調(diào)用延時(shí)子程序</p><p>  MOV A,#01H ;清除 LCD 顯示屏</p><p>  ACALL WR_COMM

83、 ;調(diào)用寫(xiě)指令子程序 ;</p><p>  ACALL DELAY1 ;調(diào)用延時(shí)子程序</p><p>  RET </p><p>  ;寫(xiě)指令子程序 </p><p>  WR_COMM:

84、 </p><p>  MOV P1,A </p><p>  CLR RS ;RS=0,選擇指令寄存器</p><p>  CLR RW ;RW=0,選擇寫(xiě)模式</p><p>  SETB E ;E=1,允許讀/寫(xiě)LCM<

85、/p><p>  ACALL DELAY1 ;調(diào)用延時(shí)子程序 </p><p>  CLR E ;E=0,禁止讀/寫(xiě)LCM</p><p>  RET </p><p><b>  ;寫(xiě)數(shù)據(jù)子程序</b&

86、gt;</p><p>  WR_DATA: </p><p>  MOV P1,A </p><p>  SETB RS ;RS=1,選擇數(shù)據(jù)寄存器</p><p>  CLR RW ;RW=0,選擇寫(xiě)模式</p><p>

87、  SETB E ;E=1,允許讀/寫(xiě)LCD</p><p>  ACALL DE ;調(diào)用延時(shí)子程序</p><p>  CLR E ;E=0,禁止讀/寫(xiě)LCD</p><p>  ACALL DE ;調(diào)用延時(shí)子程序</p><p>  RET

88、 </p><p>  ;清除該行 LCD 的字符</p><p>  CLR_LINE: MOV R0,#24</p><p>  CL1: MOV A,#' '</p><p>  ACALL WR_DATA<

89、;/p><p>  DJNZ R0,CL1</p><p>  RET </p><p>  ;LCD 存入工作菜單</p><p>  MEU: </p><p>  MOV DPTR,#MENU0

90、 ;存入工作菜單 </p><p>  MOV A,#1 ;第一行</p><p>  CALL LCD_PRINT</p><p><b>  RET</b></p><p><b>  ; 工作菜單</b></p><p>  MENU0

91、: DB " SECOND-CLOCK 0 ",0</p><p>  MENU1: DB " BEGIN COUNT 1 ",0</p><p>  MENU2: DB " PAUST COUNT 2 ",0</p><p>  MENU3: DB " BEGIN C

92、OUNT 3 ",0</p><p>  MENU4: DB " PAUST COUNT 4 ",0 </p><p><b>  ;菜單顯示子程序</b></p><p>  ;一行、二行顯示字符</p><p>  LCD_PRINT: </p&

93、gt;<p>  CJNE A,#1,LINE2 ;判斷是否為第一行</p><p><b>  LINE1: </b></p><p>  ACALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p>  MOV A, #80H ;設(shè)置 LCD 的第一行地址</p&g

94、t;<p>  ACALL WR_COMM ;寫(xiě)入命令</p><p>  JMP FILL</p><p><b>  LINE2: </b></p><p>  ACALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p>  MOV A,#0C0H

95、 ;設(shè)置 LCD 的第二行地址</p><p>  ACALL WR_COMM</p><p>  FILL: CLR A ;填入字符</p><p>  MOVC A,@A+DPTR ;由消息區(qū)取出字符</p><p>  CJNE A,#0,LC1 ;判斷是否為結(jié)

96、束碼</p><p>  RET </p><p><b>  ;寫(xiě)入數(shù)據(jù)</b></p><p>  LC1: ACALL WR_DATA </p><p>  INC DPTR ;指針加1</p

97、><p>  JMP FILL ;繼續(xù)填入字符</p><p>  RET </p><p><b>  ;轉(zhuǎn)換數(shù)據(jù)子程 </b></p><p>  CONV: ;轉(zhuǎn)換為 ASCII 碼并顯示</p&g

98、t;<p>  MOV X,#5 ;設(shè)置位置</p><p>  ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p>  INC X ;</p><p>  MOV A,#':' ;</p><p>  M

99、OV B,X ;</p><p>  ACALL LCDP2 ;</p><p>  MOV A,MIN ;加載分鐘數(shù)據(jù)</p><p>  INC X ;設(shè)置位置</p><p>  ACALL SKOW_LINE2

100、;顯示數(shù)據(jù)</p><p>  INC X ;</p><p>  MOV A,#':' ;</p><p>  MOV B,X ;</p><p>  ACALL LCDP2 ;</p><p&g

101、t;  MOV A,SEC ;加載秒數(shù)數(shù)據(jù)</p><p>  INC X ;設(shè)置位置</p><p>  ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p>  INC X ;</p><p>  MOV A,#':

102、' ;</p><p>  MOV B,X ;</p><p>  CALL LCDP2 ;</p><p>  MOV A,DEDA ;加載秒數(shù)數(shù)據(jù)</p><p>  INC X ;設(shè)置位置<

103、/p><p>  ACALL SKOW_LINE2 ;顯示數(shù)據(jù)</p><p>  RET ; </p><p>  ;在 LCD 的第二行顯示數(shù)字 </p><p>  SKOW_LINE2: </p><p>  MOV B,#10

104、 ;設(shè)置被除數(shù)</p><p>  DIV AB ;結(jié)果A存商數(shù),B存余數(shù)</p><p>  ADD A,#30H ;A為十位數(shù),轉(zhuǎn)換為字符</p><p>  PUSH B ;B放入堆棧暫存</p><p>  MOV B,X

105、 ;設(shè)置 LCD 顯示的位置</p><p>  ACALL LCDP2 ;由 LCD 顯示出來(lái)</p><p>  POP B ;出棧</p><p>  MOV A,B ;B為個(gè)位數(shù)</p><p>  ADD A,#30H ;轉(zhuǎn)換為字符

106、</p><p>  INC X ;LCD 顯示位置加1</p><p>  MOV B,X ;設(shè)置 LCD 顯示的位置</p><p>  ACALL LCDP2 ;由 LCD 顯示出來(lái) </p><p>  RET

107、 </p><p>  ;在LCD的第二行顯示字符</p><p>  LCDP2: </p><p>  PUSH ACC ;</p><p>  MOV A,B ;設(shè)置顯示地址</p><p>  ADD A,#0C0H

108、 ;設(shè)置LCD的第二行地址</p><p>  CALL WR_COMM ;寫(xiě)入命令</p><p>  POP ACC ;由堆棧取出A</p><p>  CALL WR_DATA ;寫(xiě)入數(shù)據(jù) </p><p>  RET

109、 </p><p><b>  ;延時(shí)10MS</b></p><p>  DELAY: </p><p>  MOV R6,#50</p><p>  D1:MOV R7,#100</p><p&

110、gt;  DJNZ R7,$</p><p>  DJNZ R6,D1</p><p>  DJNZ R5,DELAY</p><p>  RET </p><p><b>  ;延時(shí)5MS子程序</b></p><p> 

111、 DELAY1: </p><p>  MOV R6,#25</p><p>  DEY: MOV R7,#100</p><p>  DJNZ R7,$</p><p>  DJNZ R6,DEY</p><p>  RET

112、 </p><p><b>  ;延時(shí)500微秒</b></p><p>  DE: </p><p>  DJNZ R7,$</p><p>  RET </p><p> 

113、 END ;程序結(jié)束</p><p>  附錄2:Proteus電路圖</p><p><b>  附錄3:仿真圖</b></p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 閻石.數(shù)字電子技術(shù)基礎(chǔ)第四版[M].北京:高等教育出版社,19

114、98</p><p>  [2] 楊素行. 模擬電子技術(shù)基礎(chǔ)簡(jiǎn)明教程第三版[M]. 北京:高等教育出版社,2006</p><p>  [3] 邱關(guān)源.電路第四版[M].北京:高等教育出版社,1999</p><p>  [4] 閻石.電子技術(shù)基礎(chǔ)學(xué)習(xí)指導(dǎo)[M].遼寧:遼寧科技出版社,1985</p><p>  [5] 閻石.數(shù)字電子電路[

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論