2021年MCU實驗報告--3-基于單片機的簡易秒表設(shè)計制作_第1頁
2021年MCU實驗報告--3-基于單片機的簡易秒表設(shè)計制作_第2頁
2021年MCU實驗報告--3-基于單片機的簡易秒表設(shè)計制作_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、mcu實驗報告-3-基于單片機的簡易秒表設(shè)計制作項目二基于單片機的簡易秒表設(shè)計制作一、實驗?zāi)康暮鸵?、實驗?zāi)康氖煜ed數(shù)碼管與單片機的接口電路及其設(shè)計方法,掌握動態(tài)顯示方式及其典型的應(yīng)用電路;掌握led八段數(shù)碼管秒表顯示器的程序編制方法。通過調(diào)試簡易秒表整體程序,學會編制含led動態(tài)顯示、定時器中斷等多種功能的綜合程序,初步掌握復(fù)雜應(yīng)用程序的編制和調(diào)試技巧。2、實驗要求a仿真試驗,完成用數(shù)碼管顯示0-9或a-f并不斷循環(huán);b簡單秒表的設(shè)計及實現(xiàn),每過1s,led數(shù)碼管顯示的秒數(shù)加1,設(shè)計制作0-59s不斷運行的秒表。二、實驗儀器設(shè)備1、pc機(keil,proteus)3、面包板4、元器件

2、2、實驗仿真板(用dpj.dll實驗仿真板驗證)三、實驗步驟1、器件準備元器件清單列表元件名稱at89s51晶振電容1數(shù)碼管12mhz參數(shù)數(shù)量1112電阻1電阻2電容1其它元件名稱參數(shù)數(shù)量2、硬件設(shè)計試驗a仿真原理圖試驗b仿真原理圖實驗b根據(jù)電路原理圖,對各個硬件模塊在面包板上進行搭試。3、軟件設(shè)計及調(diào)試1)、啟動keil軟件2)、源程序(供參考)試驗acounterequ57h;計數(shù)器,顯示程序通過它得知現(xiàn)正顯示哪個數(shù)碼管dispbufequ58h;顯示緩沖區(qū)為58h-5dh試驗b23)、調(diào)試程序a、根據(jù)程序確定調(diào)試目的,即調(diào)試時所需觀察的內(nèi)容結(jié)果。b、調(diào)試程序。4、固化程序?qū)⒁陨蟖sm編譯

3、生成hex文件,利用編程器將hex文件燒錄到at89s51。5、秒表顯示(照片)四、總結(jié)與體會擴展閱讀簡易秒表的制作簡易秒表的制作1實訓(xùn)目的(1)利用單片機定時器中斷和定時器計數(shù)方式實現(xiàn)秒、分定時。(2)通過led顯示程序的調(diào)整,熟悉8155與8051,8155與led的接口技術(shù),熟悉led動態(tài)顯示的控制過程。(3)通過鍵盤程序的調(diào)整,熟悉8155與矩陣式鍵盤的接口技術(shù),熟悉鍵盤掃描原理。(4)通過閱讀和調(diào)試簡易秒表整體程序,學會如何編制含led動態(tài)顯示、鍵盤掃描和定時器中斷等多種功能的綜合程序,初步體會大型程序的編制和調(diào)試技巧。2實訓(xùn)設(shè)備與器件(1)實訓(xùn)設(shè)備單片機開發(fā)系統(tǒng)、微機。(2)實訓(xùn)器

4、件實訓(xùn)電路板1套。3實訓(xùn)步驟與要求(1)要求利用實訓(xùn)電路板,以8位led右邊2位顯示秒,左邊6位顯示0,實現(xiàn)秒表計時顯示。以44矩陣鍵盤的ke0、ke1、ke2等3鍵分別實現(xiàn)啟動、停止、清零等功能。(2)方法用單片機定時器t0中斷方式,實現(xiàn)1秒定時;利用單片機定時器1方式3計數(shù),實現(xiàn)60秒計數(shù)。用動態(tài)顯示方式實現(xiàn)秒表計時顯示,用鍵盤掃描方式取得ke0、ke1、ke2的鍵值,用鍵盤處理程序?qū)崿F(xiàn)秒表的啟動、停止、清零等功能。(3)實驗線路分析采用實訓(xùn)電路板,其原理圖參見附錄。8位led顯示的位碼由8155的pa口輸出,段碼由8155的pb口輸出,pb口線與led之間接有200限流電阻,led為共陰

5、極數(shù)碼管,led顯示方式為動態(tài)顯示方式。44矩陣鍵盤的行線經(jīng)1k電阻上拉后與8155pc口的pc0pc3口線相連,列線與8155pa口的pa0pa3口線相連。8155的控制口地址為4400h,pa口地址為4401h,pb口地址為4402h,pc口地址為4403h。系統(tǒng)本采用10592mhz的晶振,本實訓(xùn)應(yīng)改為12mhz晶振,以方便定時。(4)軟件設(shè)計軟件整體設(shè)計思路是以鍵盤掃描和鍵盤處理作為主程序,led動態(tài)顯示作為子程序。二者間的聯(lián)系是主程序查詢有無按鍵,無按鍵時,調(diào)用二次led動態(tài)顯示子程序(約延時8ms)后再回到按鍵查詢狀態(tài),不斷循環(huán);有按鍵時,led動態(tài)顯示子程序作為按鍵防抖延時被連續(xù)

6、調(diào)用二次(約延時16ms),待按鍵處理程序執(zhí)行完后,再回到按鍵查詢狀態(tài),同時兼顧了按鍵掃描取值的準確性和led動態(tài)顯示的穩(wěn)定性。秒定時采用定時器t0中斷方式進行,60秒計數(shù)由定時器1采用方式3完成,中斷及計數(shù)的開啟與關(guān)閉受控于按鍵處理程序。由上述設(shè)計思路可設(shè)計出軟件流程圖如圖1所示。(5)程序編制編程時置ke0鍵為“啟動”,置ke1鍵為“停止”,置ke2鍵為“清零”,因按鍵較少,在處理按鍵值時未采用散轉(zhuǎn)指令“jmp”,而是采用條件轉(zhuǎn)移指令“cjne”,每條指令后緊跟著一條無條件跳轉(zhuǎn)指令“ajmp”,轉(zhuǎn)至相應(yīng)的按鍵處理程序,如不是上述3個按鍵值則跳回按鍵查詢狀態(tài)。8位led顯示的數(shù)據(jù)由顯示緩沖區(qū)

7、30h37h單元中的數(shù)據(jù)決定,順序是從左至右,動態(tài)顯示時,每位顯示持續(xù)時間為1ms,1ms延時由軟件實現(xiàn),8位顯示約耗時8ms。主程序、按鍵查詢子程序采用第0組工作寄存器,顯示子程序采用第1組工作寄存器。1秒定時采用定時器t0方式1中斷,每50ms中斷一次,用21h做50ms計數(shù)單元,每20次為一個循環(huán),計滿20次,60秒計數(shù)單元(20h)計數(shù)1次。60秒計數(shù)采用定時器t1方式2計數(shù),計數(shù)脈沖采用軟件置位、復(fù)位p5口的方法實現(xiàn),用20h單元做60秒計數(shù)單元,如定時器t1溢出,則20h單元被清零,20h單元的數(shù)據(jù)采用十進制計數(shù),該數(shù)據(jù)被拆成個位和十位兩個數(shù)據(jù)后分別送至顯示緩沖區(qū)的30h、31h單

8、元。圖1簡易秒表軟件流程圖按照上述思路可編制源程序如下org0000hajmpmainorg000bhajmpcont;主程序;初始化程序mainmovtmod,#61h;置t0方式1定時,t1方式2計數(shù)movth0,#3ch;t0置初值movtl0,#0b0hmovth1,#0c4h;t1置初值movtl1,#0c4hmovdptr,#4400h;8155控制口地址送dptrmova,#43h;設(shè)置8155工作方式字movxdptr,a;設(shè)置pa、pb口輸出,pc口輸入mov20h,#00h;60秒計數(shù)單元置初值mov21h,#14h;50ms計數(shù)單元置初值movsp,#3fh;堆棧指針置初

9、值movr2,#08h;led待顯示位數(shù)送r2movr0,#30h;顯示緩沖區(qū)首址送r0starmovr0,#00h;顯示緩沖區(qū)清零incr0djnzr2,starclra;累加器清零;鍵盤查詢程序keyacallks;調(diào)按鍵查詢子程序判是否有鍵按下jnzk1;有鍵按下轉(zhuǎn)移acalldisp;無鍵按下,調(diào)顯示子程序延時ajmpkey;繼續(xù)查詢按鍵;鍵盤掃描程序k1acalldisp;鍵盤去抖延時acalldispacallks;再次判別是否有鍵按下jnzk2;有鍵按下轉(zhuǎn)移ajmpkey;無按鍵,誤讀,繼續(xù)查詢按鍵k2movr3,#0feh;首列掃描字送r3movr4,#00h;首列號送r4k3

10、movdptr,#4401h;pa口地址送dptr,開始列掃描mova,r3movxdptr,a;列掃描字送pa口incdptr;指向pc口incdptrmovxa,dptr;讀取行掃描值jbacc.0,l1;第0行無鍵按下,轉(zhuǎn)查第1行mova,#00h;第0行有鍵按下,行首鍵號送aajmplk;轉(zhuǎn)求鍵號l1jbacc.1,l2;第1行無鍵按下,轉(zhuǎn)查第2行mova,#08h;第1行有鍵按下,行首鍵號送aajmplk;轉(zhuǎn)求鍵號l2jbacc.2,l3;第2行無鍵按下,轉(zhuǎn)查第3行mova,#10h;第2行有鍵按下,行首鍵號送aajmplk;轉(zhuǎn)求鍵號l3jbacc.3,next;第3行無鍵按下,轉(zhuǎn)查

11、下一列mova,#18h;第3行有鍵按下,行首鍵號送aajmplklkadda,r4;形成鍵碼送apushacc;鍵碼入棧保護k4acalldispacallks;等待鍵釋放jnzk4;未釋放,等待popacc;鍵釋放,彈棧送aajmppr;轉(zhuǎn)鍵盤處理程序nextincr4;修改列號mova,r3jnbacc.3,key;4列掃描完返回按鍵查詢狀態(tài)rla;未掃描完,改為下列掃描字movr3,a;掃描字暫存r3ajmpk3;轉(zhuǎn)列掃描程序;鍵盤處理程序prcjnea,#00h,pr01;不是ke0鍵碼,轉(zhuǎn)ke1鍵ajmpke0;轉(zhuǎn)ke0鍵處理程序pr01cjnea,#01h,pr02;不是ke1鍵

12、碼,轉(zhuǎn)ke2鍵ajmpke1;轉(zhuǎn)ke1鍵處理程序pr02cjnea,#02h,pr03;不是ke2鍵碼,返回按鍵查詢ajmpke2;轉(zhuǎn)ke2鍵處理程序pr03ajmpkeyke0setbtr0;啟動定時器t0setbtr1;啟動定時器t1setbet0;允許定時器t0中斷setbea;開中斷ajmpkey;返回鍵盤查詢狀態(tài)ke1clrea;關(guān)中斷clret0;禁止定時器t0中斷clrtr1;關(guān)定時器t1clrtr0;關(guān)定時器t0ajmpkeyke2clrea;關(guān)中斷ajmpmain;返回主程序進行初始化;按鍵查詢子程序ksmovdptr,#4401h;置8155pa口地址mova,#00hmo

13、vxdptr,a;全掃描字#00h送pa口incdptr;指向pc口incdptrmovxa,dptr;讀入pc口狀態(tài)3cpla;變正邏輯,高電平表示有鍵按下anla,#0fh;屏蔽高4位ret;返回,a0表示有鍵按下;led動態(tài)顯示子程序disppushacc;a入棧保護setbrs0;保護第0組工作寄存器,啟用第1組工作寄存器movr2,#08h;led待顯示位數(shù)送r2movr1,#00h;設(shè)定顯示時間movr3,#7fh;選中最右端ledmovr0,#30h;顯示緩沖區(qū)首址送r0mova,r0;秒顯示個位送adisp1movdptr,#tab;指向字形表首址movca,a+dptr;查表

14、取得字形碼movdptr,#4402h;指向8155pb口(段碼口)movxdptr,a;字形碼送pb口mova,r3;取位選字movdptr,#4401h;指向8155pa口(位選口)movxdptr,a;位碼送pa口djnzr1,$;延時0.5msdjnzr1,$;延時0.5msrra;位選字移位movr3,a;移位后的位選字送r3incr0;指向下一位緩沖區(qū)地址mova,r0;緩沖區(qū)數(shù)據(jù)送adjnzr2,disp1;未掃描完,繼續(xù)循環(huán)clrrs0;恢復(fù)第0組工作寄存器popacc;a彈棧,恢復(fù)現(xiàn)場rettabdb3fh,06h,5bh,4fh,66h;共陰極led字形表db6dh,7dh

15、,07h,7fh,6fh;定時器中斷服務(wù)程序contpushacc;保護現(xiàn)場movth0,#3ch;定時器t1重置初值movtl0,#0b0hmova,20h;秒計數(shù)器送aajmpcont1renajmpren1cont1djnz21h,ren;1秒定時未到,中斷返回mov21h,#14h;重置50ms計數(shù)初值clrp5;軟件產(chǎn)生定時器t1計數(shù)脈沖nopnopsetbp5inca;1秒計數(shù)值加1daa;換算為10進制計數(shù)jbctf1,cont2;60秒到,轉(zhuǎn)清零cont3mov20h,a;計數(shù)值送60秒計數(shù)單元20hanla,#0fh;屏蔽高4位mov30h,a;秒表個位待顯示數(shù)據(jù)送顯示緩沖區(qū)

16、mova,20hswapa;60秒計數(shù)單元高、低4位數(shù)據(jù)互換anla,#0fh;屏蔽高4位mov31h,a;秒表十位待顯示數(shù)據(jù)送顯示緩沖區(qū)ajmpren1cont2mova,#00hajmpcont3ren1popacc;恢復(fù)現(xiàn)場ret;中斷返回end4實訓(xùn)總結(jié)與分析(1)例4與本實訓(xùn)相比,二者均是秒表,但差別較大。前者采用發(fā)光二極管顯示,后者采用七段碼led(俗稱數(shù)碼管),后者顯示更直觀;前者計時采用軟件延時,后者采用定時器中斷,后者更準確;前者功能單一,程序一旦開始運行,中間過程無法控制,后者功能齊全,可隨時啟動、停止、清零,后者智能化程度更高。綜上所述,后者更實用。(2)設(shè)計、調(diào)試大型程

17、序時,需先根據(jù)要求劃分模塊,優(yōu)化結(jié)構(gòu);再根據(jù)各模塊特點確定何為主程序,何為子程序,何為中斷服務(wù)程序,相互間如何調(diào)用;再根據(jù)各模塊性質(zhì)和功能將各模塊細化,設(shè)計出程序流程圖;最后才根據(jù)各模塊流程圖編制具體程序。調(diào)試時應(yīng)先調(diào)主程序,實現(xiàn)最基本最主要的功能,在此基礎(chǔ)上再將各模塊功能往主程序上堆砌,直至各模塊聯(lián)調(diào)、統(tǒng)調(diào),實現(xiàn)全部功能。本實訓(xùn)將整個程序劃分為鍵盤程序,動態(tài)顯示程序,秒計時程序三大模塊,根據(jù)各自的特點確定鍵盤程序為主程序,動態(tài)顯示程序為子程序,秒計時程序為定時器中斷服務(wù)程序。主程序又細分為初始化程序,鍵盤查詢程序,鍵盤掃描程序,鍵盤處理程序四大部分。三大模塊之間的關(guān)系是鍵盤程序在無鍵按下時,

18、不斷調(diào)用動態(tài)顯示子程序;在有鍵按下時,先調(diào)用動態(tài)顯示子程序消抖,再進入鍵盤處理程序,控制中斷服務(wù)程序的運行;處理完畢后,再不斷調(diào)用動態(tài)顯示子程序。經(jīng)上述處理后,三大模塊運行協(xié)調(diào)一致,既保持了動態(tài)顯示的穩(wěn)定性,又保持了鍵盤的可靠性,還保持了秒計時的準確性,較好地實現(xiàn)了全部功能。(3)本實訓(xùn)只用到實驗線路板8位led顯示中的兩位,只用到44鍵盤16個按鍵中的3個,因此,其功能還有較大的擴展空間。只要將上述程序稍加改動即可實現(xiàn)秒、分、時、日顯示,并可作全方位修改的實時時鐘。如增加led顯示位數(shù)或?qū)@示改為lcd顯示模塊,可實現(xiàn)年、月、周、日、時、分、秒顯示。實驗13簡易秒表的制作(一)實驗說明1利用

19、單片機定時器中斷和定時器計數(shù)方式實現(xiàn)秒、分定時。2通過led顯示程序的調(diào)整,熟悉8051,led的接口技術(shù),熟悉led動態(tài)顯示的控制過程。3通過鍵盤程序的調(diào)整,熟悉鍵盤掃描原理。4學會如何編制含led動態(tài)顯示,鍵盤掃描和定時器中斷等多種功能的綜合程序,初步體會大型程序的編制和調(diào)試技巧。5以k1,k5,k93個鍵分別實現(xiàn)啟動、停止、清零等功能。用動態(tài)顯示方式實現(xiàn)秒表計時顯示。(二)實驗連線表連接1連接2連接3連接4連接5a01+5v/gndp0p1p2-p4gnd開始a05+5v/gndsclsdaa08+5v/gndkr1-kr3kc1(三)程序流程圖定時器0中斷服務(wù)程序恢復(fù)現(xiàn)場顯示時間定時器

20、置初值保護現(xiàn)場主程序流程系統(tǒng)初始化顯示全0初始時間鍵盤掃描調(diào)整時間值y啟動鍵?ny停止鍵?nn清零鍵?y關(guān)中斷關(guān)閉時器關(guān)中斷啟動定時器開中中斷返回1234+5vdr1r2r31k1k1k實驗13原理圖+5v1dk1k2k3r4510x838383838383u1scl1sda23456781312151431b191891716p0/tp1/tp2p3p4p5p6p7p3/int1p2int0p5/t1p4/t0ea/vpxlat1xlat2resetp7/rdp6/wrmcu8052p0.0/ad0p0.1/ad1p0.2/ad2p0.3/ad3p0.4/ad4p0.5/ad5p0.6/ad6p0.7/ad7p0p1p2p3p4p5p6p7p0/rxdp1/txdale/ppsen39383736353433322122232425262728101130291a101b91c71d51e41f21g11dp6abacfbdgecfedgdpdpla11a1b1c1d1e1f1g1dp2a102b92c72d52e42f22g12dp6abacfbdgecfedgdpdpla23a103b93c73d53e43f23g13dp6abacfbdgecfedgdpdpla34a104b94c74d54e44f24g14dp6abacfbdgecfedg

溫馨提示

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

評論

0/150

提交評論