2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  《單片機及智能儀器》</p><p><b>  實 驗 指 導(dǎo) 書</b></p><p><b>  楊明亮 梁應(yīng)選 編</b></p><p>  適應(yīng)專業(yè):測控技術(shù)與儀器</p><p>  陜西理工學(xué)院機械工程學(xué)院</p><p><b&

2、gt;  2012年4月</b></p><p><b>  前 言</b></p><p>  《單片機及智能儀器》是一門實踐性很強的課程。為了使學(xué)生更好的理解和掌握這些知識,靈活應(yīng)用單片機,使學(xué)生熟悉單片機實用技術(shù)的開發(fā)過程,提高匯編語言的編寫能力,提高對匯編語言的編輯、匯編、調(diào)試運行等技能,設(shè)置了軟件類、硬件類和綜合應(yīng)用類實驗,通過上機及接口實

3、驗,熟練地掌握單片機的編程結(jié)構(gòu)、工作模式、指令系統(tǒng);學(xué)會匯編語言程序設(shè)計;掌握微機輸入/輸出接口的基本概念,主要模式和基本工作方法,掌握并行和串行接口的原理,學(xué)會并行輸入/輸出口的擴展,并能夠進行基本的接口設(shè)計,提高其實踐能力;并培養(yǎng)學(xué)生實事求是、嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng)和良好的實驗習(xí)慣,為今后課程學(xué)習(xí)以及開發(fā)應(yīng)用打下基礎(chǔ)。</p><p>  開設(shè)“單片機綜合實驗”的目的,是總結(jié)幾年來單片機教學(xué)中,用購買的實驗箱,雖然功

4、能很齊全,但基本上是黑箱結(jié)構(gòu),對初學(xué)者,不是從最簡單的最小系統(tǒng)開始,一步步深入,做完實驗后,效果很差,大部分學(xué)生對單片機的系統(tǒng)沒有感性認(rèn)識,最后在課程設(shè)計和畢業(yè)設(shè)計中,連最簡單的單片機最小系統(tǒng)都不清楚。因此該實驗就是想讓學(xué)生從最簡單的系統(tǒng)開始,自己搭建,編程,調(diào)試和固化程序,循序漸進,逐步深入。</p><p>  本實驗指導(dǎo)書是針對測儀專業(yè)《單片機與智能儀器》課程實驗設(shè)置的,兩個2學(xué)時的驗證實驗和一個6學(xué)時的綜

5、合實驗。 </p><p>  實驗一:LED顯示實驗</p><p><b>  實驗學(xué)時:2</b></p><p><b>  實驗類型:驗證 </b></p><p><b>  實驗要求:必做</b></p><p><b>  一、

6、實驗?zāi)康模?lt;/b></p><p>  1、了解MCS51系列單片機匯編語言的設(shè)計和調(diào)試方法;</p><p>  2、掌握8032單片機通過8155擴展I/O接口時,LED顯示的連接方法和編程方法。</p><p>  3、了解LED動態(tài)顯示原理及匯編語言編程。</p><p><b>  二、實驗內(nèi)容:</b&

7、gt;</p><p>  1、觀察單片機實驗系統(tǒng)(實驗箱)結(jié)構(gòu)與原理;</p><p>  2、看懂附錄1中的程序,將程序輸入并調(diào)試;編譯、調(diào)試、運行該程序,顯示結(jié)果應(yīng)為“”;</p><p>  3、修改該程序,讓LED交替顯示“”和“”,注意交替變化中間要有明顯的保持時間;也可以顯示任意兩個六位數(shù)字或字符(用七斷數(shù)碼管可以顯示的字符,如“H”、“L”等)。&l

8、t;/p><p><b>  三、實驗原理:</b></p><p>  本次實驗采用啟東計算機總廠生產(chǎn)的“DICE系列單片機實驗系統(tǒng)”,該系統(tǒng)運行的基本原理與一般的單片機系統(tǒng)是一樣的,但作為實驗系統(tǒng),它的程序存儲器里面存儲的是監(jiān)控管理程序,實驗所編寫的程序,在計算機中進行調(diào)試,編譯,生成可執(zhí)行文件,然后將實驗程序存入實驗系統(tǒng)中的擴展數(shù)據(jù)存儲區(qū)。所以實驗程序在斷電后就從實

9、驗箱中消失了。</p><p>  在DICE系列單片機實驗系統(tǒng)中,用8155芯片擴展I/O口,顯示用LED數(shù)碼管,系統(tǒng)分配給顯示部分的端口:8155A口,連LED顯示的字位口,地址為FF21H; 8155B口,連LED顯示的字形口,地址為FF22H。</p><p><b>  四、實驗組織運行:</b></p><p>  采用集中授課形式

10、,分組進行實驗。</p><p><b>  五、實驗條件:</b></p><p>  1、單片機實驗系統(tǒng)一套;</p><p><b>  2、計算機一臺;</b></p><p>  3、WIN51仿真軟件一套</p><p><b>  六、實驗步驟:<

11、;/b></p><p>  1、打開實驗箱,查看單片機以及其它芯片的銘牌,記錄相關(guān)芯片的型號;</p><p>  2、參照教材和實驗指導(dǎo)書,找出上述芯片的型號,記錄各芯片的作用和引腳功能;</p><p>  3、打開計算機,進入WIN51仿真軟件(執(zhí)行DICE51.EXE文件),打開其工作界面;</p><p>  4、檢查計算機

12、與單片機是否連接就緒。即查看WIN51工作界面底邊狀態(tài)欄由“脫機就緒”變成“聯(lián)機就緒”,說明聯(lián)機成功。否則對話框提示“單片機未連上”,要檢查硬件實際連接情況,在設(shè)置菜單下設(shè)定COM1或COM2。</p><p>  5、將自己編寫的程序或提供的參考程序輸入,然后進行調(diào)試,編譯,改正錯誤。一直調(diào)到?jīng)]有錯誤為止,然后讓程序單步運行、連續(xù)運行,查看程序運行結(jié)果。</p><p><b>

13、;  七、思考題:</b></p><p>  1、LED顯示分為動態(tài)顯示與靜態(tài)顯示,本次實驗采用動態(tài)還是靜態(tài)顯示,顯示的原理是什么?</p><p><b>  八、實驗報告:</b></p><p>  實驗報告內(nèi)容應(yīng)包括實驗?zāi)康?、原理和?nèi)容以及結(jié)果,特別是修改程序的結(jié)果,做詳細(xì)記錄。應(yīng)對實驗過程,程序調(diào)試中出現(xiàn)的問題及解決方法

14、進行記錄,對實驗中出現(xiàn)的問題應(yīng)進行分析。</p><p>  必須對程序全部進行注釋。</p><p><b>  八、附錄</b></p><p>  附錄1.1:LED顯示源程序</p><p>  說明:在LED上實現(xiàn)字符顯示的方法,是將待顯示的字形碼,送入8155的字形口(B口)地址FF22H,顯示位置送入815

15、5的字位口(A口)地址FF21H。附錄2給出了本實驗中的字形、字位表。一個字長為8位的二進制,要在兩個LED上顯示,因此程序中有如何將一個字拆分成兩個字。輸入程序時可以不輸注釋語句。</p><p><b>  ORG 0500H</b></p><p>  SE15: MOV SP,#53H</p><p>  LED: MOV

16、R0,#79H ;將字形存在RAM的79H-7EH</p><p>  MOV R6,#65H ;輸入待顯示的字符</p><p>  MOV R5,#43H</p><p>  MOV R4,#21H</p><p>  MOV A,R6 ;調(diào)用拆分程序?qū)?個字節(jié)拆成6個字節(jié)</p><p>  LCALL

17、PTDS</p><p><b>  MOV A,R5</b></p><p>  LCALL PTDS</p><p><b>  MOV A,R4</b></p><p>  LCALL PTDS</p><p>  LCALL SSEESJMP LED ;循環(huán)顯示&

18、lt;/p><p><b>  ;字節(jié)拆分程序</b></p><p>  PTDS: MOV R1,A</p><p>  ACALL PTDS1</p><p><b>  MOV A,R1</b></p><p><b>  SWAP A</b>

19、</p><p>  PTDS1: ANL A,#0FH</p><p><b>  MOV @R0,A</b></p><p><b>  INC R0</b></p><p><b>  RET</b></p><p><b> ?。蛔?/p>

20、節(jié)顯示程序</b></p><p>  SSEE: SETB RS1 ;換工作寄存器第三組</p><p>  MOV R5,#05H ;每個字顯示5次</p><p>  SSE2: MOV 30H,#20H ;字位碼初值</p><p>  MOV 31H,#7EH ;字形碼初地址</p><

21、;p>  MOV R7,#06H ;顯示位數(shù)</p><p>  SSE1: MOV R1,#21H ;輸入字位碼</p><p><b>  MOV A,30H</b></p><p>  MOVX @R1,A</p><p>  MOV R0,31H ;查表、輸入字形碼</p><

22、p><b>  MOV A,@R0</b></p><p>  MOV DPTR,#DDFF</p><p>  MOVC A,@A+DPTR</p><p>  MOV R1,#22H </p><p>  MOVX @R1,A ;字形送入地址22H</p><p>  MOV A,

23、30H ;改變字位</p><p><b>  RR A</b></p><p><b>  MOV 30H,A</b></p><p>  DEC 31H ;轉(zhuǎn)換為下一個字形</p><p>  MOV A,#0FFH </p><p>  MOVX @R1,A

24、;關(guān)顯示</p><p>  DJNZ R7,SSE1 ;6位顯示完了嗎?</p><p>  DJNZ R5,SSE2 ;5次顯示完了嗎?</p><p><b>  CLR RS1</b></p><p><b>  RET</b></p><p>  ;以下為字形表,

25、見表2。</p><p>  DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H</p><p>  DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH</p><p><b>  END</b></p><p>  附錄

26、1.2:字形、字位表</p><p><b>  字位表</b></p><p><b>  字形表</b></p><p><b>  注:低電位亮。</b></p><p>  實驗二 單片機資源應(yīng)用</p><p>  實驗學(xué)時:課內(nèi) 6學(xué)時,課

27、外6學(xué)時。</p><p><b>  實驗類型:綜合</b></p><p><b>  實驗要求:必做</b></p><p><b>  一、實驗?zāi)康?lt;/b></p><p>  1、掌握單片機最小系統(tǒng)的設(shè)計。</p><p>  2、了解51系列

28、單片機并行口輸出/輸入方式的工作原理及編程方法。</p><p>  3、掌握51系列單片機中斷的設(shè)置方法及編程實現(xiàn)。</p><p>  4、掌握定時器/計數(shù)器的設(shè)置方法及編程。</p><p>  5、掌握設(shè)計簡單的單片機系統(tǒng)并在面包板上搭建單片機系統(tǒng),或在單片機實驗板上組建單片機系統(tǒng)。</p><p>  6、用七段數(shù)碼管進行數(shù)據(jù)顯示。

29、</p><p><b>  二、實驗內(nèi)容</b></p><p>  實驗內(nèi)容按要求分A、B、C、三部分,其中A是必做內(nèi)容,B是選做內(nèi)容,C是提高內(nèi)容。</p><p>  內(nèi)容A:按實驗指導(dǎo)書給出的單片機最小系統(tǒng)和4位七段LED數(shù)碼管動態(tài)顯示電路,在面包板上搭接,然后用匯編語言編寫顯示程序,在數(shù)碼管的任何一位顯示要求的數(shù)字。</p&g

30、t;<p>  該部分主要是熟悉并掌握單片機的最小系統(tǒng),振蕩電路、復(fù)位電路,端口的應(yīng)用,動態(tài)顯示的電路及編程,程序的調(diào)試及固化,掌握用keil軟件調(diào)試匯編程序。由于顯示是人機交流的窗口,是以后其它功能實驗的基礎(chǔ)。必須在內(nèi)容A中很好的掌握。</p><p>  實驗電路見附圖,還給出數(shù)碼管引腳圖,元器件清單等。</p><p><b>  電路說明:</b>

31、;</p><p>  該電路是一個在單片機最小系統(tǒng)上接了4個數(shù)碼管,由于AT89C51片內(nèi)有4K的Flash Memory存儲器,故在軟件不是很大的情況下,一般不需要擴展片外程序存儲器,故單片引腳EA接高電平;復(fù)位采用上電復(fù)位和人工按鈕復(fù)位;顯示采用七段共陽極數(shù)碼管,位碼采用三極管9014驅(qū)動,因為LED數(shù)碼管的電壓在1.5-3V,電流在2-20mA,故要加限流電阻。</p><p> 

32、 注意該電路圖中的總線畫法。 </p><p>  內(nèi)容B:在以下兩個內(nèi)容中選做1個</p><p>  1、用定時器定時,(定時器T0或T1任選),每過20ms計數(shù)1次,并將計數(shù)值在LED上顯示。</p><p>  提示:該部分的主要內(nèi)容是定時器和中斷的性能和編程,要知道晶振的頻率,然后根據(jù)要求的時間,確定定時器的工作方式,計算定時器的初值,設(shè)定定時器與中斷,在

33、RAM中設(shè)定兩個單元,永遠(yuǎn)計數(shù),每中斷一次該計數(shù)單元的值加1,程序啟動后,一直處于動態(tài)顯示中,直到中斷時才處理加1程序。要注意中斷程序的地址,定時器不同該地址也不同,具體請查中斷服務(wù)程序服務(wù)入口地址。由于幾個中斷程序入口地址僅相隔8個單元,如果中斷程序較長,一般要轉(zhuǎn)移到后面的單元中。</p><p>  2、由定時器T0計時,對T1口在一定時間內(nèi)輸入的脈沖進行計數(shù)并顯示。脈沖的產(chǎn)生可以用點動開關(guān),也可以用信號發(fā)生

34、器或單片機實驗箱中的分頻信號,也可以給出分頻器,自己設(shè)計電路,對單片機EA口輸出信號進行分頻。</p><p>  該實驗較上一個實驗難度大,用了兩個定時器/計數(shù)器。涉及到計數(shù)器的設(shè)計,由T0定時中斷,然后讀T1的計數(shù)值。</p><p>  內(nèi)容C:該部分內(nèi)容屬提高內(nèi)容,供學(xué)有余力且感興趣的學(xué)生選做,其他學(xué)生不作要求。因此該部分的主導(dǎo)思想是只提要求,提供元件,由學(xué)生自己設(shè)計電路,編寫軟件

35、。教師僅作指導(dǎo)。這樣可以更好的鍛煉學(xué)生的能力。</p><p>  串行EPROM存儲器及按鍵的電路設(shè)計及編程。在智能儀器中,不可避免的要有按鍵進行功能轉(zhuǎn)換和控制,經(jīng)常將標(biāo)定的系數(shù)和測量的數(shù)據(jù)存儲起來,希望下一次開機、甚至斷電的情況下該數(shù)據(jù)能長期保留,用AT24C02等串行EPROM芯片就可以實現(xiàn)該該功能。這個實驗的要求,就是用按鍵進行控制,將一批數(shù)據(jù)存儲在AT24C02芯片中,然后又用另一個功能鍵將該數(shù)據(jù)取出并

36、進行顯示。下面只給出該芯片的資料,自己設(shè)計電路,編寫軟件。</p><p>  RS232串行通信實驗。因為串行通信是智能儀器中經(jīng)常應(yīng)用的功能,本實驗提供MAX232芯片和電容,由兩組同學(xué)一起,用串行口實行遠(yuǎn)距離(5-10m)通信。也可以和計算機進行通信。</p><p>  模擬信號的數(shù)據(jù)采集實驗,該實驗提供ADC0809芯片,由學(xué)生自己完成電路設(shè)計,搭建。并進行編程,將一個0-5V的電

37、壓信號通過A/D轉(zhuǎn)換后在顯示器中顯示。</p><p>  三、實驗組織運行要求:</p><p>  采用學(xué)生自主訓(xùn)練為主的開放模式組織教學(xué)。每4個人一組,共同完成電路設(shè)計,搭建,軟件編寫,調(diào)試。</p><p><b>  四、實驗條件:</b></p><p>  1、實驗面包板一塊(或單片機實驗板);</p

38、><p>  2、AT89C51(或相近型號)單片機 1個;</p><p><b>  3、穩(wěn)壓電源1臺;</b></p><p>  4、電源插座 1只;</p><p><b>  5、計算機1臺;</b></p><p>  6、其它芯片見下表:(注意:實驗未用的元件報

39、告中不能出現(xiàn))</p><p><b>  五、實驗步驟:</b></p><p>  1、實驗前先進行實驗內(nèi)容的預(yù)習(xí),在課外設(shè)計好實驗接線圖,編寫實驗要求的匯編程序,并在計算機上進行編譯和調(diào)試,將調(diào)試好的程序轉(zhuǎn)換成*.HEX格式存入移動U盤。</p><p>  2、實驗時按電路圖接好線后,將*.HEX程序?qū)懭雴纹瑱C中,進行程序調(diào)試。<

40、/p><p>  3、觀察實驗過程,詳細(xì)記錄實驗中出現(xiàn)的問題,并分析其原因以及程序的修改過程。</p><p><b>  六、思考題:</b></p><p>  1、如何設(shè)置定時器和中斷?</p><p>  2、顯示器的地址如何確定,如何將一個數(shù)據(jù)進行動態(tài)顯示。怎樣查詢要顯示的數(shù)字。 </p><p

41、><b>  七、實驗報告:</b></p><p>  1、實驗的目的、要求;</p><p>  2、實驗電路圖的設(shè)計,所用元件性能的簡單介紹;</p><p>  3、實驗程序的編寫與調(diào)試,并對程序加以詳細(xì)注釋;</p><p>  4、調(diào)試過程與調(diào)試結(jié)果,并對調(diào)試中出現(xiàn)的問題進行分析;</p>

42、<p>  5、回答本實驗相關(guān)問題。</p><p>  6、實驗的體會與總結(jié)。</p><p>  附2.1:單片機最小系統(tǒng)實驗原理圖</p><p>  附2.2 設(shè)計編程注意事項</p><p><b>  硬件設(shè)計</b></p><p><b>  1、單片機選用&

43、lt;/b></p><p>  本次實驗,單片機采用的是AT89C××系列或AT89S××系列,該系列單片機片內(nèi)都含有閃速程序存儲器,可以根據(jù)所編寫程序代碼大小選擇有不同片內(nèi)程序存儲器的單片機,一般情況下,課程設(shè)計中的程序代碼都不是太大,2K或4K的程序存儲器都可以滿足。數(shù)據(jù)存儲器一般都較小,不進行大量的數(shù)據(jù)處理,或數(shù)組變量中成員不是太多的情況下,片內(nèi)RAM是夠用的

44、。</p><p><b>  2、端口資源分配</b></p><p>  接口是CPU與外界的連接部件,以實現(xiàn)CPU與外部設(shè)備的最佳耦合和匹配。包括鍵盤、顯示、A/D轉(zhuǎn)換、D/A轉(zhuǎn)換和打印機等。根據(jù)實驗要求,選用外設(shè),并選用合適的外圍接口芯片。I/O端口是CPU與I/O設(shè)備直接通信的地址。單片機系統(tǒng)對I/O端口是采用端口地址與存儲器地址統(tǒng)一編址的方式,即存儲器映射

45、方式。而編址技術(shù)又分線選法和譯碼法。在設(shè)計單片機系統(tǒng)時,對地址必須有一個清楚的認(rèn)識,一但硬件確定,則相應(yīng)的擴展地址也就確定了。</p><p>  3、數(shù)據(jù)采集單元設(shè)計</p><p>  要針對不同的要求,不同的情況設(shè)計數(shù)據(jù)采集電路。設(shè)計時要考慮測量范圍,顯示精度,信號的情況,信號變化緩慢的還是變化很快,信號的質(zhì)量,確定是否需要放大、濾波、采樣保持電路;對于數(shù)字信號,也要考慮信號的大小和

46、質(zhì)量,考慮是否用比較電路、驅(qū)動電路和光電隔離等。</p><p><b>  4、顯示單元設(shè)計</b></p><p>  顯示是儀器和人交流信息的重要窗口,也是儀器的一個重要組成部分。根據(jù)題目要求,確定顯示的形式(靜態(tài)顯示還是動態(tài)顯示;LED顯示好事LCD顯示等),顯示的位數(shù),所以必須對要顯示的信息做到心中有數(shù),設(shè)計的顯示單元要滿足所有要顯示信息的顯示要求。由于LE

47、D顯示的控制較為簡單,本次實驗室提供LED指示燈和8段LED數(shù)碼管。</p><p>  5、 按鍵控制單元設(shè)計</p><p>  一個測控系統(tǒng),總是有許多功能,有些功能可以根據(jù)系統(tǒng)的運行狀態(tài)自己變化,如智能儀表中的量程自動選擇;但相當(dāng)多的功能需要人工控制,如交通燈控制中的各段時間的設(shè)定等,所以對于測控系統(tǒng)來講,一般都要有人工控制信號的輸入端口-按鍵或鍵盤。設(shè)計按件或鍵盤,要對設(shè)計對象的

48、功能相當(dāng)熟悉,才能正確確定按鍵的數(shù)量。如果要輸入的數(shù)字較大且是隨機的,要考慮設(shè)計鍵盤。如果不是很大,或者數(shù)字很大但變化范圍不大的情況下,盡量使用按鍵。</p><p><b>  6、其它功能設(shè)計</b></p><p>  其他功能設(shè)計,需要根據(jù)題目要求,如串行通信,D/A轉(zhuǎn)換等,因為本次實驗時間所限,布置任務(wù)時,將一些功能不做要求或作為選擇內(nèi)容,學(xué)生可以根據(jù)實際情

49、況取舍,進度較快的課題組,還可以自己增加相應(yīng)內(nèi)容。</p><p>  7、 硬件設(shè)計以后,要求搭建電路,在軟件未編寫完以前,編寫測試軟件,先對硬件的各部分進行測試。</p><p><b>  二、軟件設(shè)計</b></p><p>  本次軟件設(shè)計必須采用匯編語言,考試考核內(nèi)容是匯編語言。(在以后學(xué)習(xí)了單片機C語言以后,可以采用單片機C語言,

50、由于單片機C語言在系統(tǒng)開發(fā)中有明顯的優(yōu)越性,掌握單片機C語言對以后可能從事該工作的同學(xué)有很大的益處。鼓勵同學(xué)用單片機C語言編程。)</p><p>  1、對編寫軟件的要求:</p><p> ?、佘浖Y(jié)構(gòu)清晰、簡捷、流程合理。</p><p> ?、诟鞴δ艹绦?qū)崿F(xiàn)模塊化、子程序化。這樣,既便于調(diào)試、鏈接,又方便移植、修改。</p><p>

51、  ③程序存儲區(qū)、數(shù)據(jù)存儲區(qū)分配合理。</p><p> ?、苓\行狀態(tài)實現(xiàn)標(biāo)志化管理。各個功能程序運行狀態(tài)、運行結(jié)果以及運行要求都設(shè)置狀態(tài)標(biāo)志(一般用位尋址區(qū)的位)以便查詢,程序的轉(zhuǎn)移、運行、控制都可以通過狀態(tài)標(biāo)志條件來控制。</p><p>  ⑤軟件抗干擾性能好。</p><p>  2、設(shè)計前的準(zhǔn)備工作</p><p>  1)定義系統(tǒng)

52、功能,畫出流程圖</p><p>  系統(tǒng)定義是在軟件設(shè)計前,把軟件承擔(dān)的任務(wù)明確出來。然后對軟件進行功能分塊。畫出流程圖,特別注意有中斷時,中斷流程圖和主流程圖一定是分開的。這一部分是相當(dāng)重要的工作,對后面程序編寫與調(diào)試是否順利有很多影響,一定要認(rèn)真對待。</p><p>  軟件設(shè)計有兩種方法:一種是自上而下,逐步細(xì)化;另一種是自下而上,先設(shè)計出每一個具體的模塊(子程序),然后再慢慢擴

53、大,最后組成一個系統(tǒng)。兩種方法各有優(yōu)缺點。自上而下的方法在前期看不到什么具體效果,對于初學(xué)者來說,心中總是不踏實。而自下而上的方法一開始就有結(jié)果,每設(shè)計并測試好一個模塊,就能看到實際的效果,給人一步一個足印的感覺,能樹立信心。建議兩種方法結(jié)合運用。主程序采用自上而下的方法,將它分成若干個功能相對獨立的較小的程序模塊。然后再采用自下而上的方法,設(shè)計一個模塊,調(diào)試一個模塊,加入主程序調(diào)試;再進行下一個模塊設(shè)計和調(diào)試。所以在這一步驟就是設(shè)計主

54、程序的框架。</p><p>  根據(jù)問題的定義,確定算法,并繪制程序框圖。注意必須確保程序框圖的正確性。比如在電腦時鐘中,考慮輸入“分”的數(shù)據(jù)的合理性,數(shù)據(jù)必須小于60,程序框圖中就不能忽視等于60如何處理。這是初學(xué)者常犯的錯誤。</p><p>  2)合理選用數(shù)據(jù)類型</p><p>  數(shù)據(jù)類型選用,在用單片機C語言編程時特別重要。各種數(shù)據(jù)類型的定義。是定點

55、數(shù)還是浮點數(shù);是有符號數(shù)還是無符號數(shù);是十六進制數(shù)還是BCD碼。如果一個參數(shù)的變化范圍有限,就可以用定點數(shù)來表示,以簡化程序設(shè)計和加快運行速度。當(dāng)參數(shù)的變化范圍太寬時,只好采用浮點數(shù)來表示。若要求數(shù)據(jù)的正負(fù)之分,則考慮定義有符號數(shù)。對于自然數(shù)列,為顯示方便,可以采用BCD碼,如電腦時鐘的時、分、秒。</p><p>  3)合理定義和分配存儲空間、定義標(biāo)志位。</p><p>  資源分配

56、的主要工作是RAM資源的分配。片外可擴展RAM的容量要比片內(nèi)RAM大,在數(shù)據(jù)量較大的情況下,要擴展片外RAM,通常用來存放批量大的數(shù)據(jù),如采集的大量數(shù)據(jù)的存儲。</p><p>  用匯編語言編程,片內(nèi)RAM的分配,是一個相當(dāng)麻煩,要有一定技巧的工作,那個變量放在那個存儲單元,該變量需要長期保存還是保存到某一個階段,在用單片機匯編語言編程時,不能象編普通的計算機程序那樣,否則容易造成RAM不夠用或者將有用的數(shù)據(jù)覆

57、蓋。注意用單片機C語言編程不存在這個問題。</p><p>  系統(tǒng)上電復(fù)位時,自動定義0區(qū)為工作寄存器,1區(qū)為堆棧,并向2區(qū)、3區(qū)延伸。如果系統(tǒng)前臺程序要用1區(qū)、2區(qū)作為工作寄存器,就應(yīng)將堆棧空間重新規(guī)劃,常將堆棧安放在片內(nèi)RAM的高端,如60H—7FH。在工作寄存器的8個單元中,R0和R1具有指針功能,是編程的重要角色,應(yīng)充分發(fā)揮其作用,盡量避免用來做其他事情。20H~2FH這16個字節(jié)具有位尋址功能,用來存

58、放各種軟件標(biāo)志、邏輯變量、位輸入信息、位輸出信息副本、狀態(tài)變量、邏輯運算的中間結(jié)果等。當(dāng)這些項目全部安排好后,保留一兩個字節(jié)備用,剩下的單元才可改作其他用途。30H—7FH為一般通用寄存器,只能存入整字節(jié)信息。通常用來存放各種參數(shù)、指針、中間結(jié)果,或用作數(shù)據(jù)緩沖區(qū)。</p><p>  RAM資源規(guī)劃好后,應(yīng)列出一張RAM資源的詳細(xì)分配清單,作為編程依據(jù)。為了增加可讀性,便于修改,一般對分配的存儲單元取名。如保存

59、當(dāng)前時間的時、分、秒取HOUR、MINI、SEC,編程時用變量名,編譯時只需在前面加HOUR EQU 24H即可(20H為分配給小時的存儲單元的地址)。</p><p>  3、編程時注意事項:</p><p> ?、僖欢ㄒ獓?yán)格根據(jù)框圖編程。</p><p><b> ?、谝欢ㄒ獙懽⑨?。</b></p><p>  

60、③通過編譯后,只表明語法沒錯,并不表明邏輯正確,一定要用不同的數(shù)據(jù)對模塊進行測試。完全符合預(yù)定結(jié)果,方可確認(rèn)通過。</p><p> ?、軐⒃撃K加到主控模塊進行測試,如果與預(yù)定結(jié)果不符,必須查找原因,進行修改、調(diào)試。</p><p> ?、荼仨氉⒁怆S時保存調(diào)試通過的副本。以便當(dāng)新程序出現(xiàn)故障時,隨時可返回前面的正確點重新開始。</p><p><b> 

61、 4、軟件的調(diào)試</b></p><p>  調(diào)試程序一般應(yīng)經(jīng)過以下幾個步驟:</p><p>  1) 先進行人工檢查,即靜態(tài)檢查。在寫好一個程序以后,不要匆匆忙忙上機,而應(yīng)對紙面上的程序進行人工檢查。這一步是十分重要的,它能發(fā)現(xiàn)程序設(shè)計人員由于疏忽而造成的多數(shù)錯誤。而這一步驟往往容易被人忽視。有人總希望把一切推給計算機系統(tǒng)去做,但這樣就會多占用機器時間,作為一個程序人員應(yīng)當(dāng)

62、養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng),每一步都要嚴(yán)格把關(guān),不把問題留給后面的程序。</p><p>  2) 在人工檢查無誤后,才可以上機調(diào)試。通過上機發(fā)現(xiàn)錯誤稱動態(tài)檢查。在編譯時給出語法錯誤的信息,可以根據(jù)提示的信息具體找出程序中出錯之處并改正之。應(yīng)當(dāng)注意的是有時提示的出錯并不是真正出錯的行,如果在提示出錯的行上找不到錯誤的話應(yīng)當(dāng)?shù)缴弦恍性僬?。有時提示出錯的類型并非絕對準(zhǔn)確,由于出錯的情況繁多,各種錯誤互有關(guān)聯(lián),因止要善于分析,

63、找出真正的錯誤,而不要只從字面意義上找出錯信息。</p><p>  如果系統(tǒng)提示的出錯信息多,應(yīng)當(dāng)從上到下一一改正。有時顯示出一大片出錯信息往往使人感到問題嚴(yán)重,無從下手。其實可能只有一二個錯誤。例如,對使用的變量未定義,編譯時就會對所有含該變量的語句發(fā)出出錯信息;有的是少了“}”或多了“}”有的是書寫語句時忘記寫“;”或是全角的“;”了,只要加上一個變量定義,或填加“};”就所有錯誤都消除了。</p&g

64、t;<p>  3) 在改正語法錯誤后,程序經(jīng)過連接就得到可執(zhí)行的目標(biāo)程序。目標(biāo)程序可以用Keil軟件進行仿真。對仿真結(jié)果要作認(rèn)真分析。看它是否符合要求。</p><p>  有時,數(shù)據(jù)比較復(fù)雜,難以立即判斷結(jié)果是否正確??梢允孪瓤紤]好一批“試驗數(shù)據(jù)”,輸入這些數(shù)據(jù)可以得出容易判斷正確與否的結(jié)果??梢栽谟嬎愕妮敵鼋Y(jié)果的程序地方加入一段輸出到串口的程序,利用串口窗口可以方便看到結(jié)果的。</p&g

65、t;<p>  4) 運行結(jié)果不對,大多屬于邏輯錯誤。對這類錯誤往往需要仔細(xì)檢查和分析才能發(fā)現(xiàn)??梢圆捎靡韵罗k法:</p><p>  KEILC51里的調(diào)試運行就很好用的,可以在命令的窗口輸入程序中需要的數(shù)據(jù)和開關(guān)量、中斷、I/O口的電平等來方便完成程序的運行,使用時要先打開Options for Target'Target1'(工程菜單里的目標(biāo)‘TARGET1'屬性)--

66、---點DEBUG----選中左邊use Simulator\load Application at sta\Go till main;按確定后退出到編輯畫面,要先對源程序進行編譯后沒有錯誤才可以按主菜單上的調(diào)試按鈕,進行調(diào)試的,F(xiàn)10為子程序運行式的單步、F11為單步調(diào)試。 </p><p><b>  三、系統(tǒng)聯(lián)調(diào)</b></p><p>  要想使單片機系統(tǒng)成功

67、運行,從如下幾個方面來檢查分析:。</p><p>  1、電源:電源沒有成功供電。電源供電可以從如下幾個方面來分析。你用的電源本身沒有問題。比如你用的開關(guān)電源,開關(guān)電源如果空載的時候輸出正常,那么接到你電路板上開關(guān)電源的影響可以忽略不計了。下來要查你的電路板上有沒有問題。比如:存在IC插反,51單片機本身插反,IC插反可能導(dǎo)致一些未知的問題。</p><p>  供電接口松動,沒有正常給

68、上電路板供電。</p><p>  一塊電路板在上電以前,要用萬用表的阻抗檔(有的是二極管檔)測量VCC和GND之間的阻抗,如果短路,那電路板肯定有問題。如果不存在短路,則測量各個IC的電源引腳到VCC是否短路,各個地引腳到GND是否短路。然后再看關(guān)鍵電容,主要是電源部分的電解電容是否插反。</p><p>  2、檢查晶振是否接對。對于51單片機,晶振比較簡單,只要一個晶體振蕩器加2個3

69、0p電容。</p><p>  在有示波器的時候,很簡單,直接用示波器觀察以下51的晶振腳,如果有3V附近的正弦波出現(xiàn),表明晶振已正常工作了。也可以 用萬用表測量晶振腳的電壓,如果在2V附近,也表明晶振已正常工作了。匹配電容在你使用不同大小晶振的時候可能電容大小不同。需要查閱芯片手冊尋找一個最佳的電容。對于51而言,偏差50%影響不大。</p><p>  3、沒有擴展片外ROM

70、時,EA是否上拉到VCC。必需EA上拉到VCC,可以用4.7K-10K上拉,有的人甚至不用電阻,直接接VCC也可以用。不過不推薦直接VCC的方案。</p><p>  4、復(fù)位電路。51的復(fù)位電路要求不是很嚴(yán)格,但是設(shè)計如果太草率也有可能出現(xiàn)問題。注意有的新手可能會出現(xiàn)復(fù)位電路的電容和電阻位置弄反的情況。另外一種錯誤就是復(fù)位時間不夠。</p><p>  5、如果還是不運行,可以嘗試將電路

71、板上所有的IC(除單片機)全部取下,然后通電看是否程序運行。然后一片一片的上IC。</p><p>  單片機系統(tǒng)的調(diào)試是比較麻煩的,不但要充分掌握單片機及使用其他元件的性能,還要電路連接正確;軟件影響也很大,有很多同學(xué)調(diào)試時,由于始終不顯示等原因,就無法看到運行狀況。常用的調(diào)試辦法是先編一段顯示軟件,保證系統(tǒng)能正常工作,可以顯示你想顯示的內(nèi)容,這也是為什么第一個實驗就是LED顯示的主要原因。然后再編寫調(diào)試其他功

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論