采用51單片機(jī)數(shù)字實(shí)驗(yàn)室的實(shí)驗(yàn)和設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一個(gè)單片機(jī)應(yīng)用系統(tǒng)是由硬件和軟件組成的。系統(tǒng)硬件設(shè)計(jì)包括單片機(jī)CPU的選型、接口電路的設(shè)計(jì)、外圍器件的選擇、試驗(yàn)電路板的設(shè)計(jì)等內(nèi)容。
軟件設(shè)計(jì)則包括軟件編寫和仿真調(diào)試。
仿真是單片機(jī)開發(fā)的一個(gè)非常重要的環(huán)節(jié),除了一些較簡單的任務(wù),一般產(chǎn)品開發(fā)過程中都要進(jìn)行仿真,仿真的主要目的是進(jìn)行程序調(diào)試及硬件排錯(cuò)。現(xiàn)在普遍采用基于Windows的單片機(jī)集成開發(fā)系統(tǒng)( IDE)進(jìn)行單片機(jī)應(yīng)用程序的開發(fā),它是指將編輯、編譯,匯編、連接、調(diào)試等開發(fā)單片機(jī)所要用到的程序集成到一個(gè)系統(tǒng)軟件中,如德國Keil公司的Keil、南京萬利電子公司( Manley)的MedWin等。
由于一方面硬件實(shí)驗(yàn)裝置投資較大,另一方面又由于初學(xué)者(如學(xué)生)在實(shí)驗(yàn)過程中對(duì)實(shí)驗(yàn)裝置的破壞力較強(qiáng)而可能導(dǎo)致設(shè)備故障,因此在資金、硬件不足的情況下,可采用單片機(jī)數(shù)字實(shí)驗(yàn)室的方法開展實(shí)驗(yàn)和設(shè)計(jì)(只需在PC上即可完成工作)。
一、單片機(jī)應(yīng)用軟件仿真開發(fā)過程
1.編寫源程序
源程序的編寫應(yīng)盡量采用功能化、模塊化以及子程序調(diào)用等方法,可采用匯編語言或高級(jí)語言(如C語言)來編寫源程序。對(duì)于初學(xué)者,采用匯編語言編程,可加深對(duì)硬件知識(shí)的掌握。匯編語言是一種常用的軟件工具,其特點(diǎn)是能直接操作硬件,指令的執(zhí)行速度快,可控制單片機(jī)工作的每一步。
但匯編語言的可讀性和可移植性都較差,采用匯編語言編寫單片機(jī)應(yīng)用程序不但周期長,而且調(diào)試和排錯(cuò)也比較困難。隨著單片機(jī)硬件性能的提高,其工作速度越來越快,因此在編寫單片機(jī)應(yīng)用程序時(shí),更著重于程序本身的編寫效率。為了提高編制單片機(jī)應(yīng)用程序的效率,改善程序的可讀性和可移植性,采用C語言無疑是一種較好的選擇。C語言是一種通用的計(jì)算機(jī)程序設(shè)計(jì)語言,既具有一般高級(jí)語言的特點(diǎn),又能直接對(duì)計(jì)算機(jī)的硬件進(jìn)行操作,表達(dá)和運(yùn)算能力也較強(qiáng),以往采用匯編語言來解決的問題現(xiàn)在一般都可以改用C語言來解決。
源程序文件是一般的文本文件,可采用EDIT、CCED、UltraEDIT、Windows記事本或Keil內(nèi)嵌編輯器來編寫。需要指出的是,Keil軟件對(duì)漢字的支持不好,建議采用其它文本編輯器(如UltraEDIT-32)進(jìn)行源程序的輸入。
2.編譯/匯編源程序
匯編語言源程序文件的擴(kuò)展名是asm(如用Keil軟件,在其編輯器中編寫的匯編源程序文件擴(kuò)展名又可為.a51),C語言源程序文件的擴(kuò)展名是.c。要將編寫的.asm源程序轉(zhuǎn)變成CPU可以執(zhí)行的機(jī)器碼,可采用手工匯編和機(jī)器匯編的方法。目前手工匯編的方法已被淘汰。機(jī)器匯編是指通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件早期有A51。目前流行的Keil軟件(或MedWin軟件)通過編譯軟件(編譯器)對(duì)C語言源程序進(jìn)行編譯,通過匯編軟件(匯編器)對(duì)匯編語言源程序進(jìn)行匯編,連接目標(biāo)模塊和庫模塊產(chǎn)生目標(biāo)代碼,生成.hex(十六進(jìn)制)或.bin(二進(jìn)制)目標(biāo)文件。
3.仿真調(diào)試
編譯/匯編通過只是說明源程序沒有語法錯(cuò)誤,至于源程序中存在的其它錯(cuò)誤,往往還需要通過反復(fù)的仿真調(diào)試才能發(fā)現(xiàn)。所謂仿真即是對(duì)目標(biāo)樣機(jī)進(jìn)行排錯(cuò)、調(diào)試和檢查,一般分為硬件仿真和軟件仿真兩種。
硬件仿真是通過仿真器(仿真機(jī))與目標(biāo)樣機(jī)聯(lián)機(jī)進(jìn)行實(shí)時(shí)在線仿真,見下圖所示。一塊單片機(jī)應(yīng)用電路板包括單片機(jī)部分及為達(dá)到使用目的而設(shè)計(jì)的應(yīng)用電路。硬件仿真就是利用仿真器來代替應(yīng)用電路板(稱目標(biāo)樣機(jī))的單片機(jī)部分,由仿真器向目標(biāo)樣機(jī)的應(yīng)用電路部分提供各種信號(hào)、數(shù)據(jù)進(jìn)行測(cè)試、調(diào)試的方法。這種仿真可以通過單步執(zhí)行、連續(xù)執(zhí)行等多種方式來運(yùn)行程序,并能觀察到單片機(jī)內(nèi)部的變化,便于修改程序中的錯(cuò)誤。下圖中,將仿真插頭插到電路板上的單片機(jī)插座上,此時(shí)可將仿真器看作是一個(gè)獨(dú)立的單片機(jī),通過運(yùn)行PC上的仿真軟件(如Keil軟件).使目標(biāo)樣機(jī)處于一個(gè)真實(shí)的工作環(huán)境之中,可模擬開發(fā)單片機(jī)的各種功能。一般高校中的單片機(jī)實(shí)驗(yàn)都是采用如下圖所示的仿真方法。顯然這種仿真因?yàn)樾枰抡嫫?、電路板等硬件裝置而顯得投資較大。
軟件仿真是指在PC上運(yùn)行仿真軟件來實(shí)現(xiàn)對(duì)單片機(jī)的硬件模擬、指令模擬和運(yùn)行狀態(tài)模擬,故這種仿真方法又稱為軟件(程序)模擬調(diào)試。它不需要硬件,簡單易行,可采用Keil、MedWin或8051DEBUG等軟件進(jìn)行模擬調(diào)試。軟件仿真的缺點(diǎn)是不適用于實(shí)時(shí)性很強(qiáng)的單片機(jī)應(yīng)用系統(tǒng)的調(diào)試,在實(shí)時(shí)性要求不高的場(chǎng)合,軟件仿真已被廣泛應(yīng)用。
4.燒寫(燒錄)單片機(jī)
仿真調(diào)試通過后,使用專門的編程器將、hex目標(biāo)文件燒寫到單片機(jī)(或外接)的可編程ROM中。編程器一般通過并口或串口與PC連接,具有相應(yīng)的服務(wù)程序;在連接好PC與編程器后運(yùn)行其服務(wù)程序,在服務(wù)程序中先選擇所要編程的單片機(jī)型號(hào),再調(diào)入前面所得到的.hex目標(biāo)文件,編程器就將這個(gè)目標(biāo)文件燒寫到單片機(jī)中。燒寫后再將單片機(jī)插入到電路板上相應(yīng)的插座上,如符合設(shè)計(jì)要求,則完成工作。
二、Keil軟件及其調(diào)試功能簡介
目前流行的51系列單片機(jī)開發(fā)軟件是德國Keil公司推出的KeilC51軟件,它是一個(gè)基于32位Windows環(huán)境的應(yīng)用程序,支持C語言和匯編語言編程,其6.0以上的版本將編譯和仿真軟件統(tǒng)一為uVision(通常稱為μV2)。Keil提供包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,由以下幾部分組成:μVisionIDE集成開發(fā)環(huán)境(包括工程管理器①、源程序編輯器②、程序調(diào)試器③,見下圖)、C51編譯器、A51匯編器、LIB51庫管理器、BL51連接/定位器、OH51目標(biāo)文件生成器以及Monitor-51、RTX51實(shí)時(shí)操作系統(tǒng)。
應(yīng)用Keil進(jìn)行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存一建立工程并添加源文件一設(shè)置工程一編譯/匯編、連接,產(chǎn)生目標(biāo)文件一程序調(diào)試。
Keil使用“工程”(Project)的概念,對(duì)工程(而不能對(duì)單一的