單片機(jī)實(shí)驗(yàn)原理包含八個(gè)基礎(chǔ)實(shí)驗(yàn)
1.LED燈循環(huán)點(diǎn)亮
2.外部中斷計(jì)數(shù),BCD碼轉(zhuǎn)換
3.四位一體數(shù)碼管動(dòng)態(tài)靜態(tài)顯示
4.四位秒表
5.脈沖寬度與周期測量
6.串行口和異步通信
7.外部RAM擴(kuò)展
8.自主設(shè)計(jì)點(diǎn)陣字符
附件中包含protues仿真設(shè)計(jì),程序流程圖,匯編代碼,以及實(shí)驗(yàn)心得體會(huì)。
實(shí)驗(yàn)一
本實(shí)驗(yàn)要求在P1端口接8個(gè)LED,并編程依次循環(huán)點(diǎn)亮。要求用軟件延時(shí)程序控制LED的亮滅時(shí)間,并能精確地計(jì)算和用軟件測量延時(shí)時(shí)間。 圖1.1.1 仿真原理圖 圖1.1.2 仿真原理圖細(xì)節(jié) Protues中已默認(rèn)添加了復(fù)位電路,其中R1-R8是限流電阻,將普通二極管的正極接到VCC,負(fù)極接到P0口,運(yùn)行結(jié)果:D1-D8依次導(dǎo)通,導(dǎo)通時(shí)方點(diǎn)變紅。 圖1.1.3 程序流程圖 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV A,#10000000B LOOP0:MOV P1,A MOV R0,#0FFH LOOP1:MOV R1,#0FFH LOOP2:NOP NOP DJNZ R1,LOOP2 DJNZ R2,LOOP1 RR A SJMP LOOP0 END
(1)number1和number2的作用是什么; R0=number1,R1=number2是設(shè)置循環(huán)次數(shù),其中,R1為LOOP2循環(huán)的次數(shù),R0為LOOP1循環(huán)的次數(shù)。 (2)燈相鄰兩次變化之間的延遲時(shí)間是多少,如何控制,如何計(jì)算? R1為LOOP2循環(huán)的次數(shù),即t1=255*2=510us,R0為LOOP1循環(huán)的次數(shù),t2=255*2*255=130050us,所以總的延遲時(shí)間為T=t1+t2=130560us。 控制延遲時(shí)間可通過增加循環(huán)次數(shù)或者增加循環(huán)層數(shù)實(shí)現(xiàn),又因?yàn)?0C52中Rn寄存器最大值為255,所以在此實(shí)驗(yàn)基礎(chǔ)上,可增加循環(huán)層數(shù): MOV R3,#07H LOOP1:MOV R2,#0FFH LOOP2:MOV R1,#0FFH LOOP3:NOP NOP DJNZ R1,LOOP3 DJNZ R2,LOOP2 考慮到單片機(jī)的晶振為11.0592MHz,及一個(gè)機(jī)器周期為1.085us,經(jīng)過計(jì)算當(dāng)?shù)谌龑友h(huán)次數(shù)為7時(shí),延遲約等于1s。 初次使用實(shí)驗(yàn)箱和相關(guān)軟件還不甚熟練,應(yīng)加強(qiáng)練習(xí)。 實(shí)驗(yàn)前,應(yīng)先在Protues軟件上進(jìn)行仿真,能很大程度上增大實(shí)驗(yàn)成功概率;插電路的過程中要小心導(dǎo)線間是否短路,導(dǎo)線非絕緣部分不應(yīng)剪得過長,對待實(shí)驗(yàn)要有耐心,按照一定的順序從源頭和細(xì)節(jié)處檢查電路,比如單片機(jī)是否和實(shí)驗(yàn)箱共地,是否有導(dǎo)線脫落等等。 若燒入程序出現(xiàn)問題,可先關(guān)閉實(shí)驗(yàn)箱電源再次燒錄,或者重新插入串口。 總之,實(shí)驗(yàn)過程中會(huì)遇到各種意想不到的情況,一定要沉心靜氣,不然就浪費(fèi)了時(shí)間,又難以發(fā)現(xiàn)錯(cuò)誤。
實(shí)驗(yàn)二 1.功能要求 本實(shí)驗(yàn)要求: (1)P0口接8個(gè)燈,INT0引腳接一下開關(guān)K0。 (2)K0用于引發(fā)外部中斷,在外部中斷子程序中,對K0按下的次數(shù)進(jìn)行計(jì)數(shù),然后以BCD碼形式,通過P0口的8個(gè)燈輸出計(jì)數(shù)結(jié)果。
2.硬件原理 圖1.2.1 仿真原理圖 此時(shí)按鍵16次,紅色發(fā)光二極管從左到右前四位表示十進(jìn)制數(shù)的十位,后四位表示十進(jìn)制數(shù)的各位,從仿真結(jié)果和試驗(yàn)結(jié)果看,當(dāng)按鍵99次,計(jì)數(shù)清零,重新開始計(jì)數(shù)。 3.軟件程序流程 圖1.2.2 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0P ORG 0013H LJMP INT1P ORG 0020H MAIN: MOV P0,#00H MOV R0,#00H MOV A,#00H SETB IT0 SETB IT1 SETB EX0 SETB EX1 SETB PX0 CLR PX1 SETB EA SJMP $ ORG 0050H INT0P: INC A DA A MOV P0,A RETI END 5.實(shí)驗(yàn)的問題及討論 關(guān)于Protues使用的一些問題: (1)在Protues仿真時(shí),若要用到P0口,要記得加上拉電阻,否則發(fā)光二極管不會(huì)發(fā)光,而實(shí)驗(yàn)箱中已加可不考慮; (2)排阻使用時(shí),應(yīng)注意其使用條件,及阻值的設(shè)置。 6.實(shí)驗(yàn)心得及建議 單片機(jī)能實(shí)現(xiàn)的某種功能有多種編程方法,我覺得作為初學(xué)者,應(yīng)該先嘗試自己編程,哪怕編出來程序冗長,至少在這個(gè)過程中練習(xí)了匯編語言的使用,自己編完之后,可以查閱相關(guān)資料,看看網(wǎng)上成熟的程序的優(yōu)點(diǎn);多和同學(xué)們討論思路,有時(shí)間的情況下互相看以下程序,能學(xué)到很多知識(shí),拓寬思考問題的角度。
建議:做Protues仿真時(shí),如果沒有系統(tǒng)地學(xué)習(xí)過Protues,遇到問題要努力嘗試解決,并記錄下來這些問題和解決辦法,有利于今后的學(xué)習(xí)。
實(shí)驗(yàn)三 1.功能要求 本實(shí)驗(yàn)要求P1口通過驅(qū)動(dòng)芯片控制斷碼輸出信號(hào)線,P0口通過驅(qū)動(dòng)芯片控制位選線,并實(shí)現(xiàn)以下功能: (1)當(dāng)開關(guān)K0接低電平時(shí),第一位依次顯示0~F,然后第二位、第三位、第四位,再循環(huán)回第一位。 (2)當(dāng)開關(guān)K0接高電平時(shí),四位動(dòng)態(tài)顯示“HELP”。 2.硬件原理 圖1.3.1 74LS244引腳圖及功能表 在光學(xué)元件(optoelectronics)分類里,有各種數(shù)碼管和液晶。7段對應(yīng)英文是7SEG,4位一體的英文是MPX4,共陰極CC,共陽極CA,最后的英文是顏色的意思。所以7SEG-MPX4-CA-BLUE為7段4位一體共陽極藍(lán)色數(shù)碼管顯示器。
圖1.3.2 仿真原理圖 P2.2接地時(shí),每位均依次顯示0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F 圖1.3.3 仿真原理圖 P2.2接高電平時(shí),顯示“HELP” 3.軟件程序流程 圖1.3.4 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0010H MAIN: MOV P0,#10001000B JNB P2.2,LOOP4 JB P2.2,NEXT0 NEXT0:LJMP LOOP5 LOOP4:MOV P1,#0C0H LCALL DELAY JB P2.2,NEXT0 MOV P1,#0F9H LCALL DELAY JB P2.2,NEXT0 MOV P1,#0A4H LCALL DELAY JB P2.2,NEXT0 MOV P1,#0B0H LCALL DELAY JB P2.2,NEXT0 MOV P1,#99H LCALL DELAY JB P2.2,NEXT0 MOV P1,#92H LCALL DELAY JB P2.2,NEXT0 MOV P1,#82H LCALL DELAY JB P2.2,NEXT0 MOV P1,#0F8H LCALL DELAY JB P2.2,NEXT0 MOV P1,#80H LCALL DELAY JB P2.2,NEXT0 MOV P1,#90H LCALL DELAY JB P2.2,NEXT0 MOV P1,#88H LCALL DELAY JB P2.2,NEXT0 MOV P1,#83H LCALL DELAY JB P2.2,NEXT0 MOV P1,#0C6H LCALL DELAY JB P2.2,NEXT0 MOV P1,#0A1H LCALL DELAY JB P2.2,LOOP5 MOV P1,#86H LCALL DELAY JB P2.2,LOOP5 MOV P1,#8EH LCALL DELAY JB P2.2,LOOP5 MOV A,P0 RL A MOV P0,A LJMP LOOP4 ORG 0100H DELAY:MOV R0,#10H LOOP1:MOV R1,#10H LOOP2:MOV R2,#0FFH LOOP3:NOP NOP DJNZ R2,LOOP3 DJNZ R1,LOOP2 DJNZ R0,LOOP1 ;2*255+50*255*2+10*50*255*2us RET LOOP5:MOV R5,P0 MOV P0,#10001000B MOV P1,#89H LCALL DELAY1 JNB P2.2,NEXT1 MOV P1,#86H LCALL DELAY1 JNB P2.2,NEXT1 MOV P1,#0C7H LCALL DELAY1 JNB P2.2,NEXT1 MOV P1,#8CH LCALL DELAY1 JNB P2.2,NEXT1 LJMP LOOP5 ORG 0150H DELAY1:MOV R3,#05H LOOP7:MOV R4,#0FFH LOOP6:NOP NOP DJNZ R4,LOOP6 DJNZ R3,LOOP7 MOV A,P0 RR A MOV P0,A RET NEXT1:MOV P0,R5 LJMP LOOP4 END 5.實(shí)驗(yàn)的問題及討論 (1)由于程序中沒有使用DB查表命令,導(dǎo)致程序冗長,由高到低的變化時(shí)還不能緊接著上一字母讀數(shù),僅能實(shí)現(xiàn)由低到高的自然變化。 (2)在和同學(xué)們的討論中,使用DB指令,縮短了程序長度;在不使用查表指令的條件下,若將HELP循環(huán)放入子程序中,由于子程序執(zhí)行完成后返回之前的節(jié)點(diǎn),可繼續(xù)讀數(shù)。 6. 實(shí)驗(yàn)心得及建議 盡快熟記以及熟練使用匯編指令,寫程序前應(yīng)先把思路捋順,做好程序流程圖,這樣程序?qū)懫饋砭蜁?huì)得心應(yīng)手一些。
實(shí)驗(yàn)四 1.功能要求 (1) 用T0定時(shí)器實(shí)現(xiàn)1秒定時(shí),控制一個(gè)LED亮1秒,滅1秒,并不斷循環(huán)。 (2) 實(shí)現(xiàn)一個(gè)4位秒表: ① 用開關(guān)K0模擬秒表的啟動(dòng)、停止、清零功能,K0觸發(fā)外部中斷INT0,按一次啟動(dòng)計(jì)時(shí),按一次停止,再按一次清零,在三個(gè)狀態(tài)中循環(huán)。 ②定時(shí)采用T0定時(shí)器中斷完成,最低位按1/10秒計(jì)數(shù),依次計(jì)數(shù)單位為1分、10秒、1秒、1/10秒。 ③要求外部中斷INT0的優(yōu)先級高于T0的優(yōu)先級。 2.硬件原理 圖1.4.1 硬件原理圖(仿真顯示) 3.軟件程序流程 圖1.4.2 程序流程圖
4.程序清單 ;剛開始未顯示,當(dāng)?shù)谝淮伟碖0時(shí),開始計(jì)時(shí); ;進(jìn)一次中斷是1/20秒 50MS 問題在于用51輸入的無符號(hào)整數(shù)最大實(shí)現(xiàn)255然后清零,所以顯示一直為零。 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0P ORG 000BH LJMP T0P ORG 0050H MAIN: MOV P0,#00000001B MOV TMOD,#00000001B MOV TL0,#0B0H ;循環(huán)2次最佳,誤差小 ,1/10 second MOV TH0,#3CH SETB ET0 SETB IT0 SETB EX0 SETB EA MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV R6,#00H MOV R7,#00H MOV DPTR,#0400H W: LCALL XIANSHI SJMP W ;在主程序中一直顯示 T0P: INC R3 MOV TL0,#0B0H ;循環(huán)2次最佳,誤差小 ,1/10 second MOV TH0,#3CH CJNE R3,#2,BACK INC R2 MOV R3,#00H CJNE R2,#10,BACK INC R4 MOV R2,#00H CJNE R4,#10,BACK INC R5 MOV R4,#00H CJNE R5,#06,BACK INC R7 MOV R5,#00H CJNE R7,#10,BACK MOV R7,#00H BACK: RETI INT0P: INC R6 CJNE R6,#01H,CLR0 SETB TR0 CLR0: CJNE R6,#03H,TIMER MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV R6,#00H MOV R7,#00H LJMP STOP1 TIMER: CJNE R6,#02H,STOP1 CLR TR0 MOV TH1,#3CH MOV TL1,#0B0H STOP1: RETI ORG 0250H XIANSHI: MOV A,R2 MOVC A,@A+DPTR MOV P1,A LCALL DELAY MOV P0,#00000010B MOV A,R4 MOVC A,@A+DPTR MOV P1,A LCALL DELAY MOV P0,#00000100B MOV A,R5 MOVC A,@A+DPTR MOV P1,A LCALL DELAY MOV P0,#00001000B MOV A,R7 MOVC A,@A+DPTR MOV P1,A LCALL DELAY MOV P0,#00000001B RET ORG 0350H DELAY: MOV R0,#05H ;2*255+2*255*5=3060US LOOP0: MOV R1,#0FFH LOOP1: NOP NOP DJNZ R1,LOOP1 DJNZ R0,LOOP0 RET ORG 0400H DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H ;0~9 END (1)實(shí)驗(yàn)通過計(jì)時(shí)器0工作方式一實(shí)現(xiàn)四位秒表計(jì)時(shí)功能,使TH0、TL0初始值盡可能小,減少跳入計(jì)時(shí)器中斷的次數(shù),以減少誤差。 (2)應(yīng)注意晶振頻率,盡可能精確計(jì)時(shí)。 實(shí)驗(yàn)前捋清思路很重要,注意中斷不可寫的過長,過長可能會(huì)導(dǎo)致單片機(jī)運(yùn)行錯(cuò)誤。 實(shí)驗(yàn)五 1.功能要求 ① 自主設(shè)計(jì)測量方法,編程連續(xù)測量輸入脈沖寬度,并用七段LED顯示結(jié)果。 ② 自主設(shè)計(jì)測量方法,編程連續(xù)測量輸入脈沖周期,并用七段LED顯示結(jié)果。 ③ 自主設(shè)計(jì)測量方法,同時(shí)測量脈沖寬度和周期,由開關(guān)K0選擇顯示脈沖寬度還是顯示脈沖周期。 2.硬件原理 圖1.5.1 硬件原理圖 圖1.5.2 硬件原理圖 3.軟件程序流程 圖1.5.3 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0P ORG 000BH LJMP T0P ORG 0100H MAIN: MOV R1,#0 MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0 MOV R6,#0 MOV R7,#0 MOV 30H,#0C0H MOV 31H,#0C0H MOV 32H,#0C0H MOV 33H,#0C0H MOV 21H,#0 SETB IT0 SETB EX0 SETB ET0 SETB EA XIAN0: LCALL XIANSHI LJMP XIAN0 T0P: INC R3 CJNE R3,#10,BACK MOV R3,#0 INC R4 CJNE R4,#10,BACK MOV R4,#0 INC R5 CJNE R5,#10,BACK MOV R5,#0 INC R6 CJNE R6,#10,BACK MOV R6,#0 INC R7 BACK: RETI INT0P: INC 21H MOV A,21H CJNE A,#1,ER2 JB P3.3,WIDTH TIME: MOV TMOD,#02H SJMP START WIDTH: JNB P3.3,TIME MOV TMOD,#0AH START: MOV TH0,#164 MOV TL0,#164 SETB TR0 ER2: CJNE A,#2,BACK1 CLR TR0 MOV A,TL0 SUBB A,TH0 MOV B,#10 DIV AB MOV R2,A MOV R1,B CJNE R7,#0,DDIAN3 CJNE R6,#0,DDIAN2 CJNE R5,#0,DDIAN1 MOV R0,#1 LJMP CUN DDIAN3: MOV R0,#4 LJMP CUN DDIAN2: MOV R0,#3 LJMP CUN DDIAN1: MOV R0,#2 CUN: LCALL CHA MOV 30H,A INC R0 LCALL CHA MOV 31H,A INC R0 LCALL CHA MOV 32H,A INC R0 LCALL CHA MOV 33H,A MOV 21H,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0 MOV R6,#0 MOV R7,#0 BACK1: RETI XIANSHI:MOV DPTR,#TAB MOV P0,#01H MOV P1,30H LCALL DELAY MOV P0,#02H MOV P1,31H LCALL DELAY MOV P0,#04H MOV P1,32H LCALL DELAY MOV P0,#08H MOV P1,33H LCALL DELAY RET CHA: MOV A,@R0 MOVC A,@A+DPTR CJNE R0,#4,BACK2 ADD A,#0AH ;加十,加小數(shù)點(diǎn) BACK2: RET DELAY: MOV 23H,#03H LOP1: MOV 22H,#0FFH LOOP: NOP DJNZ 22H,LOOP DJNZ 23H,LOP1 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 5.實(shí)驗(yàn)的問題及討論 用查詢法發(fā)現(xiàn)數(shù)碼管的顯示會(huì)受測量脈沖頻率的影響,然后選用中斷法,在檢測到脈沖下降沿時(shí)開始計(jì)時(shí),利用門控位方式二測脈沖寬度,方式二測脈沖周期。 6.實(shí)驗(yàn)心得及建議 實(shí)驗(yàn)中遇到測量脈沖周期為100us的倍數(shù)時(shí),會(huì)出現(xiàn)較大誤差,分析發(fā)現(xiàn)是因?yàn)楫?dāng)計(jì)時(shí)達(dá)到100us時(shí)由于誤差造成跳入中斷失敗,100微秒位計(jì)數(shù)少一,為解決這一問題,適當(dāng)加大微秒位誤差以減小總體誤差。
實(shí)驗(yàn)六 ①利用串行口方式0實(shí)現(xiàn)一個(gè)七段數(shù)碼管的顯示控制,輪流顯示0~9十個(gè)數(shù)碼。 ②兩人一組,利用異步通信功能將一方的8個(gè)按鍵的高低電平狀態(tài)傳到另一方,并利用另一方的8個(gè)LED顯示其開關(guān)狀態(tài),要求雙向通信,互相顯示。 2.硬件原理 圖1.6.1 硬件原理圖 圖1.6.2 硬件原理圖 圖1.6.3 74LS164引腳圖 表1.6.1 74LS164功能表 3.軟件程序流程 圖1.6.4 實(shí)驗(yàn)1流程圖圖1.6.5 實(shí)驗(yàn)2流程圖 4.程序清單 實(shí)驗(yàn)1:輪流顯示0-9 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SCON,#00H ;SM0,SM1,SM2,REN,TB8,RB8,TI,RI MOV DPTR,#TAB TRAM1: MOV R3,#00H TRAM: MOV A,R3 MOVC A,@A+DPTR MOV SBUF,A CJNE R3,#0AH,WAIT MOV R3,#00H LJMP TRAM1 WAIT: JBC TI,NEXT SJMP WAIT NEXT: INC R3 LCALL DELAY LJMP TRAM ORG 0200H DELAY: MOV R2,#03H LOOP2: MOV R0,#09FH LOOP0: MOV R1,#0FFH LOOP1: NOP NOP DJNZ R1,LOOP1 DJNZ R0,LOOP0 DJNZ R2,LOOP2 ;2*255+2*255*255+2*255*255*8~1S RET ORG 0300H TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 實(shí)驗(yàn)2:雙向通信,互相顯示 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SCON,#50H ;方式1,且接收到的數(shù)據(jù)均要保存 MOV TMOD,#20H ;T1做波特率發(fā)生器 MOV PCON,#80H ;波特率加倍 MOV TH1,#0F4H ;bps:(2^1/32)*1/(2^8-244)*12/11.0592=4800 MOV TL1,#0F4H SETB TR1 SETB EA TRAN: MOV SBUF,P1 WAIT: JBC TI,NEXT SJMP WAIT NEXT: JNB RI,TRAN MOV P2,SBUF CLR RI LJMP TRAN END 5.實(shí)驗(yàn)的問題及討論 - 實(shí)驗(yàn)1的難點(diǎn)在于對74LS164的掌握,使用串口方式0時(shí),單片機(jī)TXD接芯片時(shí)鐘脈沖端CLK,而CLR為低電平有效清零端,在本實(shí)驗(yàn)中可直接接高電平。
- 串口傳輸先輸出最低位,通過移位寄存器在QH端輸出。
- 實(shí)驗(yàn)2要注意單片機(jī)發(fā)送和接收的條件,當(dāng)TI置1時(shí),發(fā)送完畢;當(dāng)RI置1時(shí),開始接收。此外,在搭建硬件電路時(shí)要注意兩個(gè)單片機(jī)相互共地。
6.實(shí)驗(yàn)心得及建議 做實(shí)驗(yàn)不可眼高手低,即使仿真成功,在實(shí)際電路中仍會(huì)遇到各種問題,要不斷總結(jié)經(jīng)驗(yàn),提高動(dòng)手能力。
實(shí)驗(yàn)七 1.功能要求 本實(shí)驗(yàn)要求利用74LS573進(jìn)行總線擴(kuò)展,連接兩片62256,并用74LS138完成地址分配;將一片62256的前10個(gè)字節(jié)的內(nèi)容加1后存入另一片62256中,讀出并用8個(gè)LED顯示。 2.硬件原理 給出實(shí)驗(yàn)的硬件原理圖,并分析電路原理(用仿真代替硬件電路設(shè)計(jì)) 1.74LS138引腳圖 圖1.7.1 74LS138引腳圖表1.7.1 74LS138功能
2.62系列SRAM引腳 圖1.7.2 62系列SRAM引腳
3.74LS573 圖1.7.3 74LS573引腳圖表1.7.2 74LS573功能表 4.Protues仿真 圖1.7.4 仿真全圖 圖1.7.5 仿真部分細(xì)節(jié)圖 3.軟件程序流程 圖1.7.6 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R0,#00H MOV DPTR,#0000H WRITE: MOV A,R0 MOVX @DPTR,A MOV @R0,A INC R0 INC DPTR CJNE R0,#0AH,WRITE ;第一片62256,寫入0~9 MOV DPTR,#8000H ;62256 32K*8,第二片622556 READ: MOV P2,#00H MOV R0,#00H LOOP0: MOV A,@R0 INC A MOVX @DPTR,A INC R0 INC DPTR CJNE R0,#0AH,LOOP0 ;將第一片的前10個(gè)字節(jié)加一存入第二片 MOV DPTR,#8000H ;顯示1 2 3 4 5 6 7 8 9 10 MOV R0,#00H LOOP3: MOVX A,@DPTR MOV P1,A LCALL DELAY INC DPTR INC R0 CJNE R0,#0AH,LOOP3 LJMP MAIN ORG 0200H DELAY: MOV 50H,#06H LOOP1: MOV 51H,#0FFH LOOP2: MOV 52H,#0FFH DJNZ 52H,$ DJNZ 51H,LOOP2 DJNZ 50H,LOOP1 RET END 5.實(shí)驗(yàn)的問題及討論 實(shí)驗(yàn)室沒有622569(32K*8)芯片,選用了6264(8K*8)芯片,只需將程序中的第二片6264外部擴(kuò)展地址改為2000H,將A13(P2.5)接譯碼器的1腳且譯碼器2、3腳接地,A14(P2.6)、A15(P2.7)也接地即可。 6.實(shí)驗(yàn)心得及建議 本實(shí)驗(yàn)程序的編寫并不困難,難點(diǎn)在于線路的搭建,搭線時(shí)一定要細(xì)心,反復(fù)檢查,搭線前應(yīng)先規(guī)劃好器件的擺放,有利于實(shí)驗(yàn)的快速進(jìn)行。
實(shí)驗(yàn)八 1.功能要求 本實(shí)驗(yàn)控制LED點(diǎn)陣模塊動(dòng)態(tài)地顯示自設(shè)字符或圖形,設(shè)計(jì)循環(huán)顯示數(shù)字0-9。 2.硬件原理 圖1.8.1 硬件原理圖(用軟件仿真顯示) 圖1.8.2 硬件原理細(xì)節(jié)圖(用軟件仿真顯示) 圖1.8.3 SD411988內(nèi)部結(jié)構(gòu) 圖1.8.4 CD4049引腳圖及內(nèi)部結(jié)構(gòu) 3.軟件程序流 程圖 圖1.8.5 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P0,#0FFH MOV P2,#0FFH MOV R0,#00H ;顯示的幕次(即每一幕顯示的數(shù))值0-9 MOV R1,#00H ;列碼序列號(hào)置0 MOV R2,#00H ;行碼序列號(hào)置初值 MOV R3,#00H LOOP3:MOV 52H,#0FH XIANS:MOV DPTR,#ROW ;取行碼表 首地址 MOV A,R2 MOVC A,@A+DPTR MOV P2,A ;輸出行號(hào) MOV DPTR,#COL ;取列碼表 首地址 MOV A,R1 MOVC A,@A+DPTR MOV P0,A LCALL DL0 INC R1 INC R2 CJNE R1,#08H,XIANS MOV R1,#00H MOV A,R3 MOV R2,A DJNZ 52H,XIANS INC R0 ;第R0個(gè)數(shù) MOV A,R0 MOV B,#08H MUL AB MOV R3,A MOV R2,A CJNE R0,#10,LOOP3 LJMP MAIN ORG 0650H DL0: MOV 50H,#03H LOOP0:MOV 51H,#0FFH LOOP1:NOP NOP DJNZ 51H,LOOP1 DJNZ 50H,LOOP0 ;2*255+2*255*3=2040US RET ORG 0800H COL: DB 01H,02H,04H,08H,10H,20H,40H,80H ;列值 ORG 0850H ROW: DB 00H,00H,3EH,41H,41H,41H,3EH,00H ;0 DB 00H,00H,00H,00H,21H,7FH,01H,00H ;1 DB 00H,00H,27H,45H,45H,45H,39H,00H ;2 DB 00H,00H,22H,49H,49H,49H,36H,00H ;3 DB 00H,00H,0CH,14H,24H,7FH,04H,00H ;4 DB 00H,00H,72H,51H,51H,51H,4EH,00H ;5 DB 00H,00H,3EH,49H,49H,49H,26H,00H ;6 DB 00H,00H,40H,40H,40H,4FH,70H,00H ;7 DB 00H,00H,36H,49H,49H,49H,36H,00H ;8 DB 00H,00H,32H,49H,49H,49H,3EH,00H ;9 END 5.實(shí)驗(yàn)的問題及討論 (1)實(shí)驗(yàn)室使用的SD411988LED點(diǎn)陣是行高列低,即編寫程序過程中應(yīng)先給每一行賦值,當(dāng)行為高對應(yīng)列為低時(shí),對應(yīng)的發(fā)光二極管被點(diǎn)亮。 (2)實(shí)驗(yàn)時(shí)遇到點(diǎn)陣最后一列不會(huì)被點(diǎn)亮的情況,經(jīng)檢查后發(fā)現(xiàn),在連接時(shí),器件引腳被折進(jìn)端口下方并未插入端口。 (3)在仿真時(shí),點(diǎn)陣亮度很暗,在加入了驅(qū)動(dòng)74LS244后,情況得到明顯改善。 6. 實(shí)驗(yàn)心得及建議 事實(shí)證明,實(shí)驗(yàn)過程中不能局限于實(shí)驗(yàn)講義列寫的器件,應(yīng)根據(jù)實(shí)際情況調(diào)整電路以達(dá)到預(yù)期效果。
第二部分 單片機(jī)接口實(shí)驗(yàn) 實(shí)驗(yàn)一 基于8255的并口擴(kuò)展實(shí)驗(yàn) 1.功能要求 ①了解8255芯片結(jié)構(gòu)、工作方式。 ②學(xué)習(xí)使用8255芯片實(shí)現(xiàn)單片機(jī)與外部設(shè)備傳輸。 2.硬件原理 圖2.1.1 硬件原理圖 3.軟件程序流程 圖2.1.2 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#90H ;1 0010 000 A方式0輸入,B方式0輸出 MOV DPTR,#7FFFH ;A0 A1均置1選擇控制口 MOVX @DPTR,A MOV DPTR,#7CFFH MOVX A,@DPTR ;A輸入 MOV DPTR,#7DFFH ;指向端口B MOVX @DPTR,A LCALL DELAY LJMP MAIN ORG 0200H DELAY: MOV R0,#05FH LOOP0: MOV R1,#0FFH LOOP1: NOP NOP DJNZ R1,LOOP1 DJNZ R0,LOOP0 RET END 5.實(shí)驗(yàn)的問題及討論 注意應(yīng)先選擇控制口,規(guī)定輸入輸出端口和輸入輸出方式。DPTR為I/O尋址16位寄存器,沒有用到的引腳賦1。 6.實(shí)驗(yàn)心得及建議 在做接口實(shí)驗(yàn)時(shí),應(yīng)充分學(xué)習(xí)和理解外部芯片作用以及連接方式。 嘗試盡量記憶芯片類型功能以及各引腳功能。
實(shí)驗(yàn)十一 LCM控制實(shí)驗(yàn) 1.功能要求 完成與LCM1602的接口,并嘗試各種顯示控制功能。 2.硬件原理 圖2.11.1 硬件原理圖 3.軟件程序流程 圖2.11.2 程序流程圖 4.程序清單 ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL CSH MOV R2,#00H MOV R3,#00H MOV R0,#80H LCALL WRI MOV DPTR,#TAB FIRST:MOV A,R2 MOVC A,@A+DPTR MOV R1,A LCALL WRD MOV 50H,#0FFH LCALL DELAY INC R2 CJNE R2,#14,FIRST MOV R0,#0C0H LCALL WRI MOV DPTR,#TAB1 SEC: MOV A,R3 MOVC A,@A+DPTR MOV R1,A LCALL WRD MOV 50H,#0FFH LCALL DELAY INC R3 CJNE R3,#16,SEC LJMP MAIN ;********延時(shí)子程序****** ORG 0200H DELAY:MOV 51H,#0FFH DJNZ 51H,$ DJNZ 50H,DELAY RET ;********寫指令代碼子程序****** ORG 0250H WRI: CLR P2.0 ;RS=0 指令 SETB P2.1 ;RW=1,忙標(biāo)志和地址計(jì)數(shù)器讀出, LOP0: SETB P2.2 ;E=1,讀寫使能,高電平有效 MOV P0,#0FFH ;讀P0口狀態(tài) MOV A,P0 ;讀P0口狀態(tài),讀IR CLR P2.2 ANL A,#80H CJNE A,#0,LOP0 ;D7腳為高時(shí),忙于內(nèi)部操作,一直檢測 CLR P2.0 CLR P2.1 SETB P2.2 MOV P0,R0 MOV 50H,#2 ;延時(shí)約510Us LCALL DELAY CLR P2.2 ;RS=0,RW=0,E下降沿,寫指令代碼 RET ;********寫數(shù)據(jù)子程序****** ORG 0450H WRD: CLR P2.0 ;RS=0 指令 SETB P2.1 ;RW=1,忙標(biāo)志和地址計(jì)數(shù)器讀出, LOP1: SETB P2.2 ;E=1,讀寫使能,高電平有效 MOV P0,#0FFH ;讀P0口狀態(tài) MOV A,P0 ;讀P0口狀態(tài),讀IR CLR P2.2 ANL A,#10000000B CJNE A,#0,LOP1 ;D7腳為高時(shí),忙于內(nèi)部操作,一直檢測 SETB P2.0 CLR P2.1 MOV P0,R1 MOV 50H,#2 LCALL DELAY SETB P2.2 MOV 50H,#2 LCALL DELAY CLR P2.2 RET ;********初始命令子程序****** ORG 0600H CSH: MOV R0,#38H LCALL WR ;L L L L H H(DL 8位數(shù)據(jù)接口模式) H(雙N) L(F) L L 雙列顯示,字形5*7 MOV R0,#0FH LCALL WRI ;LL L L L L H H H H 開顯示,光標(biāo)閃爍 MOV R0,#01H LCALL WRI ;清除LCD顯示屏 RET ORG 0800H TAB: DB 57H,78H,79H,20H,69H,73H,20H,61H,20H,67H,69H,72H,6CH,2EH ;Wxy is a girl. ORG 0850H TAB1: DB 57H,61H,6EH,67H,78H,79H,32H,30H,31H,36H,30H,31H,32H,33H,31H,32H ;Wangxy2016012312 END 5.實(shí)驗(yàn)的問題及討論 (1)考慮到使程序方便用戶設(shè)置顯示功能,方便程序員執(zhí)行寫指令、寫數(shù)據(jù)操作;將初始化顯示設(shè)置和寫指令數(shù)據(jù)程序編寫為子程序,在主程序中直接調(diào)用即可。 (2)注意在每次執(zhí)行寫操作過程時(shí),應(yīng)先檢測部件是否正忙,若不忙執(zhí)行相關(guān)指令,若忙循環(huán)檢測直至不忙。 (3)每次讀寫引腳前,應(yīng)先置位E讀寫使能端。 6.實(shí)驗(yàn)心得及建議 外部設(shè)備功能較多,指令也較復(fù)雜,實(shí)驗(yàn)前要先捋清思路,仔細(xì)讀外部設(shè)備的相關(guān)功能介紹。 建議更新實(shí)驗(yàn)中部分硬件以方便仿真,而且更有利于實(shí)驗(yàn)的進(jìn)行。
課程心得及建議 整個(gè)學(xué)期下來很難忘的一堂課就是《微機(jī)原理及接口技術(shù)》,自己上課很少跑神,一方面是知識(shí)點(diǎn)比較細(xì)碎,需要集中精神學(xué)習(xí),另一方面在王老師的帶動(dòng)下,課堂氛圍積極活躍,感覺每個(gè)同學(xué)都在很認(rèn)真的思考,自己想不到或者剛想到的問題,也總會(huì)有同學(xué)及時(shí)提出來,下課更是有很多同學(xué)圍著老師問東問西,很感謝王老師一年來的認(rèn)真授課,我們真的學(xué)到很多東西,當(dāng)實(shí)驗(yàn)做完后,成就感是難以言表的。 建議實(shí)驗(yàn)室和實(shí)驗(yàn)指導(dǎo)書能更新一些器件,淘汰一些老化不常用的芯片,擴(kuò)展一些趣味實(shí)驗(yàn),可以是對基礎(chǔ)實(shí)驗(yàn)知識(shí)的進(jìn)一步運(yùn)用,以增強(qiáng)同學(xué)們的學(xué)習(xí)興趣,激發(fā)同學(xué)們的實(shí)驗(yàn)熱情。
完整的Word格式文檔51黑下載地址:
單片機(jī)原理實(shí)驗(yàn)總結(jié).doc
(1.24 MB, 下載次數(shù): 10)
2018-8-15 12:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|