版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)課程設(shè)計(jì) 2014 2015學(xué)年 第 1 學(xué)期 單片機(jī)C51課程設(shè)計(jì) 課 程 設(shè) 計(jì) 報(bào) 告題目:電子秒表設(shè)計(jì)專業(yè):電氣工程學(xué)院電子信息系姓名:江鑫 瞿康保 李阿龍 李賀林超 劉浩班級(jí):12級(jí)電子信息2班導(dǎo)師:王銀花 電氣工程學(xué)院 2014 年 11月29日任務(wù)書課題名稱 電子秒表設(shè)計(jì)指導(dǎo)教師(職稱) 王銀花(講師) 執(zhí)行時(shí)間20142015學(xué)年第1學(xué)期 第13周學(xué)生姓名學(xué)號(hào)承擔(dān)任務(wù)江鑫1209121083設(shè)計(jì)實(shí)驗(yàn)方案瞿康保1209121084設(shè)計(jì)硬件電路李阿龍1209121085設(shè)計(jì)硬件主電路圖李賀1209121086查找程序,調(diào)試和檢驗(yàn)林超1209121087軟件設(shè)計(jì),編程和仿真劉浩
2、1209121088測(cè)試數(shù)據(jù),設(shè)計(jì)結(jié)果設(shè)計(jì)目的設(shè)計(jì)一個(gè)電子秒表,與通用秒表功能類似,有啟動(dòng),暫停、復(fù)位等鍵。計(jì)時(shí)長(zhǎng)長(zhǎng)度為300秒,需顯示百分秒設(shè)計(jì)要求利用STC89C52單片機(jī)上編程,利用定時(shí)計(jì)數(shù)器,來(lái)實(shí)現(xiàn)電子秒表功能,秒計(jì)時(shí)精確到0.01秒,設(shè)計(jì)啟動(dòng)、暫停、清零按鈕。摘 要基于數(shù)字電子技術(shù)基礎(chǔ)、模擬電子技術(shù)基礎(chǔ)和電路原理有關(guān)知識(shí),對(duì)電子秒表電路進(jìn)行設(shè)計(jì)和制作。該電子秒表可以實(shí)現(xiàn)準(zhǔn)確顯示00.0099.99制時(shí)間,手動(dòng)調(diào)節(jié)時(shí)間,隨時(shí)啟動(dòng)、清零、置時(shí)間等功能,使用方便,制作簡(jiǎn)單。 本文針對(duì)電子秒表進(jìn)行初步框架設(shè)計(jì),并對(duì)多種方案進(jìn)行了認(rèn)真比較和驗(yàn)證,在此基礎(chǔ)上,又進(jìn)一步詳細(xì)介紹了時(shí)間脈沖發(fā)生器、秒
3、計(jì)數(shù)器、譯碼及驅(qū)動(dòng)顯示電路。在總體電路圖組裝完成以后,針對(duì)設(shè)計(jì)好的電路,用Multisim軟件進(jìn)行了仿真與調(diào)試,逐步解決設(shè)計(jì)過程中出現(xiàn)的一系列問題。 在電路設(shè)計(jì)過程中,特意將選做部分即校時(shí)電路部分作為電路設(shè)計(jì)的主要內(nèi)容。最后對(duì)應(yīng)的電子秒表設(shè)計(jì)方案對(duì)制作好的電子秒表功能進(jìn)行總體驗(yàn)證。關(guān)鍵詞:數(shù)字電子技術(shù) ;脈沖發(fā)生器; 計(jì)數(shù)器電路 ;Multisim軟件 目錄1.設(shè)計(jì)要求52.設(shè)計(jì)方案分析52.1方案設(shè)計(jì)52.2背景知識(shí)介紹62.2.1 單片機(jī)相關(guān)知識(shí)62.2.1.1 運(yùn)算器72.2.1.2 程序計(jì)數(shù)器PC72.2.1.3 令寄存器83.硬件設(shè)計(jì)93.1單片機(jī)簡(jiǎn)介93.2電源電路93.3晶體振蕩
4、電路93.4復(fù)位電路93.5顯示電路103.6鍵盤電路104.硬件主電路圖設(shè)計(jì)115.軟件設(shè)計(jì)125.1軟件設(shè)計(jì)概述125.2主程序流程圖126.測(cè)試數(shù)據(jù)及設(shè)計(jì)結(jié)果137.調(diào)試中出現(xiàn)的錯(cuò)誤及解決方法137.1 實(shí)驗(yàn)中遇到的問題及解決方法137.2實(shí)驗(yàn)心得138. 程序 149.參考文獻(xiàn).211. 設(shè)計(jì)要求設(shè)計(jì)一個(gè)電子秒表,與通用秒表功能類似,有啟動(dòng),暫停、復(fù)位等鍵。計(jì)時(shí)長(zhǎng)長(zhǎng)度為300秒,需顯示百分秒。2.設(shè)計(jì)方案分析2.1方案設(shè)計(jì)數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡(jiǎn)單、精度高為目標(biāo)。本系統(tǒng)采用C51系列單片機(jī)為中心器件,
5、利用其定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等來(lái)設(shè)計(jì)計(jì)時(shí)器,將軟、硬件有機(jī)地結(jié)合起來(lái)。其中軟件系統(tǒng)采用匯編語(yǔ)言編寫程序,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來(lái)實(shí)現(xiàn),簡(jiǎn)單切易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。本設(shè)計(jì)利用STC89C52單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。根據(jù)要求知道秒表設(shè)計(jì)主要實(shí)現(xiàn)的功能是計(jì)時(shí)和顯示。因此設(shè)置了兩個(gè)按鍵和LCD顯示時(shí)間,兩個(gè)按鍵分別是開始、停止和復(fù)位按鍵。利用這兩個(gè)建來(lái)實(shí)現(xiàn)秒表的全部功能,而LCD則能顯示最多4.59.99秒的計(jì)時(shí)。電
6、路原理圖設(shè)計(jì)最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照?qǐng)D1.1進(jìn)行設(shè)計(jì)。AT89C52單片機(jī)控制器復(fù)位電路開關(guān)電路LCD顯示圖2.1 數(shù)字秒表硬件電路基本原理圖本設(shè)計(jì)中,數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元31H33H中。其中31H存放分鐘變量,32H存放秒鐘變量,33H存放10ms計(jì)數(shù)值,即存放毫秒位數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制BCD碼。由于采用軟件動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制BCD碼數(shù)據(jù)的對(duì)應(yīng)段碼存放在ROM表中。顯示時(shí),先取出31H33H某一地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示位,并從P1口輸出,就能顯示該地址單元的數(shù)據(jù)值。計(jì)時(shí)通過中斷
7、完成,定時(shí)溢出中斷周期為1ms,當(dāng)一處中斷后向CPU發(fā)出溢出中斷請(qǐng)求,每發(fā)出一次中斷請(qǐng)求就對(duì)毫秒計(jì)數(shù)單元進(jìn)行加一,達(dá)到10次就對(duì)十毫秒位進(jìn)行加一,依次類推,直到4.59.99秒重新復(fù)位。 再看按鍵的處理。這兩個(gè)鍵可以采用中斷的方法,也可以采用掃描的方法來(lái)識(shí)別。復(fù)位鍵主要功能在于數(shù)值復(fù)位,對(duì)于時(shí)間的要求不是很嚴(yán)格。而開始和停止鍵則是用于對(duì)時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此可以對(duì)復(fù)位按鍵采取掃描的方式。而對(duì)開始和停止鍵采用外部中斷的方式。設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,顯示電路和回零、啟動(dòng)、查看、停表電路等。主控制器采用單片機(jī)STC89C52,顯示電路采用LC
8、D顯示計(jì)時(shí)時(shí)間,兩個(gè)按鍵均采用觸點(diǎn)式按鍵。 2.2背景知識(shí)介紹2.2.1 單片機(jī)相關(guān)知識(shí)本課題在選取單片機(jī)時(shí),充分借鑒了許多成形產(chǎn)品使用單片機(jī)的經(jīng)驗(yàn),并根據(jù)自己的實(shí)際情況, 選擇了STC89S51。STC89C52單片機(jī)采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖, 40條引腳說(shuō)明如下:主電源引腳Vss和Vcc Vss接地 Vcc正常操作時(shí)為+5伏電源外接晶振引腳XTAL1和XTAL2 XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。 XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外
9、部振蕩源。圖2.2.1 STC89C52單片機(jī)引腳圖控制或與其它電源復(fù)用引腳RST/VPD,ALE/,和/Vpp RST/VPD 當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。 ALE/正常操作時(shí)為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號(hào)。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。但要注意,每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖,ALE 端可以驅(qū)動(dòng)(吸收或輸出電流)
10、八個(gè)LSTTL電路。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈沖(功能) 外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或數(shù)據(jù))期間,在每個(gè)機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動(dòng)八LSTTL輸入。 /Vpp、/Vpp為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng)/Vpp為高電平時(shí),訪問內(nèi)部程序存儲(chǔ)器,當(dāng)/Vpp為低電平時(shí),則訪問外部程序存儲(chǔ)器。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 P0口(P0.0 - P0.7
11、)是一個(gè)8位漏極開路型雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。 P1口(P1.0 - P1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。 P2口(P2.0 - P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。 P3口(P3.0 - P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。AT89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flas
12、h,256字節(jié)RAM,32 位I/O口線,看門狗定時(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ù)位為止。CPU是單片機(jī)的核心部件。它由運(yùn)算器和控制器等部件組成。2.2.1.1 運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算??梢詫?duì)半字節(jié)(4位)、單字節(jié)等數(shù)據(jù)進(jìn)行操作。例如能完成加、減、乘、除、加1、減1
13、、BCD碼十進(jìn)制調(diào)整、比較等算術(shù)運(yùn)算和與、或、異或、求補(bǔ)、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存器。89C52運(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)行邏輯與、或操作。2.2.1.2 程序計(jì)數(shù)器PC程序計(jì)數(shù)器PC用來(lái)存放即將要執(zhí)行的指令地址,共16位,可對(duì)64K程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。2.2.1.3 指令寄存器指令寄存器中存放指令代碼
14、。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令功能。本設(shè)計(jì)采用ATMEL的AT89C52微處理器,主要基于以下幾個(gè)因素: AT89C52為51內(nèi)核,仿真調(diào)試的軟硬件資源豐富。 性價(jià)比高,貨源充足。 功耗低,功能強(qiáng),靈活性高。 DIP40封裝,體積小,便于產(chǎn)品小型化。 為EEPROM程序存儲(chǔ)介質(zhì),1000次以上擦寫周期,便于編程調(diào)試。 工作電壓范圍寬:2.7V6V,便于交直流供電。圖2.2.2.1 1602的管腳功能3硬件設(shè)計(jì)本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等。3.1單片機(jī)簡(jiǎn)介本
15、系統(tǒng)設(shè)計(jì)采用C51系列單片機(jī)。ST89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ST89C51是一種高效的微控制器。3.2電源電路電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,由于三端集成穩(wěn)壓器件所組成的穩(wěn)壓電源線路簡(jiǎn)單,性能穩(wěn)定,工作可靠,調(diào)整方便,已逐漸取代分立元件,在生產(chǎn)中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5V穩(wěn)壓電壓。3.3晶體振蕩電路MCS-51單片機(jī)內(nèi)部的振蕩電路是
16、一個(gè)高增益反相放大器,引線 XTAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來(lái)自反向振蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器。這里,我們選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線時(shí)要使晶體振蕩器X1盡可能接近單片機(jī)。圖3.3 晶體振蕩電路3.4復(fù)位電路采用上電+按鍵復(fù)位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使用使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電加開關(guān)復(fù)位的操作。這不僅能使單片機(jī)復(fù)位,而且還
17、能使單片機(jī)的外圍芯片也同時(shí)復(fù)位。當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。電路圖如下:圖3.4 復(fù)位電路3.5顯示電路顯示電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用2個(gè)共陽(yáng)極LED顯示,LED是七段式顯示器,內(nèi)部有7個(gè)條形發(fā)光二極管和1個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。在用數(shù)碼管顯示時(shí),我們有靜態(tài)和動(dòng)態(tài)兩種選擇,靜態(tài)顯示程序簡(jiǎn)單,顯示穩(wěn)定,但是占用端口比較多;動(dòng)態(tài)顯示所使用的端口比較少,可以節(jié)省單片機(jī)的I/O口。在設(shè)計(jì)中,我們采用LED動(dòng)態(tài)顯示,用P0口驅(qū)動(dòng)顯示。由于P0口的輸出級(jí)是開漏電路,用它驅(qū)動(dòng)時(shí)需要外接上拉電阻才能輸出高電平。電路圖如下所
18、示:圖3.5 顯示電路3.6鍵盤電路在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設(shè)計(jì)一個(gè)鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個(gè)小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡(jiǎn)化,我們采用按鍵電路,用部分P3口做開關(guān),P3.3為開始停止,P3.4為清零,用外部中斷INT1開始,另外用軟件法消除抖動(dòng)。電路圖如下所示:圖3.6 鍵盤電路4硬件主電路圖設(shè)計(jì)用pretues畫出其硬件主電路圖如下:圖4 硬件主電路5.軟件設(shè)計(jì)5.1軟件設(shè)計(jì)概述在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯
19、的優(yōu)點(diǎn)。把一個(gè)多功能的復(fù)雜的程序劃分為若干個(gè)簡(jiǎn)單的、功能單一的程序模塊,有利于程序的設(shè)計(jì)和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。應(yīng)用系統(tǒng)的程序由包含多個(gè)模塊的主程序和各種子程序組成。各程序模塊都要完成一個(gè)明確的任務(wù),實(shí)現(xiàn)某個(gè)具體的功能,在具體需要時(shí)調(diào)用相應(yīng)的模塊即可。功能描述:用LCD1602液晶顯示"秒表",顯示時(shí)間為0.00.004.59.99秒,每秒自動(dòng)加1;一個(gè)"開始""暫停"鍵,一個(gè)"清零"鍵。5.2主程序流程圖這里采用順序結(jié)構(gòu),通過對(duì)按鍵的掃描,判斷要實(shí)現(xiàn)什
20、么功能。如下所示:賦初始值開始LCD1602顯示復(fù)位鍵P3.3是否按下查看鍵P3.3是否二次按下調(diào)用最終緩存區(qū)數(shù)據(jù)進(jìn)行顯示否 是是否否是查看鍵P3.4是否按下LCD清零圖5.2 主程序流程圖6.測(cè)試數(shù)據(jù)及設(shè)計(jì)結(jié)果 按下INT1管腳的開關(guān)時(shí),顯示數(shù)據(jù),如下圖所示:圖6.1 按下INT1管腳開關(guān)按下T0管腳的開關(guān)時(shí),數(shù)據(jù)清零: 圖6.2 按下T0管腳開關(guān)7調(diào)試中出現(xiàn)的錯(cuò)誤及解決方法 7.1 實(shí)驗(yàn)中遇到的問題及解決方法問題:LCD顯示模糊原因:VEE接高電平,LCD的對(duì)比度太低,從而無(wú)法正常顯示數(shù)據(jù)。解決方法:將VEE接地,提高了LCD的對(duì)比度,數(shù)據(jù)顯示清晰。7.2實(shí)驗(yàn)心得這次課程設(shè)計(jì)我們組的題目是
21、設(shè)計(jì)一個(gè)電子秒表,有啟動(dòng),暫停、復(fù)位等鍵。計(jì)時(shí)最長(zhǎng)長(zhǎng)度為300秒,需顯示百分秒。據(jù)說(shuō)是相對(duì)簡(jiǎn)單的題目。分好組后我們每人都有分工,我的主要任務(wù)就是完成程序的查找,調(diào)試和檢驗(yàn),基本算是前期工作,所以剛開始我們一起查資料討論方案。在設(shè)計(jì)電路初期,由于我們沒有設(shè)計(jì)經(jīng)驗(yàn),通過查閱一些資料,我們的設(shè)計(jì)漸漸有了頭緒,基本確立設(shè)計(jì)方案和流程圖。就是LED顯示屏驅(qū)動(dòng)電路的設(shè)計(jì)是個(gè)比較頭疼的問題。經(jīng)過查詢大量的資料,我們很快確定了電路以及需要的器件,然后就是編程和仿真,開始時(shí)也遇到了很多的問題,經(jīng)過靜下心來(lái)思考,和同學(xué)討論,理清了思路,慢慢修改,終于仿真成功了。通過這次設(shè)計(jì),我學(xué)到了很多知識(shí),將學(xué)習(xí)的理論知識(shí)通過
22、實(shí)驗(yàn)融會(huì)貫通,讓我對(duì)它的理解更加深刻。由于這次課程設(shè)計(jì)不僅設(shè)計(jì)編程方面的知識(shí),還涉及了其它學(xué)科的知識(shí),例如PROTEUS等的基本知識(shí)。總之,通過這次課程設(shè)計(jì),不僅加深了我對(duì)單片機(jī)理論方面的理解,將理論更好的運(yùn)用的實(shí)踐方面,而且鍛煉了我們各方面的能力,培養(yǎng)了堅(jiān)強(qiáng)的毅力和做事的耐心和細(xì)心,同時(shí)也認(rèn)識(shí)到在團(tuán)隊(duì)工作中需要有合作精神,我想這會(huì)為今后自己踏上工作崗位、更好地融入新的團(tuán)隊(duì)打下良好的基礎(chǔ)。8.程序; 定義計(jì)時(shí)單元地址 MIN EQU 31H ;存放分鐘變量 SEC EQU 32H ;存放秒鐘變量 DEDA EQU 33H ;存放10ms計(jì)數(shù)值 ; 按鍵端口狀況值 K1_N EQU 34H ;存
23、放按鍵當(dāng)前端口狀況值 K1_P EQU 35H ;存放按鍵上次端口狀況值 K1_C EQU 37H ;存放按鍵計(jì)數(shù)單元 X EQU 36H ;LCD 地址變量 ; 按鍵引腳定義 K1 EQU P3.3 ;按鍵1引腳定義 K2 EQU P3.4 ;按鍵2引腳定義;LCD 引腳定義 RS EQU P3.5 ;LCD RS引腳定義 RW EQU P3.6 ;LCD RW引腳定義 E EQU P3.7 ;LCD RS引腳定義 ORG 0000H ;程序由地址0開始執(zhí)行 JMP MAIN ORG 0BH ;定時(shí)器0中斷地址設(shè)置 JMP T0_INT ; 主程序 MAIN: ;開始 MOV SP,#60H
24、 ;堆棧指針指向60H CLR E ;E=0,禁止讀/寫LCD ACALL SET_LCD ;調(diào)LCD控制子程序 ACALL INIT ;初始化變量 MOV K1_P,#01H ;按鍵上次端口設(shè)置1 ACALL INIT_TIMER ;調(diào)用初始化定時(shí)器 ACALL MEU ;調(diào)用工作菜單子程序 LOOP:ACALL CONV ;時(shí)間計(jì)數(shù)處理 ACALL LOOP1 ;調(diào)用清零鍵子程序 ACALL KEY ;判斷是否有鍵按下 JZ LOOP ;無(wú)鍵按下轉(zhuǎn)LOOP MOV K1_P,K1_N ;交換數(shù)據(jù) ACALL KEY0 ;調(diào)用按鍵功能子程序 JMP LOOP ;跳LOOP處循環(huán) ; 初始變量
25、清零子程序 INIT: ;初始變量清零 CLR A ;A清為零 MOV K1_C,A ;K1_C 初始為0 MOV DEDA,A ;百分秒DEDA初始為0 MOV SEC,A ;秒SEC初始為0 MOV MIN,A ;分MIN初始為0 MOV K1_N,A ;K1_N初始為0 MOV K1_P,A ;K1_P初始為0 CLR TR0 ;啟動(dòng)中斷 RET ; ;定時(shí)器初始化設(shè)置子程序 INIT_TIMER: ;定時(shí)器初始化 MOV TMOD,#00000001B ;定時(shí)器0模式1 MOV IE, #10000010B ;開通中斷 MOV TL0,#LOW(65536-10000);定時(shí)初值裝入低
26、位 MOV TH0,#HIGH(65536-10000);定時(shí)初值裝入高位 RET ;中斷服務(wù)程序 T0_INT: ;定時(shí)器T0中斷程序 PUSH ACC ;入棧保護(hù) MOV TL0,#LOW(65536-10000) ;重加載 MOV TH0,#HIGH(65536-10000) INC DEDA MOV A,DEDA ;10ms 計(jì)數(shù)值加1 CJNE A,#100,TT MOV DEDA,#0 INC SEC ;秒加1 MOV A,SEC CJNE A,#60,TT INC MIN ;分加1 MOV SEC,#0 MOV A,MIN CJNE A,#05,TT MOV DEDA,#0 ;百
27、、分、秒單元清0 MOV SEC,#0 MOV MIN,#0 TT: POP ACC ;出棧 RETI ;中斷程序返回 ; ;判斷鍵是否按下子程序LOOP1: JB K2,LOOP2 ;判清零鍵是否按下 JMP MAIN ;跳轉(zhuǎn)主程序處 LOOP2: RET ; 判斷K1鍵是否按下 KEY: CLR A ;A清零 MOV K1_N,A ;A值送入K1_N MOV C,K1 ;K1值送入C RLC A ;同進(jìn)位標(biāo)志左移一位 ORL K1_N,A ;兩個(gè)位作邏輯OR運(yùn)算 MOV A,K1_N ;K1_N值送入A XRL A,K1_P ;有鍵按下,A 中內(nèi)容不為零 RET ;功能鍵子程序 ;K1鍵第
28、一次按功能子程序 KEY0: MOV A, K1_P ;K1_P值送入A JB ACC.0,KEY3 ;A的0位是1,轉(zhuǎn)KEY3 INC K1_C ;K1_C加1 MOV A, K1_C ;K1_C值送入A CJNE A,#01H,KEY1 ;K1鍵是否第一次按? MOV DPTR,#MENU1 ;是,存入MENU1信息 MOV A,#1 ;設(shè)置第一行顯示 CALL LCD_PRINT ;調(diào)用顯示字符子程序 SETB TR0 ;啟動(dòng)中斷 RET ;K1鍵第二次按功能子程序 KEY1: MOV A,K1_C ;K1_C值送入A CJNE A,#02H,KEY2 ;K1鍵是否第二次按? MOV D
29、PTR,#MENU2 ;是,存入MENU2信息 MOV A,#1 ;設(shè)置第一行顯示 CALL LCD_PRINT ;調(diào)用顯示字符子程序 CLR TR0 ;停止中斷 RET ; ;K1鍵第三次按功能子程序KEY2: MOV A, K1_C ;K1_C值送入A CJNE A, #03H,KEY3 ;K1鍵是否第三次按? MOV DPTR,#MENU3 ;是,存入MENU3信息 MOV A, #1 ;設(shè)置第一行顯示 CALL LCD_PRINT ;調(diào)用顯示字符子程序 SETB TR0 ;啟動(dòng)中斷 RET ;K1鍵第四按功能子程序KEY3: MOV A,K1_C ;K1_C值送入A CJNE A,#0
30、4H,KEY4 ;K1鍵是否第四次按? MOV DPTR,#MENU4 ;是,存入MENU4信息 MOV A,#1 ;設(shè)置第一行顯示 CALL LCD_PRINT ;調(diào)用顯示字符子程序 CLR TR0 ;啟動(dòng)中斷 KEY4: RET ;子程序返回 ; LCD顯示 ; LCD控制子程序 SET_LCD: ; CLR E ACALL INIT_LCD ;初始化 LCD MOV R5,#10 ACALL DELAY MOV DPTR,#LMESS1 ;指針指到顯示消息1 MOV A,#1 ;顯示在第一行 ACALL LCD_PRINT ;調(diào)用顯示字符子程序 MOV DPTR,#LMESS2 ;指針指
31、到顯示消息2 MOV A,#2 ;顯示在第二行 ACALL LCD_PRINT ;調(diào)用顯示字符子程序 RET LMESS1: DB " ",0 ;LCD 第一行顯示消息 LMESS2: DB "TIME ",0 ;LCD 第二行顯示消息 ;LCD初始化子程序 INIT_LCD: MOV A,#38H ;設(shè)置8位、2行、5x7點(diǎn)陣 ACALL WR_COMM ; 調(diào)用寫指令子程序 ACALL DELAY1 ;調(diào)用延時(shí)子程序 MOV A,#0CH ;開顯示,光標(biāo)不閃爍 ACALL WR_COMM ;調(diào)用寫指令子程序 ; ACALL DELAY1 ;調(diào)用延時(shí)子
32、程序 MOV A,#01H ;清除 LCD 顯示屏 ACALL WR_COMM ;調(diào)用寫指令子程序 ; ACALL DELAY1 ;調(diào)用延時(shí)子程序 RET ;寫指令子程序 WR_COMM: MOV P1,A CLR RS ;RS=0,選擇指令寄存器 CLR RW ;RW=0,選擇寫模式 SETB E ;E=1,允許讀/寫LCM ACALL DELAY1 ;調(diào)用延時(shí)子程序 CLR E ;E=0,禁止讀/寫LCM RET ;寫數(shù)據(jù)子程序 WR_DATA: MOV P1,A SETB RS ;RS=1,選擇數(shù)據(jù)寄存器 CLR RW ;RW=0,選擇寫模式 SETB E ;E=1,允許讀/寫LCD A
33、CALL DE ;調(diào)用延時(shí)子程序 CLR E ;E=0,禁止讀/寫LCD ACALL DE ;調(diào)用延時(shí)子程序 RET ;清除該行 LCD 的字符 CLR_LINE: MOV R0,#24 CL1: MOV A,#' ' ACALL WR_DATA DJNZ R0,CL1 RET ;LCD 存入工作菜單 MEU: MOV DPTR,#MENU0 ;存入工作菜單 MOV A,#1 ;第一行CALL LCD_PRINT RET; 工作菜單 MENU0: DB " SECOND-CLOCK 0 ",0 MENU1: DB " BEGIN COUNT 1 &
34、quot;,0 MENU2: DB " PAUST COUNT 2 ",0 MENU3: DB " BEGIN COUNT 3 ",0 MENU4: DB " PAUST COUNT 4 ",0 ;菜單顯示子程序 ;一行、二行顯示字符 LCD_PRINT: CJNE A,#1,LINE2 ;判斷是否為第一行 LINE1: ACALL CLR_LINE ;清除該行字符數(shù)據(jù) MOV A, #80H ;設(shè)置 LCD 的第一行地址 ACALL WR_COMM ;寫入命令 JMP FILL LINE2: ACALL CLR_LINE ;清除該行
35、字符數(shù)據(jù) MOV A,#0C0H ;設(shè)置 LCD 的第二行地址 ACALL WR_COMM FILL: CLR A ;填入字符 MOVC A,A+DPTR ;由消息區(qū)取出字符 CJNE A,#0,LC1 ;判斷是否為結(jié)束碼 RET ;寫入數(shù)據(jù) LC1: ACALL WR_DATA INC DPTR ;指針加1 JMP FILL ;繼續(xù)填入字符 RET ;轉(zhuǎn)換數(shù)據(jù)子程 CONV: ;轉(zhuǎn)換為 ASCII 碼并顯示 MOV X,#5 ;設(shè)置位置 ACALL SKOW_LINE2 ;顯示數(shù)據(jù) INC X ; MOV A,#':' ; MOV B,X ; ACALL LCDP2 ; MO
36、V A,MIN ;加載分鐘數(shù)據(jù) INC X ;設(shè)置位置 ACALL SKOW_LINE2 ;顯示數(shù)據(jù) INC X ; MOV A,#':' ; MOV B,X ; ACALL LCDP2 ; MOV A,SEC ;加載秒數(shù)數(shù)據(jù) INC X ;設(shè)置位置 ACALL SKOW_LINE2 ;顯示數(shù)據(jù) INC X ; MOV A,#':' ; MOV B,X ; CALL LCDP2 ; MOV A,DEDA ;加載秒數(shù)數(shù)據(jù) INC X ;設(shè)置位置 ACALL SKOW_LINE2 ;顯示數(shù)據(jù) RET ; ;在 LCD 的第二行顯示數(shù)字 SKOW_LINE2: MOV
37、 B,#10 ;設(shè)置被除數(shù) DIV AB ;結(jié)果A存商數(shù),B存余數(shù) ADD A,#30H ;A為十位數(shù),轉(zhuǎn)換為字符 PUSH B ;B放入堆棧暫存 MOV B,X ;設(shè)置 LCD 顯示的位置 ACALL LCDP2 ;由 LCD 顯示出來(lái) POP B ;出棧 MOV A,B ;B為個(gè)位數(shù) ADD A,#30H ;轉(zhuǎn)換為字符 INC X ;LCD 顯示位置加1 MOV B,X ;設(shè)置 LCD 顯示的位置 ACALL LCDP2 ;由 LCD 顯示出來(lái) RET ;在LCD的第二行顯示字符 LCDP2: PUSH ACC ; MOV A,B ;設(shè)置顯示地址 ADD A,#0C0H ;設(shè)置LCD的第二行地
溫馨提示
- 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. 人人文庫(kù)網(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年云南建筑安全員A證考試題庫(kù)附答案
- 貴州大學(xué)《集成電路原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽(yáng)幼兒師范高等??茖W(xué)?!冻傻V規(guī)律與成礦預(yù)測(cè)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025廣東建筑安全員知識(shí)題庫(kù)
- 2025青海省建筑安全員《C證》考試題庫(kù)
- 硅湖職業(yè)技術(shù)學(xué)院《化工原理B》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年江蘇省安全員A證考試題庫(kù)
- 2025湖北省建筑安全員A證考試題庫(kù)附答案
- 廣州新華學(xué)院《體育活動(dòng)組織與策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《數(shù)學(xué)課程與教材研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 數(shù)學(xué)-2025年高考綜合改革適應(yīng)性演練(八省聯(lián)考)
- 市場(chǎng)營(yíng)銷試題(含參考答案)
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 景區(qū)旅游安全風(fēng)險(xiǎn)評(píng)估報(bào)告
- 2023年新高考(新課標(biāo))全國(guó)2卷數(shù)學(xué)試題真題(含答案解析)
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)380題(含答案)
- 事業(yè)單位工作人員獎(jiǎng)勵(lì)審批表
- DL-T 1476-2023 電力安全工器具預(yù)防性試驗(yàn)規(guī)程
- 眼科護(hù)理的國(guó)內(nèi)外發(fā)展動(dòng)態(tài)和趨勢(shì)
- 2024年中煤平朔集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 水中五日生化需氧量測(cè)定的影響因素
評(píng)論
0/150
提交評(píng)論