




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理及其接口技術實驗指導書實驗1KeilC51的使用(匯編語言)一.實驗目的:初步掌握KeilC51(匯編語言)和ZY15MCU12BD型綜合單片機實驗箱的操作和使用,能夠輸入和運行簡單的程序。二.實驗設備:ZY15MCU12BD型綜合單片機實驗箱一臺、具有一個RS232串行口并安裝KeilC51的計算機一臺。三.實驗原理及環境:在計算機上已安裝KeilC51軟件。這個軟件既可以與硬件(ZY15MCU12BD型綜合單片機實驗箱)連接,在硬件(單片機)上運行程序;也可以不與硬件連接,僅在計算機上以虛擬仿真的方法運行程序。如果程序有對硬件的驅動,就需要與硬件連接;如果沒有硬件動作,僅有軟件操
2、作,就可以使用虛擬仿真。四:實驗內容:1.掌握軟件的開發過程:1)建立一個工程項目選擇芯片確定選項。2)加入C源文件或匯編源文件。3)用項目管理器生成各種應用文件。4)檢查并修改源文件中的錯誤。5)編譯連接通過后進行軟件模擬仿真。6)編譯連接通過后進行硬件仿真。2.按以上步驟實現在P1.0輸出一個頻率為1Hz的方波。3.在2的基礎上,實現同時在P1.0和P1.1上各輸出一個頻率同為1Hz但電平狀態相反的方波。五:程序清單:ORG0000HAGAIN:CPLP1.0MOVR0,#10延時0.5秒LOOP1:MOVR1,#100LOOP2:MOVR2,#250DJNZR2,$DJNZR1,LOOP
3、2DJNZR0,LOOP1SJMPAGAINEND六:實驗步驟:1.建立一個工程項目選擇芯片確定選項如圖1-1所示:ProjectNewProject輸入工程名test保存工程文件(鼠標點擊保存按鈕)11-1創建工程名彈出下一界面。如1-2所示:選CPU廠家(Atmel)選CPU型號(89C51),選好后確定1-2選廠家選CPU型號接著選晶振頻率及HEX文件等。如1-3所示:ProjectOptionsforTargetTarget1在Target中更改CPU晶振頻率12MHz在Output中選擇HEX格式其它采用缺省設置選好后確。2圖1-3選晶振頻率及生成HEX文件等窗口2.建立匯編源文件如
4、圖1-4所示:FileNew,彈出源文件編輯窗口。輸入以下源文件:ORG0000HAGAIN:CPLP1.0MOVR0,#10延時0.5秒LOOP1:MOVR1,#100LOOP2:MOVR2,#250DJNZR2,$DJNZR1,LOOP2DJNZR0,LOOP1SJMPAGAINEND3圖1-4進入編輯源文件窗口源程序編寫完后,FileSaveAs將文件以test.asm保存在E:test目錄下,獲得匯編語言源程序。3.用項目管理器生成(編譯)各種應用文件點擊Target1前之+號出現SourceGroup1點擊它并按鼠標右鍵會生彈出下拉菜單見圖1-5編譯文件文件窗口選擇AddFilest
5、oGroupSourceGroup1add向項目中添加Test.asm源文件點擊close關閉AddFilestoGroupSourceGroup1SourceGroup1前會出現一個+號點擊之彈出test.asm文件名點擊該文件名主窗口中會出現該程序圖1-5進入編譯文件文件窗口編譯:ProjectBuildtarget就會生成一系列到文件如OBJ文件LST文件HEX文件等。4.檢查并修改源文件中的錯誤如果在源文件中存在錯誤在Output窗口中會出現錯誤提示信息,你可以在源程序中進行修改,然后存盤后重新Build觀察錯誤提示信息。5.編譯連接通過后進行軟件模擬仿真DebugStart/Stop
6、DebugSession進入軟件模擬的仿真窗口,可使用單步、設斷點來進行調試和除錯。6.編譯連接通過后進行硬件仿真實驗箱的仿真串口必須與PC機串口連接,通電,撥位開關K10必須撥在BP10和L00P11和L01:ProjectOptionsforTargetTargetlDebug.硬件實時仿真調試選項窗口見圖1-5選硬件仿真選項按確定按鈕確定。4圖1-5硬件實時仿真調試選項窗口進入硬件實時調試窗口后可打開各種觀察窗口進行單步斷點運行到光標連續執行等操作,無誤后可連續運行觀察LED發光管的顯示效果。注意退出時須按單片機的復位按鍵SS10,在進行硬件連接前最好也先按單片機的復位按鍵SS10。7.
7、修改以上程序,實現同時在P1.0和P1.1上各輸出一個頻率為1Hz但電平狀態相反的方波。七:試驗總結:通過第一次實驗我熟悉了KeilC51(匯編語言)和ZY15MCU12BD的基本操作過程,但還不是很熟練,課后要加強練習。實驗2十六進制與十進制的轉換一:實驗目的:實踐匯編語言順序結構的編程方法,掌握十六進制數轉換成十進制數的編程實現,掌握單步運行程序的基本技巧。二:實驗設備:ZY15MCU12BD型綜合單片機實驗箱一臺、具有一個RS232串行口并安裝KeilC51的計算機一臺。三:實驗原理及環境:將十六進制數轉換成十進制數有多種方法,比較典型的是用待轉換數除以權值的方法,即依次除以100、10
8、,則各次的商和最后的余數就是所需要的十進制數。四:實驗內容:將放在片內RAM30H中的2位十六進制數轉換成3位十進制數,按照從高位到低位的順序分別放入31H33H中(即非壓縮的BCD五:程序清單:LJMP0100HORG0100HMOVA,30HMOVB,#16DIVAB5MOVR0,BMOVB,#16MULABADDA,R0MOVB,#10DIVABMOV33H,BMOVA,33HMOV33H,AMOVB,#10DIVABMOV32H,BMOVA,32HMOV32H,AMOV31H,ASJMP$END六:實驗步驟:1.建立一個工程,將在預習中做好的*.asm文件加入。2.調出存儲器編輯窗口,
9、將30H單元修改成某一值。3.在希望停下來的指令上設斷點,然后運行,在斷點處停下來后,再單步運行,可以看到各單元的變化情況。運行完最后一條指令后,在31H33H中應獲得30H中十六進制數對應的十進制數。七:試驗總結:這個實驗麻煩的就是編程實現十六進制與十進制的轉換,尤其是算數運算指令的使用。實驗過程中還不是很熟練;還有一個體會就是算法對編寫程序至關重要,如果編寫程序之前沒有確立算法,那么編程將無法下手。實驗38段LED顯示器動態顯示實驗目的:掌握8段LED顯示器的使用及顯示程序的設計方法。實驗設備:ZY15MCU12BD型綜合單片機實驗箱一臺、具有一個RS232串行口并安裝KeilC51的計算
10、機一臺。實驗原理及環境:1.實驗箱上有6位8段LED顯示器,采用動態方式驅動。即使一位LED顯示器顯示內容一段時間,然后下一位LED顯示器顯示內容一段時間,,周而復始。只要刷新頻率不小于50Hz,就可以獲得清晰穩定的顯示效果。2.MCS-51CPU通過一片對8段LED顯示器進行段驅動和位驅動,的口、口、口、控制口的地址分別為片外RAM的4000H、4001H、4002H、4003H。3.LED顯示器的各段由的口驅動,低電平對應段發光,高電平對應段熄滅。各段的驅動位如圖3-1,各顯示字的字形代碼如下所示:顯示字字形代碼顯示字字形代碼顯示字字形代碼0C0H0.40H-BFH61F9H1.79H滅F
11、FH2A4H2.24H3B0H3.30HD0499H4.19H592H5.12HD5D1682H6.02HD67F8H7.78H880H8.00H990H9.80HD4D2D3D7A88HA.08HB83HB.03HCC6HC.46H圖3-18段LED各段控制位DA1HD.21HE86HE.06HF8EHF.0EH4.LED顯示器的各位由8255的口驅動,低電平對應位發光,高電平對應位熄滅。LED顯示器對應位口位左起第一位D0左起第二位D1左起第三位D2左起第四位D3左起第五位D4左起第六位D5實驗內容:1.編寫一個6位LED顯示器驅動子程序(在主程序中已對接口芯片8255做好必要的初始化)。
12、字形表按0、0.F.、-、滅的順序排列。該子程序的要求如下:入口:待顯示數(00H1FH)放在20H25H(分別對應顯示器的左起第第6位)中。出口:每位顯示0.5mS后返回。占用:R0、R1、R2、PSW、DPTR。顯示子程序的流程圖如圖3-2和圖3-3:7開始置顯示數地址指針初值20H顯示器位碼指向左起第一位取出待顯示數查出字形代碼字形代碼送段口位碼送位口軟件延時0.5mS關閉所有顯示位位碼指向下一位顯示數地址指針加1N顯示地址指針超出?返回Y圖3-2顯示子程序流程圖8開始顯示地址指針R0=20H位碼初值R2=FEH(R0)DPTR表頭首址A(A+DPTR)DPTR4001H(DPTR)AR
13、2DPTR4000H(DPTR)A軟件延時0.5mS(用R1作計數器)FFHAR2左移R0R0+1NR026H?Y返回圖3-3顯示子程序的詳細流程圖2.子程序自身無法運行,為了運行這個子程序,另編寫一個主程序。這個主程序的功能是首先對8255進行初始化,然后就反復調用顯示子程序,顯示20H25H中的待顯示內容。首先在20H起始的6個字節中置入00H0FH,然后連續運行此程序,應顯示;在20H起始的6個字節中置入10H1FH,然后連續運行此程序,應顯示0.F.;若置入20H、21H,則顯示-、滅。9開始設置堆棧棧底SP軟件延時0.5秒等待8255復位結束8255初始化口、口方式0輸出口任意調用顯
14、示子程序圖3-4顯示主程序流程圖3.按以下框圖編寫一段程序,運行后會在顯示器上應出現連續向左移動的0。10開始設置堆棧SP軟件延0.5秒等待8255復位結束8255初始化口、口方式0輸出口任意20H25H清0調用顯示子程序330次,運行間1秒(20H)(21H)(21H)(22H)(22H)(23H)(23H)(24H)(24H)(25H)(25H)(25H)+1(25H)(25H)#0FH3-5實驗3流程圖6位LED顯示器驅動子程序程序清:ORG0000HMOVSP,#6FHMOV20H,#00MOV21H,#00MOV22H,#00MOV23H,#00MOV24H,#00MOV25H,#0
15、0MOVDPTR,#4003H;8255初始化MOVA,#10000001B;A口、B口方式0輸出,C口高4位輸出,4位輸入MOVXDPTR,A;ACALLDELAY500MS;延0.5秒11LOOP3:LCALLDISP;調用顯示子程序SJMPLOOP3DISP:MOVR0,#20HMOVR2,#0FEHDISP1:MOVA,R0MOVDPTR,#TABMOVCA,A+DPTRMOVDPTR,#4001HMOVXDPTR,AMOVA,R2MOVDPTR,#4000HMOVXDPTR,ACALLDELAY500USMOVA,#0FFHMOVXDPTR,AMOVA,R2RLAMOVR2,AINC
16、R0CJNER0,#26H,DISP1RETDELAY500MS:PUSH00HMOVR0,#25;延時0.5秒NEXT:ACALLDELAY20MSDJNZR0,NEXTPOP00HRETDELAY500US:PUSH03HMOVR3,#250DJNZR3,$POP03HRETDELAY20MS:PUSH06HPUSH07HMOVR7,#99AGAIN:MOVR6,#100DJNZR6,$DJNZR7,AGAINPOP07HPOP06H12RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0,1,2,3,4,5,6,7DB80H,90H,88H,83
17、H,0C6H,0A1H,86H,8EH;8,9,A,B,C,D,E,FDB40H,79H,24H,30H,19H,12H,2H,78H;0.,1.,2.,3.,4.,5.,6.,7.DB00H,10H,08H,03H,46H,21H,06H,0EH;8.,9.,A.,B.,C.,D.,E.,F.END主程序程序清單:ORG0000HMOVSP,#6FHMOV20H,#00MOV21H,#00MOV22H,#00MOV23H,#00MOV24H,#00MOV25H,#00MOVDPTR,#4003H;8255初始化MOVA,#10000001B;A口、B口方式0輸出,C口高4位輸出,低4位輸入M
18、OVXDPTR,A;ACALLDELAY500MS;延時0.5秒LOOP3:LCALLDISP;調用顯示子程序MOV20H,21HMOV21H,22HMOV22H,23HMOV23H,24HMOV24H,25HINC25HANL25H,#0FHSJMPLOOP3DISP:MOVR0,#20HMOVR2,#0FEHDISP1:MOVA,R0MOVDPTR,#TABMOVCA,A+DPTRMOVDPTR,#4001HMOVXDPTR,AMOVA,R2MOVDPTR,#4000HMOVXDPTR,ACALLDELAY500USMOVA,#0FFHMOVXDPTR,A13MOVA,R2RLAMOVR2
19、,AINCR0CJNER0,#26H,DISP1RETDELAY500MS:PUSH00HMOVR0,#25;延時0.5秒NEXT:ACALLDELAY20MSDJNZR0,NEXTPOP00HRETDELAY500US:PUSH03HMOVR3,#250DJNZR3,$POP03HRETDELAY20MS:PUSH06HPUSH07HMOVR7,#99AGAIN:MOVR6,#100DJNZR6,$DJNZR7,AGAINPOP07HPOP06HRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0,1,2,3,4,5,6,7DB80H,90H,88H
20、,83H,0C6H,0A1H,86H,8EH;8,9,A,B,C,D,E,FDB40H,79H,24H,30H,19H,12H,2H,78H;0.,1.,2.,3.,4.,5.,6.,7.DB00H,10H,08H,03H,46H,21H,06H,0EH;8.,9.,A.,B.,C.,D.,E.,F.END實驗步驟:1.將P0.0P0.7與JD0JD7連接起來。開關KC倒向上方。2.建立一個工程,將在預習中做好的實驗內容1和2的程序拷貝到一個*.asm文件加入。3.編譯后與單片機硬件連接,運行。4.在20H起始的6個字節中置入00H0FH中的任意6個值,然后連續運行此程序,應顯示0F中的6個數
21、字;在20H起始的6個字節中置入10H1FH中的任意6個值,然后連續運行此程序,應顯示0.F.中的6個數字。5.如果運行結果不正常,可以用設斷點、單步運行的方法查找錯誤所在,修改后重新編譯、與單片機硬件連接,運行。直至獲得正確的結果。6.建立一個工程,將在預習中做好的實驗內容1和3的程序拷貝到一個*.asm文件加入。7.編譯后與單片機硬件連接,運行。148.觀察LED顯示器,應從右向左依次出現、2、3,重要提示:1.指令中的“,:;”是西文字符,切不可使用中文符號;數字“”與字符“”不可混淆。2.軟件延時可以用循環程序實現,單片機的時鐘為12MHz,每條指令的執行時間可以從教材的附表中查出。3
22、.程序的起始地址必須為(以后各實驗均同)。4.退出硬件連接可以按SS10,在進行硬件連接前最好也按一次SS10。5.對程序修改后必須退出硬件連接,進行編譯后再重新進行硬件連接才能生效。6.調用顯示子程序330次可以用雙重循環實現。且使用的計數單元與顯示子程序中用到的不能沖突。7.開關KC倒向上方。實驗總結:本次試驗編程比較復雜,但在老師的指導和同學的幫助下還是完成了試驗。通過這前三次的實驗多單片機的實驗過程有了較穩定的掌握。實驗4矩陣鍵盤的使用實驗目的:掌握矩陣鍵盤的使用及鍵盤掃描程序的設計方法。實驗設備:ZY15MCU12BD型綜合單片機實驗箱一臺、具有一個RS232串行口并安裝KeilC5
23、1的計算機一臺。實驗原理及環境:實驗箱上有一個16鍵的矩陣鍵盤,分為4行4列。4行分別連接到一片8255(與8段LED顯示器的段驅動和位驅動共用)的PC0PC3,4列分別連接到8255的PC4PC7。8255的A口、B口、C口、控制口的地址分別為片外RAM的4000H、4001H、4002H、。第4列(PC7)第3列(PC6)第2列(PC5)第1列(PC4)PC300H01H02H03H第4行行PC204H05H06H07H第3行輸PC108H09H0AH0BH第2行入PC00CH0DH0EH0FH第1行00H01H02H03H列驅動圖4-1鍵盤布置及鍵值選擇列驅動碼使某一列為低電平而其它列為
24、高電平,再讀取行輸入,若該列有鍵按下則相應的位便是低電平。每個鍵均安排一個鍵值,如圖4-1所示。實驗內容:1.編寫一個鍵盤掃描子程序(在主程序中已對接口芯片8255做好必要的初始化)。這個程序對鍵盤作一次掃描,若無鍵按下,返回時累加器A中為FFH,若有鍵按下,返回時A中為該鍵鍵值,鍵盤掃描子程序流程圖如圖4-2所示。15開始N有無鍵按下?YR2置列驅動碼初值(第1列低電平,其他列高)輸出列驅動碼輸入行狀態Y有無鍵按下?N暫存行狀態軟件延時20mS列驅動碼指向下一列(列驅動碼左移)再讀行狀態NN二次相同?列驅動碼超出?YY讀行狀態直到鍵松開A#0FFH調用查鍵值子程序返回返回圖4-2鍵盤掃描子程
25、序流程圖其中,查鍵值子程序可以自行編寫,也可以使用下面這個查鍵值子程序,這個子程序的參數如下:入口:行列關鍵值碼放在累加器A中,高4位是列驅動碼(被掃描列的對應位為0,其余位均為1低4位是行狀態(按下鍵的對應位為0,其余位均為1出口:鍵碼放在A中帶出。占用:R1、PSW、DPTR。程序清單如下:;查鍵值子程序,起始地址為KEY20KEY20:PUSHACC;暫存關鍵值MOVR1,#00H;查鍵值自變量清0KEY21:JNBACC.4,KEY22;計算列數RRA16INCR1SJMPKEY21KEY22:MOVA,R1;按每列個鍵計算MOVB,#4MULABMOVR1,APOPACC;恢復關鍵值
26、KEY23:JNBACC.0,KEY24;計算行數RRAINCR1SJMPKEY23KEY24:MOVDPTR,#KEYTAB;取鍵值MOVA,R1MOVCA,A+DPTRRETKEYTAB:DB0FH,0BH,07H,03HDB0EH,0AH,06H,02HDB0DH,09H,05H,01HDB0CH,08H,04H,00H2.鍵盤掃描子程序自身無法運行,為了運行這個子程序,另編寫以下程序:ORG0000HMOVSP,#6FHMOVR0,#5;延時0.5秒LOOP1:MOVR1,#200LOOP2:MOVR2,#250DJNZR2,$DJNZR1,LOOP2DJNZR0,LOOP1MOVDP
27、TR,#4003H;8255初始化MOVA,#10000001B;A口、口方式輸出,口高位輸出,低4位輸入MOVXDPTR,ALOOP3:LCALLDISP;調用顯示子程序DIS,設顯示子程序入口為DISPLCALLKEY;調用鍵盤掃描子程序,設鍵盤掃描子程序入口為KEYCJNEA,#0FFH,LOOP4;如果有鍵按下轉SJMPLOOP3LOOP4:MOV20H,21HMOV21H,22HMOV22H,23HMOV23H,24HMOV24H,25HMOV25H,ASJMPLOOP3其中顯示子程序使用實驗3中的顯示子程序。程序運行后,每按一鍵便從顯示器的右端移入一個對應的數。17程序清單:ORG
28、0000HMOVSP,#6FHMOV20H,#00MOV21H,#00MOV22H,#00MOV23H,#00MOV24H,#00MOV25H,#00ACALLDELAY500MS;延時0.5秒MOVDPTR,#4003H;8255初始化MOVA,#10000001B;A口、B口方式0輸出,C口高4位輸出,低4位輸入MOVXDPTR,ALOOP3:LCALLDISP;調用顯示子程序LCALLKEY;鍵盤掃描子程序入口CJNEA,#0FFH,LOOP4;如果有鍵按下轉SJMPLOOP3LOOP4:MOV20H,21HMOV21H,22HMOV22H,23HMOV23H,24HMOV24H,25H
29、MOV25H,ASJMPLOOP3KEY:MOVA,#00H;使4根列線都輸出0MOVDPTR,#4002HMOVXDPTR,AMOVXA,DPTRANLA,#0FHCJNEA,#0FH,KEYDNMOVA,#0FFHRETKEYDN:MOVR2,#11101111BKEYDN1:MOVA,R2MOVXDPTR,AMOVXA,DPTRANLA,#0FHCJNEA,#0FH,CONTNEXTCOLUMN:MOVA,R2RLCAMOVR2,AJCKEYDN118sjmpNOKEYDNCONT:MOV03H,ALCALLDELAY20MS;延時20msMOVXA,DPTRANLA,#0FHCJNEA
30、,03H,NOKEYDNWAITKEYUP:MOVXA,DPTRANLA,#0FHCJNEA,#0FH,WAITKEYUP;讀行狀態,直到鍵松開MOVA,R2ANLA,#0F0HMOVR2,AMOVA,03HORLA,R2LCALLKEY20RETNOKEYDN:MOVA,#0FFHRETKEY20:PUSHACC;暫存關鍵值MOVR1,#00H;查鍵值自變量清0KEY21:JNBACC.4,KEY22;計算列數RRAINCR1SJMPKEY21KEY22:MOVA,R1;按每列4個鍵計算MOVB,#4MULABMOVR1,APOPACC;恢復關鍵值KEY23:JNBACC.0,KEY24;計
31、算行數RRAINCR1SJMPKEY23KEY24:MOVDPTR,#KEYTAB;取鍵值MOVA,R1MOVCA,A+DPTRRETKEYTAB:DB0FH,0BH,07H,03HDB0EH,0AH,06H,02HDB0DH,09H,05H,01HDB0CH,08H,04H,00HDISP:MOVR0,#20HMOVR2,#0FEH19DISP1:MOVA,R0MOVDPTR,#TABMOVCA,A+DPTRMOVDPTR,#4001HMOVXDPTR,AMOVA,R2MOVDPTR,#4000HMOVXDPTR,ACALLDELAY500USMOVA,#0FFHMOVXDPTR,AMOVA
32、,R2RLAMOVR2,AINCR0CJNER0,#26H,DISP1RETDELAY500MS:PUSH00HMOVR0,#25;延時0.5秒NEXT:ACALLDELAY20MSDJNZR0,NEXTPOP00HRETDELAY500US:PUSH03HMOVR3,#250DJNZR3,$POP03HRETDELAY20MS:PUSH06HPUSH07HMOVR7,#99AGAIN:MOVR6,#100DJNZR6,$DJNZR7,AGAINPOP07HPOP06HRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0,1,2,3,4,5,6,7DB
33、80H,90H,88H,83H,0C6H,0A1H,86H,8EH;8,9,A,B,C,D,E,FDB40H,79H,24H,30H,19H,12H,2H,78H;0.,1.,2.,3.,4.,5.,6.,7.DB00H,10H,08H,03H,46H,21H,06H,0EH;8.,9.,A.,B.,C.,D.,E.,F.END20實驗步驟:1.將P0.0P0.7與JD0JD7連接起來。開關KC倒向上方。2.建立一個工程,將在預習中做好的實驗內容1和2的程序以及實驗5中的顯示子程序拷貝到一個的*.asm文件加入。3.編譯后與單片機硬件連接,運行。4.按下鍵盤上的各鍵,相應的數字會出現在顯示器上
34、。重要提示:1.指令中的“,:;”是西文字符,切不可使用中文符號;數字“”與字符“”不可混淆。2.軟件延時可以用循環程序實現,單片機的時鐘為12MHz,每條指令的執行時間可以從教材的附表中查出。注意使用的計數單元不要與程序中其他處所使用的單元發生沖突。3.程序的起始地址必須為(以后各實驗均同)。4.退出硬件連接可以按SS10,在進行硬件連接前最好也按一次SS10。5.對程序修改后必須退出硬件連接,進行編譯后再重新進行硬件連接才能生效。6.若有鍵按下,則讀回的行狀態中對應的位是0,否則對應的位就會是。7.判斷列驅動碼是否超出,可以用檢測0位的方法實現。8.在調用查鍵值子程序時,要保證累加器A的高
35、4位是本次掃描的列驅動碼,低4位是本次掃描讀入的行狀態。9直到鍵松開”,是反復讀入行狀態,直到讀入的各位狀態都為“4位是有效的,要將無用且不定的高4位濾掉。10.開關KC倒向上方。實驗總結:這個實驗太難了,最后還是磕磕絆絆的做完了,但沒怎么掌握。課后要結合課本把它弄懂。21實驗5A/D轉換實驗目的:掌握用ADC0809實現A/D的方法。實驗設備:ZY15MCU12BD型綜合單片機實驗箱一臺、具有一個RS232串行口并安裝KeilC51的計算機一臺。實驗原理及環境:電位器W1將+5V電壓分壓后送入的輸入IN4IN7,調節電位器W1可以獲得+5V的電壓輸入。ADC0809的接口參數如下:輸入電壓X
36、圍0+5V啟動IN4A/D轉換寫任意數到8004H取轉換結果讀8004HEOC通過一個反相器輸出實驗內容:設計一個程序,將IN4輸入的0+5V模擬電壓轉換成數字量,再將這個2位十六進制轉換成3位十進制數,放在LED顯示器的第四六位顯示。其中顯示子程序可以用實驗中的子程序。判斷轉換是否結束可以將ADC0809的EOC(經反相器)引入到P1.0,然后查詢P1.0的狀態。22開始設置堆棧棧底SP軟件延時0.5秒等待復位結束初始化口、口方式0輸出口任意20H22H單元清0啟動IN4A/D轉換N轉換已完成?Y取轉換結果轉換成位十進制數放入23H25H調用顯示子程序次圖5-1實驗7程序流程圖程序清單:OR
37、G0000HMOVSP,#6FHMOV20H,#00MOV21H,#00MOV22H,#00MOV23H,#00MOV24H,#00MOV25H,#00MOVDPTR,#4003H;8255初始化MOVA,#10000001B;A口、B口方式0輸出,C口高4位輸出,低4位輸入MOVXDPTR,A;ACALLDELAY500MS;延時0.5秒23LOOP3:MOVA,#0FFHMOVDPTR,#8004HMOVXDPTR,A;任意值到(8004H)啟動IN4A/D轉換WAITZHJS:ORLP1,#01HMOVC,P1.0JCWAITZHJS;等待轉換結束MOVXA,DPTR;AD轉換的數據輸出
38、;ORLP0,#0FFH;MOVA,P0;讀P0口MOVB,#100DIVABMOV23H,AMOVA,BMOVB,#10DIVABMOV24H,AMOV25H,BMOVR7,#232AGAIN1:LCALLDISP;調用顯示子程序DJNZR7,AGAIN1SJMPLOOP3DISP:MOVR0,#20HMOVR2,#0FEHDISP1:MOVA,R0MOVDPTR,#TABMOVCA,A+DPTRMOVDPTR,#4001HMOVXDPTR,AMOVA,R2MOVDPTR,#4000HMOVXDPTR,ACALLDELAY500USMOVA,#0FFHMOVXDPTR,AMOVA,R2RLA
39、MOVR2,AINCR0CJNER0,#26H,DISP1RETDELAY500MS:PUSH00HMOVR0,#25;延時0.5秒NEXT:ACALLDELAY20MSDJNZR0,NEXT24POP00HRETDELAY500US:PUSH03HMOVR3,#250DJNZR3,$POP03HRETDELAY20MS:PUSH06HPUSH07HMOVR7,#99AGAIN:MOVR6,#100DJNZR6,$DJNZR7,AGAINPOP07HPOP06HRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0,1,2,3,4,5,6,7DB80H,
40、90H,88H,83H,0C6H,0A1H,86H,8EH;8,9,A,B,C,D,E,FDB40H,79H,24H,30H,19H,12H,2H,78H;0.,1.,2.,3.,4.,5.,6.,7.DB00H,10H,08H,03H,46H,21H,06H,0EH;8.,9.,A.,B.,C.,D.,E.,F.END實驗步驟:1.將P0.0P0.7與JD0JD7連接起來。開關KC倒向上方。2.將P0.0P0.7與U9D0U9D7連接起來。3.將P1.0與EOC連接起來。4.建立一個工程,將在預習中做好的實驗程序*.asm文件加入。5.編譯后與單片機硬件連接,運行。6.旋轉電位器W1,LED
41、顯示器上的數字應在000000000255之間變化(因受電位器的調節X圍限制,有可能小于這個X圍)。重要提示:1.指令中的“,:;”是西文字符,切不可使用中文符號;數字“”與字符“”不可混淆。2.EOC是經過一個反相器后輸出的,所以要注意轉換完成后檢測到的是低電平。3.調用顯示子程序32次可以用循環實現,使用的計數單元與顯示子程序中用到的不能沖突。4.開關KC倒向上方。實驗總結:我覺得這個實驗的重點是對芯片原理,及CS51對ADC0809的接口的掌握,然后就是編程試驗AD轉換,本實驗不是太難。以后還要繼續加強這方面的學習。25實驗6D/A轉換實驗目的:掌握用DAC0832實現D/A轉換的方法。實驗設備:ZY15MCU12BD型綜合單片機實驗箱一臺、具有一個RS232串行口并安裝KeilC51的計算機一臺。實驗原理及環境:DAC0832的連接使用單緩沖方式,D/A轉換口地址為6000H0255時,輸出電壓+5V。可以用這
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 理財師考試考后總結及反思試題及答案
- 微生物檢驗信息技術應用試題及答案
- 證券交易所功能與2025年考試的關系試題及答案
- 企業財務信息透明度探討試題及答案
- 2025年考試真題解析試題及答案
- 銀行從業資格證考試科技應用前景分析試題及答案
- 項目調度技巧與工具比較試題及答案
- 注會考試重要考證點分析試題及答案
- 2025年證券從業資格證考試預測題及試題及答案
- 2025年證券從業資格證解讀政策變化試題及答案
- 2025安徽中醫藥大學輔導員考試題庫
- 我愛刷牙幼兒課件
- 智慧樹知到《演講學(同濟大學)》2025章節測試附答案
- 高等數學(慕課版)教案 教學設計-3.4函數的單調性與極值;3.5函數的最值及其應用
- 政府審計 課件 第五章 金融審計
- 2025年度文化產業競業禁止與知識產權保護協議
- 孕產婦分娩恐懼預防和管理的最佳證據總結
- 2025年國核鈾業發展有限責任公司招聘筆試參考題庫含答案解析
- 國家開放大學《小企業管理基礎》綜合練習題形成性考核參考答案
- 吊裝設備知識培訓課件
- 2025山東能源集團中級人才庫選拔高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論