《基于單片機設計的頻率計》由會員分享,可在線閱讀,更多相關《基于單片機設計的頻率計(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實驗一 數(shù)據(jù)傳送程序 (2學時)一、 實驗目的1、掌握匯編語言設計和調試方法。2、掌握DVCC實驗系統(tǒng)的操作步驟。 二、 實驗內容1、編程實現(xiàn),把7000H70FFH單元的內容清零。 2、編程實現(xiàn),把源地址為6000H開始的單元內容,傳送到目的地址7000H開始的單元中,傳送個數(shù)為0FFFH個。三、DVCC實驗系統(tǒng)操作說明1、 接通DVCC實驗系統(tǒng)電源,在DVCC實驗箱上應顯示閃動的“P”,否則按Reset鍵。2、 運行DVCC軟件。(程序 DVCC598H實驗系統(tǒng) DVCC實驗系統(tǒng))3、 單擊工具欄上“新建”或“打開”按鈕,編寫源程序。單擊“編譯”按鈕,使其形成可執(zhí)行文件。4、 單擊工具欄上
2、“聯(lián)接”按鈕,同時按下DVCC實驗箱上PCDBG鍵(鍵盤上最右邊第2個),實現(xiàn)PC機和實驗箱的聯(lián)接。聯(lián)機成功,屏幕上出現(xiàn):.反匯編窗口、寄存器標示位窗口。5、 在成功聯(lián)機后,單擊工具欄上“調試”按鈕,把最終目標文件裝載到實驗系統(tǒng)RAM區(qū);或者通過單擊菜單欄中的“動態(tài)調試”,選擇“傳送(.EXE)文件”來實現(xiàn)。6、 單擊工具欄上“運行”或“單步”按鈕,運行實驗程序。7、 單擊工具欄上“窗口”,選擇“顯示內部數(shù)據(jù)窗口”或“顯示外部數(shù)據(jù)窗口”可顯示數(shù)據(jù)窗口。鼠標右擊數(shù)據(jù)窗口的數(shù)據(jù),可設置數(shù)據(jù)塊新地址;鼠標左鍵單擊數(shù)據(jù),可修改數(shù)據(jù)數(shù)值。8、 運行完畢,先按實驗箱上的復位按鈕Reset鍵,再按PCDBG
3、鍵,并且點擊屏幕上OK,即可退出運行狀態(tài)。1、 實驗內容 把7000H70FFH單元的內容清零。程序代碼: ORG 0000HAJMPSTARTORG70HSTART:MOVP2, #70H;送地址高8位到P2端口MOVR0, #00H;R0=00H,表地址低8位CLR A;將累加器A清0LOOP: MOVX R0, A;將A送入以R0內容為地址的外部RAM.INCR0;R0+1-R0CJNER0,#00H,LOOP;比較條件轉移指令,若R0不等于0,則跳轉到LOOPAJMP $;暫停END2、 編程實現(xiàn),將源地址為6000H開始的單元,傳送到目的地址7000H開始的單元,傳送個數(shù)為0FFFH
4、個。程序代碼: ORG 0000H AJMP STARTORG 50HSTART: MOV DPTR, #6000HMOVP2, #70HMOVR0,#00HLOOP: MOVX A, DPTR MOVX R0, AINC DPTRINCR0CJNE R0,#00H,LOOP;比較條件轉移,若R0不等于0,則程序循環(huán),執(zhí)行l(wèi)oop. INC P2MOVR1,P2CJNE R1,#80H,LOOP; 若R1不等與80h,則程序循環(huán)執(zhí)行l(wèi)oop. AJMP $ END 實驗二 并行口實驗(2學時)一、實驗目的1、掌握P3口、P1口簡單使用。2、學習延時程序的編寫和使用。二、實驗內容1、編寫程序用P
5、1.0輸出1kHz和500Hz的音頻信號,以驅動揚聲器作為報警信號。要求1kHz信號響100ms,500Hz信號響200ms,交替進行。P1.7接一開關,進行控制。當開關合上,報警信號響;當開關斷開,報警信號停止。(教材單片機原理、接口及應用嵌入式系統(tǒng)技術基礎 P75 例4-3)2、P3口做輸入口,P1口做輸出口。P3.3外接一脈沖,P1.0P1.7接的8個發(fā)光二極管L1L8。編寫程序,使P3.3每輸入一個脈沖,P1口按16進制加一方式逐次點亮發(fā)光二極管。三、實驗說明1、P1口是準雙向口,它作為輸出口時與一般的雙向口使用方法相同,由準雙向口結構可知:當P1口作為輸入口時,必須先對它置高電平,使
6、內部MOS管截止,因內部上拉電阻是20K40K,故不會對外部輸入產(chǎn)生影響。若不先對它置高,且原來是低電平,則MOS管導通,讀入的數(shù)據(jù)是不正確的。 2、延時程序的延時時間計算 如:延時程序 DELAY : MOV R6, #20 DELAY1: MOV R7, #80 DJNZ R7, $ DJNZ R6, DELAY1 查表可知,MOV Rn,#data指令需要1個機器周期的時間,DJNZ Rn,rel指令需要2個機器周期時間。一個機器周期是由12個時鐘周期組成的,所以一個機器周期時間長度為12/6MHz。以上程序段的執(zhí)行時間為:(80*2+1)*20+20*2+1*12/6MHz四、實驗接線
7、圖(實驗內容二接線圖)五、實驗內容二參考程序框圖ORG 00HBEG:SETB P1.7 JB P1.7, $ MOVR2,#100DV:ACALL D500 ACALL D500 ACALL D500 ACALL D500 CPL P1.0 DJNZ R2,DV MOV R1,#100DD:ACALL D500 ACALL D500 CPL P1.0 DJNZ R1,DD SJMP BEGD500:MOV R7,#125;延時500us(6Mhz) DJNZ R7,$ RETEND實驗三 中斷實驗(2學時)一、實驗目的1)掌握中斷程序的編程方法。2)進一步掌握P1、P3口的雙功能使用方法。二
8、、實驗內容正常情況下,僅綠燈亮。有故障發(fā)生時,綠燈滅,同時紅燈閃爍;故障排除后,撥上總開關,恢復正常,綠燈亮,紅燈滅??捎蒔1.0 控制綠燈的亮滅;P3.3 接外部中斷源,模擬故障發(fā)生;P1.1 控制紅燈的亮滅;P1.2 讀取總開頭的狀態(tài)。編寫程序實現(xiàn)以上功能。 (P3.3 復用為外部中斷1輸入,即為INT1。其中斷向量地址為0013H,使用下降沿觸發(fā)中斷。)三、實驗接線P1.0 接綠燈; P1.1接紅燈; P1.2 開關K1; P3.3 接點觸開關SP四、實驗程序框圖主程序: 中斷服務程序:ORG0000hAJMPMAIN ;主程序ORG0013H ;中斷矢量表AJMPIRPRO ;中斷服務
9、程序入口ORG 0050H ;主程序MAIN:CLR P1.1 ;紅燈滅 SETB P1.0 ;綠燈亮 SETB IT1 ;設置INT1負邊緣觸發(fā)p206 SETB EX1 ;外部中斷1有效 SETB EA;開中斷LOOP1:INC A ;觀察A的變化 JB P1.0, LOOP1LOOP2:INC A ;觀察A的變化 JNB P1.2,LOOP2 SETB P1.0 SJMP LOOP1 ;中斷服務程序IRPRO:PUSH PSW PUSH ACC SETB PSW.3 CLR P1.0 ; 滅綠燈LOOP3:MOV R2,#05LOOP4:SETB P1.1 ;亮紅燈 ACALL D500
10、 CPL P1.1 ACALL D500 DJNZ R2, LOOP4 JNB P1.2,LOOP3 ;總開關監(jiān)測 POP ACC POP PSW RETID500:MOV R6,#255DELAY:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DELAY RETEND實驗四 定時/計數(shù)實驗 (2學時)一、實驗目的1、 熟悉8031定時/計數(shù)功能。2、 掌握定時/計數(shù)初始化編程方法。二、實驗內容1、 選擇T1工作于模式0定時,在P1.0腳上輸出周期為4ms的方波,單片機采用6MHZ晶振。分析:輸出周期為4ms的方波,即高低電平的持續(xù)時間均為2ms,那么只要使P1.0腳上的電平每
11、隔2ms取反一次,就可得到周期為4ms的方波。 將T1設為定時方式0:GATE=0,C/T=0,M1M0=00;T0不用,可為任意,只要不使其進入方式3(此時,定時器1對外停止計數(shù)),一般取0即可。計數(shù)初值的計算:單片機系統(tǒng)默認的定時/計數(shù)器的工作時鐘是晶振經(jīng)12分頻的,即T=12/(6*106),所以計數(shù)初值為 X=(213-2ms/T)=213-(2*10-3*6*106)/12=8192-1000=7192=1110000011000B因為是13位計數(shù)器,所以X的高8位裝入TH1,X的低5位裝入TL1的低5位,即TH1=0E0H,TL1=18H。 思考:T1計數(shù)結束采用中斷工作方式 ,程
12、序應如何編寫?2、在P1.7端接一個發(fā)光二極管LED,要求利用定時器控制,使LED亮1秒、滅1秒,周而復始,設=6MHZ。(教材單片機原理、接口及應用嵌入式系統(tǒng)技術基礎 P97 例5-2)三、實驗內容一參考程序框圖: ORG 00H;START: MOV TMOD,#00HLOAD: MOV TL0,#18H; MOV TH0,#0E0H; CPL P1.3 ACALL TIMER_DELAY JMP LOADTIMER_DELAY: SETB TR0CHECK: JNB TF0,CHECK CLR TR0 CLR TF0 RET; END實驗五 串行口應用實驗(2學時)一、實驗目的 掌握串行
13、口工作方式的程序設計,掌握單片機通信程序編制方法。 二、實驗內容1、重復發(fā)送同一個數(shù)據(jù),觀察TXD端輸出的波形。將8031串口設為工作方式1,即10位異步收發(fā),發(fā)送時鐘由計數(shù)器控制;計數(shù)器T1設為定時工作,工作方式2,即自動重裝8位計數(shù)器;波特率取1000 bps,不加倍;單片機采用6MHZ晶振。計數(shù)初值的計算:TH1=256-(1+0)*fosc/(12*32*BPS) P3.1復用為串行發(fā)送端TXD,將其接至示波器,觀察輸出波形。注意觀察8位數(shù)據(jù)位前后的起始位和停止位。2、自發(fā)自收。將代碼段中定義的10個數(shù)據(jù)09,通過串口發(fā)送和接收,存放在外部存儲器7000H開始的單元中。實驗內容一參考程
14、序框圖:ORG 00HSTART:MOVSCON,#10H;設置串行口工作在模式0下,接受數(shù)據(jù)ENABLE:CLRP3.2;使能74LS166,進行并行數(shù)據(jù)裝載(同步置數(shù)),NOPNOPNOPNOPNOPNOPNOPSETBP3.2;使能串行輸入,由每個時鐘脈沖進行串行移位CLRRI;CHECK:JBCRI,DISPLAY;接受完畢8bit二進制(1byte)時,RI=1,跳轉到顯示DISPLAY段JMPCHECK;如果沒有接受完畢,循環(huán)等待DISPLAY:MOVA,SBUF;將串行口緩沖區(qū)SBUF數(shù)據(jù)載入ACCMOVP1,A;從P1口輸出顯示CALLDELAY;調延時子程序JMPSTART;
15、循環(huán)DELAY:;延時MOVR3,#20;D1:MOVR4,#20D2:MOVR5,#248DJNZR5,$DJNZR4,D2DJNZR3,D1RETEND實驗六 倒計時鐘(3學時)一、實驗目的1、進一步熟悉MCS-51定時/計數(shù)器的使用。2、學會使用實驗箱上七段LED碼顯示。二、實驗內容在實驗箱的七段LED碼上顯示倒計時鐘。每隔一秒鐘,在LED上顯示9、8、70。提示:使用T0、T1定時/計數(shù)器。T0工作在方式0、定時功能,在P1.0引腳上輸出周期為4ms的方波;T1工作在方式2、計數(shù)功能,對P1.0引腳上輸出的下降沿進行計數(shù),計到250個下降沿時,即相當于定時1秒鐘。定時器T1外部計數(shù)輸入
16、引腳為P3.5。計數(shù)器TR1的初值為:X=28-250=6, TH1=TL1=6H七段LED的顯示:1字位端口為0FF21H,確定顯示的位置。2字形端口為0FF22H,確定所顯示的內容,即顯示的數(shù)據(jù): 表6.1 字形碼表數(shù)據(jù)01234567字形碼C0HF9HA4HB0H99H92H82HF8H數(shù)據(jù)89ABCDEF字形碼80H98H88H83HC6HA1H86H8EH3如要在右邊第一位顯示“2”,程序如下: MOV A, #0A4H MOV DPTR, #0FF22H MOVX DPTR, A MOV DPTR, #0FF21H MOV A, #1 MOVX DPTR, AORG 0000H;中
17、斷方式:選擇T1工作,方式1AJMPMAINORG000BHAJMP TIMER_0 ;跳到TIMER_1 ORG001BHAJMP TIMER_1ORG0030H ;MAIN: SETBP1.3MOVTMOD,#60HMOVTH0,#0E0HMOVTL0,#18H MOV TH1, #06H MOV TL1,#06HSETBTR0SETBEA;EA=1SETBET0;ET1 SETB TR1 SETB ET1 BB: MOV R0,#9H WAIT: MOV A, R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR, #0FF22H MOVX DPTR, A MOV DPTR, #0FF21H MOV A, #01H MOVX DPTR, A CJNE R0,#0FFH ,WAIT AJMP BBTIMER_0:CPLP1.3 MOVTH0,#0E0HMOVTL0,#18HSETBTR0;TR1=1RETI TIMER_1: DEC R0 RETI TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98HEND