




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
汽車單片機(jī)應(yīng)用技術(shù)——項目一汽車電控單元(ECU)認(rèn)知全套PPT課件本章內(nèi)容ECU的定義及主要廠家ECU的組成ECU的基本結(jié)構(gòu)體系傳統(tǒng)汽車ECU與電動汽車ECU的異同點(diǎn)ECU的未來發(fā)展汽車上的ECU應(yīng)用舉例一、ECU的定義及主要廠家
但是隨著汽車電子的迅速發(fā)展,ECU的定義也發(fā)生了巨大的變化,變成了electroniccontrolunit即電子控制單元,泛指汽車上所有電子控制系統(tǒng),可以是轉(zhuǎn)向ECU,也可以是調(diào)速ECU,空調(diào)ECU等,而原來的發(fā)動機(jī)ECU,有很多的公司稱之為EMS(enginemanagementsystem)。ECU原來指的是enginecontrolunit,即發(fā)動機(jī)控制單元,特指電噴發(fā)動機(jī)的電子控制系統(tǒng)。目前博世、德爾福、電裝、中國的VDO等都是汽車ECU行業(yè)的領(lǐng)導(dǎo)者。二、ECU的組成二、ECU的組成三、ECU的基本結(jié)構(gòu)體系汽車電子控制系統(tǒng):硬件有電子控制單元(ECU—ElectronicControlUnit)及其接口、執(zhí)行機(jī)構(gòu)、傳感器、顯示機(jī)構(gòu)等;軟件存儲在ECU中,支配電子控制系統(tǒng)完成實時測控功能。大部分ECU的電路結(jié)構(gòu)大同小異,控制功能的變化則依賴于軟件及輸入輸出模塊的變化,隨控制系統(tǒng)所完成任務(wù)的不同而不同。電源電路輸出處理電路微處理器輸入處理電路ECU的基本體系結(jié)構(gòu):三、ECU的基本結(jié)構(gòu)體系輸入處理電路通過模/數(shù)轉(zhuǎn)換器將輸入的非數(shù)字信號轉(zhuǎn)換為數(shù)字信號,提供給微處理器??刂葡到y(tǒng)要求模數(shù)信號轉(zhuǎn)換具有較高的分辨率和精度(>10位)。為了保證測控系統(tǒng)的實時性,采樣間隔一般要求小于4ms。數(shù)字信號需要通過電平轉(zhuǎn)換,得到計算機(jī)接受的信號。對超過電源電壓、電壓在正負(fù)之間變化、帶有較高的振蕩或噪聲、帶有波動電壓等輸入信號,輸入電路也對其進(jìn)行轉(zhuǎn)換處理。輸入處理電路:三、ECU的基本結(jié)構(gòu)體系微處理器:微處理器對輸入信號進(jìn)行運(yùn)算處理,并控制所需的輸出值,按要求適時地向執(zhí)行機(jī)構(gòu)發(fā)送控制信號。過去微處理器多數(shù)是8位和l6位的,也有少數(shù)采用32位的?,F(xiàn)在多用16位和32位機(jī)。三、ECU的基本結(jié)構(gòu)體系輸出處理電路:微處理器輸出的信號往往用作控制電磁閥、指示燈、步進(jìn)電機(jī)等。微處理器輸出信號功率小,使用+5v的電壓,汽車上執(zhí)行機(jī)構(gòu)的電源大多數(shù)是蓄電池,需要將微處理器的控制信號通過輸出處理電路處理后再驅(qū)動執(zhí)行機(jī)構(gòu)。三、ECU的基本結(jié)構(gòu)體系電源電路:
ECU一般帶有電池和內(nèi)置電源電路,以保證微處理器及其接口電路工作在+5v的電壓下。即使在發(fā)動機(jī)啟動工況等使汽車蓄電池電壓有較大波動時,也能提供+5v的穩(wěn)定電壓,從而保證系統(tǒng)的正常工作。三、ECU的基本結(jié)構(gòu)體系
在軟件方面,ECU的控制程序包括以下幾個方面:計算、控制、監(jiān)測與診斷、管理、監(jiān)控控制器D/A轉(zhuǎn)換器執(zhí)行機(jī)構(gòu)被控對象反饋微型計算機(jī)給定值被控參數(shù)圖1_3控制模式四、傳統(tǒng)汽車ECU與電動汽車ECU的異同點(diǎn)
電動汽車相對于傳統(tǒng)車,多了動力電池,相應(yīng)的多了電池管理系統(tǒng)、電機(jī)控制器、車載充電機(jī)、DC/DC轉(zhuǎn)換器等部件,因此ECU的控制功能也有一些不同,電動汽車的ECU控制與傳統(tǒng)車相比有以下不同:電機(jī)控制動力電池管理系統(tǒng)充電控制混合動力汽車油、電驅(qū)動控制電動空調(diào)壓縮機(jī)控制PTC加熱控制線控制動、轉(zhuǎn)向控制五、ECU的未來發(fā)展
隨著汽車電控技術(shù)及車載網(wǎng)絡(luò)技術(shù)的發(fā)展,集中綜合控制、總線技術(shù)、汽車智能控制是未來汽車電子控制技術(shù)重點(diǎn)發(fā)展方向。六、汽車上的ECU應(yīng)用舉例大眾車系發(fā)動機(jī)電控單元(ECU)J623是發(fā)動機(jī)的綜合控制裝置,它的功用是根據(jù)自身存儲的程序?qū)Πl(fā)動機(jī)各傳感器輸入的各種信息進(jìn)行運(yùn)算、處理、判斷,然后輸出指令,控制有關(guān)執(zhí)行器動作,達(dá)到快速、準(zhǔn)確、自動控制發(fā)動機(jī)工作的目的。六、汽車上的ECU應(yīng)用舉例(2)A/D轉(zhuǎn)換器(模/數(shù)轉(zhuǎn)換器)
從傳感器送出的信號有相當(dāng)一部分是模擬信號,經(jīng)輸入回路處理后,雖已變成相應(yīng)的電壓信號,但這些信號微機(jī)還不能直接處理,需經(jīng)過相應(yīng)的A/D轉(zhuǎn)換器,將其模擬信號轉(zhuǎn)換成數(shù)字信號后再輸入微機(jī)。1、J623的構(gòu)成(1)輸入回路
接收從傳感器來的輸入信號,對輸入信號進(jìn)行預(yù)處理,一般是去除雜波和把正弦變?yōu)榫匦尾ê?,再轉(zhuǎn)換成電壓信號。與J623連接的傳感器有離合器溫度傳感器、換擋執(zhí)行器行程傳感器、發(fā)動機(jī)水溫傳感器、曲軸位置傳感器、油門踏板位置傳感器、氧傳感器、機(jī)油壓力開關(guān)爆震傳感器等。六、汽車上的ECU應(yīng)用舉例(3)微型計算機(jī)(單片機(jī))
微型計算機(jī)(單片機(jī))是發(fā)動機(jī)電子控制的中心,它能根據(jù)需要把各種傳感器送來的信號,用內(nèi)存程序和數(shù)據(jù)進(jìn)行運(yùn)算處理,并把處理結(jié)果送往輸出回路。它主要由中央處理器(CPU)、存儲器、輸入/輸出接口(I/O)等組成。(4)輸出回路
它是微機(jī)(單片機(jī))與執(zhí)行器之間建立聯(lián)系的一部分裝置,它將微機(jī)(單片機(jī))發(fā)出的指令轉(zhuǎn)變成控制信號來驅(qū)動執(zhí)行器工作。輸出回路一般起著控制信號的生成和放大等功能。六、汽車上的ECU應(yīng)用舉例2、工作過程
當(dāng)發(fā)動機(jī)起動時,電控單元進(jìn)入工作狀態(tài),某些程序和步驟從ROM中取出,進(jìn)入CPU。通過CPU的控制,一個個指令逐個地進(jìn)行循環(huán)。執(zhí)行程序中所需的發(fā)動機(jī)信息,來自各個傳感器。從傳感器來的信號,首先進(jìn)入輸入回路,對其信號進(jìn)行處理。
如是數(shù)字信號,根據(jù)CPU的安排,經(jīng)I/O接口,直接進(jìn)入微機(jī)(單片機(jī))。
如是模擬信號,還要經(jīng)過A/D轉(zhuǎn)換器,轉(zhuǎn)換成數(shù)字信號后,才能經(jīng)I/O接口進(jìn)入微機(jī)(單片機(jī))。
大多數(shù)信息,暫存在RAM內(nèi),根據(jù)指令再從RAM送至CPU。下一步是將存儲器ROM中參考數(shù)據(jù)引入CPU,使輸入傳感器的信息與之比較。對來自有關(guān)傳感器的每個信號,依次取樣,并與參考數(shù)據(jù)進(jìn)行比較。CPU對這些數(shù)據(jù)比較運(yùn)算后,作出決定并發(fā)出輸出指令信號,經(jīng)I/O接口進(jìn)行放大,必要的信號還經(jīng)D/A轉(zhuǎn)換器變成模擬信號,最后經(jīng)輸出回路去控制執(zhí)行器動作。六、汽車上的ECU應(yīng)用舉例3、設(shè)計原則系統(tǒng)具有較好的抗振和抗電磁干擾能力,能在各種環(huán)境溫度下可靠工作;電路采用模塊化設(shè)計方法;采用低功耗高性能的元器件、簡化電路、降低功耗、提高控制精度;采用車上低壓電池供電,選用先進(jìn)的開關(guān)電源;ECU硬件系統(tǒng)安裝調(diào)試方便,便于維修,質(zhì)量輕;采用標(biāo)準(zhǔn)化開放式設(shè)計方法,便于系統(tǒng)的擴(kuò)展、移植和修改;在軟件設(shè)計中,采用層狀結(jié)構(gòu)體系和模塊化技術(shù)便于修改和擴(kuò)展。1、ECU的定義及主要廠家2、ECU的基本組成
輸入處理電路、微處理器(單片機(jī))、輸出處理電路、系統(tǒng)通信電路及電源電路3、ECU的基本結(jié)構(gòu)體系
硬件、軟件4、傳統(tǒng)汽車ECU與電動汽車ECU的異同點(diǎn)5、ECU的未來發(fā)展6、汽車上的ECU應(yīng)用舉例
單片機(jī)應(yīng)用技術(shù)——項目二汽車轉(zhuǎn)向燈控制本章內(nèi)容單片機(jī)概述單片機(jī)的學(xué)習(xí)軟件項目實施——汽車轉(zhuǎn)向燈控制一、單片機(jī)概述1、單片機(jī)的定義
單片微型計算機(jī)(SingleChipMicrocomputer),簡稱單片機(jī)。它的各種功能部件,包括CPU(CentralProcessingUnit)、存儲器(memory)、基本輸入/輸出(Input/Output,簡稱I/O)接口電路、定時/計數(shù)器和中斷系統(tǒng)等,采用超大規(guī)模集成電路技術(shù)將這些功能部件都制作在一塊集成芯片上,構(gòu)成一個完整的微型計算機(jī)。
由于它的結(jié)構(gòu)與指令功能都是按照工業(yè)控制要求設(shè)計的,故又稱為微控制器(Micro-ControllerUnit,簡稱MCU)。圖2_1單片機(jī)實物一、單片機(jī)概述圖2_2單片機(jī)的基本功能部件結(jié)構(gòu)簡單控制功能強(qiáng)可靠性高體積小價格低一、單片機(jī)概述圖2_3單片機(jī)應(yīng)用系統(tǒng)的組成2、單片機(jī)應(yīng)用系統(tǒng)單片機(jī)應(yīng)用系統(tǒng)由硬件和軟件(控制程序)兩部分組成。硬件是應(yīng)用系統(tǒng)的基礎(chǔ),軟件(控制程序)是在硬件的基礎(chǔ)上對其資源進(jìn)行合理調(diào)配和使用,控制其按照一定的順序完成各種時序、運(yùn)算或動作,從而完成應(yīng)用系統(tǒng)所要求的任務(wù)。二者相互依賴,缺一不可。一、單片機(jī)概述2、單片機(jī)應(yīng)用系統(tǒng)圖2_4單片機(jī)應(yīng)用系統(tǒng)的開發(fā)實驗板一、單片機(jī)概述
單片機(jī)現(xiàn)已滲透到我們?nèi)粘I钪械母鱾€領(lǐng)域,小到家用電器、儀器儀表,大到醫(yī)療器械、航空航天,無不存在著單片機(jī)的身影。一旦在某種產(chǎn)品上添加了單片機(jī),便使得原產(chǎn)品向互聯(lián)網(wǎng)靠攏,獲得了“智能型”的前綴。3、單片機(jī)的應(yīng)用一、單片機(jī)概述
汽車上用的單片機(jī)一般都是車規(guī)級別的,汽車上用的單片機(jī)一般比較常見的公司有飛思卡爾(NXP)、恩智浦、瑞薩,英飛凌,TI、ST等。
目前車規(guī)單片機(jī)份額最大的應(yīng)該是飛思卡爾(NXP),恩智浦收購了飛思卡爾后其8位的S08系列單片機(jī),16位的S12單片機(jī),32位的PowerPC的MPC系列單片機(jī),32位基于Arm架構(gòu)的S32系列單片機(jī)都是車規(guī)級的。
英飛凌的8位的XC800系列,16位單片機(jī)C166系列等等也是車規(guī)級的。4、車用單片機(jī)一、單片機(jī)概述MCS-51單片機(jī)是指美國lntel公司生產(chǎn)的內(nèi)核兼容的一系列單片機(jī)的總稱?!癕CS-51”也代表這一系列單片機(jī)的內(nèi)核。51單片機(jī)是對目前所有兼容MCS-51指令系統(tǒng)的單片機(jī)的統(tǒng)稱,包括Intel公司MCS-51系列單片機(jī)以及其它廠商生產(chǎn)的兼容MCS-51內(nèi)核的增強(qiáng)型8051單片機(jī)。只要和MCS-51內(nèi)核兼容的單片機(jī)都叫做51單片機(jī)。5、51單片機(jī)◆目前8位單片機(jī)仍是單片機(jī)的主流機(jī)型;◆單片機(jī)的發(fā)展經(jīng)歷了由4位機(jī)到8位機(jī),再到16位機(jī)的發(fā)展過程二、單片機(jī)學(xué)習(xí)軟件單片機(jī)應(yīng)用系統(tǒng)的開發(fā)流程是:
設(shè)計電路圖——制作電路板——控制程序設(shè)計
——硬軟件聯(lián)調(diào)——程序下載——產(chǎn)品測試。Protues——仿真;KeilC51——程序開發(fā);STC-ISP——下載編程燒錄常用的學(xué)習(xí)軟件:二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件Proteus軟件是英國著名的LabCenterElectronics公司出版的EDA工具軟件(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺。二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件Proteus軟件是英國著名的LabCenterElectronics公司出版的EDA工具軟件(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺。二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件①運(yùn)行ISIS7Professional,雙擊藍(lán)色的isis圖標(biāo),出現(xiàn)下面的窗口界面以單片機(jī)點(diǎn)亮一個發(fā)光二極管為例:二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件②選擇元件把元件添加到元件列表中:單擊元件選擇按鈕“P”(pick),彈出元件選擇窗口:
在左上角的對話框“關(guān)鍵字”中輸入我們需要的元件名稱:二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件在出現(xiàn)的搜索結(jié)果中雙擊需要的元件,該元件便會添加到主窗口左側(cè)的元件列表區(qū):二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件找到所需要的元件并把它們添加到元件區(qū)二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件③繪制電路圖a.選擇元件
二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件依次將各個元件放置到繪圖編輯窗口的合適位置:二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件繪制電路圖時常用的操作:放置元件到繪圖區(qū)
刪除元件
移動元件
旋轉(zhuǎn)元件
二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件
放大/縮小電路視圖可直接滾動鼠標(biāo)滾輪,視圖會以鼠標(biāo)指針為中心進(jìn)行放大/縮小。繪制電路圖時常用的操作:二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件b.連線
依次連接好所有線路:二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件c.添加電源和地選擇模型選擇工具框中的圖標(biāo)。
二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件d.編輯元件,設(shè)置各元件參數(shù)
二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件e.導(dǎo)入程序二、單片機(jī)學(xué)習(xí)軟件1、Protues軟件f.仿真調(diào)試程序開始執(zhí)行。發(fā)光二極管亮了。在運(yùn)行時,電路中輸出的高電平用紅色表示,低電平用藍(lán)色表示。高電平低電平二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件Keil是一個公司的名字。是由德國慕尼黑的KeilElektronikGmbH和美國德克薩斯的KeilSoftware組成。Keil軟件是目前最流行的開發(fā)51系列單片機(jī)的軟件。支持c語言,匯編語言。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件①打開keil4軟件
下面用C語言編寫一個簡單的程序來介紹如何使用keil4,如何建立一個工程。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件a.建立一個工程。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件b.選擇單片機(jī)型號。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件建立好工程后的主界面:
二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件c.建立程序代碼文件。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件點(diǎn)擊工具欄中圖標(biāo)
二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件d.添加代碼文件到工程中。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件
二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件e.編輯,編譯
。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件單擊
〖Output〗
選項,選中此項選中此項后編譯時才能生成程序代碼.hex文件供我們下載到單片機(jī)里。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件
點(diǎn)擊編譯按鈕進(jìn)行編譯。二、單片機(jī)學(xué)習(xí)軟件2、KeilC51軟件總結(jié)建立一個工程步驟:(1)新建一個工程,取名保存。(2)在此工程下新建一個編輯代碼文件,保存為.c文檔(用匯編編寫保存為.asm)。(3)添加上步保存的編輯文件到工程中。(4)在.c(或者.asm)文件中編寫程序,并檢查無誤后準(zhǔn)備編譯。(5)單擊
設(shè)置成編譯輸出.hex文件(第一次編譯新工程文件需要設(shè)置此項,以后不需要設(shè)置)。(6)點(diǎn)擊編譯按鈕進(jìn)行編譯。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件STC-ISP是一款單片機(jī)下載編程燒錄軟件,是針對STC系列單片機(jī)而設(shè)計的,可下載STC89系列、12C2052系列和12C5410等系列的STC單片機(jī),使用簡便,現(xiàn)已被廣泛使用。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件打開STC-ISP,在MCUType欄目下選中單片機(jī),如STC89C52RC。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件(2)根據(jù)您的數(shù)據(jù)下載線連接情況選中COM端口,波特率一般保持默認(rèn),如果遇到下載問題,可以適當(dāng)下調(diào)一些,按圖示選中各項。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件(3)先確認(rèn)硬件連接正確,按如圖點(diǎn)擊“打開文件”并在對話框內(nèi)找到要下載的HEX文件。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件(4)按圖選中兩個條件項,這樣可以使您在每次編譯KEIL時HEX代碼能自動加載到STC-ISP,點(diǎn)擊“Download/下載”。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件(5)手動按下電源開關(guān)便即可把可執(zhí)行文件HEX寫入到單片機(jī)內(nèi)。二、單片機(jī)學(xué)習(xí)軟件3、STC—ISP軟件(6)圖示程序?qū)懭胪戤?,目?biāo)板開始運(yùn)行程序結(jié)果。1、單片機(jī)概述
單片機(jī)的定義、單片機(jī)的應(yīng)用系統(tǒng)、單片機(jī)的應(yīng)用、車用單片機(jī)、51單片機(jī)2、單片機(jī)的學(xué)習(xí)軟件
Protues、KeilC51、STC—ISP
單片機(jī)應(yīng)用技術(shù)——項目三汽車電動車窗玻璃升降器控制本章內(nèi)容單片機(jī)的內(nèi)部結(jié)構(gòu)8051的信號引腳單片機(jī)最小系統(tǒng)電路51單片機(jī)的存儲器結(jié)構(gòu)單片機(jī)并行I/O端口項目實施——汽車電動車窗玻璃升降器控制一、單片機(jī)內(nèi)部結(jié)構(gòu)中央處理器CPU:8位,運(yùn)算和控制功能內(nèi)部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。并行I/O口:4個8位的I/O口P0、P1、P2、P3。定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。串行口:一個全雙工串行口。中斷控制系統(tǒng):5個中斷源(外中斷2個,定時/計數(shù)中斷2個,串行中斷1個)時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZP3口線的第二功能VCCVSSXTAL2
XTAL1RSTP0.0
P0.1
P0.2P0.3P0.4P0.5P0.6P0.7P1.0
P1.1
P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0
P3.1
P3.2P3.3P3.4P3.5P3.6P3.72、振蕩電路:XTAL1、XTAL23、復(fù)位引腳:RST7、并行口:P0、P1、P2、P36、ALE:地址鎖存控制信號1、電源線:VCC(+5V)、VSS(地)EAPSEN4、EA:訪問程序存儲控制信號5、PSEN:外部ROM讀選通信號RXD/
TXD/
INT0/INT1/
T0/
T1/
WR/
RD/1
2
3
4
5
6
7
8
9
10111213141516171819
2040
39
38
37
36
35
34
33
32
313029282726252424222180318051875189C51二、8051的信號引腳P3口線的第二功能VCCVSSXTAL2
XTAL1RSTP0.0
P0.1
P0.2P0.3P0.4P0.5P0.6P0.7P1.0
P1.1
P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0
P3.1
P3.2P3.3P3.4P3.5P3.6P3.7EAPSENRXD/
TXD/
INT0/INT1/
T0/
T1/
WR/
RD/1
2
3
4
5
6
7
8
9
10111213141516171819
2040
39
38
37
36
35
34
33
32
313029282726252424222180318051875189C51二、8051的信號引腳引腳第二功能P3.0RXD(串行數(shù)據(jù)接受端)P3.1TXD(串行數(shù)據(jù)發(fā)送端)P3.2P3.3P3.4T0(定時/計數(shù)器T0的外部計數(shù)脈沖輸入端)P3.5T1(定時/計數(shù)器T1的外部計數(shù)脈沖輸入端)P3.6P3.7三、單片機(jī)最小系統(tǒng)電路1、單片機(jī)時鐘電路
單片機(jī)CPU的工作過程就是執(zhí)行用戶程序,即不斷的取指令和執(zhí)行指令,發(fā)出各種控制信號指揮各部件協(xié)調(diào)工作,完成既定的任務(wù)。取指令和執(zhí)行指令都是在時鐘脈沖控制下有序進(jìn)行的。時鐘頻率直接影響單片機(jī)的工作速度,時鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。圖3_5時鐘脈沖信號三、單片機(jī)的最小系統(tǒng)1、單片機(jī)時鐘電路
(1)時鐘信號的產(chǎn)生單片機(jī)的時鐘信號由外部振蕩和內(nèi)部振蕩兩種方式取得。(a)內(nèi)部時鐘方式
在8051單片機(jī)內(nèi)部有一高增益的反向放大器,只要在單片機(jī)的XTAL1和XTAL2引腳外接石英晶體(簡稱晶振),就構(gòu)成了自激振蕩器。三、單片機(jī)的最小系統(tǒng)(b)外部時鐘方式1、單片機(jī)時鐘電路
(1)時鐘信號的產(chǎn)生
在由多片單片機(jī)組成的系統(tǒng)中,為了各單片機(jī)之間時鐘信號的同步,應(yīng)當(dāng)引入唯一的公用外部脈沖信號作為各單片機(jī)的振蕩脈沖。這時外部的脈沖信號是經(jīng)XTAL2引腳注入。三、單片機(jī)的最小系統(tǒng)1、單片機(jī)時鐘電路
(2)時序
時鐘電路用于產(chǎn)生單片機(jī)工作所需要的時鐘信號,而時序所研究的是指令執(zhí)行中各信號之間的相互關(guān)系。單片機(jī)本身就如一個復(fù)雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴(yán)格地按時序進(jìn)行工作。時序是用定時單位來說明的。MCS-51的時序定時單位共有4個,從小到大依次是:節(jié)拍、狀態(tài)、機(jī)器周期和指令周期。三、單片機(jī)的最小系統(tǒng)(2)時序節(jié)拍(P):把振蕩脈沖的周期定義為節(jié)拍,也就是晶振的振蕩頻率fosc。狀態(tài)(S):振蕩脈沖fosc經(jīng)過二分頻后,
就是單片機(jī)時鐘信號的周期,
定義為狀態(tài),一個狀態(tài)包含兩個節(jié)拍,其前半周期對應(yīng)的節(jié)拍叫P1,后半周期
對應(yīng)的節(jié)拍叫P2。機(jī)器周期:
MCS-51系列單片機(jī)采用定時控制方式,有固定的機(jī)器周期。規(guī)定一個機(jī)器周期
的寬度為6個狀態(tài),即12個振蕩脈沖周期,因此機(jī)器周期就是振蕩脈沖的十二
分頻。三、單片機(jī)的最小系統(tǒng)指令周期:指令周期是最大的時序定時單位,執(zhí)行一條指令所需要的時間稱為指令周期。它一般由若干個機(jī)器周期組成。不同的指令,所需要的機(jī)器周期數(shù)也不相同。通常,包含一個機(jī)器周期的指令稱為單周期指令,包含二個機(jī)器周期的指令稱為雙周期指令。指令的運(yùn)算速度與指令所包含的機(jī)器周期有關(guān),機(jī)器周期數(shù)越少的指令執(zhí)行速度越快。MCS-51單片機(jī)通??梢苑譃閱沃芷谥噶?、雙周期指令和四周期指令等三種。四周期指令只有乘法和除法指令兩條,其余均為單周期和雙周期指令。三、單片機(jī)的最小系統(tǒng)指令周期:
單片機(jī)執(zhí)行任何一條指令時都可以分為取指令階段和執(zhí)行指令階段。ALE引腳上出現(xiàn)的信號是周期性的,在每個機(jī)器周期內(nèi)兩次出現(xiàn)高電平。第一次出現(xiàn)在S1P2和S2P1期間,第二次出現(xiàn)在S4P2和S5P1期間。ALE信號每出現(xiàn)一次,CPU就進(jìn)行一次取指操作,但由于不同指令的字節(jié)數(shù)和機(jī)器周期數(shù)不同,因此取指令操作也隨指令不同而有小的差異。三、單片機(jī)的最小系統(tǒng)2、單片機(jī)復(fù)位電路
(a)上電復(fù)位
(b)按鍵復(fù)位單片機(jī)復(fù)位條件:必須使RST引腳持續(xù)2微秒高電平(外部時鐘12MHz)三、單片機(jī)的最小系統(tǒng)表3_2復(fù)位后單片機(jī)內(nèi)部的各專用寄存器的狀態(tài)1
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15EPROM27641
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15EPROM27641
2
3
4
5
6
7
8
9
10111213141516171819
2040
39
38
37
36
35
34
33
32
31302928272625242422211
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15RAM62641
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15RAM6264
存
儲
器80318751805189C51片內(nèi)RAM片內(nèi)ROM256B(字節(jié))4K四、51單片機(jī)的存儲器結(jié)構(gòu)存儲器是單片機(jī)的又一個重要組成部分,主要功能是存儲程序和各種數(shù)據(jù)。存儲器由若干個存儲單元構(gòu)成,即存儲器的存儲容量;每個存儲單元對應(yīng)一個地址,用兩位~四位16進(jìn)制數(shù)表示,即存儲器的地址;存儲器中每個存儲單元可存放一個八位二進(jìn)制信息,通常用兩位16進(jìn)制數(shù)來表示,這就是存儲器的內(nèi)容。四、51單片機(jī)的存儲器結(jié)構(gòu)
1、數(shù)據(jù)存儲器
數(shù)據(jù)存儲器RAM(RandomAccessMemory),即可隨機(jī)讀寫存儲器。它用于存放程序運(yùn)行期間的中間數(shù)據(jù),可隨時進(jìn)行讀寫操作。系統(tǒng)掉電后,數(shù)據(jù)會全部丟失。0000HFFFFH(64K)內(nèi)部外部數(shù)據(jù)存儲器00HFFH7FH80H(高128B)(低128B)RAM專用
寄存器00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)內(nèi)部RAM存儲器
11第3區(qū)18H~1FH
01第1區(qū)08H~0FHRS1RS0寄存器區(qū)片內(nèi)RAM地址
00第0區(qū)00H~07H10第2區(qū)10H~17H工作寄存器區(qū)選擇位RS0、RS1四、51單片機(jī)的存儲器結(jié)構(gòu)
單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07
MSB
位地址
LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位尋址區(qū)位地址表注意:一個單元地址對應(yīng)有8個位地址
MSB——MostSignificantBit(最高有效位)LSB——LeastSignificantBit(最低有效位)四、51單片機(jī)的存儲器結(jié)構(gòu)
高128個單元☆離散分布有21個特殊功能寄存器SFR。☆
11個可以進(jìn)行位尋址?!钐貏e提示:對SFR只能使用直接尋址方式,書寫時可使用寄存器符號,也可用寄存器單元地址。四、51單片機(jī)的存儲器結(jié)構(gòu)
1)程序計數(shù)器(PC-ProgramCounter)PC是一個16位的計數(shù)器,它總是存放著下一個要取的指令的16位存儲單元地址,它的作用是控制程序的執(zhí)行順序。其內(nèi)容為將要執(zhí)行指令的地址,尋址范圍達(dá)64KB,PC有自動加1功能:從而實現(xiàn)程序的順序執(zhí)行。PC沒有地址,是不可尋址的。2)與運(yùn)算器相關(guān)的寄存器(3個)①累加器(ACC-Accumulator)。累加器為8位寄存器,是最常用的專用寄存器,功能較多,地位重要。它既可用于存放操作數(shù),也可用來存放運(yùn)算的中間結(jié)果。MCS-51單片機(jī)中大部分單操作數(shù)指令的操作數(shù)就取自累加器,許多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。四、51單片機(jī)的存儲器結(jié)構(gòu)
②B寄存器。B寄存器是一個8位寄存器,主要用于乘除運(yùn)算。乘法運(yùn)算時,B是乘數(shù)。乘法操作后,乘積的高8位存于B中,除法運(yùn)算時,B是除數(shù)。除法操作后,余數(shù)存于B中。此外,B寄存器也可作為一般數(shù)據(jù)寄存器使用。③程序狀態(tài)字(PSW-ProgramStatusWord)。程序狀態(tài)字內(nèi)部含有程序在運(yùn)行時的相關(guān)信息,字節(jié)地址D0H,可以進(jìn)行位尋址。表3_7PSW程序狀態(tài)字四、51單片機(jī)的存儲器結(jié)構(gòu)
3)與指針相關(guān)的寄存器(2個)①數(shù)據(jù)指針(DPTR)。數(shù)據(jù)指針為16位寄存器,它是MCS-51中一個16位寄存器。編程時,DPTR既可以按16位寄存器使用,也可以按兩個8位寄存器分開使用,即:DPTR高位字節(jié):DPH、DPTR低位字節(jié):DPL。②堆棧指針(SP-StackPointer)。堆棧是一個特殊的存儲區(qū),用來暫存數(shù)據(jù)和地址,它是按“先進(jìn)后出”的原則存取數(shù)據(jù)的。堆棧共有兩種操作:進(jìn)棧和出棧。四、51單片機(jī)的存儲器結(jié)構(gòu)
4)與接口相關(guān)的寄存器(7個)①并行1/O接口P0/P1/P2/P3,均為8位。通過對這4個寄存器的讀和寫,可以
實現(xiàn)數(shù)據(jù)從相應(yīng)接口的輸入和輸出。②串行接口數(shù)據(jù)緩沖器SBUF。③串行接口控制寄存器SCON。④串行通信波特率倍增寄存器PCON(一些位還與電源控制相關(guān),所以又稱為電
源控制寄存器)。四、51單片機(jī)的存儲器結(jié)構(gòu)
5)與中斷相關(guān)的寄存器(2個)
①中斷允許控制寄存器IE。
②中斷優(yōu)先級控制寄存器IP。6)與定時/計數(shù)器相關(guān)的寄存器(6個)
①定時/計數(shù)器TO的兩個8位計數(shù)初值寄存器THO和TLO,它們可以構(gòu)成16位的計數(shù)器,THO存放高8位,TLO存放低8位。
②定時/計數(shù)器T1的兩個8位計數(shù)初值寄存器TH1和TL1,它們可以構(gòu)成16位的計數(shù)器,TH1存放高8位,TL1存放低8位。
③定時/計數(shù)器的工作方式寄存器TMOD。
④定時/計數(shù)器的控制寄存器TCON。四、51單片機(jī)的存儲器結(jié)構(gòu)
在單片機(jī)的C語言程序設(shè)計中,可以通過關(guān)鍵字sfr來定義所有特殊功能寄存器,從而在程序中直接訪問它們,例如:
sfrP1=0x90;//特殊功能寄存器P1的地址是90H,對應(yīng)P1口的8個//I/O引腳在程序中就可以直接使用P1這個特殊功能//寄存器了,下面語句是合法的:
P1=0x00;//將P1口的8位I/O口全部清0
C語言中,還可以通過關(guān)鍵字sbit來定義特殊功能寄存器中的可尋址位,例如采用下面語句定義P1口的第0位:
sbitP1_0=P1^0;通常情況下,這些特殊功能寄存器已經(jīng)在頭文件reg51.h中定義了,只要在程序中包含了該頭文件,就可以直接使用已定義的特殊功能寄存器。如果沒有頭文件reg51.h,或者該文件中只定義了部分特殊功能寄存器和位,用戶也可以在程序中自行定義。四、51單片機(jī)的存儲器結(jié)構(gòu)
2、程序存儲器
程序存儲器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位...0FFFH0FFEHEA=1EA=0程序存儲器資源分布中斷入口地址
程序存儲器ROM(ReadOnlyMemory),即只讀存儲器,其特點(diǎn)是在程序正常運(yùn)行時,CPU對ROM存儲器只能進(jìn)行讀操作。適合存放系統(tǒng)程序、應(yīng)用程序及表格常數(shù)等。系統(tǒng)掉電后,數(shù)據(jù)會全部丟失。四、51單片機(jī)的存儲器結(jié)構(gòu)
2、程序存儲器
表3_8C51編譯器支持的存儲器類型五、單片機(jī)并行I/O端口
1、并行I/O端口的電路結(jié)構(gòu)
MCS-51系列單片機(jī)共有四個8位并行I/O口,分別用P0、P1、P2、P3表示。每個I/O口既可以按位操作使用單個引腳,也可以按字節(jié)操作使用8個引腳。五、單片機(jī)并行I/O端口
3、作為輸出端口使用
P0口作為輸出端口使用時,輸出電路是漏極開路電路,必須外接上拉電阻(一般為4.7k或10k)才能有高電平輸出。P1、P2和P3口作為輸出端口使用時,無須外接上拉電阻。五、單片機(jī)并行I/O端口
2、作為輸入端口使用
4個并行I/O端口P0~P3作為輸入端口使用時,應(yīng)區(qū)分讀引腳和讀端口。所謂讀引腳,就是讀芯片引腳的狀態(tài),把端口引腳上的數(shù)據(jù)從緩沖器通過內(nèi)部總線讀進(jìn)來。讀引腳時,必須先向電路中的鎖存器寫入“1”。讀端口是指讀鎖存器的狀態(tài)。讀端口是為了適應(yīng)對I/O端口進(jìn)行“讀—修改—寫”操作語句的需要。P1、P2和P3的內(nèi)部均有上拉電阻器,P0則為漏極輸出,沒有內(nèi)部上拉電阻器,每一只端口都能獨(dú)立作為輸入端口或輸出端口用,但是想作為輸入端口使用時,必須先在該口寫入1,使輸出驅(qū)動FET截止。MCS-51的所有端口在復(fù)位(RESET)后都會自動被寫入1。輸入功能時,引腳的輸入信號是經(jīng)由三態(tài)(tri-state)緩沖器到達(dá)內(nèi)部系統(tǒng)總線。
五、單片機(jī)并行I/O端口
4、I/O端口的第二功能
在進(jìn)行單片機(jī)系統(tǒng)擴(kuò)展時,P0口作為單片機(jī)系統(tǒng)的低8位地址/數(shù)據(jù)線使用,一般稱它為地址/數(shù)據(jù)分時復(fù)用引腳。P2口作為單片機(jī)系統(tǒng)的高8位地址,與P0口的低8位地址線共同組成16位地址總線。P3口的8個引腳都具有第二功能,作為第二功能使用的端口線,不能同時當(dāng)做通用I/O端口使用,但其他未被使用的端口線仍可作為通用I/O端口使用。1、單片機(jī)的內(nèi)部結(jié)構(gòu)2、8051的信號引腳3、單片機(jī)的最小系統(tǒng)4、51單片機(jī)的存儲器結(jié)構(gòu)5、單片機(jī)的并行I/O端口
汽車單片機(jī)應(yīng)用技術(shù)——項目四電動汽車充電指示顯示控制本章內(nèi)容C語言概述C語言的函數(shù)C語言的基本語句C語言的數(shù)據(jù)與運(yùn)算C語言的數(shù)組電動汽車充電指示顯示一、單片機(jī)的C語言概述
C語言程序以函數(shù)形式組織程序結(jié)構(gòu),C程序中的函數(shù)與其他語言中所描述的“子程序”或“過程”的概念是一樣的。一、單片機(jī)的C語言概述一個C語言源程序是由一個或若干個函數(shù)組成,每一個函數(shù)完成相對獨(dú)立的功能。每個C程序都必須有(且僅有)一個主函數(shù)main(),程序的執(zhí)行總是從主函數(shù)開始,調(diào)用其他函數(shù)后返回主函數(shù)main(),不管函數(shù)的排列順序如何,最后在主函數(shù)中結(jié)束整個程序。C語言程序中可以有預(yù)處理命令,預(yù)處理命令通常放在源程序的最前面。C語言程序使用“;”作為語句的結(jié)束符,一條語句可以多行書寫,也可以一行書寫多條語句。一、單片機(jī)的C語言概述C語言的字符區(qū)分大小寫,例如:變量i和變量I表示兩個不同的變量。C語言用/*........*/和“//”進(jìn)行程序注釋。
“//”——只能注釋一行信息/*........*/——可放在程序的任一位置。標(biāo)識符常用來表示某個變量、常量、數(shù)組、自定義函數(shù)的名稱。
intcount;//count為一整型變量的名稱voiddelay();//delay為一個函數(shù)的名稱一、單片機(jī)的C語言概述
標(biāo)識符可以由字母、數(shù)字(0~9)或者下劃線“—”組成,最多可支持32個字符。C51的標(biāo)識符的第一個字符必須是字母或者下劃線“—”,標(biāo)識符不能用中文。例如unt、ch_1等都是正確的標(biāo)識符,而5count則是錯誤的。
使用標(biāo)識符時應(yīng)注意以下幾點(diǎn):
①在命令C51標(biāo)識符時,需要能夠清楚地表達(dá)其功能含義,這樣有助于閱讀和理解源程序。
②C51的標(biāo)識符原則上可以使用下劃線開頭,但有些編譯系統(tǒng)的專用標(biāo)識符或者預(yù)定義項是以下劃線開頭的。為了程序的兼容性和可移植性,建議一般不使用下劃線開頭來命名標(biāo)識符。
③自定義的C51標(biāo)識符不能使用C51的關(guān)鍵字,也不能和用戶已使用的函數(shù)名或C51庫函數(shù)同名。例如char是關(guān)鍵字,所以不能作為標(biāo)識符使用。
④C51的標(biāo)識符區(qū)分大小寫,例如ciunt和COUNT代表兩個不同的標(biāo)識符。一、單片機(jī)的C語言概述
關(guān)鍵字是C51語言的重要組成部分,是C51編譯器已定義保留的專用特殊標(biāo)識符,有時也稱為保留字。這些關(guān)鍵字通常有固定的名稱和功能,如int、if、for、do、while、case、char、void、else、break、data等。
注:關(guān)鍵字必須是小寫。二、C語言的函數(shù)1、函數(shù)的分類從用戶使用的角度來看,函數(shù)分為兩類:
(1)標(biāo)準(zhǔn)庫函數(shù)
標(biāo)準(zhǔn)庫函數(shù)是由C51的編譯器提供的,用戶不必定義這些函數(shù),可以直接用預(yù)處理命令#include<文件名.h>調(diào)用。
KEILC51編譯器提供了100多個庫函數(shù)供我們使用。常用的C51庫函數(shù)包括一般I/O口函數(shù)、訪問SFR地址函數(shù)等,在C51編譯環(huán)境中,以頭文件的形式給出。(2)用戶自定義函數(shù)
用戶自定義函數(shù)是用戶根據(jù)需要自行編寫的函數(shù),它必須先定義之后才能被調(diào)用。二、C語言的函數(shù)2、函數(shù)的定義函數(shù)定義一般形式如下:
返回值類型函數(shù)名(形式參數(shù)表){
數(shù)據(jù)類型變量;
語句;return(表達(dá)式或變量);}例://函數(shù)名:delay//函數(shù)功能:實現(xiàn)軟件延時voiddelay(unsignedinti)//無返回值
{unsignedintk;//定義局部變量for(k=0;k<i;k++);//語句}二、C語言的函數(shù)說明:
(1)返回值類型說明符指明了函數(shù)的返回值的類型,在很多情況下,不要求函數(shù)有返回值,此時類型說明符可以寫為void。
(2)函數(shù)名是由用戶自己定義的標(biāo)識符。
(3)函數(shù)名后有一個括號,括號中是形式參數(shù);
形式參數(shù)可以沒有,稱為無形參函數(shù),
但括號不可少;
(4){}中的內(nèi)容稱為函數(shù)體,在函數(shù)體中是若干條為完成特定功能而設(shè)置的語句。(5)return語句是返回值語句,把函數(shù)的值返回給調(diào)用的變量。對于無返回值函數(shù),該語句可以省略。二、C語言的函數(shù)3、函數(shù)的調(diào)用
函數(shù)調(diào)用就是在一個函數(shù)體中引用另外一個已經(jīng)定義的函數(shù),前者稱為主調(diào)用函數(shù),后者稱為被調(diào)用函數(shù),函數(shù)調(diào)用的一般格式為:
函數(shù)名(實際參數(shù)列表);
對于有參數(shù)類型的函數(shù),若實際參數(shù)列表中有多個實參,則各參數(shù)之間用逗號隔開。實參與形參順序?qū)?yīng),個數(shù)應(yīng)相等,類型應(yīng)一致。二、C語言的函數(shù)在一個函數(shù)中調(diào)用另一個函數(shù)需要具備如下條件:(1)被調(diào)用函數(shù)必須是已經(jīng)存在的函數(shù)(庫函數(shù)或者用戶自己已經(jīng)定義的函數(shù))。如果函數(shù)定義在調(diào)用之后,那么必須在調(diào)用之前(一般在程序頭部)對函數(shù)進(jìn)行聲明。(2)如果程序使用了庫函數(shù),則要在程序的開頭用#include預(yù)處理命令將調(diào)用函數(shù)所需要的信息包含在本文件中。如果不是在本文件中定義的函數(shù),那么在程序開始要用extern修飾符進(jìn)行函數(shù)原型說明。二、C語言的函數(shù)例:無返回值無形參的函數(shù)調(diào)用voiddelay()//函數(shù)定義{unsignedinty=10000;//函數(shù)體
while(y--);
}voidmain()//主函數(shù)調(diào)用延時程序{delay();}例:無返回值有形參的函數(shù)調(diào)用voiddelay(unsignedinty)//函數(shù)定義{while(y--);//函數(shù)體}voidmain()//主函數(shù)
{
delay(10000);//給形參賦值,實參}二、C語言的函數(shù)函數(shù)的形參和實參具有以下特點(diǎn):
(1)形參只有在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。
(2)實參可以是常量、變量、表達(dá)式、函數(shù)等,無論實參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值、輸入等辦法使實參獲得確定值。
(3)實參和形參在數(shù)量上、類型上、順序上應(yīng)嚴(yán)格一致,否則會發(fā)生“類型不匹配”的錯誤。
(4)函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化。三、C語言的基本語句
一個C語言程序語句可以分為聲明語句和執(zhí)行語句。
聲明語句
如:inti;它不產(chǎn)生機(jī)器操作,而只是對變量的定義。
執(zhí)行語句如:i=3;是向計算機(jī)系統(tǒng)發(fā)出操作命令,經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。
C語言程序的執(zhí)行部分由執(zhí)行語句組成,C語言提供了豐富的程序執(zhí)行語句,按照結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),組成各種復(fù)雜程序。1、C語言語句概述三、C語言的基本語句2、C語言語句種類(1)控制語句。用于完成一定的控制功能。C語言只有9種控制語句,它們是:
①if()…else(條件語句)
②for()….(循環(huán)語句)
③while()….(循環(huán)語句)
④do…while()
(循環(huán)語句)
⑤continue()
(結(jié)束本次循環(huán)語句)
⑥break()
(中止執(zhí)行switch或循環(huán)語句)
⑦switch()
(多分支選擇語句)
⑧goto(轉(zhuǎn)向語句)
⑨return(從函數(shù)返回語句)三、C語言的基本語句(2)函數(shù)調(diào)用語句
由一個函數(shù)調(diào)用加一個分號構(gòu)成。
例如:delay();//調(diào)用一個無參函數(shù)yanshi(200);//調(diào)用一個有參函數(shù)(3)表達(dá)式語句
由一個表達(dá)式加一個分號構(gòu)成,執(zhí)行表達(dá)式語句就是計算表達(dá)式的值。
如:P2=0X00;//賦值語句P1_0=left;//將位變量left的值送至P1.0引腳。j++;//變量增1語句
三、C語言的基本語句(4)空語句
;在C語言中有一個特殊的表達(dá)式語句,稱為空語句??照Z句中只有一個分號“;”,程序執(zhí)行空語句時需要占用一條指令的執(zhí)行時間,但是什么也不做。在C51程序中常常把空語句作為循環(huán)體,用于消耗CPU時間等待事件發(fā)生的場合。
如:for(k=0;k<i;k++);for(j=0;j<255;j++);for語句后面的“;”是一條空語句,作為循環(huán)體出現(xiàn)。while(1);是一個不執(zhí)行任何操作的空循環(huán)體。三、C語言的基本語句(5)復(fù)合語句
把多個語句用大括號{}括起來,組合在一起形成具有一定功能的模塊,這種由若干條語句組合而成的語句塊稱為復(fù)合語句。
如:voidmain(){//函數(shù)體的復(fù)合語句開始bitleft,right;while(1){//while循環(huán)體的復(fù)合語句開始left=P3_0;}//while循環(huán)體的復(fù)合語句結(jié)束}//函數(shù)體的復(fù)合語句結(jié)束三、C語言的基本語句3、C語言的基本控制語句(1)選擇分支控制語句
通過選擇結(jié)構(gòu),可以使計算機(jī)具有決策能力,從而使計算機(jī)能夠按照我們的意志在某個特定條件下完成相應(yīng)的操作,能夠“隨機(jī)應(yīng)變”。
包括:if語句、switch語句。三、C語言的基本語句If語句:if語句用來判定所給定的條件是否滿足,根據(jù)判定結(jié)果決定執(zhí)行給出的兩種操作之一。
if語句的基本格式:if(表達(dá)式){
語句組;
}if語句執(zhí)行過程:
當(dāng)“表達(dá)式”的結(jié)果為“真”時,執(zhí)行其后的“語句組”,否則跳過該語句組,繼續(xù)執(zhí)行下面的語句。三、C語言的基本語句C51語言還提供其他形式的if語句:if-else語句的一般格式如下:if(表達(dá)式){
語句組1;
}else{
語句組2;
}if-else語句執(zhí)行過程:當(dāng)“表達(dá)式”的結(jié)果為“真”時,執(zhí)行其后的“語句組1”,否則執(zhí)行“語句組2”三、C語言的基本語句if-else-if語句的格式:if(表達(dá)式1){語句1;}elseif(表達(dá)式2){語句2;}elseif(表達(dá)式3){語句3;}
...elseif(表達(dá)式m){語句m;}else{語句n;}三、C語言的基本語句switch語句:switch語句是多分支選擇語句。其語句格式為:switch(表達(dá)式){ case常量表達(dá)式1:{語句1;}break; case常量表達(dá)式2:{語句2;}break; case常量表達(dá)式n:{語句n;}break; default:{語句n+1;}}三、C語言的基本語句switch語句說明:1)switch括號內(nèi)的表達(dá)式,可以是整型或字符型的表達(dá)式。2)每一個case的常量表達(dá)式必須是互不相同的,否則會出現(xiàn)混亂的局面。3)各個case和default出現(xiàn)的次序,不影響程序的執(zhí)行結(jié)果。4)如果在case語句中遺忘了break語句,則程序執(zhí)行了本行之后,不會按規(guī)定退出switch語句,而是將執(zhí)行后續(xù)的case語句。三、C語言的基本語句(2)循環(huán)語句while語句的基本格式:while(循環(huán)繼續(xù)的條件表達(dá)式){
語句組;}while執(zhí)行過程:while語句用來實現(xiàn)“當(dāng)型”循環(huán),首先判斷表達(dá)式,當(dāng)表達(dá)式的值為真(非0)時,反復(fù)執(zhí)行循環(huán)體。為假(0)時執(zhí)行循環(huán)體外面的語句。
要特別注意循環(huán)的邊界問題:即循環(huán)的初值和終值要非常明確。三、C語言的基本語句do{
循環(huán)體語句組;}while(循環(huán)繼續(xù)條件表達(dá)式);do-while語句的基本格式:
do-while語句用來實現(xiàn)“直到型”循環(huán)。
執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體,然后判斷條件表達(dá)式,當(dāng)表達(dá)式的值為真(非0)時,返回執(zhí)行循環(huán)體直到條件表達(dá)式為假(0)為止。三、C語言的基本語句
for語句
總循環(huán)次數(shù)已確定的情況下,可采用for語句。
for語句的一般形式:for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)
{
循環(huán)體語句組;} 三、C語言的基本語句for語句的三個表達(dá)式都是可以省略的,但分號“;”絕對不能省略。省略1是不對循環(huán)變量賦初值;省2是不判斷循環(huán)條件的真假;省3是不對循環(huán)變量操作。for語句的以下幾種寫法都是合法的:a)for(;;)語句;b)for(;表達(dá)式2;表達(dá)式3)語句;c)for(表達(dá)式1;表達(dá)式2;)語句;d)for(i=1,j=n;i<j;i++,j--)語句;
for(;;)表示無限循環(huán)。三、C語言的基本語句
程序中常常會遇到無限循環(huán)的程序段,可以用以下三種形式實現(xiàn):形式一:
for(;;){代碼段;}形式二:
while(1){代碼段;}
形式三:
do{代碼段;}while(1);三、C語言的基本語句循環(huán)的嵌套
循環(huán)嵌套是指一個循環(huán)(稱為“外循環(huán)”)的循環(huán)體內(nèi)包含另一個循環(huán)(“稱為內(nèi)循環(huán)”)。內(nèi)循環(huán)的循環(huán)體內(nèi)還可以包含循環(huán),形成多層循環(huán)。While、do-while和for三種循環(huán)結(jié)構(gòu)可以互相嵌套。三、C語言的基本語句break和continue語句break語句
當(dāng)break用于開關(guān)語句switch中時,可使程序跳出switch而執(zhí)行switch以后的語句;如果沒有break語句,則會從滿足條件的地方(即與switch(變量)括號中變量匹配的case)開始執(zhí)行,直到switch語句結(jié)束,再執(zhí)行switch以后的語句。
當(dāng)break語句用于do-while、for、while循環(huán)語句中時,可使程序終止循環(huán)。而執(zhí)行循環(huán)后面的語句。通常break語句總是與if語句聯(lián)在一起,如“if(a==0)break;”,用來滿足條件時便跳出循環(huán)。在多層循環(huán)中,一個break語句只向外跳一層。三、C語言的基本語句continue語句continue作用為結(jié)束本次循環(huán)。即跳出循環(huán)體中下面尚未執(zhí)行的語句。對于while循環(huán),繼續(xù)求解循環(huán)條件。而對于for循環(huán)程序流程接著求解for語句頭中的第三個條件表達(dá)式。continue語句和break語句的區(qū)別是:continue語句只結(jié)束本次循環(huán),而循環(huán)還將繼續(xù)執(zhí)行。而break語句則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。四、C語言數(shù)據(jù)與運(yùn)算1、數(shù)據(jù)類型
具有一定格式的數(shù)字或數(shù)值叫做數(shù)據(jù),數(shù)據(jù)的不同格式叫做數(shù)據(jù)類型。(1)字符型:占用1個內(nèi)存單元;它又分為無符號字符型和有符號字符型。
無符號字符型:標(biāo)示符號為unsignedchar,可以存儲數(shù)值范圍是0~255。
例如:unsignedchara;//定義無符號字符型變量aunsignedcharz=214;//定義無符號字符型變量z,同時給變量z賦值214unsignedcharx=‘m’;//將m的ASCⅡ碼賦給x
有符號字符型:標(biāo)示符號為char,可以存儲數(shù)值范圍是-128~+127。
這時最高位被規(guī)定為符號位(0為正數(shù),1為負(fù)數(shù)),真正的數(shù)值位只有7位。
例如:chara;//定義一個有符號字符型變量achartemp,s=-32;//定義一個有符號字符型變量s,同時給變量s賦值-32。charb=65;//定義一個有符號字符型變量b四、C語言數(shù)據(jù)與運(yùn)算(2)整型數(shù)據(jù):占用兩個內(nèi)存單元。
無符號整型:標(biāo)示符號為unsignedint,可以存儲數(shù)值范圍是0~65535;
有符號整型:標(biāo)示符號為int,可以存儲數(shù)值范圍是-32768~+32767,最高位是符號位(0為正數(shù),1為負(fù)數(shù))
四、C語言數(shù)據(jù)與運(yùn)算
(3)長整型:占4個字節(jié)。
包括有符號長整型(signedlong)和無符號長整型(unsignedlong)。unsignedlong可以存儲:0~4294967295;
signedlong可以存儲-2147483648~+2147483647(4)單精度浮點(diǎn)型:占4個字節(jié)單元。
標(biāo)示符號為float,可存儲數(shù)值范圍是±1.175494E-38~±3.402823E+38
四、C語言數(shù)據(jù)與運(yùn)算(5)指針型:標(biāo)示符號為*。
指針型*本身就是一個變量,在這個變量中存放的內(nèi)容是指向另一個數(shù)據(jù)的地址。指針變量占據(jù)一定的內(nèi)存單元,對不同的處理器,其長度也不同。在C51中長度一般為1~3B。(6)位類型:標(biāo)示符號為bit,只占1位。其值是1或0。
(7)特殊功能寄存器sfr:標(biāo)識符號為sfr。
占用1個內(nèi)存單元。其值必須是51單片機(jī)的特殊功能器地址。
例如:sfrP1=0X90;//就是說P1代表內(nèi)部RAM的0x90單元。四、C語言數(shù)據(jù)與運(yùn)算(8)特殊功能寄存器的可位尋址位:
標(biāo)識符號為sbit
用來表示特殊功能寄存器的可位尋址位
序號數(shù)據(jù)類型名稱位數(shù)字節(jié)數(shù)數(shù)值范圍1unsignedchar無符號字符型810~2552char有符號字符型81-128~+1273unsignedint無符號整型1620~655354int有符號整型162-32768~+327675unsignedlong無符號長整型3240~42949672956signedlong有符號長整型324-2147483648~+21474836477float單精度浮點(diǎn)型324±1.175494E-38~±3.402823E+388*指針型
1~3對象的地址9bit位類型1
1、010sfr特殊功能寄存器81單片機(jī)內(nèi)部特殊功能寄存器區(qū)11sfr1616位專用寄存器162單片機(jī)內(nèi)部16位特殊功能寄存器12sbit可尋職位11特殊功能寄存器中的可位尋址位四、C語言數(shù)據(jù)與運(yùn)算2、常量與變量
單片機(jī)程序中處理的數(shù)據(jù)有常量和變量兩種形式,二者的區(qū)別在于:常量的值在程序運(yùn)行期間是不能發(fā)生變化的,而變量的值在程序執(zhí)行期間可以發(fā)生變化。(1)常量:分為數(shù)值常量和符號常量整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串‘a(chǎn)’,‘a(chǎn)b’,‘1232’位常量0或1數(shù)值常量四、C語言數(shù)據(jù)與運(yùn)算符號常量
#definePRICE30
#include<stdio.h>
voidmain()
{
intnum,total;
num=10;
total=num*PRICE;
printf(″total=%d\n″,total);
}符號常量:用一個標(biāo)識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。運(yùn)行結(jié)果:
total=300說明:
程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算說明:如再用賦值語句給PRICE賦值是錯的
PRICE=40;/*錯誤,不能給符號常量賦值四、C語言數(shù)據(jù)與運(yùn)算(2)變量:
在程序執(zhí)行過程中其值可以改變的量稱為變量。一個變量應(yīng)該有一個名字(標(biāo)識符),在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存放變量的值。每個變量在使用之前必須定義其數(shù)據(jù)類型和存儲模式,這稱為變量定義,變量定義后編譯系統(tǒng)才能為變量分配相應(yīng)的存儲空間。
定義變量的一般形式為:
[存儲種類]數(shù)據(jù)類型[存儲器類型]變量名表;
其中,“數(shù)據(jù)類型”和“變量名表”是必須有的,“存儲種類”和“存儲器類型”是可選項,根據(jù)實際情況可忽略。變量定義的例子如下:inti,j,k;//定義3個整型變量i,j,kunsignedcharsi;//定義1個無符號字符型變量siunsignedintui;//定義1個無符號整型變量uifloatbalance,profit,loss;//定義1個浮點(diǎn)型量loss四、C語言數(shù)據(jù)與運(yùn)算定義變量時應(yīng)注意以下幾點(diǎn):變量名不能與系統(tǒng)的關(guān)鍵字(保留字)同名;變量名不能重復(fù)(在同一函
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鋰錳電池合作協(xié)議書
- 不動產(chǎn)房產(chǎn)自愿贈與合同
- 網(wǎng)絡(luò)主播信息保密協(xié)議
- 黃金外匯投資操盤合作合同范本
- 證券咨詢投資服務(wù)協(xié)議
- 二零二五年度散柜物流運(yùn)輸與客戶滿意度提升協(xié)議
- 二零二五年度解除食品加工解除供貨合同協(xié)議
- 二零二五年度交通信息屏安裝與數(shù)據(jù)服務(wù)合同
- 跨行業(yè)薪酬激勵協(xié)議2025年度觀分析法梳理與評估
- 二零二五年度健身房健身俱樂部加盟與區(qū)域代理合作協(xié)議
- 安全員崗位競聘課件
- 護(hù)士職業(yè)暴露后處理
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年七年級下學(xué)期期末歷史試題(原卷版)
- 送溫暖活動困難職工幫扶申請表
- 中國竹編藝術(shù)智慧樹知到答案2024年浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué)
- 10S505 柔性接口給水管道支墩
- 護(hù)理美學(xué)-第四章 護(hù)士的儀容美
- 2024-2030年中國植物奶行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- DL-T-1779-2017高壓電氣設(shè)備電暈放電檢測用紫外成像儀技術(shù)條件
- 2024版心肺復(fù)蘇急救知識培訓(xùn)
- 酒店開業(yè)前期宣傳方案(2篇)
評論
0/150
提交評論