第一篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)報(bào)告2
目錄 一、實(shí)驗(yàn)一··········································1 二、實(shí) 驗(yàn)二··········································7 三、實(shí)驗(yàn)三·········································11 四、實(shí)驗(yàn)四·········································15
一 實(shí)驗(yàn)一驗(yàn)實(shí)證驗(yàn)器數(shù)計(jì)/時(shí)定? 定時(shí)/計(jì)數(shù)器驗(yàn)證實(shí)驗(yàn)
一、
實(shí)驗(yàn)?zāi)康?/p>
熟悉定時(shí)/計(jì)數(shù)器T0得特點(diǎn),學(xué)會(huì)合理選擇定時(shí)方式并能根據(jù)具體情況結(jié)合軟件得方式定時(shí)。
二、
實(shí)驗(yàn) 設(shè)備及器件
IBM PC機(jī) 一臺(tái) PROTEUS 硬件仿真軟件 Keil C51。
三、實(shí)驗(yàn)內(nèi)容
用AT89C51單片機(jī)得定時(shí)/計(jì)數(shù)器T0產(chǎn)生1s得定時(shí)時(shí)間,作為秒計(jì)數(shù)時(shí)間,當(dāng)1s產(chǎn)生時(shí)秒計(jì)數(shù)加1;秒計(jì)數(shù)到60時(shí),自動(dòng)從0開(kāi)始。
四、
實(shí)驗(yàn)要求
要求采用Proteus軟件實(shí)現(xiàn)上述實(shí)驗(yàn).五、
實(shí)驗(yàn)步驟
1.打開(kāi)Proteus ISIS編輯環(huán)境,按照表1-1所列得元件清單添加元件。
元件名稱 所屬類 所屬子類 AT89C51 Microprocessor 8051 Family CAP Capacitors Generic CAP-ELEC Capacitors Generic CRYSTAL Miscellaneous —— RES Resistors Generic 7SEG--CAT—GRN Optoelectronics 7—Segment Displays PULLUP Modeling Primitives Digital[Miscellaneous] 表1- 1 元件清單
元件全部添加后,在Proteus ISIS得編輯區(qū)域中按圖1—1所示得原理圖連接硬件電路。
圖1 — 1 電路原理圖
2.根據(jù)參考程序繪出流程圖,并輔以適當(dāng)?shù)谜f(shuō)明。
流程圖如圖1 1 —2 2 所示: :
開(kāi)始單片機(jī)數(shù)碼管初始化設(shè)置定時(shí)器0初始化開(kāi)中斷是否有中斷?進(jìn)入中斷程序送時(shí)間常數(shù)COUNT+1是否計(jì)夠1秒?YN中斷返回NSECOND+1是否等于60秒?YSECOND歸零Y分離計(jì)數(shù)值十位個(gè)位N查表顯示十位個(gè)位 圖1 1--2 程序流程圖
3.打開(kāi)KeilμVision4,新建Keil項(xiàng)目,選擇AT89C51單片機(jī)作為CPU,將參考程序?qū)氲健癝ource Group 1”中.在“Options for Target”對(duì)話窗口中,選中“Output”選項(xiàng)卡中得“Create HEX File”選項(xiàng)與“Debug”選項(xiàng)卡中得“Use:Proteus VSM Simulator”選項(xiàng)。編譯匯編源程序,改正程序中得錯(cuò)誤。
4.在Proteus ISIS中,選中AT89C51并單擊鼠標(biāo)左鍵,打開(kāi)“Edit ponent“對(duì)話窗口,設(shè)置單片機(jī)晶振頻率為12MHz,在此窗口中得“Program File”欄中,選擇先前用Keil生成得、HEX文件。在Proteus ISIS得菜單欄中選擇“File"→“Save Design”選項(xiàng),保存設(shè)計(jì),在Proteus ISIS得菜單欄中,打開(kāi)“Debug”下拉菜單,在菜單中選中“Use Remote Debug
Monitor”選項(xiàng),以支持與Keil得聯(lián)合調(diào)試.5.在Keil得菜單欄中選擇“Debug”→“Start/Stop Debug Session“選項(xiàng),或者直接單擊工具欄中得“Debug”→“Start/Stop Debug Se
ssion”圖標(biāo),進(jìn)入程序調(diào)試環(huán)境。按“F5”鍵,順序運(yùn)行程序。調(diào)出“Proteus ISIS“界面可以瞧到7段數(shù)碼管顯示從0~59s得計(jì)數(shù)值,每個(gè)數(shù)值顯示1s,如圖1—3所示。
圖1 — 3
程序運(yùn)行結(jié)果
六、
實(shí)驗(yàn) 程序
SECOND EQU 30H COUNT H13 UQE?0GRO??0 H?
LJMP START
ORG0 HB??
LJMP INT_T0 START: H00#,DNOCES??VOM?
H00#,TNUOC? VOM? ELBAT#,RTPD? VOM?? A??RLC??
MOV
A,0P?
MOV
A,2P?
MOV H00#,DOMT??
652/)00005—63556(#,0HT? VOM? 652 DOM)00005—63556(#,0LT? VOM?? 0RT BTES?? 0TE BTES??
AE?BTES?
H28#,EI
VOM?
LJMP $?INT_T0:MOV 652/)00005—63556(#,0HT?? VOM??
652 DOM)00005—63556(#,0LT? CNI??
COUNT
MOV
TNUOC,A? ? CJNE 2I,02#,A?
VOM?? COUNT,#00H
? CNI? SECOND
? MOV
A,SECOND
CJNE 1I,06#,A? ? MOV
H00#,DNOCES?I1:
MOV DNOCES,A?? ? MOV H01#,B??
VID?? AB
MOVC A,A+DPTR
VOM? P0,A
B,A??VOM?
RTPD+A,A?CVOM? A,2P??VOM??I2:
ITER?TABLE:
DB3 H66,HF4,HB5,H60,HF?
DB 6DH,7DH,07H,7FH,6FH
DNE?七、思考題
1.羅列一下 Proteus 軟件得能帶給我們得好處, , 指出一點(diǎn)最能幫助您得地方。
使用Proteus軟件能使我們方便得搭建電路,同時(shí)在沒(méi)有元器件得情況下進(jìn)行便于仿真,方便我們?cè)趯⒊绦驅(qū)懭雴纹瑱C(jī)前確認(rèn)運(yùn)行就是否正確,同時(shí)可在采購(gòu)器件之前即可開(kāi)始開(kāi)發(fā)產(chǎn)品,而不必等到器件采購(gòu)?fù)旰蟠罱娐凡胚M(jìn)行程序調(diào)試。
2.用 用 Proteu s 界面中得播放鍵運(yùn)行仿真與 Ke i lμVision4 得環(huán)境中聯(lián)調(diào)運(yùn)行它們兩者得區(qū)別在什么地方?
用Proteus界面中得播放鍵運(yùn)行仿真僅可以觀察運(yùn)行結(jié)果,即程序運(yùn)行在硬件表面上得表現(xiàn)。而聯(lián)調(diào)得時(shí)候可以再Keil軟件里查瞧各寄存器與存儲(chǔ)器得狀況,即硬件得內(nèi)部情況。
3.K K eil 軟件軟件仿真與 P r ote us 得仿真對(duì)比..使用Proteus仿真可從硬件得角度觀察仿真結(jié)果,使仿真結(jié)果更加形象直觀,使我們可從硬件運(yùn)行狀態(tài)清楚得判斷運(yùn)行結(jié)果就是否正確。而在Keil環(huán)境中則就是從程序得角度通過(guò)觀察程序中數(shù)據(jù)得變化來(lái)觀察仿真結(jié)果,需要對(duì)程序運(yùn)行結(jié)果充分了解.八、實(shí)驗(yàn)總結(jié) 及相關(guān)問(wèn)題
通過(guò)本次實(shí)驗(yàn)了解了Ptoteus軟件得使用方法,以及在掌握了Keil得使用方法下,學(xué)會(huì)了Proteus與Keil軟件聯(lián)調(diào)得方法。
在用Proteus中由于忽略了要在總線處放置網(wǎng)絡(luò)標(biāo)號(hào)導(dǎo)致聯(lián)調(diào)失敗,最后通過(guò)觀察發(fā)現(xiàn)數(shù)碼管引腳電平無(wú)變化發(fā)現(xiàn)此問(wèn)題,放置網(wǎng)絡(luò)標(biāo)號(hào)后運(yùn)行仿真時(shí)數(shù)碼管引腳電平發(fā)生變化可就是數(shù)碼管卻沒(méi)有變亮,經(jīng)過(guò)多次檢查接線,未發(fā)現(xiàn)接線錯(cuò)誤后,覺(jué)得可能就是軟件本身錯(cuò)誤,故將總線及數(shù)碼管周圍硬件線路重新繪制一遍后再次運(yùn)行仿真及可得到圖1—3得結(jié)果。
二 實(shí)驗(yàn)二機(jī)片單? 單片機(jī) O I/O 口控制實(shí)驗(yàn)
一、
實(shí)驗(yàn)?zāi)康?/p>
利用單片機(jī)得P1 口作IO 口,使同學(xué)學(xué)會(huì)利用P1 口作為輸入與輸出口。
二、
實(shí)驗(yàn)設(shè)備及器件
IBM PC 機(jī) 一臺(tái) DP—51PRO、NET 單片機(jī)仿真器、編程器、實(shí)驗(yàn)儀三合一綜合開(kāi)發(fā)平臺(tái)一臺(tái)
三、
實(shí)驗(yàn)內(nèi)容
1.編寫(xiě)一段程序,用P1 口作為控制端口,使D1 區(qū)得LED 輪流亮。
2.編寫(xiě)一段程序,用P1、0~P1、6 口控制LED,P1、7 控制LED 得亮與滅(P1、7 接按鍵,按下時(shí)LED 亮,不按時(shí)LED 滅).四、
實(shí)驗(yàn)要求
學(xué)會(huì)使用單片機(jī)得P1 口作IO 口,如果有時(shí)間同學(xué)也可以利用P3 口作IO 口來(lái)做該實(shí)驗(yàn).五、
實(shí)驗(yàn)步驟
1.用導(dǎo)線把A2 區(qū)得J61 接口與D1 區(qū)得J52 接口相連。原理如圖2—1 所示。
圖2 — 1 實(shí)驗(yàn)二 原理圖
2.先編寫(xiě)一個(gè)延時(shí)程序。
延時(shí)程序 見(jiàn)程序1 1 子程序 DELAY。
3.將LED 輪流亮得程序編寫(xiě)完整并使用TKStudy ICE 調(diào)試運(yùn)行。
LED 輪流亮程序見(jiàn)程序1。
調(diào)試運(yùn)行結(jié)果 :D1 區(qū) LE D輪流亮..4.使用導(dǎo)線把A2 區(qū)得J61 接口得P1、0~P1、6 與D1 區(qū)得 J52 接口得LED1~LED7 相連,另外A2 區(qū)J61 接口得P1、7 與D1 區(qū)得J53 得KEY1 相連. 5.編寫(xiě)P1、7 控制LED 得程序,并調(diào)試運(yùn)行。(按下K1 瞧就是否全亮).P1、7 控制L ED 得程序見(jiàn)程序2 2。
調(diào)試運(yùn)行結(jié)果:按下 P1、7 7 后 D1 區(qū)LE E D全滅。
6.A2 區(qū)J61 接口得P1、7 與D1 區(qū)得J54 得SW1 相連。然后再使用TKStudy ICE 運(yùn)行程序,查瞧結(jié)果。
P1、7 控制L ED 得程序見(jiàn)程序2 2。
調(diào)試運(yùn)行結(jié)果:按下P1 1、7后D1 1 區(qū)LE E D全亮。
六、
實(shí)驗(yàn)參考程序
序 程序 1: :
ORG
0000 H?LJMP
NIAM?ORG
0100H MAIN: MOV
A,#0FFH
CLR C??MAINLOOP:CALL YALED? A
CLR??
A,1P? VOM?
SJMP POOLNIAM?DELAY: MOV
R7,#0 LOOP: MOV
0#,6R?
DJNZ $,6R? $,6R ZNJD?? ? DJNZ R6,$
? DJNZ R7,LOOP
RET
? END 程序 2 2: :
ORG
000H LJMP MAIN ORG 0010 H?MAIN: JB
DELTES,7、1P?CLRLED:CLR
0、1P?
CLR 1、1P??
RLC? P1、2
? CLR
3、1P?
CLR 4、1P?? ? CLR
P1、5
RLC? P1、6
? SJMP MAIN SETLED:SETB P1、0
? SETB 1、1P?
2、1P BTES? 3、1P?BTES??
SETB 4、1P?
SETB 5、1P?
6、1P?BTES? NIAM?PMJS?? DNE??七、實(shí)驗(yàn)思考題
1.請(qǐng)同學(xué)思考一下, , 想出幾個(gè)實(shí)現(xiàn)以上功能得編程方法。
程序1可利用單片機(jī)得定時(shí)計(jì)數(shù)器通過(guò)選擇定時(shí)計(jì)數(shù)器工作方式與預(yù)置初值設(shè)定延時(shí)時(shí)間,通過(guò)定時(shí)計(jì)數(shù)器產(chǎn)生得中斷在中斷程序中對(duì)A進(jìn)行移位后輸出至P1口.程序2可在判斷P1、7高低電平后根據(jù)判斷結(jié)果直接將#80H或#7F直接送P1口而不必逐位進(jìn)行位操作。
2.請(qǐng)同學(xué)再思考一下, , 第二個(gè)程序中如果使用 KEY1 作為外部中斷控制 LED D 得亮與滅時(shí), , 程序應(yīng)如何修改。
此時(shí)將KEY1接/INT0口,在主程序中開(kāi)啟外部中斷設(shè)置外部中斷觸發(fā)方式,通過(guò)中斷服務(wù)子程序控制LED亮滅。程序如下所示: 0GRO?00 H? LJMP MAIN
ORG3000 序程務(wù)服斷中?;H? LJMP DELTES?MAIN: MOV H04#,PS? 斷中部外開(kāi);0TE BTES? CLR 0TI?;設(shè)置為電平觸發(fā)
SETB AE?CLRLED:CLR P1、0
CLR P1、1
2、1P?RLC? CLR 3、1P? 4、1P?RLC? CLR P1、5
CLR 6、1P? DELRLC PMJS?SETLED:SETB P1、0
1、1P?BTES? SETB P1、2
3、1P?BTES? 4、1P BTES? SETB 5、1P? 6、1P BTES? ITER?
DNE?八、實(shí)驗(yàn)總結(jié) 及相關(guān)問(wèn)題
通過(guò)本次實(shí)驗(yàn)掌握了使用 TKStudy ICE 進(jìn)行硬件仿真調(diào)試得方法,在設(shè)置仿真器驅(qū)動(dòng)程序聲明時(shí)對(duì) C:Keil 目錄下得Tools、ini 文件添加描述時(shí),由于添加得路徑錯(cuò)誤導(dǎo)致無(wú)法進(jìn)行硬件仿真調(diào)試,修改為正確路徑后方可在DEBUG 窗口中得 Use 選項(xiàng)中找到對(duì)應(yīng)得選項(xiàng)。使用 TKStudy ICE 進(jìn)行硬件仿真調(diào)試相比本學(xué)期得電子系統(tǒng)設(shè)計(jì)中用到得調(diào)試方法更快捷,使用更方便. 與此同時(shí),通過(guò)本次實(shí)驗(yàn)對(duì)單片機(jī)得 I/O 控制有了更深入得了接,同時(shí)加深入對(duì)單片機(jī)I/O 編程得理解.實(shí)驗(yàn)三
串轉(zhuǎn)并 O I/O 口實(shí)驗(yàn)
一、
實(shí)驗(yàn)?zāi)康?/p>
熟悉并掌握串轉(zhuǎn)并得I/O口擴(kuò)展方法。
二、
實(shí)驗(yàn)設(shè)備及器件
IBM PC機(jī) 一臺(tái) DP-51PRO、NET單片機(jī)仿真器、編程器、實(shí)驗(yàn)儀三合一綜合開(kāi)發(fā)平臺(tái) 一臺(tái)
三、
實(shí)驗(yàn)內(nèi)容
1.寫(xiě)程序,通過(guò)單片機(jī)得P1口控制74HC164得串行輸入端口,實(shí)現(xiàn)串并轉(zhuǎn)換.
2.驗(yàn)證串并轉(zhuǎn)換數(shù)據(jù)得正確性。
四、
實(shí)驗(yàn)要求
熟悉串并轉(zhuǎn)換芯片得工作原理,學(xué)會(huì)使用串并轉(zhuǎn)換芯片擴(kuò)展單片機(jī)得I/O 口資源.表3-1 74HC 164 真值表
五、
實(shí)驗(yàn)步驟
1. 短接C5區(qū)JP10接口,將C5區(qū)J43接口與A2區(qū)J61接口得P10~P13對(duì)應(yīng)相連(CLK對(duì)P10等等)。如圖3-1所示。
圖3 —1 實(shí)驗(yàn) 三 原理圖
2。
運(yùn)行編寫(xiě)好得軟件程序,完成一次串并轉(zhuǎn)換。
實(shí)驗(yàn) 程序 見(jiàn) 實(shí)驗(yàn)參考程序。
2. 使用C2區(qū)得邏輯筆或D1區(qū)得J52接口(LED指示燈)測(cè)試并行輸出數(shù)據(jù)Q0~Q7數(shù)據(jù)得正確性。
調(diào)試運(yùn)行結(jié)果:通過(guò)觀察 LE D得亮滅情況可判斷完成一次串并轉(zhuǎn)換, , 且轉(zhuǎn)換結(jié)果正確無(wú)誤..六、
實(shí)驗(yàn)參考程序
CLK
0、1P UQE?DINA
EQU P1、1 DINB
EQU P1、2 CLR164 3、1P UQE?ORG0000 H??LJMP NIAM?ORG0010 H??MAIN:
MOV
SP,#60H
? NOP
CLR
CLK
SETB BNID?
RLC?? CLR164
461RLC BTES??
HFF0#,A? VOM? VOM??
H80#,4R?SLCHG: RLC
A?
C,ANID? VOM?
SETB
CLK
PON?
KLC
RLC?
PON? GHCLS,4R
ZNJD?? $ PMJS??
END 七、實(shí)驗(yàn)思考題
參考圖 3—2電路圖,嘗試編寫(xiě)軟件程序,實(shí)現(xiàn) 8 位 LED 流水燈得控制。
圖 圖 3、2 實(shí)驗(yàn)原理圖
可利用單片機(jī)得定時(shí)計(jì)數(shù)器通過(guò)選擇定時(shí)計(jì)數(shù)器工作方式與預(yù)置初值設(shè)定延時(shí)時(shí)間,通過(guò)定時(shí)計(jì)數(shù)器產(chǎn)生得中斷在中斷程序中對(duì)A進(jìn)行移位。程序如下所示:
CLK
EQU
0、1P? ? DINA
1、1P UQE? ? DINB
2、1P
UQE?
CLR164 EQU P1、3
0 GRO?000 H?
LJMP MAIN
? ORG
000BH
;定時(shí)器 0 中斷服務(wù)程序
LJMP SLCHG MAIN:
H06#,PS? VOM?
NOP
CLR
CLK
BNID BTES?
461RLC??RLC? ? SETB 461RLC?
MOV
HFF0#,A?
MOV
1式方作工 0 器時(shí)定?;H10#,DOMT? VOM??
數(shù)常間時(shí) sm2 送?;H81#,0HT?
HCF0#,0LT? VOM? ? SETB
0RT?;開(kāi)中斷
0TE?BTES?
AE?BTES?
$ PMJS?SLCHG: MOV ? H81#,0HT?
MOV
HCF0#,0LT? A
CLR?? C,ANID
VOM?? ? SETB
CLK
NOP
KLC? RLC? RETI
DNE?八、實(shí)驗(yàn)總結(jié) 及相關(guān)問(wèn)題
由于具有之前實(shí)驗(yàn)得基礎(chǔ)所以本實(shí)驗(yàn)基本沒(méi)碰到什么問(wèn)題,調(diào)試運(yùn)行都符合實(shí)驗(yàn)要求,通過(guò)本次實(shí)驗(yàn)對(duì)串并轉(zhuǎn)化程序得編寫(xiě)有了一定了解,通過(guò)編寫(xiě)流水燈程序加深了對(duì)單片機(jī)串并口得了解。
實(shí)驗(yàn)四
繼電器控制實(shí)驗(yàn)
一、
實(shí)驗(yàn)?zāi)康?/p>
加深理解繼電器得工作原理與特點(diǎn),掌握利用單片機(jī)得IO口控制繼電器得一般方法。
二、
實(shí)驗(yàn)設(shè)備及器件
IBM PC機(jī) 一臺(tái) DP—51PRO、NET單片機(jī)仿真器、編程器、實(shí)驗(yàn)儀三合一綜合開(kāi)發(fā)平臺(tái) 一臺(tái)
三、
實(shí)驗(yàn)內(nèi)容
1.利用D1區(qū)得撥動(dòng)開(kāi)關(guān)與LED,學(xué)習(xí)繼電器得工作原理與特點(diǎn)。
2.編寫(xiě)一段程序,用P1、0口控制繼電器,繼電器控制LED得亮與滅,(與CLOSE連通時(shí),一盞LED亮;不連通時(shí)該LED滅。與OPEN連通時(shí),另一盞LED亮,不通時(shí)該LED滅).
四、
實(shí)驗(yàn)要求
學(xué)會(huì)繼電器得使用與利用單片機(jī)得IO口控制繼電器得方法。
五、
實(shí)驗(yàn)步驟
圖4 -1 繼電器驅(qū)動(dòng)控制電路圖
1.用短路帽短接JP7,使用導(dǎo)線把D1區(qū)J54接口得SW1與C7區(qū)J9接口得KJ(任意一根針)相連接。
2.使用導(dǎo)線把D1區(qū)J52接口得LED1、LED2與C7區(qū)J103接口得OPEN1,CLOSE1分別相連,另外C7區(qū)J103接口得1接地(GND)。
3.接好線后,同學(xué)可以撥動(dòng)D1區(qū)得SW1撥動(dòng)開(kāi)關(guān),觀察現(xiàn)象(撥到1時(shí)LED2亮,撥到0時(shí)LED1亮),并得出結(jié)論。
運(yùn)行結(jié)果: : 撥到1 時(shí)LED 2 亮,撥到0 時(shí)L ED 1 亮,說(shuō)明每撥動(dòng)一次開(kāi)關(guān)改變一次繼電器得狀態(tài)。
4.然后把C7 區(qū)J9 接口得KJ 改接到A2 區(qū)得J61 接口得P10。再編寫(xiě)一個(gè)程序程序(參考實(shí)驗(yàn)二), 使P1、0 口延時(shí)一段時(shí)間后改變電平值,來(lái)控制繼電器得開(kāi)關(guān)。
實(shí)驗(yàn) 程序見(jiàn)實(shí)驗(yàn)參考程序。
調(diào)試運(yùn)行結(jié)果: : 兩 個(gè) LED 交替變亮, , 繼電器狀態(tài)不斷改變。
六、
實(shí)驗(yàn)參考程序
ORG 0000 H?LJMP MAIN ORG
0100H MAIN: MOV
R7,#0 LOOP: MOV
0#,6R? ? DJNZ $,6R? $,6R?ZNJD?? ? DJNZ $,6R? POOL,7R?ZNJD?? ? CPL
0、1P? NIAM PMJS??
DNE?
七、
實(shí)驗(yàn)思考題
1.請(qǐng)同學(xué)思考一下,改由 OPEN 2、2、CLOSE2 時(shí)本實(shí)驗(yàn)如何進(jìn)行。
同使用OPEN1、1與CLOSE1時(shí)連接方法類似,把D1區(qū)J52接口得LED1、LED2與C7區(qū)J103接口得OPEN2,CLOSE2分別相連,另外C7區(qū)J103接口得2接地(GND)即可。
2.請(qǐng)同學(xué)再思考一下, 繼電器得用途,并舉例說(shuō)明。
繼電器就是一種電控制器件,就是當(dāng)輸入量(激勵(lì)量)得變化達(dá)到規(guī)定要求時(shí),在電氣輸出電路中使被控量發(fā)生預(yù)定得階躍變化得一種電器。它具有控制系統(tǒng)(又稱輸入回路)與被控制系統(tǒng)(又稱輸出回路)之間得互動(dòng)關(guān)系。通常應(yīng)用于自動(dòng)化得控制電路中,它實(shí)際上就是用小電流去控制大電流運(yùn)作得一種“自動(dòng)開(kāi)關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。
按照其工作原理可有以下應(yīng)用:電磁繼電器固體繼電器溫度繼電器舌簧繼電器時(shí)間繼電器高頻繼電器極化繼電器其她類型得繼電器 八、實(shí)驗(yàn)總結(jié) 及相關(guān)問(wèn)題
由于具有之前實(shí)驗(yàn)得基礎(chǔ)所以本實(shí)驗(yàn)基本沒(méi)碰到什么問(wèn)題,調(diào)試運(yùn)行都符合實(shí)驗(yàn)要求,通過(guò)本次實(shí)驗(yàn)了解了繼電器得控制方法。對(duì)繼電器這一器件有了一定了解。
第二篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)報(bào)告
目錄
第一章單片機(jī)簡(jiǎn)介....................................................2 第二章
實(shí)驗(yàn)要求..................................................3 第三章實(shí)驗(yàn)設(shè)備......................................................3 第四章實(shí)驗(yàn)安排......................................................4 第五章實(shí)驗(yàn)內(nèi)容......................................................4
LED燈實(shí)驗(yàn).......................................................4 步進(jìn)馬達(dá)試驗(yàn)....................................................5 獨(dú)立按鍵控制LED實(shí)驗(yàn)............................................7 矩陣鍵盤實(shí)驗(yàn)....................................................9 靜態(tài)數(shù)碼管實(shí)驗(yàn).................................................12 動(dòng)態(tài)數(shù)碼管實(shí)驗(yàn).................................................14 NE555脈沖發(fā)生器實(shí)驗(yàn)(定時(shí)/計(jì)數(shù)器).............................16 RS232串口通信實(shí)驗(yàn)(接收與發(fā)送)..................................21 第六章收獲體會(huì).....................................................25
單片機(jī)實(shí)驗(yàn)報(bào)告
第一章單片機(jī)簡(jiǎn)介
單片機(jī)也被稱為微控制器(Microcontroller),是因?yàn)樗钤绫挥迷诠I(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專用處理器的發(fā)展便分道揚(yáng)鑣。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,這是別的器件需要費(fèi)很大力氣才能做到的,有些則是花大力氣也很難做到的。一個(gè)不是很復(fù)雜的功能要是用美國(guó)50年代開(kāi)發(fā)的74系列,或者60年代的CD4000系列這些純硬件來(lái)搞定的話,電路一定是一塊大PCB板!但是如果要是用美國(guó)70年代成功投放市場(chǎng)的系列單片機(jī),結(jié)果就會(huì)有天壤之別!只因?yàn)閱纹瑱C(jī)的通過(guò)你編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!
單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SoC三大階段。
1.SCM即單片微型計(jì)算機(jī)(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)?!皠?chuàng)新模式”獲得成功,奠定了SCM與通用計(jì)算機(jī)完全不同的發(fā)展道路。在開(kāi)創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒(méi)。
2.MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對(duì)象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對(duì)象的智能化控制能力。它所涉及的領(lǐng)域都與對(duì)象系統(tǒng)相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來(lái)看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。
Philips公司以其在嵌入式應(yīng)用方面的巨大優(yōu)勢(shì),將MCS-51從單片微型計(jì)算機(jī)迅速發(fā)展到微控制器。因此,當(dāng)我們回顧嵌入式系統(tǒng)發(fā)展道路時(shí),不要忘記Intel和Philips的歷史功績(jī)。
3.單片機(jī)是嵌入式系統(tǒng)的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求
單片機(jī)實(shí)驗(yàn)報(bào)告
應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢(shì)。隨著微電子技術(shù)、IC設(shè)計(jì)、EDA工具的發(fā)展,基于SoC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)會(huì)有較大的發(fā)展。因此,對(duì)單片機(jī)的理解可以從單片微型計(jì)算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。
MCS51系列微控制器應(yīng)用廣泛,在家電、汽車甚至航空等領(lǐng)域都有其活躍的身影。然而,普通51系列微控制器內(nèi)部資源有限,像我用Proteus構(gòu)建微控制器虛擬實(shí)驗(yàn)室選用的AT89C52只有三個(gè)定時(shí)器、一個(gè)全雙工的串行口和中斷控制,并且其數(shù)據(jù)處理能力有限,不適合對(duì)大量數(shù)據(jù)進(jìn)行復(fù)雜分析和運(yùn)算。
因此,在不重新選型(可選用SoC)的前提下,為實(shí)現(xiàn)我們所需要的功能,就需要進(jìn)行外圍擴(kuò)展。針對(duì)微控制器的特點(diǎn),我們首先考慮串行擴(kuò)展,因?yàn)槲⒖刂破鞯腎/O引腳有限,并行擴(kuò)展一則外圍芯片面積比較大,二則對(duì)抑制EMI不利。
第二章 實(shí)驗(yàn)要求
1.學(xué)習(xí)Keil C51集成開(kāi)發(fā)工具的操作及調(diào)試程序的方法,包括:仿真調(diào)試與脫機(jī)運(yùn)行間的切換方法
2.熟悉TD-51單片機(jī)系統(tǒng)板及實(shí)驗(yàn)系統(tǒng)的結(jié)構(gòu)及使用
3.進(jìn)行MCS51單片機(jī)指令系統(tǒng)軟件編程設(shè)計(jì)與硬件接口功能設(shè)
4. 學(xué)習(xí)并掌握Keil C51軟件聯(lián)機(jī)進(jìn)行單片機(jī)接口電路的設(shè)計(jì)與編程調(diào)試
5.完成指定MCS51單片機(jī)綜合設(shè)計(jì)題
第三章實(shí)驗(yàn)設(shè)備
1.HC600S-51單片機(jī)開(kāi)發(fā)板 2.Keil C51 3.普中自動(dòng)下載軟件
第四章 實(shí)驗(yàn)安排
1.LED燈實(shí)驗(yàn)
單片機(jī)實(shí)驗(yàn)報(bào)告
2.步進(jìn)馬達(dá)試驗(yàn)
3.獨(dú)立按鍵控制LED實(shí)驗(yàn) 4.矩陣鍵盤實(shí)驗(yàn) 5.靜態(tài)數(shù)碼管實(shí)驗(yàn) 6.動(dòng)態(tài)數(shù)碼管實(shí)驗(yàn)
7.NE555脈沖發(fā)生器實(shí)驗(yàn)(定時(shí)/計(jì)數(shù)器)8.RS232串口通信實(shí)驗(yàn)(接收與發(fā)送)
第五章 實(shí)驗(yàn)內(nèi)容
一、LED燈實(shí)驗(yàn)
1.基本要求
利用位移循環(huán)指令實(shí)現(xiàn)LED燈的閃爍 2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線圖
4.電路原理圖
單片機(jī)實(shí)驗(yàn)報(bào)告
5.程序
#include
main(){unsigned int i;while(1)
{for(i=0,P0=1;i<4;i++){d(500);P0=(P0<<2);}}}
二、步進(jìn)馬達(dá)試驗(yàn)
1.基本要求
編程實(shí)現(xiàn)馬達(dá)的正反轉(zhuǎn),調(diào)速等功能 2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線圖(圖一)
單片機(jī)實(shí)驗(yàn)報(bào)告
圖一 圖二
4.電路原理圖
上圖圖二 5.程序
#include “reg52.h” #define speed 2 sbit PH1 = P1^0;
//定義管腳 sbit PH2 = P1^1;sbit I01 = P1^2;sbit I11 = P1^3;sbit I02 = P1^4;sbit I12 = P1^5;
void delay(int time);
void Go(){ //A
PH1 = 0;//PH1為0 則A線圈為反向電流
I01 = 0;I11 = 0;
//以最大電流輸出
PH2 = 0;//PH2為0 則B線圈為反向電流
I02 = 1;I12 = 1;
//輸出0 delay(speed);//圈為反向電流
I01 = 1;//輸出0 I11 = 1;
PH2 = 1;//PH2為1 則B線圈為正向電流
I02 = 0;//以最大電流輸出
I12 = 0;
delay(speed);//B PH1 = 1;
//PH1為1 則A線圈為
正向電流
I01 = 0;
//以最大電流輸出
I11 = 0;
PH2 = 1;//PH2為1 則B線圈為正
向電流
I02 = 1;//輸出0 I12 = 1;
delay(speed);
PH1 = 1;
//PH1為1 則A線圈為正向電流
I01 = 1;I11 = 1;
PH2 = 0;
//PH2為0 則B線圈為反向電流
I02 = 0;I12 = 0;delay(speed);}
void delay(int time){
int i,j;
for(j=0;j <= time;j++)
for(i =0;i <= 120;i++);}
void main(){
while(1)
{
Go();//步進(jìn)電機(jī)運(yùn)行
} }
單片機(jī)實(shí)驗(yàn)報(bào)告
三、獨(dú)立按鍵控制LED實(shí)驗(yàn)
1.基本要求
通過(guò)編程控制8個(gè)獨(dú)立按鍵分別控制8個(gè)LED燈的開(kāi)關(guān) 2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線圖(圖一)
圖一 圖二
4.電路原理圖 上圖圖二 5.程序
#include
P1口
#define uchar unsigned char #define uint unsigned int
void Delayms(unsigned int c);
//延時(shí)10ms uchar Key_Scan();void main(void){
unsigned char ledValue, keyNum;
ledValue = 0x01;
while(1)
{
keyNum = Key_Scan();//掃描鍵
盤
switch(keyNum)
{
case(0xFE):
//返回按
鍵K1的數(shù)據(jù)
ledValue = 0x01;
break;
單片機(jī)實(shí)驗(yàn)報(bào)告
case(0xFD):
ledValue = 0x02;
break;case(0xFB):
ledValue = 0x04;
break;case(0xF7):
ledValue = 0x08;
break;case(0xEF):
ledValue = 0x10;
break;case(0xDF):
ledValue = 0x20;
break;case(0xBF):
ledValue = 0x40;
break;case(0x7F):
ledValue = 0x80;
//返回按鍵K2的數(shù)據(jù)
//返回按鍵K3的數(shù)據(jù)
//返回按鍵K4的數(shù)據(jù)
//返回按鍵K5的數(shù)據(jù)
//返回按鍵K6的數(shù)據(jù)
//返回按鍵K7的數(shù)據(jù)
//返回按鍵K8的數(shù)據(jù)
break;default:
break;
}
GPIO_LED = ledValue;//點(diǎn)亮LED燈
}
}
uchar Key_Scan(void)//鍵盤掃描函數(shù) { uchar i,n=0xff;
if(P1==0xff)goto Scan_r;//無(wú)鍵按
下,返回
goto Scan_r;Scan_1:
while(P1!=0xff);//等待鍵釋放
Delayms(10);Scan_r:
return n;}
void Delayms(uint x){
uint n;
for(;x>0;x--)
{
for(n=0;n<123;n++)
{;}
} }
四、矩陣鍵盤實(shí)驗(yàn)
1.基本要求
編程由16個(gè)矩陣按鍵控制數(shù)碼管顯示相應(yīng)的數(shù)值 2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。
3.接線圖
單片機(jī)實(shí)驗(yàn)報(bào)告
見(jiàn)下圖圖一
圖一 圖二
4.電路原理圖
見(jiàn)上圖圖二 5.程序
#include
uchar ScanKey(void);void Delayms(uint x);main(){ unsigned char ledValue;uchar i;ledValue = 0x01;loop: i = ScanKey();
switch(i)
{ case 0xee:
ledValue = ~0x3F;
break;
case 0xde:
ledValue = ~0x06;
break;
case 0xbe:
ledValue = ~0x5B;
break;
case 0x7e:
ledValue = ~0x4F;
break;
case 0xed:
ledValue = ~0x66;
break;
case 0xdd:
ledValue = ~0x6D;
break;
單片機(jī)實(shí)驗(yàn)報(bào)告
case 0xbd:
ledValue = ~0x7D;
break;
case 0x7d:
ledValue = ~0x07;
break;
case 0xeb:
ledValue = ~0x7F;
break;
case 0xdb:
ledValue = ~0x6F;
break;
case 0xbb:
ledValue = ~0x77;
break;
case 0x7b:
ledValue = ~0x7C;
break;
case 0xe7:
ledValue = ~0x39;
break;
case 0xd7:
ledValue = ~0x5E;
break;
case 0xb7:
ledValue = ~0x79;
break;
case 0x77:
ledValue = ~0x71;
break;
}
GPIO_LED = ledValue;i=0;goto loop;}
void Delayms(uint x){uint n;for(;x > 0;x--)
{ for(n=0;n<123;n++)
{;}
} }
uchar ScanKey(void)//鍵盤掃描函數(shù) { uchar i,n=0xff;
P1=0xf0;
if(P1==0xf0)goto Scan_r;//無(wú)鍵按下,返回
for(i=0,P1=0xfe;i<4;i++)
{ if((P1&0xf0)!=0xf0)
{ Delayms(10);
if((P1&0xf0)!=0xf0)
{ n=
P1;
goto
Scan_1;}
}
P1=(P1<<1)+1;
//掃描下
一行
} goto Scan_r;Scan_1:
單片機(jī)實(shí)驗(yàn)報(bào)告
P1=0xf0;while((P1&0xf0)!=0xf0);//等待鍵
釋放
Delayms(10);
Scan_r:
P1=0xff;return n;} }
五、靜態(tài)數(shù)碼管實(shí)驗(yàn)
1.基本要求
編程使數(shù)碼管顯示字符0-F 2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線框圖(圖一)
圖一
單片機(jī)實(shí)驗(yàn)報(bào)告
圖二
4.電路原理圖
見(jiàn)上圖圖二 5.程序
#include
{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D, ~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};main(){
unsigned int LedNumVal;//定義變量 while(1)
{
// 將字模送到P0口顯示
LedNumVal++;
P0 = LED7Code[LedNumVal%16];
Delayms(1000);
//調(diào)用延時(shí)程序
}
}
單片機(jī)實(shí)驗(yàn)報(bào)告
void Delayms(uint x){uint n;for(;x > 0;x--)
{ for(n=0;n<123;n++)
{;}
} }
六、動(dòng)態(tài)數(shù)碼管實(shí)驗(yàn)
1.基本要求
編程實(shí)現(xiàn)8個(gè)數(shù)碼管的動(dòng)態(tài)掃描。通過(guò)P22、P23、P24控制3-8譯碼器來(lái)對(duì)數(shù)碼管進(jìn)行位選,通過(guò)P0口經(jīng)過(guò)573的驅(qū)動(dòng)控制數(shù)碼管的段選,通過(guò)P13控制573的使能端,為低電平時(shí)573才會(huì)有輸出。2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線圖(圖一)
圖一 圖二
單片機(jī)實(shí)驗(yàn)報(bào)告
圖三
4.電路原理圖
見(jiàn)上圖圖
二、圖三 5.程序
#define uint unsigned int void Dsplay();void Delayms(uint x);uchar mDS[6];uchar code cDsCode[]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main(){ uchar i;
for(i=0;i<6;i++)mDS[i]=i+1;
loop:
Dsplay();
goto loop;}
void Dsplay()//動(dòng)態(tài)掃描顯示
{uchar i;
for(i=0,P2=0x01;i<6;i++)
{ P1=cDsCode[mDS[i]];//輸出段
Delayms(1000);
P2=P2<<1;
//選通下一位
}
P2=0x00;
//關(guān)閉位選通 }
void Delayms(uint x){uint n;for(;x > 0;x--)
{ for(n=0;n<123;n++)
{;}
} }
七、NE555脈沖發(fā)生器實(shí)驗(yàn)(定時(shí)/計(jì)數(shù)器)
1.基本要求
2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線圖
4.電路原理圖
5.程序
#include
CYMOMETER
”};uchar code EN_CHAR2[16]={“FREQ:
HZ”};
單片機(jī)實(shí)驗(yàn)報(bào)告
void TIMER_Configuration();//初始化定時(shí)器 ulong Freq;
//用來(lái)存放要顯示的頻率值 ulong TimeCount;//用于計(jì)算1S鐘的
void main(){ uchar i, freqValue[6];
LcdInit();TIMER_Configuration();for(i=0;i<16;i++){
LcdWriteData(EN_CHAR1[i]);}
LcdWriteCom(0xc0);//第二行顯示
for(i=0;i<16;i++){
LcdWriteData(EN_CHAR2[i]);}
while(1){
if(TR0==0)
//當(dāng)計(jì)數(shù)器停下的時(shí)候,表明計(jì)數(shù)完畢
{
Freq = Freq + TL1;
//讀取TL的值
Freq = Freq +(TH1 * 256);//讀取TH的值
LcdWriteCom(0xc8);
//--求頻率的個(gè)十百千萬(wàn)十萬(wàn)位--//
freqValue[0]='0'+Freq%1000000/100000;
freqValue[1]='0'+Freq%100000/10000;
freqValue[2]='0'+Freq%10000/1000;
freqValue[3]='0'+Freq%1000/100;
freqValue[4]='0'+Freq%100/10;
freqValue[5]='0'+Freq%10;
for(i=0;i<5;i++)//從最高位開(kāi)始查找不為0的數(shù)開(kāi)始顯示(最低位為0顯示0)
{
if(freqValue[i]==0x30)
{
freqValue[i]=0x20;//若為0則賦值空格鍵
}
else
單片機(jī)實(shí)驗(yàn)報(bào)告
{
break;
}
}
for(i=0;i<6;i++)
{
LcdWriteData(freqValue[i]);
}
Freq=0;//將計(jì)算的頻率清零
TH1=0;//將計(jì)數(shù)器的值清零
TL1=0;
TR0=1;//開(kāi)啟定時(shí)器
TR1=1;//開(kāi)啟計(jì)數(shù)器
} } }
void TIMER_Configuration(){ TMOD=0x51;TH0=0x3C;TL0=0xB0;ET0=1;ET1=1;EA=1;TR0=1;TR1=1;} void Timer0()interrupt 1 { TimeCount++;if(TimeCount==20)//計(jì)時(shí)到1S {
TR0=0;
TR1=0;
TimeCount=0;
}
//--12MHZ設(shè)置定時(shí)50ms的初值--// TH0=0x3C;TL0=0xB0;} void Timer1()interrupt 3 {
單片機(jī)實(shí)驗(yàn)報(bào)告
//--進(jìn)入一次中斷,表明計(jì)數(shù)到了65536--// Freq=Freq+65536;
}
#include“l(fā)cd.h”
void Lcd1602_Delay1ms(uint c)
//誤差 0us {
uchar a,b;for(;c>0;c--){
for(b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
} #ifndef LCD1602_4PINS //當(dāng)沒(méi)有定義這個(gè)LCD1602_4PINS時(shí) void LcdWriteCom(uchar com)
//寫(xiě)入命令 { LCD1602_E = 0;
//使能
LCD1602_RS = 0;
//選擇發(fā)送命令
LCD1602_RW = 0;
//選擇寫(xiě)入
LCD1602_DATAPINS = com;
//放入命令
Lcd1602_Delay1ms(1);//等待數(shù)據(jù)穩(wěn)定
LCD1602_E = 1;
//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);
//保持時(shí)間
LCD1602_E = 0;} #else
void LcdWriteCom(uchar com)
//寫(xiě)入命令 { LCD1602_E = 0;//使能清零
LCD1602_RS = 0;//選擇寫(xiě)入命令
LCD1602_RW = 0;//選擇寫(xiě)入
LCD1602_DATAPINS = com;// Lcd1602_Delay1ms(1);LCD1602_E = 1;//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;Lcd1602_Delay1ms(1);
單片機(jī)實(shí)驗(yàn)報(bào)告
LCD1602_DATAPINS = com << 4;//發(fā)送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1;//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif #ifndef LCD1602_4PINS
void LcdWriteData(uchar dat)
//寫(xiě)入數(shù)據(jù) { LCD1602_E = 0;//使能清零
LCD1602_RS = 1;//選擇輸入數(shù)據(jù)
LCD1602_RW = 0;//選擇寫(xiě)入
LCD1602_DATAPINS = dat;//寫(xiě)入數(shù)據(jù)
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);
//保持時(shí)間
LCD1602_E = 0;} #else void LcdWriteData(uchar dat)
//寫(xiě)入數(shù)據(jù) { LCD1602_E = 0;//使能清零
LCD1602_RS = 1;
//選擇寫(xiě)入數(shù)據(jù)
LCD1602_RW = 0;
//選擇寫(xiě)入
LCD1602_DATAPINS = dat;
Lcd1602_Delay1ms(1);LCD1602_E = 1;//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4;//寫(xiě)入低四位
Lcd1602_Delay1ms(1);LCD1602_E = 1;//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif #ifndef LCD1602_4PINS void LcdInit()
//LCD初始化子程序 { LcdWriteCom(0x38);//開(kāi)顯示
單片機(jī)實(shí)驗(yàn)報(bào)告
LcdWriteCom(0x0c);//開(kāi)顯示不顯示光標(biāo)
LcdWriteCom(0x06);//寫(xiě)一個(gè)指針加1 LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點(diǎn) } #else void LcdInit()
//LCD初始化子程序 { LcdWriteCom(0x32);//將8位總線轉(zhuǎn)為4位總線
LcdWriteCom(0x28);//在四位線下的初始化
LcdWriteCom(0x0c);//開(kāi)顯示不顯示光標(biāo)
LcdWriteCom(0x06);//寫(xiě)一個(gè)指針加1 LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點(diǎn) } #endif
八、RS232串口通信實(shí)驗(yàn)(接收與發(fā)送)
1.基本要求
a.通過(guò)實(shí)驗(yàn)了解串口的基本原理及使用,理解并掌握對(duì)串口進(jìn)行初始化; b.使用串口調(diào)試助手(Baud 9600、數(shù)據(jù)位
8、停止位
1、效驗(yàn)位無(wú))做為上位機(jī)來(lái)做收發(fā)試驗(yàn);
c.利用串口調(diào)試助手中字符串輸入進(jìn)行數(shù)據(jù)發(fā)送,接受窗口顯示收到的數(shù)據(jù)。2.實(shí)驗(yàn)內(nèi)容
在Keil C51中進(jìn)行程序的編寫(xiě)設(shè)計(jì)并生成.HEX文件,按照下圖連接電路后將HC600S-51單片機(jī)開(kāi)發(fā)板接通電源,按下開(kāi)關(guān),錄入。打開(kāi)普中錄入生成.HEX文件,加載程序,觀察實(shí)驗(yàn)結(jié)果,如果不正確對(duì)程序進(jìn)行改進(jìn)后重復(fù)此操作。實(shí)驗(yàn)結(jié)束后先斷電源再拆線,將元器件歸位后離開(kāi)。3.接線圖
單片機(jī)實(shí)驗(yàn)報(bào)告
4.電路原理圖
5.程序
#include
LcdWriteData(ChCode[i]);} UsartConfiguration();while(1){
if(RI == 1)
//查看是否接收到數(shù)據(jù)
{
receiveData = SBUF;//讀取數(shù)據(jù)
單片機(jī)實(shí)驗(yàn)報(bào)告
RI = 0;
//清除標(biāo)志位
LcdWriteCom(0xC0);
LcdWriteData('0' +(receiveData / 100));
// 百位
LcdWriteData('0' +(receiveData % 100 / 10));// 十位
LcdWriteData('0' +(receiveData % 10));
// 個(gè)位
} } } void UsartConfiguration(){ SCON=0X50;
//設(shè)置為工作方式1 TMOD=0X20;//設(shè)置計(jì)數(shù)器工作方式2 PCON=0X80;
//波特率加倍
TH1=0XF3;
//計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的TL1=0XF3;TR1=1;
//打開(kāi)計(jì)數(shù)器 }
#include“l(fā)cd.h”
void Lcd1602_Delay1ms(uint c)
//誤差 0us {
uchar a,b;for(;c>0;c--){
for(b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
} #ifndef LCD1602_4PINS //當(dāng)沒(méi)有定義這個(gè)LCD1602_4PINS時(shí) void LcdWriteCom(uchar com)
//寫(xiě)入命令 { LCD1602_E = 0;
//使能
LCD1602_RS = 0;
//選擇發(fā)送命令
LCD1602_RW = 0;
//選擇寫(xiě)入
LCD1602_DATAPINS = com;
//放入命令
Lcd1602_Delay1ms(1);//等待數(shù)據(jù)穩(wěn)定
LCD1602_E = 1;
//寫(xiě)入時(shí)序
單片機(jī)實(shí)驗(yàn)報(bào)告
Lcd1602_Delay1ms(5);
//保持時(shí)間
LCD1602_E = 0;} #else
void LcdWriteCom(uchar com)
//寫(xiě)入命令 { LCD1602_E = 0;//使能清零
LCD1602_RS = 0;//選擇寫(xiě)入命令
LCD1602_RW = 0;//選擇寫(xiě)入
LCD1602_DATAPINS = com;Lcd1602_Delay1ms(1);LCD1602_E = 1;//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com << 4;//發(fā)送低四位
Lcd1602_Delay1ms(1);LCD1602_E = 1;//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif
#ifndef LCD1602_4PINS
void LcdWriteData(uchar dat)
//寫(xiě)入數(shù)據(jù) { LCD1602_E = 0;//使能清零
LCD1602_RS = 1;//選擇輸入數(shù)據(jù)
LCD1602_RW = 0;//選擇寫(xiě)入
LCD1602_DATAPINS = dat;//寫(xiě)入數(shù)據(jù)
Lcd1602_Delay1ms(1);LCD1602_E = 1;
//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);
//保持時(shí)間
LCD1602_E = 0;} #else void LcdWriteData(uchar dat)
//寫(xiě)入數(shù)據(jù) { LCD1602_E = 0;
//使能清零
LCD1602_RS = 1;
//選擇寫(xiě)入數(shù)據(jù)
LCD1602_RW = 0;//選擇寫(xiě)入
LCD1602_DATAPINS = dat;
Lcd1602_Delay1ms(1);LCD1602_E = 1;
//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);
單片機(jī)實(shí)驗(yàn)報(bào)告
LCD1602_E = 0;LCD1602_DATAPINS = dat << 4;//寫(xiě)入低四位
Lcd1602_Delay1ms(1);LCD1602_E = 1;
//寫(xiě)入時(shí)序
Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif
#ifndef LCD1602_4PINS void LcdInit()
//LCD初始化子程序 { LcdWriteCom(0x38);//開(kāi)顯示
LcdWriteCom(0x0c);//開(kāi)顯示不顯示光標(biāo)
LcdWriteCom(0x06);//寫(xiě)一個(gè)指針加1 LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點(diǎn) } #else void LcdInit()
//LCD初始化子程序 { LcdWriteCom(0x32);//將8位總線轉(zhuǎn)為4位總線
LcdWriteCom(0x28);//在四位線下的初始化
LcdWriteCom(0x0c);//開(kāi)顯示不顯示光標(biāo)
LcdWriteCom(0x06);//寫(xiě)一個(gè)指針加1 LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點(diǎn) } #endif
單片機(jī)實(shí)驗(yàn)報(bào)告
第六章 收獲體會(huì)
本次微控制器綜合設(shè)計(jì)基本上使用了所選微控制器的所有資源,進(jìn)一步熟悉和加深了對(duì)中斷、定時(shí)器和串行通信的理解和使用。我覺(jué)得軟件實(shí)驗(yàn)就是讓我們初學(xué)者熟悉keil的使用,然后復(fù)習(xí)下匯編的思想和掌握程序的流程,所以軟件實(shí)驗(yàn)可以很快的完成,并且慢慢熟悉調(diào)試的強(qiáng)大功能。硬件設(shè)計(jì)中,仿真讓我很有感觸,感覺(jué)蠻好玩的,可以摒棄麻煩的實(shí)驗(yàn)硬件自己在寢室玩而且不受硬件狀態(tài)的限制,即便出錯(cuò)了也不會(huì)損壞。當(dāng)然更重要的是這種好習(xí)慣,仿真完后再去在實(shí)驗(yàn)板上驗(yàn)證會(huì)比直接要來(lái)的確切而且便捷,至少不要老是去插拔線。在做實(shí)驗(yàn)中在同學(xué)指導(dǎo)下我試用C語(yǔ)言來(lái)編寫(xiě)程序,確實(shí)發(fā)現(xiàn)比匯編語(yǔ)言容易編寫(xiě)也容易理解,以前的實(shí)驗(yàn)還是有參考資料的習(xí)慣,現(xiàn)在什么都開(kāi)始自己寫(xiě)感覺(jué)還是很有成就感的,當(dāng)然這是基于程序本身就那么幾行很容易編寫(xiě),也不是說(shuō)參考不好??偠灾?,這學(xué)期的單片機(jī)實(shí)驗(yàn)還是收獲頗豐的。相信在以后的實(shí)驗(yàn)學(xué)習(xí)實(shí)踐工作中都會(huì)有個(gè)潛移默化的作用的。
第三篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)報(bào)告
單片機(jī)實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)?zāi)康?/p>
1.熟練使用Keil、Protues兩款軟件 2.通過(guò)上機(jī)操作,增強(qiáng)個(gè)人動(dòng)手實(shí)踐能力 3.加深對(duì)理論知識(shí)的理解
4.培養(yǎng)運(yùn)用匯編語(yǔ)言進(jìn)行初步編寫(xiě)程序的能力
二、實(shí)驗(yàn)內(nèi)容
1.將片外RAM3050-306FH中數(shù)據(jù)轉(zhuǎn)移至片內(nèi)70-8FH中。
要求:可以從Keil或Protues上看到RAM的數(shù)據(jù)轉(zhuǎn)移結(jié)果。2.設(shè)計(jì)一個(gè)外部中斷觸發(fā)流水燈系統(tǒng):當(dāng)外部中斷來(lái)臨時(shí),啟動(dòng)流水燈,即令P2口的LED輪流循環(huán)點(diǎn)亮。
要求:開(kāi)發(fā)板或Prrotues演示
3.將片內(nèi)存儲(chǔ)器80H中存放的BCD碼轉(zhuǎn)換為ASCII碼,要求使用表格查詢技術(shù)。
要求:在Keil或Protues上看到數(shù)據(jù)轉(zhuǎn)換結(jié)果。
4.各使用中斷方式和查詢方式設(shè)計(jì)一個(gè)方波發(fā)生器,頻率為50HZ。
要求:Protues使軟件間示波器顯示方波。
三、實(shí)驗(yàn)程序
1.將片外RAM3050-306FH中數(shù)據(jù)轉(zhuǎn)移至片內(nèi)70-8FH中
ORG 0000H AJMP MAIN 上電,轉(zhuǎn)向主程序
ORG 0030H 主程序入口
MAIN: MOV DPTR,#3050H 數(shù)據(jù)指針指向地址3050H MOV A,#04H 將立即數(shù)04H送A寄存器
MOV R0,#20H NEXT: MOVX @DPTR,A INC DPTR 數(shù)據(jù)指針DPTR自加一
DJNZ R0,NEXT 判斷是否跳轉(zhuǎn)到NEXT或繼續(xù)向下執(zhí)行
MOV DPTR,#3050H MOV R0,#70H MOV R2,#20H NEXT1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R2,NEXT1
SJMP $ 等待
END 2.設(shè)計(jì)一個(gè)外部中斷觸發(fā)流水燈系統(tǒng):當(dāng)外部中斷來(lái)臨時(shí),啟動(dòng)流水燈,即令P2口的LED輪流循環(huán)點(diǎn)亮 ORG 0000H SJMP MAIN 上電,轉(zhuǎn)向主程序
ORG 0003H 外部中斷0向量入口
AJMP INSER ORG 0030H 主程序入口
MAIN: SETB EX0 SETB IT0
SETB EA CPUHERE: SJMP HERE ORG 0200H INSER: MOV R2,#08H MOV A,#01H NEXT: MOV P2,A LCALL DELAY RL A DJNZ R2,NEXT NEXT或繼續(xù)向下執(zhí)行
RETI DELAY: MOV R3,#0FFH DEL2: MOV R4,#0FFH DEL1: NOP
允許外部中斷0中斷 選擇邊沿觸發(fā)方式 開(kāi)中斷 等待中斷 設(shè)置循環(huán)次數(shù) 賦初值,設(shè)置高電平亮 將初值送往P2口 延時(shí) 左移一位
判斷循環(huán)次數(shù),是否跳轉(zhuǎn)到中斷返回 延時(shí)程序 DJNZ R4,DEL1 DJNZ R3,DEL2 RET END 3.將片內(nèi)存儲(chǔ)器80H中存放的BCD碼轉(zhuǎn)換為ASCII碼,要求使用表格查詢技術(shù) ORG 0000H LJMP MAIN ORG 0030H主程序起始地址 MAIN: MOV 80H,#05H 將立即數(shù)50H轉(zhuǎn)送內(nèi)存單元80H MOV A,80H 將內(nèi)存單元80H中的內(nèi)容送寄存器A MOV DPTR,#TAB MOVC A,@A+DPTR A寄存器內(nèi)容加指針偏移量后送A寄存器 MOV 80H,A RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H 4.1中斷方式產(chǎn)生50HZ方波
ORG 0000H
AJMP MAIN
ORG 0030H 主程序入口 MAIN: MOV TMOD,#10H 設(shè)置定時(shí)器工作模式為模式1 MOV TH1,#0D8H 裝入T1計(jì)數(shù)初值
MOV TL1,#0F0H
SETB ET1 開(kāi)中斷
SETB EA CPU開(kāi)中斷
SETB TR1 啟動(dòng)定時(shí)器T1 HERE: SJMP HERE 等待中斷 ORG 001BH T1中斷向量地址
CLR TF1 將TF1清零
CPL P2.0 P2.0取反輸出
MOV TH1,#0D8H 重裝初值
MOV TH0,#0F0H
RETI;中斷返回
END 4.2 查詢方式產(chǎn)生50HZ方波
ORG 0000H
AJMP MAIN
ORG 0030H 主程序入口
MAIN: MOV TMOD,#10H 設(shè)置定時(shí)器的工作模式為模式1 SETB TR1 啟動(dòng)定時(shí)器T1 LOOP: MOV TH1,#0D8H 裝入T1計(jì)數(shù)初值
MOV TH0,#0F0H JNB TF1,$ T1沒(méi)有溢出則等待
CLR TF1
產(chǎn)生溢出,清標(biāo)志位
CPL P2.0 P2.0取反輸出
SJMP LOOP 循環(huán)
END
四、實(shí)驗(yàn)結(jié)果截圖
1.2
3.4.1
4.2
第四篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)
四、中斷交通燈實(shí)驗(yàn)
林立強(qiáng)
1000850116
一、實(shí)驗(yàn)?zāi)康?/p>
1、了解MCS-51單片機(jī)的組成、中斷原理,中斷處理過(guò)程、外部中斷的中斷方式。
2、掌握中斷響應(yīng)及處理的編程方法。
二、實(shí)驗(yàn)原理
MCS-51的中斷系統(tǒng)中有5個(gè)中斷源:外部中斷INTO,INT1,定時(shí)器/計(jì)數(shù)器TO、T1中斷和串口UART中斷,它們對(duì)應(yīng)不同的中斷矢量。如表:
IE是中斷允許寄存器,其中EXO,ETO,EX1,ET1,ES分別是上述5個(gè)中斷的允許控制位,EA位是中斷總允許位,每個(gè)中斷只有在相應(yīng)中斷允許且總中斷也允許的情況下,才能得到中斷響應(yīng)。80XX51的5個(gè)中斷都可以設(shè)為高低2個(gè)優(yōu)先級(jí),IP是中斷優(yōu)先級(jí)寄存器,其中PXO,PTO,PX1,PT1,PS位分別對(duì)應(yīng)5個(gè)中斷的優(yōu)先級(jí)設(shè)置,置“1”時(shí)設(shè)為高優(yōu)先級(jí)中斷,為“0”時(shí)是低優(yōu)先級(jí)中斷。在有中斷嵌套要求時(shí),低優(yōu)先級(jí)中斷可被高優(yōu)先級(jí)所中斷。當(dāng)同一級(jí)的中斷同時(shí)到來(lái)時(shí),先響應(yīng)中斷矢量排在前面的中斷。
三、實(shí)驗(yàn)電路
電路原理圖如下,所需元件為:AT89C51、SW-SPDT、LED-RED、LED-GREEN、LED-YELLOW、RES、TRAFFICLIGHTS
四、實(shí)驗(yàn)內(nèi)容
參照實(shí)驗(yàn)電路,設(shè)計(jì)交通燈控制系統(tǒng)。模擬交通信號(hào)燈控制:一般情況下正常顯示,東西-南北交替放行,各方向通行時(shí)間為30秒。有救護(hù)車或警車到達(dá)時(shí),兩個(gè)方向交通信號(hào)燈全為紅色,以便讓急救車或警車通過(guò),設(shè)通行時(shí)間為10秒,之后交通恢復(fù)正常。用單次脈沖模擬急救車或警車申請(qǐng)外部中斷。
1、在生成HEX文件后,用Proteus軟件對(duì)電路圖進(jìn)行計(jì)算機(jī)仿真;
2、程序下載到單片機(jī)實(shí)驗(yàn)板上驗(yàn)證;(實(shí)驗(yàn)板數(shù)碼管的驅(qū)動(dòng)程序見(jiàn)附件)。
五、程序流程圖
仿真圖:
緊急情況:
源程序:
ORG 0000H
AJMP START
ORG 0023H //串口中斷地址
AJMP SBR1
START:MOV TMOD,#00100000B
//定時(shí)器方式2
MOV TL1,#0FDH //9600bps/11.0592MHz
MOV TH1,#0FDH
SETB TR1
MOV SCON,#01100000B //方式1
MOV R0,#20H
MOV R1,#40H
ACALL SOUT
SJMP $
SBR1: JNB RI,SEND
ACALL SIN
SJMP NEXT SEND: ACALL SOUT NEXT: RETI
SOUT: MOV A,@R0
MOV C,P
CPL C
MOV ACC.7,C
INC R0
MOV SBUF,A
CLR TI
RET
SIN: MOV A,SBUF
MOV C,P
CPL C
ANL A,#7FH
MOV @R1,A
INC R1
CLR RI
RET
PLAY: MOV A,R7
MOV B,#10
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
// 0
A B C D E F
END
第五篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)報(bào)告
單片機(jī)實(shí)驗(yàn)一
實(shí)驗(yàn)報(bào)告
課程名稱: 姓
名: 系
別: 專
業(yè): 年
級(jí): 學(xué)
號(hào): 指導(dǎo)教師:
單片機(jī)原理及應(yīng)用實(shí)驗(yàn)
陳璐 信息系
電氣工程及其自動(dòng)化
2012級(jí) 120712041 李莉
2015 年 月 25
日
1.實(shí)驗(yàn)?zāi)康暮鸵?/p>
1)熟悉Keil 軟件界面,以及編輯、編譯、運(yùn)行程序的步驟;
2)熟悉Proteus軟件界面,掌握用Proteus畫(huà)仿真圖的方法。2.主要儀器設(shè)備
Keil 軟件與Proteus仿真軟件 3.實(shí)驗(yàn)設(shè)計(jì)要求
利用單片機(jī)、1個(gè)開(kāi)關(guān)和1個(gè)發(fā)光二極管,構(gòu)成一個(gè)簡(jiǎn)單的開(kāi)關(guān)檢測(cè)系統(tǒng)的仿真電路圖。單片機(jī)P3.0引腳接按鈕開(kāi)關(guān),P1.0引腳接發(fā)光二極管的陰極。當(dāng)開(kāi)關(guān)閉合時(shí),發(fā)光二極管亮;開(kāi)關(guān)打開(kāi)時(shí),發(fā)光二極管滅;按鈕開(kāi)關(guān)與發(fā)光二極管沒(méi)有任何電氣上的聯(lián)系。
單片機(jī)對(duì)開(kāi)關(guān)K的狀態(tài)的檢測(cè)由程序檢測(cè)P3.0引腳的輸入電平。當(dāng)開(kāi)關(guān)K閉合,即P3.0腳輸入低電平;當(dāng)開(kāi)關(guān)K打開(kāi),即P3.0腳輸入高電平。使用發(fā)光二極管,陽(yáng)極接+5V,陰極接P1.0端口。當(dāng)程序控制P1.0輸出高電平時(shí),發(fā)光二極管D1滅;當(dāng)程序控制P1.0輸出低電平時(shí),發(fā)光二極管D1亮。4.操作方法與實(shí)驗(yàn)步驟
(1)Keil C51軟件使用
在Keil C51集成開(kāi)發(fā)環(huán)境下,建立一個(gè)工程并編輯以下源程序,熟悉Keil C51集成開(kāi)發(fā)環(huán)境下各種菜單、命令的使用。
#include “reg51.h” #define uchar unsigned char #define uint unsigned int sbit in=P3^0;sbit out=P1^0;void main(void){ while(1){ in=1;if(in= =0)out=0;else out=1;} }(2)建立新文件
進(jìn)入Proteus ISIS界面,單機(jī)主菜單項(xiàng)【文件】→“新建設(shè)計(jì)”選項(xiàng),就會(huì)彈出“新建設(shè)計(jì)”窗口,窗口中提供了多種模版選擇。其中橫向圖紙為L(zhǎng)andscape,縱向圖紙為Portrait,DEFAULT為默認(rèn)模版。單擊選擇的模版圖標(biāo),再單擊“確定”按鈕,即建立一個(gè)該模版的空白文件。如果直接單擊“確定”按鈕,即選用系統(tǒng)默認(rèn)的DEAFAUILT模版。
單擊保存按鈕,在彈出的對(duì)話框“保存ISIS設(shè)計(jì)文件”中輸入文件名再單擊“保存”,則完成新建設(shè)計(jì)文件的保存操作,其后綴自動(dòng)為“.DSN”。
(3)設(shè)定繪圖紙大小 單擊菜單中的【系統(tǒng)】→“設(shè)置圖紙大小”,選擇所需圖紙的尺寸位A4。
(4)選取元器件并添加到對(duì)象選擇窗口中
單擊器件選擇按鈕,彈出選取元器件對(duì)話框。在其左上角“關(guān)鍵字”一欄中輸入元器件名稱“AT89C51”,則出現(xiàn)關(guān)鍵字匹配的元器件列表。選中AT89C51所在行或單擊AT89C51所在行后,再單擊“確定”按鈕,便將元器件AT89C51加入到ISIS對(duì)象選擇窗口中。按此操作方法逐一完成其他元器件的選取。本設(shè)計(jì)中使用的各元器件的關(guān)鍵字相應(yīng)為“AT89C51”、“BUTTON”(按鈕開(kāi)關(guān))、“CAP”(瓷片電容)、“CAP-ELEC”(電解電容)、“CRYSTAL”(晶振)、“RES”(電阻)等。被選取的元器件加入到ISIS對(duì)象選擇窗口中。(5)放置、移動(dòng)、旋轉(zhuǎn)元器件
單擊ISIS對(duì)象選擇窗口中的元器件名,藍(lán)色條出現(xiàn)在該元器件名上。把鼠標(biāo)指針移到編輯區(qū)某位置后,單擊就可放置元器件于該位置,每單擊一次,就放置一個(gè)元器件。如果要移動(dòng)元器件,先右擊元器件使其處于選中狀態(tài),再按住鼠標(biāo)左鍵進(jìn)行拖動(dòng),達(dá)到目標(biāo)處后,松開(kāi)鼠標(biāo)即可。如要調(diào)整元器件方向,先將指針指在元器件上單擊鼠標(biāo)右鍵選中,再單擊相應(yīng)的旋轉(zhuǎn)按鈕。若多個(gè)對(duì)象一起移動(dòng)或轉(zhuǎn)向,可選擇相應(yīng)的塊操作命令。(6)放置電源、地(終端)
單擊工具箱的終端模式按鈕,然后在對(duì)象選擇窗口中單擊POWER來(lái)選中電源,然后使用元器件調(diào)整工具按鈕進(jìn)行方向調(diào)整,最后在編輯區(qū)中單擊放置電源。(7)電路圖布線
單擊元器件引腳間、線間等接線處,自動(dòng)生成連線。(8)電氣檢測(cè)
單擊電器檢查快捷鍵按鈕,根據(jù)電氣檢查列表的指示修改設(shè)計(jì)中的錯(cuò)誤,完成實(shí)驗(yàn)。5.實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)數(shù)據(jù)記錄
每當(dāng)按下K時(shí),LED燈就會(huì)發(fā)光。
C2U130pF19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617X112MHz18XTAL2D1R24.7K930pFRSTR4220293031C310uFPSENALEEAKR310K10K12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51LED-GREENC1R1220 6.實(shí)驗(yàn)數(shù)據(jù)處理與分析
每當(dāng)按下K時(shí),in(p3.0)I/O口就會(huì)變?yōu)榈碗娖剑撔盘?hào)使得CPU給out(p3.0)I/O口發(fā)送低電平,使得LED燈發(fā)亮。7.實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題及解決方法
一開(kāi)始安裝軟件的時(shí)候最后一步設(shè)置完通信設(shè)置時(shí),鼠標(biāo)點(diǎn)擊“好”,但是屏幕一直顯示“通信錯(cuò)誤”的提示,經(jīng)過(guò)重復(fù)操作,還是沒(méi)有成功,結(jié)果是因?yàn)椤岸丝谶x擇”處選擇錯(cuò)了,改正后最終安裝成功。8.心得體會(huì)
對(duì)于這次單片機(jī)實(shí)驗(yàn)不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上沒(méi)有學(xué)到過(guò)的知識(shí),掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡(jiǎn)單的編程。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,例如對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固等,在以后的學(xué)習(xí)中尤其應(yīng)該注意。