第一篇:1學(xué)分單片機(jī)實(shí)驗(yàn)
單片機(jī)實(shí)驗(yàn)內(nèi)容(1學(xué)分16學(xué)時(shí)):
(實(shí)驗(yàn)講義見(jiàn)課本第11章)
實(shí)驗(yàn)
1、單片機(jī)實(shí)驗(yàn)板HHXX20制作調(diào)試(10學(xué)時(shí))
1)自學(xué)HHXX20單片機(jī)實(shí)驗(yàn)板工作原理(1學(xué)時(shí));
2)采購(gòu)元器件(網(wǎng)上或華龍電子城,實(shí)驗(yàn)板由老師提供,3學(xué)時(shí))
3)按照《實(shí)驗(yàn)一》講義焊接、制作HHXX20單片機(jī)實(shí)驗(yàn)板,通過(guò)運(yùn)行測(cè)試程序檢查實(shí)驗(yàn)板質(zhì)量(6學(xué)時(shí));
4)課外進(jìn)行,(與理論課同時(shí));
實(shí)驗(yàn)
2、IDE單片機(jī)集成開(kāi)發(fā)軟件應(yīng)用練習(xí)(3學(xué)時(shí));
1)掌握BASCOM單片機(jī)集成開(kāi)發(fā)軟件平臺(tái)的應(yīng)用;
2)練習(xí)源程序編寫(xiě)、編譯、下載和熔絲配置的方法;
4)下載并在實(shí)驗(yàn)板上運(yùn)行示例程序;
1)5)實(shí)驗(yàn)課外完成并把程序預(yù)先寫(xiě)入單片機(jī);
6)一班第13周一3、4節(jié);二班第13周四1、2節(jié),帶寫(xiě)好程序的實(shí)驗(yàn)板到實(shí)驗(yàn)室讓老師檢查程序編寫(xiě)和運(yùn)行情況。
實(shí)驗(yàn)
3、設(shè)計(jì)一個(gè)可運(yùn)行程序在實(shí)驗(yàn)板運(yùn)行(3學(xué)時(shí)):
2)根據(jù)第11章內(nèi)容自選一個(gè)內(nèi)容在實(shí)驗(yàn)板上進(jìn)行實(shí)驗(yàn),如實(shí)驗(yàn)內(nèi)容完全是創(chuàng)新的可作為評(píng)優(yōu)條件;
3)寫(xiě)實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告要有目的、原理、設(shè)計(jì)方案、程序框圖、實(shí)驗(yàn)過(guò)程及出現(xiàn)的問(wèn)題和解決過(guò)程、結(jié)論等;
4)實(shí)驗(yàn)課外完成并把調(diào)試好的程序預(yù)先寫(xiě)入單片機(jī);
5)一班第14周一3、4節(jié);二班第14周四1、2節(jié),帶寫(xiě)好程序的實(shí)驗(yàn)板到實(shí)驗(yàn)室讓老師檢查程序編寫(xiě)和運(yùn)行情況,收繳實(shí)驗(yàn)報(bào)告。
注意事項(xiàng):
1,兩人一組,共用一塊實(shí)驗(yàn)板,班委組織,302實(shí)驗(yàn)室供
焊接調(diào)試;
2,編程語(yǔ)言可以是BASIC或C語(yǔ)言;
3,成績(jī)?cè)u(píng)定:硬件焊接和制作水平,編程水平和程序運(yùn)
行情況;遵守紀(jì)律和按時(shí)完成實(shí)驗(yàn)情況;
4,電子信箱:cnjsjp@sina.com;
第二篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)
實(shí)驗(yàn)
一、MCS51單片機(jī)基本開(kāi)發(fā)環(huán)境
1. 實(shí)驗(yàn)?zāi)康模?/p>
1)熟悉軟件的集成開(kāi)發(fā)環(huán)境 2)掌握單片機(jī)軟件設(shè)計(jì)流程
3)掌握單片機(jī)存貯器結(jié)構(gòu)及各窗口之間的聯(lián)系 2. 實(shí)驗(yàn)內(nèi)容:
1)用三種方法實(shí)現(xiàn)將累加器A內(nèi)容改為20H
方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 心得:越往下做實(shí)驗(yàn)時(shí)就越感覺(jué)這題根本不能說(shuō)是題目,但不得不說(shuō)在沒(méi)接觸過(guò)編程軟件,剛開(kāi)始學(xué)的匯編,第一次做的實(shí)驗(yàn)就光這道題都覺(jué)得不知道做什么.所以凡是總有開(kāi)始,不了解情況的多簡(jiǎn)單的都會(huì)覺(jué)得難.2)將58H位單元置為1,觀察內(nèi)部RAM中2BH內(nèi)容的變化 代碼:
SETB 2BH.0 JMP $ END 心得:這是關(guān)于內(nèi)部存儲(chǔ)中對(duì)單元和字節(jié)了解,不理解很容易做錯(cuò).比如開(kāi)始寫(xiě)的指令為
MOV R0,#58H;MOV @R0,#1
這是錯(cuò)誤的指令。這就需要認(rèn)真去了解單片機(jī)中的字節(jié)地址與位地址的關(guān)系。80C51中有位尋址區(qū)和字節(jié)尋址區(qū)。題目中58H為位地址,2BH為字節(jié)地址,且58H為2B字節(jié)的最低位。由于58H屬于位尋址區(qū),可用位操作指令 SETB 進(jìn)行置位,SETB 2BH.0 執(zhí)行后,2BH中內(nèi)容變?yōu)椋埃?/p>
3)如果當(dāng)前狀態(tài)為有進(jìn)位、工作寄存器使用區(qū)2,請(qǐng)用3種方法設(shè)置這種狀態(tài)
代碼:
ANL PSW,#01H MOV A,PSW
CJNE A,#01,LAB2 LAB1:JMP LAB1
LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0 MOV PSW.4,C CPL C MOV PSW.3,C END
心得:以上LAB2寫(xiě)了三段代碼,可分別完成題目要求。不過(guò)實(shí)驗(yàn)時(shí)只是對(duì)代碼進(jìn)行了錯(cuò)誤調(diào)試,沒(méi)有對(duì)結(jié)果進(jìn)行檢驗(yàn)。其中值得注意的是對(duì)于布爾(位)操作指令的用法,比如傳送指令必須經(jīng)累加器C,如第二段中MOV P0,#01H;MOV C,P0.0,以及對(duì)于位尋址的方式(如需用到“.”隔開(kāi))的應(yīng)用。4)編一個(gè)小程序?qū)?nèi)部RAM中的20H單元的內(nèi)容送到21H單元并調(diào)試
代碼:
MOV R0,#20H MOV @R0,#10H MOV R1,#21H MOV @R1,20H JMP $ END
5)用程序?qū)⒍褩V羔樦赶?0H,然后在堆棧中依次壓入01,02,03,04,05五個(gè)數(shù),觀察哪些單元內(nèi)容發(fā)生了變化,各變?yōu)槎嗌伲繌哪男┐翱诳梢园l(fā)現(xiàn)這些變化?順序?qū)⒍褩V械奈鍌€(gè)數(shù)放入30H~34H五個(gè)單元中,編程實(shí)現(xiàn)之。
代碼:
MOV R1,#60H MOV SP,R1 MOV DPL,#1H LAB1:PUSH DPL INC DPL MOV A,DPL CJNE A,#6,LAB1 POP 34H POP 33H POP 32H POP 31H POP 30H JMP $ END
6)將外部數(shù)據(jù)存貯器1000H~100FH 16個(gè)單元中存放00H~0FH 代碼:
MOV DPTR,#1000H MOV R1,#10H LOOP:MOVX @DPTR,#1234H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END
心得:此處需要訪問(wèn)片外存儲(chǔ)空間,需要借助寄存器DPTR,需注意其為16位的寄存器,在使用時(shí)若與八位寄存器進(jìn)行數(shù)據(jù)交換時(shí)需分為高八位DPH與低八位DPL來(lái)用。7)若要求程序從0010H單元開(kāi)始運(yùn)行,可用兩種方法實(shí)現(xiàn)?
方法一 ORG 0010H 方法二 AJMP 0010H
3. 選做實(shí)驗(yàn)內(nèi)容:數(shù)據(jù)傳送 目的:
1)掌握8051單片機(jī)內(nèi)部數(shù)據(jù)存貯器、外部數(shù)據(jù)存貯器的數(shù)據(jù)傳送特點(diǎn)和應(yīng)用 2)掌握MOV,MOVX和MOVC類指令的用法及區(qū)別 內(nèi)容:
1)將片內(nèi)RAM數(shù)據(jù)區(qū)20H為首地址的十六個(gè)字節(jié)傳送到30H為首地址的數(shù)據(jù)區(qū),即:20H~2FH送30H~3FH
代碼: ORG 0000H JMP MAIN ORG 0030H MAIN:MOV R0,#20H MOV R1,#30H LOOP:MOV @R0,#1234H MOVA,@R0 MOV @R1,A INC R0 INC R1 CJNE R1,#30H,LOOP JMP $ END
2)將外部數(shù)據(jù)存儲(chǔ)器2000H~200FH單元的十六個(gè)數(shù)傳送至內(nèi)部數(shù)據(jù)存儲(chǔ)器的30H~3FH 代碼: ORG 0000H JMP MAIN ORG 0030H MAIN: MOV DPTR,#2000H MOV R1,#30H LOOP:MOVX @DPTR,#12H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END
總體心得體會(huì):
第一次做實(shí)驗(yàn)主要是熟悉了解了下單片機(jī)編程軟件的使用,開(kāi)始接觸時(shí)在對(duì)其軟件不是太了解的情況下實(shí)驗(yàn)編程做的確實(shí)很亂,不清楚該怎樣進(jìn)行,比如不知如何進(jìn)行對(duì)指令的調(diào)試,也不清楚該如何觀察結(jié)果,沒(méi)有一個(gè)整體的概念,所以在了解其開(kāi)發(fā)環(huán)境上花了不少時(shí)間。經(jīng)過(guò)一段時(shí)間的摸索后也終于了解了其具體的使用,也能夠順利的對(duì)指令的編程運(yùn)用。運(yùn)行指令時(shí)遇到的一些問(wèn)題需要注意的也在上面各題中做了說(shuō)明。還有需要注意的是:進(jìn)入軟件仿真時(shí)需要對(duì)存儲(chǔ)空間進(jìn)行查看的方法是在Address窗口中輸入:d:00h 顯示內(nèi)部數(shù)據(jù)存儲(chǔ)器從00h開(kāi)始的單元; x:1000h 顯示外部數(shù)據(jù)存儲(chǔ)器從1000h開(kāi)始的單元; c:0000H 顯示程序存儲(chǔ)器內(nèi)容。還有由于偽指令 END 定義的原因,在程序末需加一條死循環(huán)調(diào)轉(zhuǎn)指令(如 JMP $)使程序不會(huì)進(jìn)入其他未知空間執(zhí)行其他指令。實(shí)驗(yàn)
二、加、減法實(shí)驗(yàn)
1. 實(shí)驗(yàn)?zāi)康?/p>
1)正確使用單片機(jī)的加減運(yùn)算指令
2)掌握不同指令對(duì)于程序狀態(tài)字的影響及程序狀態(tài)字的意義、用處 3)掌握ADD,ADDC,SUBB和DA A等指令的用法 4)學(xué)習(xí)模塊化程序設(shè)計(jì)方法 2. 實(shí)驗(yàn)內(nèi)容
1)編寫(xiě)3字節(jié)二進(jìn)制加法子程序,并用主程序調(diào)用不同的加數(shù)和被加數(shù)來(lái)檢測(cè)該子程序的正確性。需考慮有進(jìn)位和無(wú)進(jìn)位情況。程序入口為: 加數(shù):22H,21H,20H三字節(jié),22H為最高位
被加數(shù):32H,31H,30H三字節(jié),32H為最高位
程序出口為: 23H,22H,21H,20H四字節(jié),23H為最高位 例如:地址:23 22 21 20 32 31 30 執(zhí)行前數(shù)據(jù): 01 23 45 FF 01 01 執(zhí)行后數(shù)據(jù):01 00 24 46
代碼:
ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 22H,#01H MOV 21H,#23H MOV 20H,#45H MOV 32H,#0FFH MOV 1H,#01H MOV 30H,#01H ACALL ADDI HERE:JMP HERE ORG 100H ADDI: PUSH PSW MOV R0, #20H;加數(shù)1地址、和的地址 MOV R1, #30H;加數(shù)2地址 CLR C MOV R2, #3;循環(huán)3次 LOOP: MOV A, @R0;取 ADDC A, @R1;加 MOV @R0, A;存 INC R0 INC R1 DJNZ R2, LOOP CLR A ADDC A, #0;得到進(jìn)位 MOV 23H, A;保存 POP PSW RET END
2)編寫(xiě)三字節(jié)二進(jìn)制減法子程序 入口:被減數(shù): 52H,51H,50H, 50H為最低位
減數(shù): 42H,41H,40H, 40H為最低位
出口:差:外部數(shù)據(jù)存貯器2003H~2000H(2000H為最低位)用主程序調(diào)用多組數(shù)據(jù)來(lái)調(diào)試,需考慮無(wú)借位和有借位兩種情況。例如:
執(zhí)行前:地址: 52 51 50 42 41 40
數(shù)據(jù): 90 80 70 10 10 10
執(zhí)行后:地址: 2003 2002 2001 2000
數(shù)據(jù): 00 80 70 60 代碼:
ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 52H,#90H MOV 51H,#80H MOV 50H,#70H MOV 42H,#10H MOV 41H,#10H MOV 40H,#10H ACALL SUB1 HERE:JMP HERE SUB1: PUSH PSW MOV R0, #50H;被減數(shù)地址 MOV R1, #40H;減數(shù)地址 MOV DPTR, #2000H;差的地址 CLR C MOV R2, #3;循環(huán)3次 LOOP: MOV A, @R0;取 SUBB A, @R1;減 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP CLR A SUBB A, #0;得到借位 MOVX @DPTR, A;存 POP PSW RET END
3)編寫(xiě)10位十進(jìn)制加法子程序(十進(jìn)制數(shù)采用壓縮BCD碼存放)入口: 加數(shù):24H—20H,低地址放低字節(jié)
被加數(shù):29H—25H,低地址放低字節(jié)
出口 和:4005H—4000H,低地址放低字節(jié)
要求調(diào)用多組數(shù)據(jù)調(diào)試,注意觀察PSW的變化,理解DA A指令的含義。例如:
執(zhí)行前地址:24 23 22 21 20 29 28 27 26 25
數(shù)據(jù):12 34 56 78 90 88 99 33 12 74
執(zhí)行后地址:4005 4004 4003 4002 4001 4000
數(shù)據(jù): 01 01 33 89 91 64
代碼:
ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 24H,#12H MOV 23H,#34H MOV 22H,#56H MOV 21H,#78H MOV 20H,#90H MOV 29H,#88H MOV 28H,#99H MOV 27H,#33H MOV 26H,#12H MOV 5H,#74H ACALL ADD2 HERE:JMP HERE ADD2: PUSH PSW MOV R0, #20H;加數(shù)1地址 MOV R1, #25H;加數(shù)2地址 MOV DPTR,#4000H CLR C MOV R2, #5;循環(huán)5次 LOOP: MOV A, @R0;取 ADDC A, @R1;加
DA A;調(diào)整為BCD碼 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP POP PSW RET END
第三篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)
實(shí)驗(yàn)一清0、移數(shù)
將片內(nèi)20H~2FH及片外0010H~001FH單元清0;
然后將片內(nèi)30H~3FH的數(shù)據(jù)移到片外0000H~000FH中;判斷:
若(30H)≤10,則求其平方存到31H中,并將位00H置1(其它位清0)若(30H)=10,則將AA存到31H中,并位01H置1(其它位清0)若(30H)≥10,則減10存到31H中,并位02H置1(其它位清0)
實(shí)驗(yàn)二加法、排序
有兩個(gè)長(zhǎng)度為10的無(wú)符號(hào)數(shù)分別放在片內(nèi)20H和30H為首的存儲(chǔ)單元中(低位),求其對(duì)應(yīng)項(xiàng)之和(帶進(jìn)位位),結(jié)果放在40H為首的單元中(若最高位有進(jìn)位則存在后續(xù)單元中),然后按升序排列放在50H為首的單元中
實(shí)驗(yàn)三查表、散轉(zhuǎn)
設(shè)有一表格,表中數(shù)為:00H、11H、22H、33H、44H、55H、66H、77H、88H、99H、AAH、BBH、CCH、DDH、EEH、FFH。根據(jù)片外0001H單元的低4位的數(shù),取出表中相應(yīng)的值存到片內(nèi)30H中;根據(jù)片外0001H單元的高4位的數(shù),將片內(nèi)RAM區(qū)中可位尋址的相應(yīng)的位置1(從位00H~位0FH,只可有一個(gè)位地址為1)
實(shí)驗(yàn)四外中斷
P1.0~P1.7接8個(gè)發(fā)光二極管,管腳INT0、INT1接兩個(gè)按鍵,分別定義為“L”和“R”。
要求:上電全滅,按 “L”(或R)鍵,最右(左)側(cè)燈亮,每按一次“L” ”(或R)鍵,則亮的燈向左(右)移一位,當(dāng)移到最左(右)端時(shí),燈全滅
實(shí)驗(yàn)五定時(shí)器
P1.0、P1.1分別接兩個(gè)發(fā)光二極管,INT0腳接
一按鍵做開(kāi)關(guān),按一次開(kāi)關(guān),則啟動(dòng),兩個(gè)發(fā)
光管一亮一滅,亮滅時(shí)間均為1秒;再按一次
開(kāi)關(guān),則關(guān)閉,即兩個(gè)發(fā)光管都滅。
實(shí)驗(yàn)六定時(shí)器、計(jì)數(shù)器
P3.2口輸出周期為2S的方波,T1口為脈沖輸入端,記錄輸入的脈沖個(gè)數(shù),脈沖個(gè)數(shù)由P1口所接的8個(gè)數(shù)碼管顯示(二進(jìn)制),設(shè)一按鍵作為開(kāi)關(guān)控制系統(tǒng)運(yùn)行,關(guān)閉時(shí)數(shù)碼管全滅,P3.2無(wú)輸出。
第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)指導(dǎo)書(shū)(4學(xué)分)
單片機(jī)應(yīng)用
課程設(shè)計(jì)指導(dǎo)書(shū)
中原工學(xué)院信息商務(wù)學(xué)院信息工程系
2014年5月
課程名稱:?jiǎn)纹瑱C(jī)應(yīng)用課程設(shè)計(jì) 適用對(duì)象:自動(dòng)化,電氣,測(cè)控,機(jī)自 學(xué)分:4學(xué)分
先修課程:電子技術(shù),單片機(jī)應(yīng)用與接口技術(shù)
一、課程設(shè)計(jì)目的:
大學(xué)本科學(xué)生動(dòng)手能力的培養(yǎng)和提高是大學(xué)本科教育的一個(gè)重要內(nèi)容。如何讓學(xué)生在學(xué)好基礎(chǔ)知識(shí)的同時(shí),迅速掌握應(yīng)用技術(shù),實(shí)驗(yàn)與課程設(shè)計(jì)環(huán)節(jié)起著非常重要的作用。本課程設(shè)計(jì)的目的,是讓電子信息類(自動(dòng)化,電氣,測(cè)控)及相關(guān)專業(yè)學(xué)生通過(guò)課程設(shè)計(jì),首先建立起單片機(jī)應(yīng)用系統(tǒng)的概念,根據(jù)實(shí)際的系統(tǒng)設(shè)計(jì)要求,掌握初步的單片機(jī)系統(tǒng)設(shè)計(jì)方法,從硬件系統(tǒng)和軟件系統(tǒng)設(shè)計(jì)兩個(gè)方面得到實(shí)際的提高,為今后的畢業(yè)設(shè)計(jì)和就業(yè)打下良好的基礎(chǔ)。
二、課程設(shè)計(jì)基本要求
1、全體學(xué)生集中,介紹和說(shuō)明本次綜合課程設(shè)計(jì)的目的、實(shí)施方法和要完成的任務(wù)內(nèi)容;
2、組織學(xué)生購(gòu)買(mǎi)或印刷本次綜合課程設(shè)計(jì)相關(guān)參考資料;
3、介紹51單片機(jī)相關(guān)知識(shí),給出單片機(jī)最小系統(tǒng),引導(dǎo)學(xué)生進(jìn)行擴(kuò)展設(shè)計(jì)和應(yīng)用;
4、以具體任務(wù)為主線和示例,并以一邊講解一邊實(shí)踐操作的方式,引導(dǎo)學(xué)生學(xué)習(xí)和掌握單片機(jī)高級(jí)開(kāi)發(fā)語(yǔ)言C51和單片機(jī)仿真軟件PROTEUS的基本使用方法。以PROTEUS仿真建立虛擬硬件運(yùn)行為主,要求學(xué)生完成規(guī)定的公共學(xué)習(xí)項(xiàng)目。
5、安排學(xué)生根據(jù)自己的興趣和意愿進(jìn)行選題,并據(jù)此分好各個(gè)選題組。在學(xué)生培訓(xùn)的同時(shí),指導(dǎo)學(xué)生開(kāi)始設(shè)計(jì)自己所選題目的原理圖和印制板圖。
6、運(yùn)用51系列單片機(jī),根據(jù)設(shè)計(jì)要求用Protel繪制系統(tǒng)電路圖;
7、編制系統(tǒng)程序流程圖、根據(jù)系統(tǒng)程序流程圖編制C語(yǔ)言程序;
8、運(yùn)用仿真軟件proteus進(jìn)行運(yùn)行調(diào)試;
9、焊接制作電路板,硬件焊接3-4人一組;
10、硬件電路調(diào)試;
11、認(rèn)真編寫(xiě)課程設(shè)計(jì)報(bào)告,課程設(shè)計(jì)報(bào)告的書(shū)寫(xiě)格式見(jiàn)附錄。
三、課程設(shè)計(jì)題目安排:
設(shè)計(jì)題目一:DS18B20數(shù)字溫度計(jì)
【題目描述及要求】
設(shè)計(jì)一個(gè)基于單片機(jī)的DS18B20數(shù)字溫度計(jì)。課程設(shè)計(jì)要求:
1.9V供電;
2.溫度采集采用DS18B20; 3.4位LED顯示; 4.4個(gè)按鍵;
5.設(shè)計(jì)溫度控制器原理圖,學(xué)習(xí)用PROTEL畫(huà)出該原理圖,并用proteus進(jìn)行
仿真;設(shè)計(jì)和繪制軟件流程圖,用C語(yǔ)言進(jìn)行程序編寫(xiě);焊接硬件電路,進(jìn)行調(diào)試。
設(shè)計(jì)題目二:基于單片機(jī)的工業(yè)產(chǎn)品自動(dòng)計(jì)數(shù)器
【題目描述及要求】
掌握光電傳感器的使用方法;掌握利用單片機(jī)制作一種簡(jiǎn)單工業(yè)生產(chǎn)線計(jì)數(shù)
系統(tǒng)。設(shè)計(jì)要求:
1、數(shù)碼管可以顯示產(chǎn)品個(gè)數(shù)(0-99),自由設(shè)定產(chǎn)品報(bào)警個(gè)數(shù)(比如 產(chǎn)品數(shù)目是8的個(gè)數(shù)時(shí),發(fā)出報(bào)警(蜂鳴器響)。
2、獨(dú)立設(shè)計(jì)電路,應(yīng)包括單片機(jī)小系統(tǒng)、紅外光電開(kāi)關(guān)、數(shù)碼管顯示部分。
8),當(dāng)
四、時(shí)間安排計(jì)劃:
時(shí)間安排:共計(jì)4周1、硬件原理圖、PCB檢查時(shí)間:第一周周四/第三周周四;
2、proteus仿真結(jié)果檢查時(shí)間:第二周周四/第四周周三;
3、設(shè)計(jì)報(bào)告上交時(shí)間:第四周周五;
4、檢查地點(diǎn):12285、報(bào)告上交地點(diǎn):信息工程系辦公室3423;
五、評(píng)分標(biāo)準(zhǔn)
1.設(shè)計(jì)方案新穎,有獨(dú)到之處,且可實(shí)現(xiàn)性強(qiáng); 2.邏輯嚴(yán)密,分析透徹,計(jì)算到位。
3.實(shí)驗(yàn)過(guò)程中認(rèn)真投入,對(duì)老師提問(wèn)的問(wèn)題能夠流利回答。4.最后驗(yàn)證效果良好。
5.設(shè)計(jì)論文編寫(xiě)完整、條理分明、排版工整、符合格式要求。
課程設(shè)計(jì)應(yīng)由學(xué)生本人獨(dú)立完成,嚴(yán)禁抄襲(對(duì)自己的設(shè)計(jì)不熟悉,讀不懂設(shè)計(jì)中的關(guān)鍵功能部分,對(duì)設(shè)計(jì)的結(jié)構(gòu)不清楚,對(duì)設(shè)計(jì)的功能不了解等),一經(jīng)驗(yàn)收教師認(rèn)定其抄襲行為,成績(jī)即為不及格。
附錄 課程設(shè)計(jì)報(bào)告書(shū)寫(xiě)格式要求
為了培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度,鍛煉學(xué)生編寫(xiě)文檔的能力,要求實(shí)驗(yàn)報(bào)告包括下面主要部分:
1、目錄
2、課程設(shè)計(jì)功能描述
3、課程設(shè)計(jì)分析設(shè)計(jì)
4、繪制硬件電路圖(用Protel軟件)并對(duì)硬件電路進(jìn)行說(shuō)明;
5、繪制軟件流程圖(用VISIO軟件)并對(duì)軟件流程進(jìn)行說(shuō)明;
6、程序的源代碼清單;
7、上機(jī)調(diào)試運(yùn)行結(jié)果及分析;
8、課程設(shè)計(jì)經(jīng)驗(yàn)教訓(xùn)總結(jié),設(shè)計(jì)心得體會(huì);
9、參考文獻(xiàn);
注意:
1、課程設(shè)計(jì)報(bào)告不得少于30頁(yè)。
2、課程設(shè)計(jì)報(bào)告封面應(yīng)該按照下面的要求。
第五篇:2013單片機(jī)實(shí)驗(yàn)教案
單片機(jī)技術(shù)實(shí)驗(yàn)
教
案
馮
杰 實(shí)驗(yàn)一(1)順序結(jié)構(gòu)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
掌握匯編語(yǔ)言設(shè)計(jì)和調(diào)試方法。
二、實(shí)驗(yàn)內(nèi)容
把外部RAM中2000h單元的內(nèi)容拆開(kāi),高位送2001h單元,低位送2002h單元,2001h、2002h高位清零,一般本程序用于把數(shù)據(jù)送顯示緩沖區(qū)時(shí)用。
三、程序流程
四、實(shí)驗(yàn)步驟
1、LED環(huán)境
⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。
⑵在“P.”狀態(tài)下鍵入0000,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。
2、PC環(huán)境
在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se02.asm,用連續(xù)或單步方式運(yùn)行程序。
3、運(yùn)行結(jié)果檢查
⑴在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。
⑵在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無(wú)條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后再用相應(yīng)的命令鍵觀察與檢查2000~2002h中內(nèi)容變化情況。
五、思考
如何用斷點(diǎn)方式調(diào)試本程序。
ORG 0000H LJMP START
ORG 0030H START: MOV DPTR,#2000H
MOVX A,@DPTR ANL A,#0F0H SWAP A MOV DPTR,#2001H MOVX @DPTR,A
MOV DPTR ,#2000H MOVX A,@DPTR ANL A,0FH MOV DPTR,#2002H MOVX @DPTR,A SJMP $ END 實(shí)驗(yàn)一(2)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
熟悉MCS-51指令系統(tǒng),掌握程序設(shè)計(jì)方法。
二、實(shí)驗(yàn)內(nèi)容
編寫(xiě)并調(diào)試一個(gè)排序子程序,其功能為用冒泡法將內(nèi)容RAM中幾個(gè)單元字節(jié)無(wú)符號(hào)的正整數(shù),按從小到大的次序重新排列。
三、程序框圖
四、實(shí)驗(yàn)步驟
1、LED環(huán)境
⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。
⑵對(duì)片內(nèi)RAM地址50h~5AH進(jìn)行不規(guī)則置數(shù)。
⑶在“P.”狀態(tài)下鍵入0000,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。
2、PC環(huán)境
在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se05.asm,用連續(xù)或單步方式運(yùn)行程序。
3、運(yùn)行結(jié)果檢查
⑴在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。
⑵在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無(wú)條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后再用相應(yīng)的命令鍵觀察與檢查片內(nèi)50~5Ah中內(nèi)容是否按從 小到大排列。
五、思考:修改程序把50~5Ah中內(nèi)容按從小到大排列。
ORG 0000H LJMP START ORG 0030H MOV R7,#09H MOV R6,#00H;清除標(biāo)志 CLR C MOV A,@R0 INC R0 SUBB A,@R0 JC LOOP1 MOV R6,#01H DEC R0 MOV A,@R0 INC R0 XCH A,@R0 MOV @R0,A DJNZ R7,START1 CJNE R6,#00H,START SJMP $ END START:
MOV R0,#50H START1:
DEC R0
INC R0 LOOP1:
實(shí)驗(yàn)一(3)選擇結(jié)構(gòu)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
掌握匯編語(yǔ)言的編程。
二、實(shí)驗(yàn)內(nèi)容
編寫(xiě)程序,根據(jù)送入的數(shù)據(jù)轉(zhuǎn)移運(yùn)行。
三、程序框圖
四、實(shí)驗(yàn)步驟
1、LED環(huán)境
⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。⑵在20H中分次送入00、01、02、03。
⑶在“P.”狀態(tài)下鍵入0A10,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。
2、PC環(huán)境
在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se08.asm,用連續(xù)或單步方式運(yùn)行程序。
3、運(yùn)行結(jié)果檢查
(1)在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。
(2)在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無(wú)條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后觀察每次運(yùn)行程序后,數(shù)碼管上數(shù)字循環(huán)情況。
ORG 0000H
LJMP START
ORG 0030H START: MOV 20H,#00H MOV A,20H MOV B,#03H
MUL AB
MOV DPTR,#TAB
JMP @A+DPTR
SJMP $ ORG 3000H TAB:
LJMP LOOPA
LJMP LOOPB
LJMP LOOPC
LOOPA: MOV A,#01H LOOPA1: MOV P1,A
LCALL DELAY1S
RL A
LJMP LOOPA1
LOOPB: MOV A,#03H LOOPB1: MOV P1,A
LCALL DELAY1S
RL A
LJMP LOOPB1
LOOPC: MOV A,#05H LOOPC1: MOV P1,A
LCALL DELAY1S
RL A
LJMP LOOPC1
DELAY1S: DELAY1S3: DELAY1S2: DELAY1S1:
MOV R7,#10 MOV R6,#200 MOV R5,#250 DJNZ R5,DELAY1S1 DJNZ R6,DELAY1S2 DJNZ R7,DELAY1S3 RET END
實(shí)驗(yàn)二 中斷實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
熟悉單片機(jī)中斷概念及中斷編程方法。
二、實(shí)驗(yàn)內(nèi)容
編寫(xiě)程序,從P3.3輸入脈沖,記錄輸入脈沖個(gè)數(shù),并用P1口外部鏈接的發(fā)光二極管顯示技術(shù)結(jié)果。
二、參考程序
ORG 0000H
LJMP START
ORG 0013H
LJMP INT1_COUNT
ORG 0030H START:
MOV SP,#60H
MOV A,#00H
SETB IT1;下降邊沿觸發(fā)方式
SETB EX1;開(kāi)啟INT1中斷
SETB EA
SJMP $ INT1_COUNT:
INC A
MOV P1,A
RETI
END
實(shí)驗(yàn)三 LED顯示實(shí)驗(yàn)
一、實(shí)驗(yàn)要求
利用實(shí)驗(yàn)系統(tǒng)提供的顯示設(shè)備,動(dòng)態(tài)顯示一行數(shù)據(jù)。
二、實(shí)驗(yàn)?zāi)康?/p>
⑴了解數(shù)碼管動(dòng)態(tài)顯示的原理; ⑵了解用總線方式控制數(shù)碼管顯示。
三、實(shí)驗(yàn)說(shuō)明
本實(shí)驗(yàn)系統(tǒng)提供了8位七段碼LED顯示電路,學(xué)生只要按地址輸出相應(yīng)數(shù)據(jù),就可以實(shí)現(xiàn)對(duì)顯示器的控制。
四、程序框圖
ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H MOV 50H,#8CH;顯示字符P.MOV 51H,#40H MOV 52H,#79H MOV 53H,#24H MOV 54H,#30H MOV 55H,#19H MOV 56H,#12H MOV 57H,#02H
LOOP1: LCALL DISPLAY
LJMP LOOP1
DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS
MOV P2,#1FH MOV P0,51H LCALL DELAY20MS
MOV P2,#2FH MOV P0,52H LCALL DELAY20MS MOV P2,#3FH MOV P0,53H LCALL DELAY20MS
MOV P2,#4FH MOV P0,54H LCALL DELAY20MS
MOV P2,#5FH MOV P0,55H LCALL DELAY20MS
MOV P2,#6FH MOV P0,56H LCALL DELAY20MS
MOV P2,#7FH MOV P0,57H LCALL DELAY20MS
LJMP DISPLAY
DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET
TAB: DB 40H,79H,24H,30H,19H,12H,02H;0 1 2 3 4 5 6 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符碼
TAB1: DB 8CH;P.TAB2: DB 7FH;END 的字符碼的字符碼
空,不顯示的字符
鍵盤(pán)電路實(shí)驗(yàn)
電路圖:
程序:
;用int1中斷實(shí)現(xiàn)按鍵功能,鍵值存放在4fh單元中;通過(guò)P1口輸出按鍵值,用發(fā)光二極管顯示按鍵值;通過(guò)P2.4--P2.6和三八譯碼器輸出八列按鍵掃描碼;通過(guò)P2.0---P2.3讀入按鍵的行值;行列值組合,就是按鍵的鍵值 ORG 0000H LJMP START ORG 0013H LJMP key_value ORG 0030H START: MOV 4fH,#00h;存放按鍵鍵值單元 MOV P1,#00H MOV P2,#0FFH setb ex1 setb it1 setb ea KEY_SCAN: MOV P2,#0FH LCALL DELAY5MS
MOV P2,#1FH LCALL DELAY5MS
MOV P2,#2FH LCALL DELAY5MS
MOV P2,#3FH LCALL DELAY5MS
MOV P2,#4FH LCALL DELAY5MS
MOV P2,#5FH LCALL DELAY5MS
MOV P2,#6FH LCALL DELAY5MS
MOV P2,#7FH LCALL DELAY5MS
LJMP KEY_SCAN
DELAY5MS: MOV R7,#40 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET
KEY_VALUE: PUSH ACC PUSH PSW MOV A,P2 MOV 4FH,A MOV P1,A POP PSW POP ACC RETI END
LED和鍵盤(pán)綜合實(shí)驗(yàn)
電路圖:
參考程序:
ORG 0000H LJMP START ORG 0013H LJMP KEY_VALUE ORG 0030H START: MOV SP,#60H
MOV 4fH,#00h;存放按鍵鍵值單元 MOV P2,#0FFH setb ex1 setb it1 setb ea
MOV 50H,#0CH;顯示字符P.MOV 51H,#0CH MOV 52H,#7FH MOV 53H,#7FH MOV 54H,#7FH MOV 55H,#7FH MOV 56H,#7FH MOV 57H,#0CH
LOOP1: LCALL DISPLAY
LJMP LOOP1
DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS
MOV P2,#1FH MOV P0,51H LCALL DELAY20MS
MOV P2,#2FH MOV P0,52H LCALL DELAY20MS
MOV P2,#3FH MOV P0,53H LCALL DELAY20MS
MOV P2,#4FH MOV P0,54H LCALL DELAY20MS
MOV P2,#5FH MOV P0,55H LCALL DELAY20MS
MOV P2,#6FH MOV P0,56H LCALL DELAY20MS
MOV P2,#7FH MOV P0,57H LCALL DELAY20MS
LJMP DISPLAY
DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET
KEY_VALUE: PUSH ACC PUSH PSW MOV 4FH,P2 LCALL KEY_VALUE_DISP POP PSW POP ACC RETI
KEY_VALUE_DISP: MOV A,4FH ANL A,#0F0H SWAP A MOV DPTR,#TAB MOVC A,@A+DPTR MOV 56H,A MOV A,4FH ANL A,#0FH MOVC A,@A+DPTR MOV 57H,A RET
TAB: DB 40H,79H,24H,30H,19H,12H,02H;0 1 2 3 4 5 6的字符碼 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符碼
TAB1: DB 8CH;P.的字符碼
TAB2: DB 7FH;空,不顯示的字符 END
實(shí)驗(yàn)四 A/D轉(zhuǎn)換實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
(1)掌握A/D轉(zhuǎn)換與單片機(jī)接口的方法;(2)了解A/D芯片0809轉(zhuǎn)換性能及編程方法;(3)通過(guò)實(shí)驗(yàn)了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集。
二、實(shí)驗(yàn)內(nèi)容
利用實(shí)驗(yàn)系統(tǒng)上的0809做A/D轉(zhuǎn)換器,實(shí)驗(yàn)系統(tǒng)上的電位器提供模擬量輸入,編制程序,將模擬量轉(zhuǎn)換成數(shù)字,通過(guò)數(shù)碼管顯示出來(lái)。
三、程序框圖
四、實(shí)驗(yàn)電路
五、實(shí)驗(yàn)步驟
把0809的零通道INT0用插針接至AINl孔,0809CS位FFE0孔,運(yùn)行程序,數(shù)碼管顯示0809.XX,后二位顯示當(dāng)前采集的電壓轉(zhuǎn)換的數(shù)字量,調(diào)節(jié)W1,該二位將隨著電壓變化而相應(yīng)變化。
六、思考
修改程序,用其它通道輪流采樣顯示。
實(shí)驗(yàn)五 電腦時(shí)鐘(定時(shí)器、中斷綜合實(shí)驗(yàn))
一、實(shí)驗(yàn)?zāi)康?/p>
熟悉MCS-51定時(shí)器,串行口和中斷初始化編程方法,了解定時(shí)器的應(yīng)用實(shí)時(shí)程序的設(shè)計(jì)與調(diào)試技巧。
二、實(shí)驗(yàn)內(nèi)容
編寫(xiě)程序,從本實(shí)驗(yàn)系統(tǒng)鍵盤(pán)上輸入時(shí)間初值,用定時(shí)器產(chǎn)生0.1S定時(shí)中斷,對(duì)時(shí)鐘計(jì)數(shù)器計(jì)數(shù),并將數(shù)值實(shí)時(shí)地送數(shù)碼管顯示。
三、程序框圖
四、實(shí)驗(yàn)步驟
連續(xù)運(yùn)行程序,在鍵盤(pán)上輸入時(shí)間初值,按執(zhí)行鍵EXEC執(zhí)行,數(shù)碼管上實(shí)時(shí)顯示時(shí)間值。
五、思考
(1)電子鐘走時(shí)精度和程序中那些常數(shù)有關(guān)?
(2)修改程序使定時(shí)器工作方式改變,調(diào)節(jié)有關(guān)參數(shù),進(jìn)一步提高精度。
六、參考程序
ORG 0000H LJMP START ORG 000BH LJMP T0_INT ORG 0030H START: MOV 50H,#00H;時(shí)的低位字符碼 MOV 51H,#00H;時(shí)的高位字符碼 MOV 52H,#00H;“-”的字符碼 MOV 53H,#00H;分的低位字符碼 MOV 54H,#00H;分的高位字符碼 MOV 55H,#00H;“-”的字符碼 MOV 56H,#00H;秒的低位字符碼 MOV 57H,#00H;秒的高位字符碼 MOV 5FH,#00H;存放小時(shí)的單元 MOV 5EH,#00H;存放分鐘的單元 MOV 5DH,#00H;存放秒的單元 MOV 5CH,#00H;存放T0中斷次數(shù),50次為1秒
MOV SP,#60H;設(shè)置堆棧棧頂 MOV TH0,#???;設(shè)置T0定時(shí)器初值 MOV TL0,#??? MOV TMOD,#00000001H;T0工作在定時(shí)方式,工作方式0
SETB ET0;開(kāi)放T0中斷 SETB EA;開(kāi)放總中斷 SETB TR0;啟動(dòng)定時(shí)器T0 LOOP: mov P2,#11111110H MOV R0,#50H loop1: MOV R7,#08H LOOP2: MOV A,@R0 MOV P1,A LCALL DELAY INC R0 MOV A,P2 RL A
MOV P2,A DJNZ R7, LOOP2 LJMP LOOP SJMP $
DELAY: MOV R6,#2;延時(shí)程序 DELAY1: MOV R5,#10 DELAY2: MOV R4,#100 DELAY3: DJNZ R4,DELAY3 DJNZ R5,DELAY2 DJNZ R6,DELAY1 RET 16 T0_INT: CLR TR0 PUSH ACC MOV A,5CH CJNE A,#50H,T0_INT1 MOV 5CH,#00H MOV A,5DH CJNE A,#59H,T0_INT2 MOV 5DH,#00H MOV A,5EH CJNE A,#59H,T0_INT3 MOV 5EH,#00H MOV A,5FH CJNE A,#23H,T0_INT4 MOV 5FH,#00H LJMP T0_END T0_INT1: INC 5CH LJMP T0_END T0_INT2: INC 5DH LJMP T0_END T0_INT3: INC 5EH LJMP T0_END T0_INT4: INC 5FH T0_END: MOV A,5FH
MOV B,#10 DIV AB MOV 51H,A MOV A,B MOV 50H,A MOV A,5EH MOV B,#10 DIV AB MOV 54H,A MOV A,B MOV 53H,A MOV A,5DH MOV B,#10 DIV AB MOV 57H,A MOV A,B MOV 56H,A POP ACC
MOV TH0,#??? MOV TL0,#??? SETB TR0 RETI
實(shí)驗(yàn)六 LCD液晶顯示屏實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
⑴掌握單片機(jī)擴(kuò)展液晶顯示接口的設(shè)計(jì)與編程。⑵利用字符式液晶顯示器顯示字符。
二、實(shí)驗(yàn)內(nèi)容
編制程序,在液晶顯示器上顯示:
學(xué)生所在的院系的漢語(yǔ)拼音字母和學(xué)生的名字。分兩行顯示。
三、實(shí)驗(yàn)電路
四、參考程序
DAT1 DAT2 EQU EQU 30H;第一參數(shù)單元 31H;第二參數(shù)單元 32H;指令代碼單元 0100H;指令通道地址 0000H;數(shù)據(jù)通道地址 COM EQU C_ADD EQU D_ADD EQU
org 0000h ljmp main org 0030h;主程序
MAIN: MOV SP,#60H;
lcall delay;上電延時(shí)
LCALL INT;初始化
LCALL CLEAR;清緩沖區(qū) TEST: LCALL hgnu_disp;顯示“WELCOM TO HGNU” LCALL PL_XW_ZKB;顯示 “P_L :”
“X_W :”
“ZKB:” sjmp test
;上電延時(shí)子程序 delay: MOV R6,#50H;MOV R7,#00H;DELY1: NOP DJNZ R7,DELY1;上電延時(shí)
DJNZ R6,DELY1;ret;讀狀態(tài)字子程序
R_ST: MOV DPTR,#C_ADD;設(shè)置指令通道 MOVX A,@DPTR;RET;判斷狀態(tài)位STA1,STA0子程序(讀寫(xiě)指令和數(shù)據(jù)),在指令的讀,寫(xiě)
;數(shù)據(jù)之前這兩個(gè)標(biāo)志必須同時(shí)為“1” ST01: LCALL R_ST;JNB ACC.0,ST01;JNB ACC.1,ST01;RET;判斷狀位STA2子程序(數(shù)據(jù)自動(dòng)讀狀態(tài)),該位
;在數(shù)據(jù)自動(dòng)操作過(guò)程中取代STA0和STA1有效。在連續(xù)讀過(guò)程中每讀一次;之前都要確認(rèn)STA2=1 ST2: LCALL R_ST;JNB ACC.2,ST2;RET;判斷STA3子程序(數(shù)據(jù)自動(dòng)寫(xiě)狀態(tài))ST3: LCALL R_ST;JNB ACC.3,ST3;RET;判斷狀態(tài)位STA6子程序(屏讀/屏拷貝狀態(tài))ST6: LCALL R_ST;JB ACC.6,ERR;RET ERR: LJMP ST6;;出錯(cuò)處理
;寫(xiě)指令和寫(xiě)數(shù)據(jù)子程序..;雙字節(jié)參數(shù)指令寫(xiě)入入口
PR1: LCALL ST01;判斷狀態(tài)位STA1,STA0 MOV A,DAT1;取第一參數(shù)單元數(shù)據(jù)
LCALL PR13;寫(xiě)入?yún)?shù);單字節(jié)參數(shù)指令寫(xiě)入入口
PR11: LCALL ST01;判斷狀態(tài)位STA1,STA0 MOV A,DAT2;取第二參數(shù)單元數(shù)據(jù) LCALL PR13;寫(xiě)入?yún)?shù)
;無(wú)參數(shù)指令寫(xiě)入入口
PR12: LCALL ST01;無(wú)參數(shù)指令寫(xiě)入入口
MOV A,COM;取指令代碼單元數(shù)據(jù)
MOV DPTR,#c_ADD;設(shè)置指令通道地址/數(shù)據(jù)寫(xiě)入入口
LJMP PR14;寫(xiě)入指令代碼
PR13: MOV DPTR,#D_ADD;設(shè)置數(shù)據(jù)通道地址/數(shù)據(jù)寫(xiě)入入口 PR14: MOVX @DPTR,A;寫(xiě)入操作 RET;讀數(shù)據(jù)子程序 PR2: LCALL ST01;判斷狀態(tài)位
MOV DPTR,#D_ADD;設(shè)置數(shù)據(jù)通道地址
MOVX A,@DPTR;讀數(shù)據(jù)操作 MOV DAT2,A;數(shù)據(jù)存入第二參數(shù)/數(shù)據(jù)單元
RET;初始化子程序
INT:
;顯示區(qū)域設(shè)置
MOV DAT1,#00H;設(shè)置文本顯示區(qū)首地址
MOV DAT2,#00h;MOV COM,#40H;LCALL PR1;雙字節(jié)參數(shù)指令寫(xiě)入入口
MOV DAT1,#16;設(shè)置文本顯示區(qū)域?qū)挾?/p>
MOV DAT2,#00H;即一行顯示所占字節(jié)數(shù)
MOV COM,#41H;LCALL PR1;雙字節(jié)參數(shù)指令寫(xiě)入入口
MOV DAT1,#00H;設(shè)置顯示區(qū)域首地址
MOV DAT2,#00H;或文本屬性區(qū)域首地址
MOV COM,#42H;LCALL PR1;雙字節(jié)參數(shù)指令寫(xiě)入入口
MOV DAT1,#10H;設(shè)置圖形顯示區(qū)域?qū)挾?/p>
MOV DAT2,#00H;或?yàn)槲谋緦傩詤^(qū)域狂寬度
MOV COM,#43H;即一行顯示所占字節(jié)數(shù)
LCALL PR1;雙字節(jié)參數(shù)指令寫(xiě)入入口
;顯示光標(biāo)設(shè)置
MOV COM,#0A1H;光標(biāo)形狀設(shè)置
LCALL PR12;
;設(shè)置光標(biāo)初始位置,是字符行和字符列,第0行第15列
MOV DAT1,#0;光標(biāo)行位置
MOV DAT2,#0;光標(biāo)列位置
MOV COM,#21H;LCALL PR1;雙字節(jié)參數(shù)指令寫(xiě)入入口
;顯示方式設(shè)置,使用內(nèi)部字符發(fā)生器
MOV COM,#80H;顯示方式設(shè)置,邏輯“或”合成 LCALL PR12;無(wú)參數(shù)指令寫(xiě)入入口+
MOV COM,#97H;僅用文本顯示
LCALL PR12;無(wú)參數(shù)指令寫(xiě)入入口
;顯示開(kāi)關(guān)方式
RET
;寫(xiě)數(shù)據(jù)子程序,8*8點(diǎn)陣
;R6中裝入顯示位置的列數(shù)(字符的個(gè)數(shù)),每行16個(gè)字符,R7中裝入顯示位置距左上角的字符行數(shù)
;5FH單元中裝入待顯示的字符碼 DISP: mov b,r7
mov a,#16 mul ab mov r7,a CLR C mov a,R6
ADD A,R7 MOV R6,A;R7*16+R6
MOV DAT1,R6;設(shè)置顯示RAM首地址,水平方向字符數(shù)
MOV DAT2,#00H;固定送00H MOV COM,#24H;地址指針指令
LCALL PR1;MOV
dat2,5fH;取要顯示的字符
MOV COM,#0c4H;數(shù)據(jù)寫(xiě),地址不變 LCALL PR11;寫(xiě)入數(shù)據(jù)
RET;清顯示緩沖區(qū)(16*8單元)clear: MOV 5FH,#00H
MOV R5,#0 CLEAR0: MOV R4,#0 CLEAR1: MOV A,R5
MOV R7,A MOV A,R4 MOV R6,A CLEAR2: LCALL DISP
INC R4 CJNE R4,#16,CLEAR1
mov r4,#00h
INC R5
CJNE R5,#8,CLEAR0 CLEAR9: RET;顯示頻率、相位、占空比、相位差等字符。(P_L :;PL_XW_ZKB:MOV R7,#3 MOV R6,#0 MOV
5fh,#30H;“P” LCALL DISP MOV R7,#3 MOV R6,#1 MOV
5fh,#3FH;“_” LCALL DISP MOV R7,#3 MOV R6,#2 MOV
5fh,#2CH;“L”
X_W :
ZKB:)
LCALL DISP MOV R7,#3 MOV R6,#3 MOV
5fh,#1AH;“: ” LCALL DISP MOV R6,#0 MOV
5fh,#38H;“X” LCALL DISP MOV R7,#5 MOV R6,#1 MOV
5fh,#3FH;“_” LCALL DISP MOV R7,#5 MOV R6,#2 MOV
5fh,#37H;“W” LCALL DISP MOV R7,#5 MOV R6,#3 MOV
5fh,#1AH;“: ” LCALL DISP
MOV R7,#5
MOV R7,#7 MOV R6,#0 MOV
5fh,#3AH;“Z” LCALL DISP
MOV R7,#7 MOV R6,#1 MOV
5fh,#2BH;“K” LCALL DISP MOV R7,#7 MOV R6,#2 MOV
5fh,#22H;“B ” LCALL DISP MOV R7,#7 MOV R6,#3 MOV
5fh,#1AH;“: ” LCALL DISP RET;頂行顯示“黃岡師院物科院“的英文名稱。;”welcome to hgnu!“ hgnu_DISP:
MOV R7,#0;顯示位置的行列數(shù)
MOV R6,#0 MOV
5fh,#37H;”W“ LCALL DISP MOV R7,#0 MOV R6,#1 MOV
5fh,#25H;”E“ LCALL DISP MOV R7,#0 MOV R6,#2 MOV
5fh,#2CH;”L“ LCALL DISP MOV R7,#0 MOV R6,#3 MOV
5fh,#23H;”C“ LCALL DISP MOV R7,#0 MOV R6,#4 MOV
5fh,#2FH;”0“ LCALL DISP MOV R7,#0 MOV R6,#5 MOV
5fh,#2DH;”M“ LCALL DISP MOV R7,#0 MOV R6,#6 MOV
5fh,#25H;”E“ LCALL DISP MOV R7,#0 MOV R6,#7 MOV
5fh,#00H;” “ LCALL DISP MOV R7,#0 MOV R6,#8 MOV
5fh,#34H;”T“ LCALL DISP MOV R7,#0 MOV R6,#9 MOV
5fh,#2FH;”O(jiān)“ LCALL DISP MOV R7,#0 MOV R6,#10 MOV
5fh,#00H;” “ LCALL DISP MOV R7,#0 MOV R6,#11 MOV
5fh,#28H;”H“ LCALL DISP
MOV R7,#0 MOV R6,#12 MOV
5fh,#27H;”G“ LCALL DISP MOV R7,#0 MOV R6,#13 MOV
5fh,#2EH;”N“ LCALL DISP MOV R7,#0 MOV R6,#14 MOV
5fh,#35H;”U“ LCALL DISP RET tab: db 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h;”0-----9“
db 21h,22h,23h,24h,25h,26h;”A-----F" end
實(shí)驗(yàn)七 直流電機(jī)轉(zhuǎn)速測(cè)量與控制實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握直流電機(jī)的驅(qū)動(dòng)原理。2.了解直流電機(jī)調(diào)速的方法。
二、實(shí)驗(yàn)內(nèi)容
1.用0832 D/A轉(zhuǎn)換電路后的輸出經(jīng)放大后驅(qū)動(dòng)直流電機(jī)。
2.編制程序改變0832輸出經(jīng)放大后的方波信號(hào)的占空比來(lái)控制電機(jī)轉(zhuǎn)速。本實(shí)驗(yàn)中 D/A輸出為雙極性輸出,因此電機(jī)可以正反向旋轉(zhuǎn)。
三、程序流程
三、實(shí)驗(yàn)電路
五、參考程序
DATA_TH0 EQU 00H DATA_TL0 EQU 00H;信號(hào)周期為130ms DATA_TH1 EQU 20H DATA_TL1 EQU 00H;高電平時(shí)間65ms ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0;啟動(dòng)電機(jī)按鍵
ORG 000BH LJMP T_0;T0確定輸出信號(hào)的周期(或者頻率)ORG 0013H LJMP INT_1;電機(jī)轉(zhuǎn)動(dòng)方向控制按鍵 ORG 001BH LJMP T_1;T1確定輸出信號(hào)高電平的時(shí)間期
ORG 0030H MAIN: MOV SP,#60H
CLR P1.0 CLR P1.1;關(guān)閉電機(jī)
setb 20h.0;初始化電機(jī)正轉(zhuǎn)
clr 20h.1;初始狀態(tài)時(shí),電機(jī)停止轉(zhuǎn)動(dòng) MOV TMOD,#11H SETB IT0 SETB EX0 SETB IT1 SETB EX1 SETB ET0 SETB ET1 SETB EA
SJMP $
T_0: JNB 20H.1,T_01;
MOV TH1,#DATA_TH1
MOV TL1,#DATA_TL1 SETB TR1
MOV TH0,#DATA_TH0 MOV TL0,#DATA_TL0 SETB TR0 JNB 20H.0,T_02 setb P1.0 clr P1.1 LJMP T_05 T_02: clr P1.0 setb P1.1 LJMP T_05 T_01: CLR P1.0
CLR P1.1 CLR TR0 CLR TR1 RETI CLR TR1 T_05: T_1: clr p1.0 clr p1.1 RETI int_1: CPL 20H.1;電機(jī)啟動(dòng)標(biāo)志求反,開(kāi)啟電機(jī)或者關(guān)閉電機(jī)
JNB 20H.1,INT_11;啟動(dòng)標(biāo)志不為1,則停止電機(jī),關(guān)閉定時(shí)器
MOV TH1,#DATA_TH1;啟動(dòng)標(biāo)志為1,則開(kāi)啟定時(shí)器1和定時(shí)器2,輸出PWM波
MOV TL1,#DATA_TL1 SETB TR1
MOV TH0,#DATA_TH0
MOV TL0,#DATA_TL0 SETB TR0 JNB 20H.0,INT_12;轉(zhuǎn)動(dòng)方向標(biāo)志不為1,則反轉(zhuǎn),否則正轉(zhuǎn) setb P1.0 clr P1.1 LJMP INT_19 setb P1.1 LJMP INT_19 INT_12: clr P1.0 INT_11: CLR P1.0 CLR P1.1 CLR TR0 CLR TR1 INT_19: RETI 26
INT_0: CPL 20H.0 RETI END
實(shí)驗(yàn)八 步進(jìn)電機(jī)控制實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
1.了解步進(jìn)電機(jī)控制的基本原理。2.掌握步進(jìn)電機(jī)轉(zhuǎn)動(dòng)編程方法。
二、實(shí)驗(yàn)內(nèi)容
從鍵盤(pán)上輸入正、反轉(zhuǎn)命令,轉(zhuǎn)速參數(shù)和轉(zhuǎn)動(dòng)步數(shù)顯示在顯示器上,CPU再讀取顯示器上顯示的正、反轉(zhuǎn)命令,轉(zhuǎn)速級(jí)數(shù)(16級(jí))和轉(zhuǎn)動(dòng)步數(shù)后執(zhí)行。轉(zhuǎn)動(dòng)步數(shù)減為零時(shí)停止轉(zhuǎn)動(dòng)。
三、實(shí)驗(yàn)電路圖
四、參考程序
ORG 0000H
ljmp main ORG 000BH LJMP COUNT0 ORG 001BH LJMP COUNT1 ORG 0100H MAIN: MOV P0,#0FFH;輸送脈沖口,SETB P1.2;MOV R0,#1;延時(shí)變化變量 LOOP1: MOV P0,#0FCH LCALL DELAY MOV P0,#0F6H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F9H LCALL DELAY JNB P1.2,LOOP2 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP1 LOOP2: MOV P0,#0FCH LCALL DELAY MOV P0,#0F9H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F6H LCALL DELAY JB P1.2,LOOP1 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH 28 SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP2 SJMP $ COUNT0: MOV TH0,#0FFH;減速中斷 MOV TL0,#0FFH CJNE R0,#9,L4 JMP L5 L4: INC R0
L5: setb TR0 RETI COUNT1: MOV TH1,#0FFH;加速中斷 MOV TL1,#0FFH CJNE R0,#1,L6 JMP L7 L6: DEC R0 L7: setb TR1 RETI DELAY: MOV A,R0;延時(shí) MOV R1,A L1: MOV R2,#50 L2: MOV R3,#250 L3: DJNZ R3,L3 DJNZ R2,L2 DJNZ R1,L1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;顯示程序查表,共陰 END