![單片機(jī)基礎(chǔ)知識(shí)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff7/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff71.gif)
![單片機(jī)基礎(chǔ)知識(shí)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff7/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff72.gif)
![單片機(jī)基礎(chǔ)知識(shí)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff7/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff73.gif)
![單片機(jī)基礎(chǔ)知識(shí)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff7/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff74.gif)
![單片機(jī)基礎(chǔ)知識(shí)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff7/2c881bcb-54de-4e9e-9c06-b77f8f2d6ff75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 基礎(chǔ)知識(shí)1.1 概述作為初學(xué)者,在全面、深入學(xué)習(xí)單片機(jī)開(kāi)發(fā)應(yīng)用技術(shù)之初,一定會(huì)提出許許多多與單片機(jī)相關(guān)的問(wèn)題(如下所列),正確理解并回答這些問(wèn)題,無(wú)疑為學(xué)好、用好單片機(jī)開(kāi)了個(gè)好頭。1.1.1什么是單片機(jī)單片機(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)稱。圖1-1是常見(jiàn)單片機(jī)實(shí)物圖,其中包括51系列、stc系列、pic系列和avr系列單片機(jī)。說(shuō)它們是一款計(jì)算機(jī),你可能會(huì)產(chǎn)生質(zhì)疑:這也是計(jì)算機(jī)?從外觀來(lái)看,它與我們?nèi)粘J褂玫呐_(tái)式電腦、筆記本電腦大相徑庭,但它們的確是計(jì)算機(jī)。俗話說(shuō):“麻雀雖小,五臟俱全”,一般計(jì)算機(jī)所擁有的基本結(jié)構(gòu),例如處理器、存儲(chǔ)器、輸入/輸出等,單片機(jī)同樣擁有。之所以稱為單片計(jì)算機(jī),是因?yàn)樗?/p>
2、們將處理器、存儲(chǔ)器、輸入/輸出等組件全部集成在一塊芯片上的原因。圖1-1 常見(jiàn)單片機(jī)實(shí)物圖1.1.2單片機(jī)能干什么目前,單片機(jī)在工業(yè)控制、智能儀器儀表、消費(fèi)類電子、軍事、醫(yī)用、網(wǎng)絡(luò)通信等領(lǐng)域都有十分廣泛的應(yīng)用,且其應(yīng)用領(lǐng)域還在進(jìn)一步地拓展。1、工業(yè)控制領(lǐng)域:工業(yè)現(xiàn)場(chǎng)實(shí)時(shí)測(cè)控、數(shù)據(jù)采集等;2、智能儀器儀表領(lǐng)域:數(shù)字萬(wàn)用表、數(shù)字示波器、數(shù)字信號(hào)源、數(shù)字頻率計(jì)等;3、消費(fèi)類電子領(lǐng)域:洗衣機(jī)、電冰箱、空調(diào)、電視機(jī)、微波爐、ic卡、電子玩具、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)等;4、軍事領(lǐng)域:飛機(jī)、坦克、導(dǎo)彈、魚(yú)雷、制導(dǎo)、智能武器等;5、醫(yī)用領(lǐng)域:呼吸機(jī)、監(jiān)護(hù)儀、超聲診斷、病床呼叫等;6、網(wǎng)絡(luò)通信領(lǐng)域:電話機(jī)、手機(jī)、
3、程控交換機(jī)、樓宇自動(dòng)呼叫、無(wú)線通信等。總之,單片機(jī)的應(yīng)用已經(jīng)并將滲透到人類工作和生活的多個(gè)領(lǐng)域。據(jù)不完全統(tǒng)計(jì),目前世界上單片機(jī)的年銷售量已超過(guò)12億片。1.1.3什么是單片機(jī)應(yīng)用系統(tǒng)單片機(jī)應(yīng)用系統(tǒng)是軟件、硬件相結(jié)合的綜合應(yīng)用系統(tǒng),軟件和硬件二者缺一不可,如圖1-2所示。圖1-2 單片機(jī)應(yīng)用系統(tǒng)對(duì)于硬件,首指就是單片機(jī)。單片機(jī)種類較多(51,avr,pic,stc等系列),我們選用51系列單片機(jī),圖1-1中就有40個(gè)引腳的雙列直插式(pdip40)封裝的51系列單片機(jī)。一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件部分,只有單片機(jī)是遠(yuǎn)遠(yuǎn)不夠的。單片機(jī)是必需的,但還需其它外部硬件設(shè)備或元件,這些外部硬件設(shè)備或元件一般被
4、稱為外部設(shè)備,簡(jiǎn)稱外設(shè),如圖1-3所示。這些外設(shè)器件與單片機(jī)一起工作,才能完成或者實(shí)現(xiàn)具體功能。 圖1-3 51單片機(jī)硬件系統(tǒng)使用的部分常見(jiàn)外設(shè)硬件我們暫且放在一邊不談,再說(shuō)軟件。軟件開(kāi)發(fā)簡(jiǎn)言之就是編寫(xiě)程序。選用什么語(yǔ)言?用什么軟件?怎樣編寫(xiě)程序等等問(wèn)題都將接踵而來(lái),以下我們先簡(jiǎn)單說(shuō)明一下這些問(wèn)題。選用什么語(yǔ)言?c語(yǔ)言!其實(shí),在單片機(jī)軟件系統(tǒng)開(kāi)發(fā)中,編程語(yǔ)言有兩種:c語(yǔ)言和匯編語(yǔ)言。之所以選用c語(yǔ)言而未選用匯編語(yǔ)言,是由于在編寫(xiě)單片機(jī)程序方面,c語(yǔ)言相比匯編語(yǔ)言有許許多多的優(yōu)勢(shì),在此,我們不再歷數(shù)那些優(yōu)勢(shì)具體是什么,總之,就用c語(yǔ)言了!用什么軟件?keil !這是目前用得最多、最廣泛的單片機(jī)c
5、語(yǔ)言軟件開(kāi)發(fā)環(huán)境。keil有vision2,vision3,vision4等版本,我們選用vision3。怎樣編寫(xiě)單片機(jī)c語(yǔ)言程序?這個(gè)問(wèn)題不是一兩句話能解釋清楚的,但有一個(gè)總體的目標(biāo),這就是以硬件為前提基礎(chǔ),準(zhǔn)確運(yùn)用c語(yǔ)言,編寫(xiě)出結(jié)構(gòu)完整、具有一定功能、能在單片機(jī)上實(shí)際運(yùn)行、能實(shí)現(xiàn)具體功能的c語(yǔ)言程序。c語(yǔ)言的語(yǔ)法比較少,單片機(jī)中用到的c語(yǔ)言語(yǔ)法更少!所以在使用c語(yǔ)言進(jìn)行單片機(jī)編程前,沒(méi)有必要將c語(yǔ)言的全部知識(shí)系統(tǒng)地學(xué)習(xí)或復(fù)習(xí)一遍。以往,要學(xué)習(xí)單片機(jī),并準(zhǔn)備用c編寫(xiě)程序,一般是先系統(tǒng)地學(xué)習(xí)c語(yǔ)言,再系統(tǒng)地學(xué)習(xí)單片機(jī)知識(shí),最后將二者結(jié)合起來(lái),再學(xué)習(xí)c語(yǔ)言的單片機(jī)開(kāi)發(fā)應(yīng)用?,F(xiàn)在,我們的思路與以前
6、大不相同,具體做法是,打破傳統(tǒng)的知識(shí)體系框架,設(shè)計(jì)一系列從簡(jiǎn)單到復(fù)雜的單片機(jī)應(yīng)用開(kāi)發(fā)項(xiàng)目,將c語(yǔ)言知識(shí)、單片機(jī)知識(shí)融入具體項(xiàng)目中,在具體應(yīng)用開(kāi)發(fā)項(xiàng)目的實(shí)際工作過(guò)程中,學(xué)習(xí)并掌握基于c語(yǔ)言的單片機(jī)應(yīng)用開(kāi)發(fā)技術(shù)。教學(xué)中,針對(duì)具體項(xiàng)目,僅對(duì)本項(xiàng)目涉及到的c語(yǔ)言知識(shí)點(diǎn)、單片機(jī)知識(shí)點(diǎn)做細(xì)化講解,本項(xiàng)目不涉及的知識(shí)點(diǎn)暫且不提,以夠用、實(shí)用為原則,以解決實(shí)際問(wèn)題為最終目的。在一個(gè)個(gè)應(yīng)用項(xiàng)目開(kāi)發(fā)的實(shí)踐和實(shí)現(xiàn)過(guò)程中,逐步學(xué)習(xí)和掌握c語(yǔ)言單片機(jī)開(kāi)發(fā)的方法和技巧。在本書(shū)后續(xù)章節(jié)中,我們將舉出大量單片機(jī)c語(yǔ)言應(yīng)用開(kāi)發(fā)的實(shí)例,結(jié)合這些具體實(shí)例,無(wú)論你以前學(xué)過(guò)還是沒(méi)有學(xué)過(guò)c語(yǔ)言、了解不了解單片機(jī)知識(shí),都沒(méi)有關(guān)系,只要緊跟
7、本書(shū)的章節(jié)和每一個(gè)具體實(shí)例,深入研究和學(xué)習(xí),相信你一定會(huì)掌握單片機(jī)c語(yǔ)言開(kāi)發(fā)的技術(shù),成為單片機(jī)應(yīng)用開(kāi)發(fā)的高手。1.2 單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)流程1.2.1單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)流程概述如圖1-2所示,單片機(jī)應(yīng)用系統(tǒng)包括硬件系統(tǒng)和軟件系統(tǒng),對(duì)應(yīng)地,單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā),也主要包括硬件部分開(kāi)發(fā)和軟件部分開(kāi)發(fā)兩大部分。實(shí)際工作中,當(dāng)軟件和硬件開(kāi)發(fā)工作完成之后,還要將軟件開(kāi)發(fā)生成的.hex文件下載(俗稱“燒片)到單片機(jī)的程序存儲(chǔ)器rom中。由于下載燒片工作一般使用專門(mén)的設(shè)備(如編程器)來(lái)完成,因此操作比較簡(jiǎn)單,使用者只要正確操作該設(shè)備及相關(guān)軟件,都能成功下載燒片,所以在單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)流程中,下載燒片這一
8、開(kāi)發(fā)環(huán)節(jié)往往被淡化或者忽略不提。本書(shū)沿襲慣例,對(duì)下載燒片環(huán)節(jié)不做過(guò)多說(shuō)明,有興趣的讀者請(qǐng)參看附錄c或其它資料。此處專門(mén)提出這一環(huán)節(jié),只是希望能引起讀者的注意,不要忘記最后這一環(huán)節(jié)。再說(shuō)單片機(jī)開(kāi)發(fā)中的軟件和硬件,可以說(shuō),硬件是整個(gè)應(yīng)用系統(tǒng)的基礎(chǔ),而軟件則依賴于系統(tǒng)的硬件。在硬件不再改變的條件下,軟件程序的改變,可以部分改變系統(tǒng)的功能。但從整體而言,單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā),本是一個(gè)“軟硬兼施”的過(guò)程,軟件和硬件需要互相彌補(bǔ),密切配合。部分用硬件不能實(shí)現(xiàn)或者不便實(shí)現(xiàn)的功能,可以考慮用軟件去補(bǔ)充或?qū)崿F(xiàn);同樣道理,選擇適當(dāng)?shù)挠布?,也可以彌補(bǔ)軟件功能上的缺憾或不足,二者相得益彰,互相配合,才能使任務(wù)最終實(shí)現(xiàn)
9、。就單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)流程而言,硬件和軟件在開(kāi)發(fā)次序方面,原則上無(wú)先后之分,先開(kāi)發(fā)哪一個(gè)都可以,有時(shí)候二者還可以同步進(jìn)行設(shè)計(jì)和開(kāi)發(fā)。但考慮到硬件是基礎(chǔ),所以通常情況下是先開(kāi)發(fā)硬件,再開(kāi)發(fā)軟件。對(duì)于硬件部分的開(kāi)發(fā),簡(jiǎn)言之就是設(shè)計(jì)和加工電子線路板,或者手動(dòng)焊接電子線路板。具體而言,硬件部分的開(kāi)發(fā)絕非易事。首先是硬件電路所用元器件種類繁多,特性各異,全部掌握或了解實(shí)屬不大可能;再次,硬件電路的設(shè)計(jì)開(kāi)發(fā)需要很高的設(shè)計(jì)技巧,絕非一日之功可以成就。本書(shū)作為單片機(jī)初學(xué)者的入門(mén)教材,對(duì)后續(xù)各章節(jié)中列舉的各個(gè)實(shí)例,針對(duì)不同的任務(wù)要求,直接給出了硬件電路圖,并對(duì)部分主要和重要元器件的特性和功能,也做了詳細(xì)介紹,
10、方便初學(xué)者參考學(xué)習(xí)并逐漸積累硬件設(shè)計(jì)的經(jīng)驗(yàn),以便日后能自行設(shè)計(jì)較復(fù)雜的硬件電路。 相對(duì)于硬件部分的開(kāi)發(fā),軟件部分的開(kāi)發(fā)則較為靈活。正如前面所述,開(kāi)發(fā)語(yǔ)言可以選擇匯編語(yǔ)言,也可選擇c語(yǔ)言,還可以是匯編語(yǔ)言和c語(yǔ)言混合編程。我們主要選用的是c語(yǔ)言,開(kāi)發(fā)環(huán)境則選用keil的vision3。需要特別說(shuō)明的是,在軟件開(kāi)發(fā)部分,開(kāi)發(fā)流程幾乎是固定不變的,如圖1-4所示,主要包括工程建立、源程序編寫(xiě)和編譯調(diào)試三個(gè)步驟;軟件開(kāi)發(fā)的結(jié)果是生成擴(kuò)展名為.hex的文件,該文件被用于下載或者燒片到單片機(jī)的程序存儲(chǔ)器rom中,供單片機(jī)上電后再讀出來(lái)執(zhí)行,從而驅(qū)動(dòng)或者控制外部設(shè)備按照預(yù)定的要求正常工作。從軟件開(kāi)發(fā)的流程可
11、見(jiàn),針對(duì)不同的項(xiàng)目任務(wù),編寫(xiě)的源程序不大相同,其余步驟則基本固定不變。與對(duì)硬件開(kāi)發(fā)的處理思路一樣,本書(shū)對(duì)于后續(xù)各章節(jié)中列舉的各個(gè)實(shí)例,針對(duì)不同的任務(wù)要求,直接給出源程序清單,對(duì)主要和重要的功能模塊,給予解釋和說(shuō)明,供初學(xué)者參考學(xué)習(xí),而軟件開(kāi)發(fā)過(guò)程中的其它步驟則一概簡(jiǎn)化或略去,重點(diǎn)放在功能實(shí)現(xiàn)和源程序的編寫(xiě)上,其它與keil相關(guān)的軟件操作則被淡化,只因這些操作和步驟基本上是固定不變的。鑒于以上概述,以下僅就軟件開(kāi)發(fā)的具體流程做詳細(xì)說(shuō)明。圖1-5是在圖1-4的基礎(chǔ)上,細(xì)化其中的三個(gè)主要步驟所得單片機(jī)軟件開(kāi)發(fā)流程圖。 圖1-4 軟件開(kāi)發(fā)流程 圖1-5 細(xì)化的軟件開(kāi)發(fā)流程1.2.2單片機(jī)應(yīng)用系統(tǒng)軟件開(kāi)
12、發(fā)流程1、工程建立(1)啟動(dòng)keil vision3軟件假設(shè)keil vision3軟件已正確安裝,啟動(dòng)keil vision3軟件與啟動(dòng)其它軟件的方法完全相同:?jiǎn)螕舨⒁来芜x擇【開(kāi)始】【程序】【keil vision3】,或者直接雙擊桌面上keil vision3的快捷方式圖標(biāo),均可啟動(dòng)keil vision3。啟動(dòng)過(guò)程中,屏幕出現(xiàn)如圖1-6所示啟動(dòng)界面。啟動(dòng)界面消失后,keil vision3就進(jìn)入了如圖1-7所示編輯界面,此時(shí)keil vision3軟件已成功啟動(dòng)。圖1-6 keil vision3啟動(dòng)界面圖1-7 keil vision3啟動(dòng)成功后的編輯界面(2)新建工程keil 與現(xiàn)在
13、眾多的軟件開(kāi)發(fā)環(huán)境一樣,均采用工程或者項(xiàng)目的管理方式來(lái)管理文件。一個(gè)應(yīng)用開(kāi)發(fā)任務(wù)就是一個(gè)工程或項(xiàng)目。一般地,以開(kāi)發(fā)任務(wù)的名稱為新建的文件夾名,所有與該開(kāi)發(fā)任務(wù)有關(guān)的文件都存放在該文件夾中,不同開(kāi)發(fā)任務(wù)的文件夾名一般不相同。下面首先是新建工程。單擊keil vision3的【project】菜單,在展開(kāi)的下拉菜單中單擊【new project】,如圖1-8所示。在隨后打開(kāi)的保存新建工程窗口中,選擇新建工程的保存路徑,并為新建的工程命名,最后單擊【保存】按鈕保存該新建的工程。注意,工程的擴(kuò)展名不用輸入,系統(tǒng)會(huì)默認(rèn)選擇為“.uv2”。此處將工程暫且命名為“l(fā)ed1”,并保存在f盤(pán)的文件夾led下。如
14、圖1-9所示。圖1-8 新建工程圖1-9 保存工程(3)選擇單片機(jī)型號(hào)當(dāng)單擊圖1-9所示新建工程保存窗口中的【保存】按鈕之后,keil vision3會(huì)彈出單片機(jī)型號(hào)選擇對(duì)話窗口,如圖1-10(a)所示。在該對(duì)話窗口中,要求用戶選擇該工程準(zhǔn)備使用的單片機(jī)芯片的型號(hào)。此處選擇atmel公司生產(chǎn)、使用最普及的at89c51芯片。具體操作是:在圖1-10(a)左側(cè)欄所列眾多廠家中找見(jiàn)“atmel”,單擊“atmel”名稱前的加號(hào)“”,展開(kāi)atmel公司生產(chǎn)的單片機(jī)系列產(chǎn)品,如圖1-10(b)所示;接著,在展開(kāi)的atmel公司生產(chǎn)的單片機(jī)系列產(chǎn)品中,單擊選中“at89c51”,如圖1-10(c)所示;
15、最后,單擊【確定】按鈕,芯片型號(hào)的選擇完成。此時(shí),keil vision3會(huì)彈出如圖1-11所示對(duì)話窗口,詢問(wèn)是否復(fù)制并添加標(biāo)準(zhǔn)8051啟動(dòng)代碼到當(dāng)前工程,一般單擊選擇【是】即可。圖1-10(a) 選擇51單片機(jī)的生產(chǎn)廠家圖1-10(b) 單擊展開(kāi)atmel公司生產(chǎn)的單片機(jī)產(chǎn)品圖1-10(c) 選中atmel公司生產(chǎn)的單片機(jī)at89c51圖1-11 是否添加8051啟動(dòng)代碼到當(dāng)前工程對(duì)話窗口完成以上步驟之后,屏幕重新回到如圖1-12所示編輯界面,圖1-12與圖1-7基本相同,不同之處是左側(cè)“工程管理工作臺(tái)”中的內(nèi)容,圖1-7中,“工程管理工作臺(tái)”中什么也沒(méi)有,而圖1-12中,“工程管理工作臺(tái)”
16、中有名為“target 1”的對(duì)象,單擊其名稱前面的加號(hào),還可以看到該對(duì)象內(nèi)所包含的文件。圖1-12 已含有“target 1”對(duì)象的編輯界面2、源程序編寫(xiě)新建工程完成之后,以下該進(jìn)入源程序的編寫(xiě)環(huán)節(jié)了。(1)新建并保存源程序文件單擊打開(kāi)keil vision3的【file】菜單,再單擊選擇第一項(xiàng)【new】,或者直接單擊工具欄中“創(chuàng)建一個(gè)新文件”快捷圖標(biāo),都可以新建一個(gè)默認(rèn)名字為“text 1”的文件。新建之后,i型光標(biāo)就在“text 1”文件的編輯窗口中閃爍,如圖1-13所示。需要說(shuō)明的是,默認(rèn)的文件名也許由于多次新建文件而出現(xiàn)“text n”的字樣,其中n是一整數(shù),因?yàn)轳R上要將該文件進(jìn)行保
17、存或另存為其它名稱的文件,所以原來(lái)的文件名是什么都無(wú)關(guān)緊要。接下來(lái)將源文件進(jìn)行換名保存。單擊【file】菜單中的【save】或者【save as】,也可直接單擊工具欄中的存盤(pán)快捷圖標(biāo),都可打開(kāi)如圖1-14(a)所示文件另存為窗口。將其中的原始默認(rèn)文件名“text 1”更換為“l(fā)ed1.c”。此處特別要提起注意的是,因?yàn)槲覀兪褂胏語(yǔ)言來(lái)編寫(xiě)源程序,所以源程序的命字中,其擴(kuò)展名必須是“.c”,正如前面提到的,單片機(jī)的編程語(yǔ)言除c語(yǔ)言外,還有匯編語(yǔ)言,如果使用匯編語(yǔ)言編寫(xiě)源程序,則源程序文件名的擴(kuò)展名就必須是“.asm”。此處,源文件更名為“l(fā)ed1.c”,其中的擴(kuò)展名“.c”表明這是用c語(yǔ)言編寫(xiě)的
18、源程序,如圖1-14(b)所示,最后單擊【保存】。單擊【保存】后,源程序文件的名字已經(jīng)更換,且源程序編輯窗口的標(biāo)題欄顯示為“f:ledled1.c”字樣。如圖1-15所示。圖1-13 新建源程序文件界面圖1-14(a) 源程序文件更名前界面 圖1-14(b) 源程序文件更名后界面圖1-15 更名保存后的源程序文件界面(2)加載源程序到工程中加載源程序到項(xiàng)目工程是非常重要的一個(gè)步驟。未加載源程序之前,該項(xiàng)目工程管理工作臺(tái)如圖1-16(a)所示,加載源程序文件之后如圖1-16(b)所示??梢?jiàn),加載源程序之后,源程序文件led1.c被添加進(jìn)入了工程管理的工作臺(tái)中。 圖1-16(a)加載源程序之前 圖
19、1-16(b)加載源程序之后加載源程序的具體過(guò)程如下:在工程管理工作臺(tái)中,單擊對(duì)象“target 1”前面的加號(hào)“”將其展開(kāi),右擊文件夾“source group 1”圖標(biāo),在彈出如圖1-17所示快捷菜單中,選擇“add files to group source group 1”菜單項(xiàng)。隨后,屏幕彈出選擇源程序文件對(duì)話窗口,如圖1-18所示。雙擊圖1-18中文件“l(fā)ed1.c”之后再單擊【close】按鈕,或者單擊圖1-18中文件“l(fā)ed1.c”之后再單擊【add】按鈕,都可將源程序文件“l(fā)ed1.c”加載到工程項(xiàng)目中,結(jié)果如圖1-16(b)所示。此過(guò)程之所以重要,原因是,如果沒(méi)有添加源程序
20、文件,則該工程項(xiàng)目如同一個(gè)軀殼或者空的框架,因?yàn)闆](méi)有包含源程序文件,該工程自然不具有任何功能,即使編譯鏈接等環(huán)節(jié)順利通過(guò),預(yù)期的功能也一定不會(huì)實(shí)現(xiàn)。另一方面,如果給工程項(xiàng)目添加了錯(cuò)誤的或者多余的源程序文件,在工程的編譯調(diào)試環(huán)節(jié)可能就會(huì)報(bào)錯(cuò),即使編譯通過(guò),也不能保證其功能是正確的。如果出現(xiàn)這樣的情況,也不必驚慌,只需將這些錯(cuò)誤的、或者多余的文件從工程項(xiàng)目中移除即可。具體做法是:在工程管理工作臺(tái)中,在準(zhǔn)備移除的文件上右擊,在彈出的快捷菜單中選擇“remove file xxx.c”(xxx代表被移除文件的名字)即可。(3)編譯選項(xiàng)設(shè)置工程編譯的目的,是將源程序文件經(jīng)編譯、鏈接,最終生成可以用于下載
21、燒片的.hex文件,其中,.hex是十六進(jìn)制文件的擴(kuò)展名。在進(jìn)行工程的編譯、鏈接之前,首先要對(duì)編譯環(huán)境進(jìn)行必要的設(shè)置,設(shè)置完成后才可以進(jìn)行編譯。單擊打開(kāi)【project】下拉菜單,在展開(kāi)的下拉菜單項(xiàng)目中,單擊選擇【options for target target 1】,或者直接單擊工具欄中options for target快捷方式圖標(biāo),都可以打開(kāi)編譯選項(xiàng)設(shè)置窗口,如圖1-19所示??梢钥吹剑M管此窗口包含多個(gè)用于編譯選項(xiàng)設(shè)置的標(biāo)簽頁(yè),但在一般使用中,只有兩個(gè)標(biāo)簽頁(yè)中的部分選項(xiàng)需要設(shè)置,其余標(biāo)簽頁(yè)則保持原始默認(rèn)值即可。這兩個(gè)標(biāo)簽頁(yè)就是output和debug標(biāo)簽頁(yè),如圖1-19中所示。單擊【
22、output】標(biāo)簽頁(yè),即可打開(kāi)output(輸出)選項(xiàng)設(shè)置窗口。如圖1-20(a)所示。在此窗口中,只須選中“創(chuàng)建.hex文件選項(xiàng)”:在如圖1-20(a)中標(biāo)注指示的復(fù)選框中,單擊打鉤,表明工程編譯之后,輸出或者說(shuō)生成用于下載燒片的.hex文件。相反,如果此選項(xiàng)沒(méi)有打鉤選中,即使工程完全正確,且編譯通過(guò),但不會(huì)生成用于下載燒片的.hex文件。因此,如果需要進(jìn)行程序的下載燒片或仿真調(diào)試,則此選項(xiàng)必須要打鉤選中。此選項(xiàng)打鉤選中后如圖1-20(b)所示。圖1-17 添加源程序到工程的快捷菜單圖1-18 選擇源程序文件對(duì)話窗口圖1-19 編譯選項(xiàng)設(shè)置窗口 圖1-20(a) output選項(xiàng)設(shè)置窗口(創(chuàng)
23、建.hex文件選項(xiàng)未選中) 圖1-20(b)創(chuàng)建.hex文件選項(xiàng)選中接下來(lái)就該設(shè)置debug標(biāo)簽頁(yè)了。單擊如圖1-19中所示【debug】標(biāo)簽頁(yè),即可打開(kāi)debug(調(diào)試)選項(xiàng)設(shè)置窗口,如圖1-21所示。此標(biāo)簽頁(yè)默認(rèn)的調(diào)試工具是simulator。如果使用默認(rèn)的調(diào)試工具,具體調(diào)試時(shí),只能從keil vision3軟件的部分調(diào)試窗口中觀察數(shù)據(jù)的變化情況,實(shí)際的硬件電路是不工作的,自然看不到硬件電路中元器件的實(shí)際動(dòng)作和運(yùn)作現(xiàn)象,所以一般不選默認(rèn)調(diào)試工具。另外,在調(diào)試時(shí),為了讓程序能直接跳轉(zhuǎn)到主函數(shù)main后再開(kāi)始繼續(xù)運(yùn)行,一般都將圖1-21中所示“go till main()前面的復(fù)選項(xiàng)打鉤選中。
24、如果不使用默認(rèn)的調(diào)試工具,則可以選定自己熟悉的、手頭上可用的調(diào)試工具。選擇如圖1-22所示debug標(biāo)簽頁(yè)右半邊的“use” 單選項(xiàng)(默認(rèn)調(diào)試工具“simulator”與此處的“use”二者只能選擇其一),并從其右側(cè)的下拉列表欄中選中自己使用的調(diào)試工具。例如,作者一般使用偉福v系列仿真器、proteus vsm simulator、keil monitor-51 等調(diào)試工具。同樣,在調(diào)試時(shí),為了讓程序直接運(yùn)行到主函數(shù)main后再開(kāi)始繼續(xù)運(yùn)行,圖1-22中所示“go till main()前面的復(fù)選項(xiàng)一般也打鉤選中。當(dāng)以上兩項(xiàng)設(shè)置結(jié)束之后,單擊【確定】按鈕,保存此選項(xiàng)設(shè)置。需要說(shuō)明的是,對(duì)于一個(gè)
25、工程,此編譯調(diào)試選項(xiàng)設(shè)置只需做一次;新建了新的工程后,此編譯調(diào)試選項(xiàng)需重新設(shè)置一次,并且每次設(shè)置幾乎完全相同。圖1-21 默認(rèn)調(diào)試工具選項(xiàng)設(shè)置 圖1-22 自定義調(diào)試工具選項(xiàng)設(shè)置(4)編輯源程序接下來(lái)就該編寫(xiě)源程序文件了,源程序文件在源程序編輯窗口中編輯輸入。假定源程序文件如下:#include sbit led0=p20;main()led0=0;在編輯輸入或修改源程序期間,編輯窗口標(biāo)題欄顯示為“f:ledled1.c*”,其中,文件名后面緊跟一個(gè)星號(hào)“*”,星號(hào)表明此源文件正處于編輯未保存狀態(tài)。無(wú)論在任何時(shí)候,都可通過(guò)單擊工具欄中的保存快捷圖標(biāo)(打開(kāi)【file】菜單后選擇保存也一樣)保存源
26、程序文件,此時(shí),標(biāo)題欄中文件名后的星號(hào)就會(huì)消失,表明文件已保存。在編輯輸入上述源程序并保存之后,源程序的編輯即已完成。注意,在編輯或者修改完源程序之后,一定要保存源程序,這樣做的意義是,能保證編譯及生成的.hex文件是編輯或修改后的源程序生成的,而非編輯或修改前源程序編譯生成的。另外,此處不用急于弄清楚這個(gè)源程序的具體功能,讀者只需按照原樣編輯輸入即可,因?yàn)楝F(xiàn)在的重點(diǎn)是掌握使用keil vision3軟件來(lái)生成單片機(jī)下載(燒片)所需文件的具體流程,重點(diǎn)不在源程序是什么具體功能。相反,在后續(xù)章節(jié)中,結(jié)合多個(gè)具體的實(shí)例,分析源程序的功能,甚至每一條語(yǔ)句的功能,自然成為了重點(diǎn)。3、編譯調(diào)試接下來(lái)該對(duì)
27、工程進(jìn)行編譯和調(diào)試了,編譯和調(diào)試的目標(biāo)就是生成可用于下載燒片的.hex文件。對(duì)于軟件程序開(kāi)發(fā)而言,編譯調(diào)試與源程序的編輯修改是一個(gè)循環(huán)往復(fù)的過(guò)程,一般是經(jīng)歷編輯編譯再編譯再修改這樣一個(gè)循環(huán)往復(fù)的過(guò)程,直至編譯成功、預(yù)期的功能完全實(shí)現(xiàn)為止。在keil vision3的工具欄中,有三個(gè)編譯快捷方式圖標(biāo)和一個(gè)調(diào)試快捷方式圖標(biāo),如圖1-23中標(biāo)注所示。圖1-23 編譯和調(diào)試快捷圖標(biāo)從字面理解,編譯當(dāng)前,就是對(duì)當(dāng)前正在操作的文件進(jìn)行編譯;全部編譯就是將該工程中所有文件全部重新編譯,而編譯則是僅將本次修改過(guò)的文件進(jìn)行編譯,沒(méi)有修改或變動(dòng)的文件不編譯。實(shí)際使用中,為了防止疏漏,一般選擇全部編譯者居多。對(duì)于調(diào)
28、試,單擊圖1-23所示調(diào)試快捷方式圖標(biāo),可使工程進(jìn)入調(diào)試狀態(tài)。此時(shí),keil vision3的工具欄出現(xiàn)如圖1-24所示調(diào)試工具欄。運(yùn)用這些調(diào)試工具,可以監(jiān)控和調(diào)試程序的每一條語(yǔ)句及其執(zhí)行結(jié)果的每一個(gè)細(xì)節(jié)。圖1-24 調(diào)試工具欄介紹了編譯和調(diào)試工具之后,下面僅就如何編譯做具體說(shuō)明,有關(guān)調(diào)試的相關(guān)細(xì)節(jié),請(qǐng)讀者參閱附錄b和第2章部分內(nèi)容,亦可參閱其它書(shū)籍或資料,也可自己通過(guò)實(shí)踐去掌握?,F(xiàn)在,源程序已經(jīng)編輯完成,并且已被加載到工程中,相關(guān)的編譯調(diào)試選項(xiàng)也已設(shè)置完畢,下面就開(kāi)始工程的編譯了。單擊圖1-23中所示全部編譯快捷圖標(biāo),工程開(kāi)始編譯。編譯結(jié)束后,編譯信息就出現(xiàn)在信息輸出窗口中,如圖1-25所示
29、。此處的編譯信息表明,該工程編譯是成功的,生成了.hex文件:led1.hex,編譯時(shí)沒(méi)有出現(xiàn)錯(cuò)誤,也沒(méi)有出現(xiàn)警告(“0 error(s), 0 warning(s).”)。此時(shí),若查驗(yàn)存放該工程的文件夾,就會(huì)發(fā)現(xiàn),與該工程同名、擴(kuò)展名為.hex的文件在該文件夾中存在,該文件就是本工程編譯生成的、用于下載燒片的文件led1.hex。圖1-25 信息輸出窗口中的編譯信息如果源程序文件有錯(cuò)誤,在工程編譯時(shí),就會(huì)在信息輸出窗口中顯示錯(cuò)誤的位置所在和錯(cuò)誤、警告的個(gè)數(shù)。在信息輸出窗口中,通過(guò)在提示出現(xiàn)錯(cuò)誤的信息行文字上雙擊,鼠標(biāo)的光標(biāo)就會(huì)定位在源程序中出現(xiàn)錯(cuò)誤的位置附近,依據(jù)錯(cuò)誤提示信息,找出錯(cuò)誤所在并
30、修改,修改完成后要注意保存源程序。保存修改后的源程序之后,再進(jìn)行編譯,直到工程沒(méi)有錯(cuò)誤(警告可以忽略),并且生成正確的.hex文件為止。有關(guān)編譯時(shí)常見(jiàn)的錯(cuò)誤信息及其含義請(qǐng)參閱附錄b。至此,軟件開(kāi)發(fā)過(guò)程結(jié)束。通過(guò)軟件開(kāi)發(fā),最終生成了下載燒片所需要的.hex文件。后續(xù)的工作就是通過(guò)編程器或者下載器,將該.hex文件下載或者燒片到單片機(jī)的程序存儲(chǔ)器中,然后給硬件電路上電,讓單片機(jī)與其外部的硬件設(shè)備一起工作,完成預(yù)定的各項(xiàng)任務(wù)功能。下載和燒片的相關(guān)內(nèi)容可參閱附錄c。1.3 mcs-51單片機(jī)主要引腳介紹51系列單片機(jī)中,雙列直插、40只引腳單片機(jī)的實(shí)物圖和引腳原理圖如圖1-26(a)和1-26(b)所
31、示。 圖1-26(a)dip40引腳51單片機(jī)實(shí)物圖 圖1-26(b)dip40引腳51單片機(jī)引腳原理圖觀察51單片機(jī)芯片實(shí)物,可以發(fā)現(xiàn)其正面頂端中央有一個(gè)直徑約2.5毫米的半圓形凹坑,凹坑左側(cè)、引腳旁邊有一引腳起始標(biāo)記。對(duì)于起始標(biāo)記,一般用一個(gè)小三角形作為標(biāo)記,也有用一個(gè)小圓點(diǎn)和指向小圓點(diǎn)的三角形箭頭共同作為標(biāo)記的。無(wú)論用什么做起始標(biāo)記都不大重要,重要的是這個(gè)標(biāo)記左側(cè)的第一個(gè)引腳就是該芯片的第一只引腳,即引腳1。然后沿逆時(shí)針?lè)较颍_號(hào)依次為2,3,4,40,共計(jì)40只引腳。在芯片上印有起始引腳標(biāo)記,不是單片機(jī)芯片特有的,幾乎所有的芯片都有此標(biāo)記,依據(jù)此標(biāo)記,可以找到起始引腳1,沿逆時(shí)針?lè)较?/p>
32、,其它引腳自然能夠找到。芯片引腳在硬件電路的設(shè)計(jì)和焊接過(guò)程中非常重要。如果一個(gè)單片機(jī)系統(tǒng)的硬件部分出現(xiàn)引腳的連接錯(cuò)誤或其它類似問(wèn)題,這個(gè)系統(tǒng)自然不會(huì)正常工作,也不可能得到預(yù)期的功能和結(jié)果。在能清楚地找到和區(qū)別51單片機(jī)的40只引腳后,下面就這40只引腳做較為細(xì)致的說(shuō)明。51單片機(jī)的40只引腳,可以分成三類:、電源和時(shí)鐘引腳:vcc,gnd,xtal2,xtal1;、i/o口引腳:p0口,p1口,p2口,p3口,每一個(gè)口有8只引腳;、編程和控制引腳:rst,ale,psen,ea;vcc(40腳):是電源端,一般接5v10%電源。gnd(20腳):接地端。xtal2(18腳)和xtal1(19腳
33、):外接時(shí)鐘引腳。當(dāng)單片機(jī)使用內(nèi)部振蕩電路時(shí),此二腳之間連接石英晶體(晶振)和振蕩電容。常用晶振的頻率有6mhz,12mhz,11.0592mhz,24mhz,一般選12 mhz者居多。如果是串行通信,則選11.0592mhz為最佳。振蕩電容一般選無(wú)極性電容,容量在30 pf左右均可。p0口(39腳32腳):p0口是一個(gè)漏極開(kāi)路8位準(zhǔn)雙向三態(tài)口,由于內(nèi)部沒(méi)有上拉電阻,故呈高阻態(tài),因而不能正常輸出高或者低電平,在使用時(shí)要外接上拉電阻,一般取4.7k或5.1k均可。p0口的8個(gè)位分別是p0.0,p0.1,p0.2,p0.7,且每一個(gè)位可以單獨(dú)控制。p1口(1腳8腳):p1口是一個(gè)內(nèi)部有上拉電阻的8
34、位準(zhǔn)雙向i/o口。由于輸入不能鎖存,輸出沒(méi)有高阻態(tài),所以不是真正的雙向i/o口,姑且稱之為“準(zhǔn)”雙向i/o口。p1口在輸出時(shí)沒(méi)有什么特殊要求,但在輸入時(shí),必須先置1,即先向口寫(xiě)入高電平1,然后外部的高或者低電平才能被單片機(jī)準(zhǔn)確地“讀”取。p1口的8個(gè)位分別是p1.0,p1.1,p1.2,p1.7,且每一個(gè)位可以單獨(dú)控制。p2口(21腳28腳):p2口也是一個(gè)內(nèi)部有上拉電阻的8位準(zhǔn)雙向i/o口。其特點(diǎn)與p1口完全相同,輸入時(shí)也必須先置1。p2口的8個(gè)位分別是p2.0,p2.1,p2.2,p2.7,且每一個(gè)位可以單獨(dú)控制。p3口(10腳17腳):p3口也是一個(gè)內(nèi)部有上拉電阻的8位準(zhǔn)雙向i/o口,但
35、它具有第二功能。p3口的第一功能就是用作一般i/o口,此時(shí),它與p1口和p2口完全一樣。用作第二功能時(shí),p3口的8個(gè)引腳分別具有不同的功能,具體如表1-1所示。p3口的8個(gè)位分別是p3.0,p3.1,p3.2,p3.7,且每一個(gè)位可以單獨(dú)控制。需要特殊說(shuō)明的是,p3大多使用其第二功能。表1-1 p3口第二功能列表引腳序號(hào)引腳名1引腳名2第二功能描述10p3.0rxd串行輸入(數(shù)據(jù)接收)引腳11p3.1txd串行輸出(數(shù)據(jù)發(fā)送)引腳12p3.2外部中斷0輸入引腳13p3.3外部中斷1輸入引腳14p3.4t0定時(shí)器0外部輸入引腳15p3.5t1定時(shí)器1外部輸入引腳16p3.6外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通信
36、號(hào)輸出引腳17p3.7外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸入引腳rst(9腳):?jiǎn)纹瑱C(jī)復(fù)位引腳。在單片機(jī)電源上電接通的情況下,從該腳向單片機(jī)輸入連續(xù)兩個(gè)以上機(jī)器周期(12mhz晶振時(shí),約2s)的高電平,就可以使單片機(jī)復(fù)位,即讓單片機(jī)從程序存儲(chǔ)器(rom)的0000h地址處開(kāi)始(h代表16進(jìn)制),重新執(zhí)行程序。ale(30腳):地址鎖存信號(hào)輸出端。此引腳的功能有三。一是當(dāng)單片機(jī)在訪問(wèn)擴(kuò)展的片外存儲(chǔ)器時(shí),該引腳上出現(xiàn)的下降沿(高電平到低電平)信號(hào),用于將p0口上的地址信號(hào)送入鎖存器(例如74hc573或373)鎖存起來(lái),從而實(shí)現(xiàn)p0口上輸出的地址信息和數(shù)據(jù)信息的隔離;二是該引腳在沒(méi)有訪問(wèn)擴(kuò)展的片外存儲(chǔ)器時(shí),
37、其上固定輸出1/6晶振頻率的時(shí)鐘信號(hào),例如,當(dāng)外接晶振12mhz時(shí),ale引腳將固定輸出2mhz的時(shí)鐘信號(hào),此信號(hào)可作為其它相關(guān)外部器件的時(shí)鐘信號(hào)使用;三是在燒片(程序下載)時(shí)要用到此引腳,目前燒片工作有專門(mén)的設(shè)備(編程器)來(lái)完成,開(kāi)發(fā)者對(duì)該引腳不用做任何額外的電路設(shè)計(jì)或操作,此功能可以不予關(guān)注。psen(29腳):片外程序存儲(chǔ)器輸出允許控制端,低電平有效。目前所用單片機(jī)的程序存儲(chǔ)器空間已經(jīng)足夠大,中小型應(yīng)用開(kāi)發(fā)一般不需要外接片外程序存儲(chǔ)器,所以此引腳也暫且不用關(guān)注。ea(31腳):內(nèi)部和外部程序存儲(chǔ)器選擇端。當(dāng)單片機(jī)內(nèi)部沒(méi)有程序存儲(chǔ)器時(shí),必須要在單片機(jī)的外部擴(kuò)展掛接程序存儲(chǔ)器,此時(shí),該引腳必
38、須接低電平(接地)。目前所使用的單片機(jī)內(nèi)部都有程序存儲(chǔ)器,且容量足夠大,故該引腳應(yīng)接高電平(接+5v電源)。考慮到51單片機(jī)在復(fù)位以后,所有懸空未接的引腳都呈現(xiàn)高電平,所以此引腳可以懸空不接。若想保證該引腳上是穩(wěn)定可靠的高電平,也可以直接將其與+5v電源正極連接。至此,51單片機(jī)的40只引腳已經(jīng)一一列舉,可以看到,具有固定硬件連接的引腳有電源和時(shí)鐘引腳、復(fù)位引腳:vcc,gnd,xtal2,xtal1和rst,共計(jì)5個(gè)。ale,psen,ea三只引腳幾乎不用,特別是ea和psen兩只引腳,暫時(shí)可以不予關(guān)注。剩余32只引腳,分屬4個(gè)i/o口,p0,p1,p2,p3,它們是單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)
39、與外界聯(lián)系的通道,自然是以后學(xué)習(xí)的重點(diǎn)。1.4 晶振電路和復(fù)位電路單片機(jī)的晶振電路和復(fù)位電路,對(duì)于任何一個(gè)基于單片機(jī)的應(yīng)用系統(tǒng)都是必不可少的,并且該電路具有典型性和通用性。只要是基于51單片機(jī)的應(yīng)用系統(tǒng),其晶振電路和復(fù)位電路幾乎完全相同,所以我們直接給出電路圖,讀者只要依據(jù)此電路圖的要求,選取相關(guān)元器件,正確焊接,就可以完成51單片機(jī)應(yīng)用系統(tǒng)的晶振電路和復(fù)位電路。圖1-27給出晶振和復(fù)位電路中用到的瓷片電容、電解電容、晶振、按鈕和電阻的實(shí)物圖片及其典型參數(shù)。圖1-27 單片機(jī)晶振及復(fù)位電路使用元件圖片及參數(shù)瓷片電容無(wú)正負(fù)極之分,晶振和復(fù)位電路中,需要兩片電容值相同的瓷片電容,其典型參數(shù)是30p
40、f;電解電容有正負(fù)極之分,具體焊接時(shí)應(yīng)注意區(qū)分正負(fù)極,引腳相對(duì)較長(zhǎng)的為正極,引腳相對(duì)較短的為負(fù)極,如圖1-27中引腳端頭正負(fù)號(hào)(,)所示,其典型參數(shù)值為10f;對(duì)于晶振,兩根引腳無(wú)正負(fù)極之分,常用晶振的晶振頻率有6mhz、11.0592mhz、12mhz、24mhz等,圖1-27所示標(biāo)有參數(shù)“12.000”的晶振就是12mhz晶振;圖中1-27所示按鈕有四個(gè)引腳,但是引腳是兩兩短路接通的,具體哪兩個(gè)腳短路接通,用萬(wàn)用表簡(jiǎn)單測(cè)量便知;51單片機(jī)的晶振和復(fù)位電路中使用的電阻是阻值為10k的色環(huán)電阻,如果不熟悉色環(huán)電阻的標(biāo)稱值讀法也沒(méi)有關(guān)系,用萬(wàn)用表的歐姆檔直接測(cè)量即知其阻值大小。1.4.1 晶振電
41、路為什么單片機(jī)要接晶振電路?簡(jiǎn)言之,單片機(jī)應(yīng)用開(kāi)發(fā)電路屬于時(shí)序電路范疇,沒(méi)有晶振就無(wú)法產(chǎn)生時(shí)序電路所必需的時(shí)鐘信號(hào),單片機(jī)就無(wú)法按照時(shí)鐘信號(hào)提供的時(shí)序,一步步地執(zhí)行程序代碼,自然無(wú)法正常工作,所以必須要接晶振電路。1.4.2 復(fù)位電路單片機(jī)為什么要復(fù)位?單片機(jī)的復(fù)位如同電腦的重新啟動(dòng)一樣。單片機(jī)一旦復(fù)位,便重新從程序存儲(chǔ)器(rom)的0000h地址處開(kāi)始,逐條取出并執(zhí)行已經(jīng)“燒”錄在單片機(jī)內(nèi)部程序存儲(chǔ)器中的每一條指令,這些指令屬于單片機(jī)應(yīng)用系統(tǒng)的軟件部分,也就是先前我們編寫(xiě)的具有一定功能的程序。單片機(jī)的復(fù)位電路有上電復(fù)位和按鈕復(fù)位兩類。上電復(fù)位是單片機(jī)電源上電,單片機(jī)就復(fù)位,復(fù)位后就開(kāi)始工作;
42、另一類是按鈕復(fù)位,通過(guò)按下按鈕,使單片機(jī)的第9腳rst上,有連續(xù)兩個(gè)以上機(jī)器周期(一般約2s)的高電平輸入到單片機(jī),就可使單片機(jī)復(fù)位。而人的手指迅速按一下按鈕(按下并松開(kāi))的時(shí)間至少在ms級(jí)別,遠(yuǎn)遠(yuǎn)大于單片機(jī)復(fù)位所要求的微秒級(jí)復(fù)位時(shí)間,所以按鈕按下一次的這段時(shí)間完全可以使單片機(jī)復(fù)位。常見(jiàn)的通用晶振和復(fù)位電路如圖1-28所示。注意,圖中的供電電源是+5v直流電源,vcc接+5v直流電源的正極,接地端接+5v直流電源的負(fù)極。圖1-28 單片機(jī)晶振和復(fù)位電路1.5 電平數(shù)字電路中的電平有兩種:高電平和低電平,高電平一般用邏輯1表示,低電平一般用邏輯0表示。那么,電壓多高就算作是高電平,電壓多低就屬于
43、低電平呢?簡(jiǎn)單說(shuō),+5v電壓是高電平,0v是低電平,這種說(shuō)法是針對(duì)最常見(jiàn)的ttl電平而言的,除ttl電平以外,常見(jiàn)的還有cmos電平等等,且電平的高低判定不是以一個(gè)數(shù)值點(diǎn)為依據(jù),相反,電平高低是一個(gè)范圍。例如,對(duì)于ttl電平,5v是高電平,4.9v,4.8v也是高電平;0v屬于低電平,0.5v也是低電平??梢?jiàn),高電平是一個(gè)范圍,處于這個(gè)范圍的電平都可以認(rèn)為是高電平,用邏輯1表示;低電平也是一個(gè)范圍,處于這個(gè)范圍的電平都可以認(rèn)為是低電平,用邏輯0表示。表1-2以最常見(jiàn)的5v ttl和5v cmos電平為對(duì)象,說(shuō)明其高低電平的范圍。表1-2 ttl電平和cmos電平范圍名稱含義ttlcmos (5
44、v電源)vohmin輸出高電平的下限2.4v4.99vvolmax輸出低電平的上限0.4v0.01vvihmin輸入高電平的下限2.0v3.5vvilmax輸入低電平的上限0.8v1.5v可見(jiàn),對(duì)于ttl電平,輸出電壓只要大于2.4v,都可認(rèn)為是高電平;輸出電壓低于0.4v,都可認(rèn)為是低電平。輸入時(shí),輸入電壓大于2v,就可認(rèn)為是高電平;輸入電壓低于0.8v,即可認(rèn)為輸入的是低電平。需要注意的是:當(dāng)輸出電壓處于0.4v,2.4v區(qū)間時(shí),即電平不高也不低,電平高低不能確定,屬邏輯混亂。輸入電壓在0.8v,2.0v區(qū)間,電平高低也不能確定,同樣屬邏輯混亂。對(duì)于cmos電平,輸出電壓只要大于4.99v
45、,都可認(rèn)為是高電平;輸出電壓低于0.01v,都可認(rèn)為是低電平。當(dāng)輸入時(shí),輸入電壓大于3.5v,就可認(rèn)為是高電平;輸入電壓低于1.5v,即可認(rèn)為輸入的是低電平。51單片機(jī)系統(tǒng)屬于數(shù)字電路系統(tǒng),與其相關(guān)的電平大多是ttl和cmos電平。1.6數(shù)制及其轉(zhuǎn)換在單片機(jī)應(yīng)用系統(tǒng)中,常用的數(shù)制有十進(jìn)制、二進(jìn)制和十六進(jìn)制。十進(jìn)制數(shù)是我們最熟悉的一種數(shù)制,有0,1,2,3,4,5,6,7,8,9共十個(gè)元素,計(jì)數(shù)規(guī)則是:逢十進(jìn)一,借一當(dāng)十;類似的,二進(jìn)制就只有兩個(gè)元素:0和1,計(jì)數(shù)規(guī)則是:逢二進(jìn)一,借一當(dāng)二。例如:0+1=1,1+0=1,而1+1=10,此處10讀作“一零”或者“幺零”,不讀“十”,原因它不是十進(jìn)
46、制,而是二進(jìn)制,并且二進(jìn)制數(shù)10就等于十進(jìn)制數(shù)2。對(duì)于十六進(jìn)制,自然就有16個(gè)元素,即0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。其中的a代表十進(jìn)制數(shù)10,b代表十進(jìn)制數(shù)11,c代表十進(jìn)制數(shù)12,d代表十進(jìn)制數(shù)13,e代表十進(jìn)制數(shù)14,f代表十進(jìn)制數(shù)15。計(jì)數(shù)規(guī)則:逢十六進(jìn)一,借一當(dāng)十六。十進(jìn)制數(shù)015對(duì)應(yīng)的二進(jìn)制、十六進(jìn)制數(shù)如表1-3所示。表1-3 十進(jìn)制數(shù)015對(duì)應(yīng)的二進(jìn)制和十六進(jìn)制數(shù) 十進(jìn)制二進(jìn)制十六進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制0008100081119100192102101010a3113111011b41004121100c51015131101d611061411
47、10e71117151111f在單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程中,可以借助電腦windows中自帶的計(jì)算器,方便地實(shí)現(xiàn)數(shù)制的轉(zhuǎn)換或變換。計(jì)算器在windows系統(tǒng)的附件里,通過(guò)路徑【開(kāi)始】【程序】【附件】【計(jì)算器】就可以打開(kāi)。默認(rèn)狀態(tài)下的計(jì)算器是標(biāo)準(zhǔn)型的,如圖1-29所示,可以通過(guò)其【查看】菜單,選擇【科學(xué)型】,即可打開(kāi)如圖1-30所示科學(xué)型計(jì)算器窗口界面,在其中就可方便地進(jìn)行各類數(shù)制的相互轉(zhuǎn)換及常規(guī)運(yùn)算了。 圖1-29 標(biāo)準(zhǔn)型計(jì)算器窗口界面 圖1-30 科學(xué)型計(jì)算器窗口界面 1.7單片機(jī)c語(yǔ)言基礎(chǔ)1.7.1單片機(jī)c語(yǔ)言數(shù)據(jù)類型在c語(yǔ)言數(shù)據(jù)類型的基礎(chǔ)上,增加“位類型”,就構(gòu)成了單片機(jī)c語(yǔ)言的數(shù)據(jù)類型
48、,圖1-31所示為單片機(jī)c語(yǔ)言數(shù)據(jù)類型分類圖。表1-4為單片機(jī)c語(yǔ)言中常用數(shù)據(jù)類型名稱、長(zhǎng)度及取值范圍。圖1-31 單片機(jī)c語(yǔ)言基本數(shù)據(jù)類型分類表1-4 單片機(jī)c語(yǔ)言基本數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度取值范圍類型類型名bit(位)數(shù)byte(字節(jié))數(shù)位型位變量bit10,1字符型無(wú)符號(hào)字符型unsigned char810255(有符號(hào))字符型(signed) char81127128整型無(wú)符號(hào)整型unsigned int162065535(有符號(hào))整型int1623276832767長(zhǎng)整型無(wú)符號(hào)長(zhǎng)整型unsigned long32402321(有符號(hào))長(zhǎng)整型long324231(2311)浮點(diǎn)型單精度
49、浮點(diǎn)型float3243.410383.41038雙精度浮點(diǎn)型double6481.7103081.7103081.7.2 單片機(jī)c語(yǔ)言中的常量和變量1、常量和符號(hào)常量 在程序運(yùn)行過(guò)程中,其值不發(fā)生變化的量稱為常量。依據(jù)數(shù)據(jù)類型的不同,常量可分為不同類型。例如:a、m為字符常量;27、0、2為整型常量;3.14、2.34567為浮點(diǎn)型常量。 (1)整型常量 整型常量就是整型常數(shù)。在單片機(jī)c語(yǔ)言中,十進(jìn)制和十六進(jìn)制表示形式最為常見(jiàn)。例如:27、0、2為十進(jìn)制整型常量;0x25、0xcf、0x3ef5為十六進(jìn)制常量。需要注意的是:十六進(jìn)制常量必須以0x(數(shù)字零和小寫(xiě)字母x)打頭。(2)浮點(diǎn)型常量浮
50、點(diǎn)型數(shù)據(jù)就是我們熟知的實(shí)數(shù),浮點(diǎn)型常數(shù)就是實(shí)數(shù)常量。在c語(yǔ)言中一般有小數(shù)和指數(shù)兩種表示方式。例如:3.14、2.34567為小數(shù)形式的浮點(diǎn)型常量;3.14e2、2.34567e3為指數(shù)形式的浮點(diǎn)型常量。其中3.14e2相當(dāng)于3.14102,而2.34567e3相當(dāng)于2.34567103。(3)字符型常量在c語(yǔ)言中,字符常量是指用單撇號(hào)括(或引)起來(lái)的一個(gè)字符。例如:a、a、!、6為字符型常量,需要注意的是:a和a是兩個(gè)不同的字符常量,數(shù)字09用單撇號(hào)括起來(lái)也是字符常量,另外,單撇號(hào)是英文格式下的單撇號(hào)。字符常量的值是該字符相應(yīng)的ascii代碼的值(參見(jiàn)附錄a)。例如,a的ascii值為十進(jìn)制數(shù)
51、65(十六進(jìn)制的0x41);a的ascii值為十進(jìn)制數(shù)97(十六進(jìn)制的0x61);字符常量6的ascii碼值不是十進(jìn)制數(shù)6,而是十進(jìn)制數(shù)54。小技巧:字符常量0的ascii值是十進(jìn)制數(shù)48,加上數(shù)值6是54,剛好就是字符常量6的ascii碼值,所以字符常量6也可以用0+6表示。據(jù)此有結(jié)論:某個(gè)數(shù)字(09)對(duì)應(yīng)的ascii值,可以用字符常量0加上該數(shù)字得到。 (4)字符串常量 c語(yǔ)言中的字符串是由一對(duì)雙撇號(hào)括(或引)起來(lái)的字符序列。例如:”how are you?”、”china”、”a”、”123.456”都是字符串常量。注意:a和”a”是有本質(zhì)的差別:a是字符常量,而”a”是字符串常量,a在
52、計(jì)算機(jī)內(nèi)存中占一個(gè)字節(jié)的存儲(chǔ)空間,而”a”則占兩個(gè)字節(jié)的存儲(chǔ)空間(字符串結(jié)束標(biāo)志“0”占一個(gè)字節(jié))。2、變量變量是在程序運(yùn)行期間,其值可以改變的量。就本質(zhì)而言,變量代表內(nèi)存中的一個(gè)存儲(chǔ)單元,該存儲(chǔ)單元可以用來(lái)存放數(shù)據(jù),存放的數(shù)據(jù)就是該變量的值,而存儲(chǔ)單元的編號(hào)則稱為地址。任意一個(gè)變量都有兩個(gè)基本屬性變量值和變量名,變量名就是變量的名字,又稱為變量的標(biāo)識(shí)符,只有擁有名字的變量才方便被引用。(1)標(biāo)識(shí)符和變量名c語(yǔ)言中,給變量、符號(hào)常量、函數(shù)、數(shù)組、數(shù)據(jù)類型等對(duì)象命名的名字統(tǒng)稱為標(biāo)識(shí)符。c語(yǔ)言規(guī)定,標(biāo)識(shí)符只能由字母、數(shù)字和下劃線(“_”是下劃線,“”是減號(hào))3種字符組成,且第一個(gè)字符必須為字母或下
53、劃線,即數(shù)字不能打頭。變量名就是給變量起的名字,它是一種標(biāo)識(shí)符,理應(yīng)遵守有關(guān)標(biāo)識(shí)符的要求和規(guī)定。同時(shí),在給變量起名或命名時(shí),還應(yīng)盡量做到“見(jiàn)名知意”,即選取有含義的英文單詞(或其縮寫(xiě))做變量名。對(duì)于c語(yǔ)言本身已經(jīng)使用的專用名稱(稱為關(guān)鍵字),在給變量起名時(shí)應(yīng)該避免使用。(2)變量的聲明或定義c語(yǔ)言規(guī)定,所有的變量在引用或使用之前必須要先進(jìn)行聲明或是定義,即要求變量是“先定義,后使用”。聲明或定義變量的一般形式是:類型名變量序列;其中的表示空格,言下之意,類型名和變量序列之間至少要有一個(gè)空格;常見(jiàn)的類型名如表1-4中所列;變量序列的意思是,類型名后面可以是一個(gè)變量名,也可以是同類型的多個(gè)變量名,
54、多個(gè)變量名之間用逗號(hào)(,)分隔開(kāi);變量序列的最后是分號(hào)(;),表示這條語(yǔ)句結(jié)束(分號(hào)是c語(yǔ)言語(yǔ)句的結(jié)束符)。例如:聲明定義2個(gè)變量i和j為無(wú)符號(hào)整型變量: unsigned int i,j; 聲明定義2個(gè)變量ch1和ch2為字符型變量: char ch1,ch2;(3)給變量賦初值變量最初的值叫初始值,給變量一個(gè)初始值稱為“賦初值”??梢栽谧兞柯暶鞫x之后對(duì)其賦初值,也可以在聲明定義的同時(shí)賦初值。例1:先聲明定義2個(gè)變量i和j為無(wú)符號(hào)整型變量,再給i賦初值12,給j賦初值65535:unsigned int i,j;i=12;j=65535;例2:聲明定義2個(gè)變量i和j為無(wú)符號(hào)整型變量,同時(shí)給
55、i賦初值12,給j賦初值65535:unsigned int i=12,j=65535;1.7.3 c語(yǔ)言的運(yùn)算符單片機(jī)c語(yǔ)言的運(yùn)算符主要有算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、指針運(yùn)算符和位運(yùn)算符等,如表1-5所列。表1-5 單片機(jī)c語(yǔ)言常用運(yùn)算符運(yùn)算符范例說(shuō)明舉例算數(shù)運(yùn)算符+a+ba變量值加上b變量值a=5,b=3時(shí),a+b的值為8-a-ba變量值減去b變量值a=5,b=3時(shí),a-b的值為2*a*ba變量值乘以b變量值a=5,b=3時(shí),a*b的值為15a/ba變量值除以b變量值a=5,b=2時(shí),a/b的值為21%a%b對(duì)整型變量a以整型變量b為模求余 a=5,b=3時(shí),a%b的值為2關(guān)系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型城鎮(zhèn)化建設(shè)項(xiàng)目施工安全監(jiān)測(cè)合同
- 2025年度物流行業(yè)國(guó)際業(yè)務(wù)拓展承包合同
- 2025年度高性能混凝土制品加工與銷售合同
- 2025年口交液項(xiàng)目投資可行性研究分析報(bào)告
- 中國(guó)毛絨電熱水袋市場(chǎng)全景評(píng)估及投資規(guī)劃建議報(bào)告
- 黃葡萄干行業(yè)深度研究報(bào)告
- 2025年工副業(yè)承包企業(yè)合作經(jīng)營(yíng)合同
- 2025年度股權(quán)抵押擔(dān)保股權(quán)投資合同
- 中國(guó)聯(lián)通公司戰(zhàn)略報(bào)告第一部分新知助
- 中國(guó)電池測(cè)試系統(tǒng)項(xiàng)目投資可行性研究報(bào)告
- 海洋工程設(shè)備保溫保冷方案
- 主干光纜、支線光纜線路中斷應(yīng)急預(yù)案
- 跨學(xué)科主題學(xué)習(xí)的思考與策略
- 文藝演出排練指導(dǎo)服務(wù)合同
- 醫(yī)院消防安全培訓(xùn)課件(完美版)
- 行政法-9行政確認(rèn)
- 人教版(2024新版)一年級(jí)上冊(cè)數(shù)學(xué)第一單元《數(shù)學(xué)游戲》單元整體教學(xué)設(shè)計(jì)
- 防洪防汛安全知識(shí)教育課件
- 一年級(jí)科學(xué)石頭
- 新起點(diǎn)英語(yǔ)二年級(jí)下冊(cè)全冊(cè)教案
- 《紅星照耀中國(guó)》整本書(shū)閱讀教學(xué)設(shè)計(jì)-統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論