SUN單片機(jī)課程設(shè)計報告_第1頁
SUN單片機(jī)課程設(shè)計報告_第2頁
SUN單片機(jī)課程設(shè)計報告_第3頁
SUN單片機(jī)課程設(shè)計報告_第4頁
SUN單片機(jī)課程設(shè)計報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、 設(shè)計題目:電子跑表二、 設(shè)計要求:1、 利用8031作為主控制器組成一個電子跑表,采用4位LED顯示器。2、 上電或RESET后能啟動顯示當(dāng)前(時:分):首次上電復(fù)位顯示為0時0分,以后各次RESET均顯示正確的當(dāng)前時間。3、 當(dāng)按下START鍵時,作為跑表使用,顯示范圍是:000.0-999.9秒,當(dāng)按下STOP鍵時,跑表停止運(yùn)行,并保留所停位置的時間顯示不變。4、 利用H鍵作為時鐘校正,即當(dāng)按下H鍵時,顯示的當(dāng)前小時值以每秒加一的速度遞增(24點即為0點),利用N鍵作為分校正,使用方法同H鍵,但60分鐘即為0分。三、 設(shè)計的作用及目的:1、利用單片機(jī)定時器中斷和定時器計數(shù)方式實現(xiàn)跑表

2、和時鐘功能。2、通過該次課程設(shè)計熟悉8031、CD4511與LED的接口技術(shù)。3、熟悉LED功能顯示的控制過程。4、熟悉鍵盤掃描原理。5、熟悉8031定時器中斷和定時器計數(shù)方式的功能使用,為以后的工作和學(xué)習(xí)打下堅實的基礎(chǔ)。6、學(xué)會如何編制含定時器中斷、鍵盤掃描和LED靜態(tài)顯示等多種功能的綜合程序初步體會大型程序的編制和調(diào)試技巧。四、 所用儀器設(shè)備: 單片機(jī)(8031)、PROM(2764)、鎖存器(74LS373)、鎖存/譯碼/驅(qū)動塊(CD4511)、LED數(shù)碼管(四個)、按鍵(4個)五、 具體設(shè)計:(1)、設(shè)計原理:在講設(shè)計原理之前我們先來介紹一下8031。8031是INTEL公司MCS-5

3、1系列單片機(jī)中最基本的產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術(shù)制造的高性能8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51的HCMOS產(chǎn)品。它結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,標(biāo)準(zhǔn)MCS-51單片機(jī)的體系結(jié)構(gòu)和指令系統(tǒng)。8031內(nèi)置中央處理單元、128字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、32個雙向輸入/輸出(I/O)口、2個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路。但8031片內(nèi)并無程序存儲器,需外接ROM。 主要功能特性:標(biāo)準(zhǔn)MCS-51內(nèi)核和指令系統(tǒng) 外部程序存儲器ROM地址空間64kB 32個可編程雙向I/O口 1288 bit內(nèi)部RAM(可

4、擴(kuò)充64kB外部存儲器) 2個16位可編程定時/計數(shù)器 時鐘頻率3.5-16MHz 5個中斷源 5.0V工作電壓 全雙工串行通信口 布爾處理器 2層優(yōu)先級中斷結(jié)構(gòu) 兼容TTL和CMOS邏輯電平 PDIP(40)和PLCC(44)封裝形式8031芯片引腳圖本系統(tǒng)是利用8031的定時/記數(shù)器T0/T1的定時和記數(shù)功能來實現(xiàn)跑表和時鐘功能的。首先為完成時鐘的功能,需要使用定時器T0產(chǎn)生一秒的中斷,并在中斷程序中完成每一秒數(shù)字的變化,并在主程序中顯示該字符。其次是實現(xiàn)秒表的功能,在實現(xiàn)跑表的功能時,時鐘是不能停止的,否則顯示的時間就會不正確。因此我們使時鐘的中斷優(yōu)先級高于秒表的優(yōu)先級,在執(zhí)行跑表程序時

5、,會被時間中斷,從而消除時鐘的誤差。但這會使跑表的時間產(chǎn)生誤差,這是不可避免的,因為單片機(jī)每次只能執(zhí)行一個任務(wù),所以我們只能盡量減少誤差。如果我們使時鐘的中斷周期大于跑表的中斷周期,這樣誤差會相對減少些。(2)、硬件電路設(shè)計及總電路圖:1、ROM的選擇:本系統(tǒng)要求采用8031,但是由于8031中沒有存儲器所以我們采用8K8位的EPROM2764作為片外程序存儲器,2764是28引腳的可用紫外線擦除的可編程只讀存儲器,可以讓用戶擦寫上千次,非常適合于廉價的開發(fā)。它是由NMOS工藝制成的,其讀寫訪問時間根據(jù)不同的型號可從200nS到500nS,它采用單一電源+5V,三態(tài)輸出,與TTL電平兼容。商業(yè)

6、品工作溫度范圍是0+70,工業(yè)品溫度范圍是-25+85。2764的引腳圖2、LED靜態(tài)顯示接口電路:LED靜態(tài)顯示接口電路由筆段代碼鎖存器、筆段譯碼器(由軟件譯碼的LED靜態(tài)顯示驅(qū)動電路不需要筆段譯碼器)等部分組成,本次設(shè)計采用的是4位LED靜態(tài)顯示接口電路,該電路使用具有鎖存、譯碼、驅(qū)動功能的CD4511作為鎖存譯碼驅(qū)動電路,筆段測試輸入LT及消隱輸入BI接高電平(無效),鎖存輸入端LE 分別接P1.7、P1.6、P1.5、P1.4。當(dāng)LE由低電平變?yōu)楦唠娖綍r,鎖存了輸入端ABCD的狀態(tài),譯碼輸出也相應(yīng)地保持不變,即CD4511為上升沿鎖存。本設(shè)計之所以采用CD4511,是因為它自帶了鎖存功

7、能,不需要另外接鎖存器了,因此緩解了單片機(jī)口線緊張的問題。 具體電路圖如下: 字型與字段關(guān)系顯示字符gfedcba字型碼共陰極共陽極001111113FHC0H1000011006HF9H210110115BHA4H310011114FHB0H4110011066H99H511011016DH92H611111017DH82H7000011107HF8H811111117FH80H911011116FH90HA111011177H88HB11111007CH83HC011100139HC6HD10111105EHA1HE111100179H86HF111000171H8EH3、系統(tǒng)的完整硬件電

8、路圖如附圖所示:(3)系統(tǒng)軟件設(shè)計1、 基于單片機(jī)的電子跑表在設(shè)計時要解決3個方面的主要問題:一是LED顯示模塊的驅(qū)動和編程,二是有關(guān)單片機(jī)中定時器的使用,三是如何利用單片機(jī)的外中斷實現(xiàn)時鐘功能和運(yùn)行模塊的轉(zhuǎn)化。2、 采用8031的T0以工作方式1產(chǎn)生125ms的定時,并且系統(tǒng)的時鐘頻率為6MHz,顯然需要記數(shù)62500個機(jī)器周期才可獲得125ms的定時。設(shè)定時器T0的記數(shù)初值為X,則X+62500= X=65536-62500 X=3036其對應(yīng)的十六進(jìn)制為0BDCH,將其存入T0計數(shù)器:(TH0)=0BH,(TL0)=0DCH采用中斷方式記數(shù)定時器T0溢出的次數(shù),連續(xù)記數(shù)8次即為1秒。由于

9、課題只要求時鐘顯示分位和時位,所以我們得連續(xù)記數(shù)8x60次以構(gòu)成一分鐘。在實現(xiàn)跑表程序時我們采用8031的T1以工作方式1產(chǎn)生100ms的定時。以同樣的計算方法可得到秒表的記數(shù)初值為?由于課題要求跑表的時間精度為0.1秒,所以只需中斷方式記數(shù)定時器T1只需溢出1次就可以了。3、按鍵去抖動問題當(dāng)掃描表明有鍵被按下后,緊接著應(yīng)進(jìn)行去抖處理程序;因為常用鍵盤的鍵實際上就是一個機(jī)械開關(guān)結(jié)構(gòu),被按下時,由于機(jī)械觸點的彈性及電壓突跳等原因,在觸點閉合或斷開的瞬間會出現(xiàn)電壓抖動,如下圖所示。抖動時間長短與鍵的機(jī)械特性有關(guān),一般為5-10ms,而鍵的穩(wěn)定閉合時間和操作者的按鍵動作有關(guān),大約為十分之幾秒到幾秒不

10、等。為了保證鍵掃描的正確,需進(jìn)行去抖處理。去抖有硬件和軟件兩種方法。硬件方法就是在鍵盤中附加去抖動電路,從根本上消除抖動產(chǎn)生的可能性,而軟件方法則是采用時間延遲以躲過抖動,待按鍵上的狀態(tài)穩(wěn)定之后,再進(jìn)行狀態(tài)輸入。為簡單起見我采用了軟件去抖處理。鍵按下鍵穩(wěn)定前沿抖動后沿抖動 鍵閉合和斷開時的電壓抖動4、程序流程圖設(shè)計設(shè)置記數(shù)初值START按下否調(diào)用跑表程序設(shè)置堆棧顯示緩沖區(qū)清零否是執(zhí)行調(diào)時程序調(diào)用時鐘程序調(diào)用顯示子 程 序調(diào)用顯示子 程 序 3、編寫程序:主程序: ORG 00H ;主程序起始地址 JMP START ;跳到主程序ORG 0BH ;定時/記數(shù)器T0的地址 JMP TIM0 ;跳到

11、T0中斷子程序(時鐘子程序) ORG 1BH ;定時/記數(shù)器T1的地址 JMP TIM1 ;跳到T1中斷子程序(跑表子程序)START: MOV SP,#70H ;設(shè)置堆棧在70H MOV R0,#79H ;顯示緩沖區(qū)首地址 MOV R7,#04H ;顯示位數(shù) ML1: MOV RO,#00H ;顯示緩沖單元清0 INC R0DJNZ R7,ML1 MOV TMOD,#11H;設(shè)置 T0 、T1 MOV TL0,#0DCH ;時鐘的定時初值 每中斷一次為125mS MOV TH0,#0BH MOV TH1,#3CH ; 跑表的定時初值 每中斷一次為100mS MOV TL1,#0B0H MOV

12、 IE,#B ;T0,T1中斷使能 也使T0的優(yōu)先級大于T1 MOV P3,0FFH ;使用P3口的I/O口功能,使P3口置1MOV R4,#480; 中斷860次 以構(gòu)成1分鐘 JNB P3.2,LOOP ;START鍵沒有按下?沒有就跳到LOOP ACALL DELAY ;消除抖動ACALL TIM1 ;START鍵按下則調(diào)用跑表子程序LOOP: JB P3.3,N2 ;H鍵按下沒有?沒有則跳到N2檢查N ACALL DELAY ;消除抖動 MOV R0,#7AH ;將分寄存器的值載入M1: ACALL DAAD1 ; 調(diào)用加1子程序 ACALL DISP ; 調(diào)用顯示子程序MOV A,R

13、2 ;將分寄存器的值載入A中CJNE A,#60H,N3 ;判斷是否等于60分?不是則跳到N2 MOV 7AH,#00H ;是則清除分寄存器的為00ACALL DISP ; 調(diào)用顯示子程序N1: JNB P3.3,M1 ;P3.3放開了沒有?沒有放開繼續(xù)返回加1ACALL DELAY ; 消除抖動N2: JB P3.4,LOOP ; N鍵按下沒有?沒有則跳到LOOP檢查H鍵ACALL DELAY ; 消除抖動MOV R0,7CH ; 將時寄存器的值載入R0M2: ACALL DADD1 ; R0的內(nèi)容加1ACALL DISP ; 調(diào)用顯示子程序MOV A,R2 ;CJNE A,#24H,N3

14、; 判斷是否等于24小時?不是則跳到LOOPMOV 7CH,#00H ;等于24小時,則將時寄存器清0ACALL DISP ; 調(diào)用顯示子程序N3: JNB P3.4,M2 ;判斷H鍵放開沒有?沒有則跳到M2繼續(xù)加1ACALL DELAY;時鐘中斷子程序TIM0: PUSH PSW ;中斷服務(wù)程序現(xiàn)場保護(hù)PUSH ACCPUSH R0PUSH R2MOV TL0,#0DCH ;重載記數(shù)初值MOV TH0,#0BHMOV A,R4 ;將循環(huán)次序存入A中DEC AMOV R4,A;JNZ RET0 ;不滿860次則轉(zhuǎn)RET0返回MOV R4,#480 ;滿860次,開始記時操作MOVR0,#7AH

15、 ;分顯示緩沖單元地址ACALL DAAD1 ;調(diào)用加1子程序ACALL DISP ; 調(diào)用顯示子程序MOV A,R2 ;加1后分值存在R2中XRL A,#60H ;判斷是否到60分JNZ RET0 ;不到 則轉(zhuǎn)RET0返回ACALL CLR0 ;到60分顯示緩沖單元清0MOV R0,#7CH ;時顯示緩沖單元地址ACALL DAAD1 ;時加1ACALL DISP ; 調(diào)用顯示子程序MOV A,R2 ; 加1后時值存在R2中XRL A,#24H ;判斷是否滿24JNZ RET0 ;沒有,則轉(zhuǎn)RET0返回ACALL CLR0 ; 到24小時顯示緩沖單元清0RET0: POP ACC ;現(xiàn)場恢復(fù)

16、 POP PSW POP R0 POP R2 RETI;跑表中斷子程序TIM1: PUSH PSW ; 中斷服務(wù)程序現(xiàn)場保護(hù)PUSH ACCMOV TL1,#3CH ; 重載入記數(shù)初值MOV TH1,#0B0HMOV R0,#7DH ;將顯示緩沖單元地址送R0中ACALL DAAD1 ;調(diào)用加1子程序MOV A,R2 ;將秒值送A中XRL A,#00H ;判斷是否為0JNZ RET MOV R0,7FH ;將顯示緩沖單元地址送R0中ACALL DAAD1 ;調(diào)用加1子程序MOV A,R2 ;將秒值送A中XRL A,#10HJNZ RET1RET1: POP ACCPOP PSWRETI;加1子

17、程序DAAD1: MOV A,R0 ;加1子程序,十位數(shù)送ADEC R0 SWAP A ;十位數(shù)占高4位 ORL A,R0 ;個位數(shù)占低4位 ADD A,#01H ;加1 DA A ;十進(jìn)制調(diào)整 MOV R2,A ;全值暫時寸R2中 ANL A,#0FH ;屏蔽十位數(shù),取出個位數(shù) MOV R0,A ;個位數(shù)送顯示緩沖單元 MOV A,R2 INC R0 ANL A,0F0H ; 屏蔽個位數(shù),取出十位數(shù) SWAP A ;使個位數(shù)占低四位 MOV R0,A ; 十位數(shù)送顯示緩沖單元 RET ;返回;清緩沖單元子程序CLR0: CLR A ;清緩沖單元子程序 MOV R,A ; 十位清緩沖單元清零

18、DEC R0 MOV R0,A ; 個位清緩沖單元清零 RET ;返回 ;延時子程序DELAY: MOV R6,#60 ;5毫秒D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET ;返回;顯示子程序MOV R0,#30H ;取顯示緩沖區(qū)首地址;顯示個位MOV A,R0 ORL A,#B ;屏蔽千、百、十位ANL A,#B MOV P1,A ;將個位顯示信息送P1SETB Acc.4 ;使P1.4為高電平MOV P1,A ;顯示十位INC R0 MOV A,R0 ORL A,#B ;屏蔽千、百、個位ANL A,#B MOV P1,A ; 將十位顯示信息送P1SETB

19、 Acc5 ; 使P1.5為高電平,數(shù)碼不變,送P1口MOV P1,A ;顯示百位 INC R0MOV A,R0 ORL A,#B ;屏蔽千、十、個位ANL A,#BMOV P1,A ;將百位顯示信息送P1SETB Acc.6 ; 使P1.6為高電平,數(shù)碼不變,送P1口;顯示千位INC R0MOV A,R0ORL A,#B ;屏蔽十、百、個位ANL A,#BMOV P1,A ;將千位顯示信息送P1SETB Acc.7 ; 使P1.7為高電平,數(shù)碼不變,再送P1口MOV P1,ARET ;返回六、 調(diào)試過程及現(xiàn)象程序編寫完畢,就可開始系統(tǒng)的仿真調(diào)試,應(yīng)該先采取軟件仿真,確保整個程序無語法錯誤,然

20、后開始硬件仿真,排除邏輯錯誤及其他錯誤。本設(shè)計采用8031單片機(jī),并擴(kuò)展了EPROM2764,故采用。完成了硬件的設(shè)計,制作和軟件的編程之后,要使系統(tǒng)能夠沿設(shè)計意圖正常運(yùn)行,必須進(jìn)行系統(tǒng)調(diào)試。系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試兩個部分。不過作為一個計算機(jī)系統(tǒng),其運(yùn)行是軟硬件相結(jié)合的,因此,軟硬件的調(diào)試也是絕對不能分開的,硬件的調(diào)試常常要利用調(diào)試軟件,而軟件的調(diào)試也可能需要通過對硬件的測試和控制來進(jìn)行。1、硬件調(diào)試硬件調(diào)試的主要任務(wù)是排除硬件故障,其中也包括了設(shè)計錯誤和工藝性故障。(1)脫機(jī)檢查:用萬用表逐步按照電路原理圖檢查印制電路板中所有器件的各引腳,尤其是電源的接線檢查,看其接線是否正確;檢查

21、數(shù)據(jù)總線,地址總線和控制總線是否有短路等故障,順序是否正確;檢查各個開關(guān)按鍵是否能夠正常打開,是否連線正確;各限流電阻是否短路等。為了保護(hù)芯片,應(yīng)先對各IC座(尤其是電源端)電位進(jìn)行檢查,確定無誤后在插入芯片檢查。(2)聯(lián)機(jī)檢查 暫時拔掉芯片,將仿真器的40芯片仿真插頭插入8031的芯片插座進(jìn)行仿真,檢驗顯示電路是否滿足設(shè)計要求。可以通過一些簡單的測試軟件來查看接口是否正常。2、軟件調(diào)試 軟件調(diào)試的任務(wù)是利用軟件的開發(fā)工具進(jìn)行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序錯誤,同時也能發(fā)現(xiàn)硬件故障。 程序的調(diào)試應(yīng)該一個模塊接一個模塊地進(jìn)行,首先單獨調(diào)試各共能子程序,檢查程序是否能夠?qū)崿F(xiàn)預(yù)期的功能,接口電路的控制

22、是否正確等;最后是逐步將各個子程序連接起來總調(diào)試。聯(lián)調(diào)需要注意的是:各個子程序間能否正確傳遞參數(shù),特別需要注意各個子程序的現(xiàn)場保護(hù)與恢復(fù),調(diào)試的基本步驟如下:(1)用仿真器修改顯示緩沖區(qū)內(nèi)容,屏蔽拆字程序,調(diào)試動態(tài)掃描顯示功能。(2)運(yùn)行主程序,調(diào)試計時模塊,不接任何鍵.3、脫機(jī)運(yùn)行 軟硬件調(diào)試成功后,可以將程序固化到2764中去了,插入89C51芯片,接上電源脫機(jī)運(yùn)行。既然軟硬件都已調(diào)試成功,脫機(jī)運(yùn)行似乎肯定成功,然而事實往往并非如此,仍有可能有故障:(1) 系統(tǒng)不工作:其原因有晶振不起振(晶振已經(jīng)損壞,晶振電路不正常,導(dǎo)致晶振信號微弱等),或沒有接高點平(接地或懸空);(2) 系統(tǒng)工作時好時壞: 這主要是由于電路干擾引起的,由于本系統(tǒng)沒有控制輸出通道,干擾源相對比較少且簡單,應(yīng)此,在電源,總線對地接濾波電容一般可以解決問題。七、 調(diào)試過程中出現(xiàn)的問題及解決方法LED顯示的時間與發(fā)光二極管的變化不符?將LED顯示管字型碼更換一下,即可。八、 心得體會為期一周的單片機(jī)課程設(shè)計已經(jīng)接近尾聲了。記得剛拿到設(shè)計課題時,覺得這個題目太簡單了,不就是一個電子跑表嗎!非常熟悉的東西啊??墒钱?dāng)真正投入設(shè)計時,很多問題出來了。在這次設(shè)計中遇到的問題及解決方法:(1)在實現(xiàn)跑表的功能時,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論