




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
汽車(chē)單片機(jī)技術(shù)學(xué)習(xí)任務(wù)1
單片機(jī)的認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知【任務(wù)描述】
汽車(chē)單片機(jī)根據(jù)駕駛?cè)说牟僮骱彤?dāng)前的整車(chē)和零部件工作狀況,在保證安全和動(dòng)力性的前提下,選擇盡可能優(yōu)化的工作模式和能量分配比例。那單片機(jī)是什么樣子?又是如何工作的呢?下面請(qǐng)同學(xué)們通過(guò)學(xué)習(xí)單片機(jī)的知識(shí),來(lái)掌握單片機(jī)的概念、種類(lèi)和應(yīng)用吧!【學(xué)習(xí)目標(biāo)】1.能夠區(qū)別單片機(jī)于其他模塊。2.能夠識(shí)別單片機(jī)的型號(hào)。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知1.單片機(jī)介紹
單片機(jī)誕生于20世紀(jì)70年代末,它是指一個(gè)集成在一塊芯片上的完整計(jì)算機(jī)系統(tǒng)。單片機(jī)具有一個(gè)完整計(jì)算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會(huì)具有外存。同時(shí)集成諸如通信接口、定時(shí)器,實(shí)時(shí)時(shí)鐘等外圍設(shè)備。
單片機(jī)又稱(chēng)單片微控制器,如圖1-1,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括地講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。
圖1-1單片機(jī)項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知2.典型的單片機(jī)
(1)51系列單片機(jī)。51系列單片機(jī)最早由Intel公司推出,主要有8031系列,8051系列。后來(lái)Atmel公司以8051的內(nèi)核為基礎(chǔ)推出了AT89系列單片機(jī)。它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長(zhǎng)的一段時(shí)間內(nèi)將占有大量市場(chǎng),如圖1-2。
圖1-2C51系列單片機(jī)
(2)ARM&AVRARM&AVR是一種功能較強(qiáng)的芯片,處理能力更強(qiáng)。但無(wú)法在沒(méi)有周邊器件的情況下單獨(dú)完成既定功能AVR單片機(jī)也是Atmel公司的產(chǎn)品,最早的就是AT90系列單片機(jī),現(xiàn)在很多AT90單片機(jī)都轉(zhuǎn)型為Atmega系列和AtTIny系列,AVR單片機(jī)最大的特點(diǎn)是精簡(jiǎn)指令型單片機(jī),執(zhí)行速度,在相同的振蕩頻率下是8位MCU中最快的一種單片機(jī),如圖1-3。圖1-3ARM系列單片機(jī)項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(3)ArduinoArduino是單片機(jī)二次開(kāi)發(fā)的產(chǎn)物。以做項(xiàng)目來(lái)說(shuō),普通單片機(jī)只是散件,硬件的設(shè)計(jì)和軟件設(shè)計(jì)都得你自己來(lái)。而且Arduino是半成品,你只要把相應(yīng)的模塊組合在一起,再寫(xiě)一寫(xiě)甚至直接復(fù)制別人程序就能行了。拿做電腦來(lái)比喻的話,你拿單片機(jī)做項(xiàng)目就像用電子元件先做出來(lái)顯示器、主板、內(nèi)存條、顯卡、硬盤(pán)等,再把它們組裝成一臺(tái)電腦。用Arduino做項(xiàng)目就像直接把別人做好的主板硬盤(pán)顯卡組裝成電腦。Arduino的好處就是開(kāi)發(fā)簡(jiǎn)單,如圖1-4。圖1-4Arduino系列單片機(jī)項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知3.單片機(jī)的應(yīng)用
單片機(jī)的使用領(lǐng)域已十分廣泛幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡,在智能儀表、實(shí)時(shí)工控、通信設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。此外,單片機(jī)在工商,金融,科研、教育,國(guó)防航空航天等領(lǐng)域有著十分廣泛的用途。
(1)在智能儀器儀表中的應(yīng)用單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類(lèi)型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長(zhǎng)度、硬度、元素、壓力等物理量的測(cè)量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。例如精密的測(cè)量設(shè)備(功率計(jì),示波器,各種分析儀)。
(2)在工業(yè)控制中的應(yīng)用用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化芯片管理,電梯智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)等。
(3)在家用電器中的應(yīng)用現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯煲、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子稱(chēng)量設(shè)備,五花八門(mén),無(wú)所不在。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(4)在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車(chē)無(wú)線通信、再到日常工作中隨處可見(jiàn)的移動(dòng)電話,集群移動(dòng)通信,無(wú)線電對(duì)講機(jī)等。
(5)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。
(6)在各種大型電器中的模塊化應(yīng)用某些專(zhuān)用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能,從而在各種電路中進(jìn)行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。如音樂(lè)集成單片機(jī),看似簡(jiǎn)單的功能,微縮在純電子芯片中(有別于磁帶機(jī)的原理),就需要復(fù)雜的類(lèi)似于計(jì)算機(jī)的原理。如:音樂(lè)信號(hào)以數(shù)字的形式存于存儲(chǔ)器中(類(lèi)似于ROM),由微控制器讀出,轉(zhuǎn)化為模擬音樂(lè)電信號(hào)(類(lèi)似于聲卡)。在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡(jiǎn)化了電路,降低了損壞、錯(cuò)誤率,也方便于更換。
(7)在汽車(chē)設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在汽車(chē)電子中的應(yīng)用非常廣泛,例如汽車(chē)中的發(fā)動(dòng)機(jī)控制器,基于CAN總線的汽車(chē)發(fā)動(dòng)機(jī)智能電子控制器,GPS導(dǎo)航系統(tǒng),ABS防抱死系統(tǒng),制動(dòng)系統(tǒng)等等。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知【任務(wù)工單頁(yè)】任務(wù)實(shí)施:?jiǎn)纹瑱C(jī)的基礎(chǔ)認(rèn)知1.單片機(jī)又稱(chēng)________________,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。2.51系列單片機(jī)最早有Intel公司推出,主要有8031系列,________系列。3.AVR單片機(jī)最大的特點(diǎn)是_____________單片機(jī),執(zhí)行速度,在相同的振蕩頻率下是8位MCU中最快的一種單片機(jī)。4.單片機(jī)具有體積小、___________、控制功能強(qiáng)、擴(kuò)展靈活、__________和使用方便等優(yōu)點(diǎn)。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
學(xué)習(xí)任務(wù)2單片機(jī)的硬件基礎(chǔ)認(rèn)知【任務(wù)描述】
以ArduinoUNO單片機(jī)為例,從布局、技術(shù)規(guī)格、處理器、存儲(chǔ)空間及端口等介紹單片機(jī)的硬件組成,下面請(qǐng)同學(xué)們通過(guò)學(xué)習(xí)單片機(jī)的概念、種類(lèi),了解單片機(jī)的實(shí)際應(yīng)用?!緦W(xué)習(xí)目標(biāo)】
1.能夠識(shí)別單片機(jī)的硬件。2.能夠識(shí)讀單片機(jī)各引腳定義。1.Arduino介紹Arduino是一種開(kāi)源的微控制器平臺(tái),它包括了一個(gè)硬件部分(即Arduino開(kāi)發(fā)板)和一個(gè)軟件部分(即ArduinoIDE),也就是單片機(jī)的開(kāi)源硬件和軟件生態(tài)系統(tǒng)。Arduino已經(jīng)將晶振、電源、接口電路等硬件集成到單個(gè)開(kāi)發(fā)板上,用戶(hù)只需要連接到電腦就可以開(kāi)始編程和測(cè)試。Arduino使用一種基于C/C++的編程語(yǔ)言,它提供了許多簡(jiǎn)化的函數(shù)和庫(kù),使得編程更為簡(jiǎn)潔易懂。Arduino適合于教學(xué)、快速原型制作、個(gè)人項(xiàng)目和藝術(shù)設(shè)計(jì)等場(chǎng)合,特別是對(duì)于初學(xué)者和非專(zhuān)業(yè)者,Arduino是一個(gè)理想的選擇。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知2.Arduino的硬件結(jié)構(gòu)
(1)Arduino的外觀圖Arduino的外觀圖如圖1-5所示。
(2)Arduino的結(jié)構(gòu)組成Arduino主要由處理器、電源接口、輸入端口等組成,如圖1-6所示。其技術(shù)規(guī)格見(jiàn)表1-1。圖1-5Arduino的外觀圖圖1-6Arduino的結(jié)構(gòu)組成項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知表1-1Arduino的技術(shù)規(guī)格項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知3.Arduino部件介紹
(1)Arduino的處理器種類(lèi)和作用。處理器ATMEGA16U2的作用是負(fù)責(zé)將上位機(jī)通過(guò)USB傳輸過(guò)來(lái)的程序?qū)懭階Tmega328P中,相當(dāng)于USB轉(zhuǎn)TTL串口的芯片;但其性能可能不太穩(wěn)定,有可能出現(xiàn)掉固件(固件:芯片能執(zhí)行的代碼);有很多種專(zhuān)業(yè)級(jí)別的USB轉(zhuǎn)TTL串口的芯片,比如國(guó)外的FT232,CP2102,PL2303,國(guó)內(nèi)最好的CH340、CH341。處理器ATmega328P的作用是板子的核心主控(MCU),負(fù)責(zé)程序的存儲(chǔ)以及運(yùn)行,ArduinoIDE編程的代碼最終會(huì)燒寫(xiě)入ATMEGA328P中的ROM中。
(2)ATmega328P的詳解。Arduino其實(shí)是一塊AVR的開(kāi)發(fā)板,其體系結(jié)構(gòu)為精簡(jiǎn)指令集計(jì)算機(jī)(RISC)。AVR芯片內(nèi)部都是一片IC(集成電路),外面再用塑料殼包起來(lái),用極細(xì)的線從IC的邊緣連接到封裝的腳上,ATmega328P采用的封裝方式為DIP封裝(雙列直插)。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(3)單片機(jī)比較常用的封裝方式。單片機(jī)比較常用的封裝方式是DIP封裝(DualIn-linePackage),也叫雙列直插式封裝技術(shù),指采用雙列直插形式封裝的集成電路芯片,DIP封裝如圖1-7所示。DIP封裝的特點(diǎn):①絕大多數(shù)中小規(guī)模集成電路均采用這種封裝形式,其引腳數(shù)一般不超過(guò)100。②DIP封裝的CPU芯片有兩排引腳,需要插入到具有DIP結(jié)構(gòu)的芯片插座上。當(dāng)然,也可以直接插在有相同焊孔數(shù)和幾何排列的電路板上進(jìn)行焊接;DIP封裝的芯片在從芯片插座上插拔時(shí)應(yīng)特別小心,以免損壞管腳。DIP封裝結(jié)構(gòu)形式:DIP封裝結(jié)構(gòu)形式有多層陶瓷雙列直插式DIP,單層陶瓷雙列直插式DIP,引線框架式DIP(含玻璃陶瓷封接式,塑料包封結(jié)構(gòu)式,陶瓷低熔玻璃封裝式)等;DIP封裝的8086處理器DIP封裝具有以下特點(diǎn):適合在項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知圖1-7DIP封裝圖1-8DIP封裝內(nèi)部結(jié)構(gòu)PCB(印刷電路板)上穿孔焊接,操作方便。芯片面積與封裝面積之間的比值較大,故體積也較大;最早的4004.8008.8086.8088等CPU都采用了DIP封裝,通過(guò)其上的兩排引腳可插到主板上的插槽或焊接在主板上。DIP封裝內(nèi)部結(jié)構(gòu)如圖1-8所示。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(4)管腳定義。Atmega芯片內(nèi)部有兩個(gè)獨(dú)立的電源系統(tǒng):數(shù)字電源(標(biāo)示為:VCC或者VCC)和模擬電源(標(biāo)示為:AVCC或者AVCC),VCC和AVCC應(yīng)該同時(shí)接到相同的電壓上;即使用不到任何模擬電路功能,AVCC的電源管腳必須接上。兩個(gè)電源管腳是分開(kāi)的,當(dāng)需要低噪聲或者高精度的模擬讀數(shù)時(shí),就可以給模擬部分加上額外的電源濾波,提高精度。ATmega328的28腳封裝有1個(gè)VCC腳、1個(gè)AVCC腳和2個(gè)GND腳;32腳封裝有2個(gè)VCC腳、1個(gè)AVCC腳和3個(gè)GND腳;100腳封裝有4個(gè)VCC腳、1個(gè)AVCC腳和5個(gè)GND腳。ATmega328管腳編號(hào)如圖1-9所示。AVR單片機(jī)系列是基于低功效的CMOS技術(shù),其MOS管中沒(méi)有集電體、發(fā)射極或基極,而是有漏極、源極和柵極,CMOS器件的正確電源和地的術(shù)語(yǔ)描述為VDD和V。
(5)模擬參考(AREF)電壓。AREF電壓引腳有幾種不同的用法,它連在芯片內(nèi)部模數(shù)轉(zhuǎn)換電路(ADC)外圍設(shè)備的參考輸入端。ATmega328只支持單端ADC轉(zhuǎn)換,而ATmega2560可以做兩個(gè)輸入端之間的差分電壓測(cè)量。
無(wú)論是使用AVCC還是內(nèi)部參考電壓,都可以在AREF引腳和地之間接一個(gè)外部去耦電容,以提高參考電壓的穩(wěn)定性。模擬參考(AREF)電壓參考如圖1-10所示。另一個(gè)選擇是使用一個(gè)外部參考電壓源電路。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知圖1-9ATmega328管腳編號(hào)圖1-10模擬參考(AREF)電壓參考項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(6)RESET。RESET引腳提供了重置或者說(shuō)重啟單片機(jī)的方法,名字上方的橫線表示這是一個(gè)低電平有效的輸入,意思是說(shuō)當(dāng)這個(gè)腳拉低時(shí)RESET功能起作用。RESET引腳設(shè)計(jì)可以承受高電壓,也可以用于通知芯片進(jìn)入編程模式;RESET引腳拉低到地并且保持為低時(shí),就可以讓芯片進(jìn)入ISP(InSystemProgramming,在線編程),也稱(chēng)呼為L(zhǎng)VSP(LowVolageSerialProgramming,低壓串行編程);RESET引腳拉高到大約12V(11.5V到12.5V),則芯片就會(huì)進(jìn)入HVPP(HighVolageParallelProgramming,高壓并行編程),由于此模式情況下,RESET腳沒(méi)有接其他所有腳都有的箝拉電路,因此更加容易收到靜電的損壞。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(7)XTAL1和XTAL2。XTAL1和XTAL2引腳位置如圖1-11所示。XTAL1和XTAL2腳是內(nèi)部反相振蕩器的輸入和輸出腳。如果使用外部時(shí)鐘源,XTAL1就是內(nèi)部時(shí)鐘電路的輸入腳。這兩個(gè)腳一般是用于接一個(gè)石英晶體(ArduinoDuemilanove)或者陶瓷諧振器(ArduinoUno),以形成單片機(jī)的時(shí)鐘電路的時(shí)基信號(hào),為系統(tǒng)提供一個(gè)高精度的時(shí)間基準(zhǔn)。注意:通用輸入輸出(I/O)端口,特殊的端口已經(jīng)在上面介紹完成,剩下的端口都可以配置成輸入或者輸出端口。圖1-11XTAL1和XTAL2引腳位置項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知4.AVR內(nèi)核(1)ATmega328的簡(jiǎn)化框圖如圖1-12所示。圖1-12ATmega328的簡(jiǎn)化框圖(2)AVRCPU的主要部件AVR內(nèi)核包括AVRCPU的主要部件,如圖1-13所示。AVR內(nèi)核的組成如圖1-14所示。圖1-13AVRCPU的主要部件圖1-14AVR內(nèi)核的組成
芯片重啟后,PC被重置為0,程序存儲(chǔ)器中的0地址上的指令首先被取到CPU中(這個(gè)地方由MCU控制寄存器設(shè)置的),此處稱(chēng)為重啟向量(一般來(lái)說(shuō),向量是指向一個(gè)特定地方(地址)的指針而非指令)。AVR體系中一個(gè)有是當(dāng)中斷發(fā)生,程序的執(zhí)行跳轉(zhuǎn)到設(shè)定的中斷處理例程時(shí),全局中斷允許位(I)被清除。
(3)時(shí)鐘源ATmega328和ATmega2560都有一個(gè)片內(nèi)振蕩器,其時(shí)鐘頻率由外部晶體或諧振器決定,其有以下兩種運(yùn)行方式:一是低功耗模式,此模式不能輸出時(shí)鐘信號(hào)到芯片外面;二是全幅模式,增加了功率消耗。兩種芯片都可以從外部信號(hào)源獲取時(shí)鐘。片內(nèi)有一個(gè)系統(tǒng)時(shí)鐘預(yù)分頻器,系統(tǒng)時(shí)鐘以2的冪次分頻,分頻比可以從1:1到1:256。主系統(tǒng)時(shí)鐘是由兩個(gè)校準(zhǔn)過(guò)的電阻/電容(RC)振蕩器之一產(chǎn)生的,還可以使用一個(gè)外部低頻時(shí)鐘晶體(一般是32KHz)來(lái)驅(qū)動(dòng)需要真實(shí)時(shí)鐘的應(yīng)用程序中的定時(shí)器/計(jì)時(shí)器。趣的設(shè)計(jì)是當(dāng)中斷發(fā)生,程序的執(zhí)行跳轉(zhuǎn)到設(shè)定的中斷處理例程時(shí),全局中斷允許位(I)被清除。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(4)地址空間AVR體系結(jié)構(gòu)本身是基于哈弗體系結(jié)構(gòu)的,哈弗結(jié)構(gòu)中,程序和數(shù)據(jù)的存儲(chǔ)空間是分離的。程序存儲(chǔ)器的作用是用于存儲(chǔ)處理器要執(zhí)行的實(shí)際機(jī)器語(yǔ)言指令;在AVR上,這個(gè)存儲(chǔ)器是片內(nèi)的可編程16位寬flash陣列;其特點(diǎn)是可以存儲(chǔ)一定數(shù)量的數(shù)據(jù),但寫(xiě)入的時(shí)間比較長(zhǎng),可以擦寫(xiě)的次數(shù)有限;有時(shí)候被看作是ROM(只讀存儲(chǔ)器);Atmel器件手冊(cè)宣稱(chēng)程序存儲(chǔ)器內(nèi)的數(shù)據(jù)可以保存很多年。數(shù)據(jù)存儲(chǔ)器。數(shù)據(jù)存儲(chǔ)器作用是用于保存程序運(yùn)行過(guò)程中保存一些變量和變化的數(shù)據(jù);在AVR上提供的是SRAM(StaticRandom-AccessMemory靜態(tài)隨機(jī)存取內(nèi)存);
其大小ATmega328芯片有2KB的SRAM,而ATmega2560則會(huì)有8KB的SRAM;其特點(diǎn)是只要芯片還有電,SRAM內(nèi)存就保持里面的數(shù)據(jù),當(dāng)?shù)綦姾螅瑑?nèi)存里的狀態(tài)就是不確定了,也就是說(shuō)當(dāng)重新上電后,就不確定SRAM是某個(gè)特定的值,所以Arduino的C語(yǔ)言編程會(huì)采取措施來(lái)確保未初始化的數(shù)據(jù)不會(huì)用在被認(rèn)為有特定值的場(chǎng)合;寄存器。寄存器作用是CPU中的大多數(shù)算術(shù)和邏輯指令都可以在一個(gè)時(shí)鐘周期內(nèi)直接讀寫(xiě)寄存器組里的單個(gè)寄存器,這樣大型的寄存器就可以讓復(fù)雜的算法可以快速執(zhí)行,而不用重復(fù)在SARM上復(fù)制數(shù)據(jù)。其大小在AVR上,里面有32個(gè)寄存器,編號(hào)為R0到R31;其中有6個(gè)寄存器有特殊用途,它們可以組合成3個(gè)16位指向數(shù)據(jù)存儲(chǔ)器的索引指針,這些索引寄存器稱(chēng)呼為X、Y和Z,主要用于快速計(jì)算。輸入/輸出寄存器。輸入/輸出寄存器作用是所有的片內(nèi)外圍設(shè)備都是通過(guò)I/O地址空間訪問(wèn)的,每個(gè)外圍設(shè)備都要用到1個(gè)或者多個(gè)寄存器,這些寄存器的位設(shè)置決定了外圍設(shè)備的行為。其特點(diǎn)是SRAM、寄存器組和外圍I/O寄存器都是在數(shù)據(jù)地址空間里的,而不是在程序地址空間里;EEPROM。EEPROM作用是適合用于存儲(chǔ)用戶(hù)可改的配置數(shù)據(jù)或其他需要容易修改又要長(zhǎng)期非易失保存的數(shù)據(jù);其大小,ATmega328芯片有1KB的EEPROM,而ATmega2560則會(huì)有4KB的EEPROM。其特點(diǎn)是EERPOM(電可擦寫(xiě)只讀存儲(chǔ)器)可以承受多次的擦寫(xiě),這樣就比較適合存儲(chǔ)用戶(hù)可改的配置數(shù)據(jù)或其他需要修改又要長(zhǎng)期非易失保存的數(shù)據(jù);寫(xiě)入的時(shí)序由片內(nèi)的EEPROM邏輯控制,每個(gè)字節(jié)需要大約3.3ms來(lái)寫(xiě)入。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知配置熔絲。配置熔絲作用是配置熔絲控制芯片一些運(yùn)行特性,這樣可以更靈活地使用芯片;其大小是ATmega328芯片和ATmega2560芯片都有3個(gè)熔絲字節(jié):1個(gè)高字節(jié)、1個(gè)低字節(jié)和1個(gè)擴(kuò)展字節(jié)。其特點(diǎn)特點(diǎn)是配置熔絲一般是由外部芯片編程器讀寫(xiě)的,通過(guò)LPM指令,芯片可以讀取和鎖定熔絲中的位,也可以通過(guò)SPM指令寫(xiě)引導(dǎo)裝載程序鎖定位。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(5)指令集ATmega328芯片有131條不同的指令,而ATmega2560則會(huì)有135條。RISC(ReducedInstructionSetComputer精簡(jiǎn)指令集計(jì)算機(jī)),代表的是每條指令本身的復(fù)雜度降低了,而不是指令集中的指令數(shù)量減少;簡(jiǎn)化的可執(zhí)行指令易于在硅片上實(shí)現(xiàn),進(jìn)而使得芯片更小、更快也更加便宜。機(jī)械語(yǔ)言指令:在AVR指令中有些是16位的,有些是32位的,主要分為四種。AVR機(jī)械語(yǔ)言指令集的組成如圖1-15所示。圖1-15AVR機(jī)械語(yǔ)言指令集的組成5.片內(nèi)外圍設(shè)備
單片機(jī)內(nèi)部有構(gòu)成一部分完整計(jì)算機(jī)的電路,包括內(nèi)存塊、時(shí)鐘電路和接口外圍設(shè)備;所以一部分低端的微處理器不能稱(chēng)呼為單片機(jī)。
(1)通用輸入/輸出(I/O)ATmega328芯片有3個(gè)I/O端口:端口B、C、D;ATmega2560芯片有11個(gè)I/O端口:端口A到端口H(沒(méi)有端口I)、端口J、K、L;配置為輸出方式后,根據(jù)輸出端口寄存器上的位被寫(xiě)為1或者0,對(duì)應(yīng)引腳上的高電平或者低電平;配置為輸入方式后,每個(gè)引腳可以讀到邏輯高或者邏輯低的電平;高于0.7×VCC的電壓為高電平,讀為1;低于0.3×VCC的電壓則認(rèn)為是邏輯低電平,讀為0;在這兩個(gè)電平之間的電壓讀數(shù)為不可測(cè)的;如果需要,輸入引腳可以開(kāi)啟內(nèi)置的上拉電阻,這樣可以保證信號(hào)的確定的;每個(gè)I/O端口都是由3個(gè)I/O寄存器中位的設(shè)置來(lái)控制。
(2)外部中斷AVR內(nèi)核可以識(shí)別和響應(yīng)兩種不同的外部中斷;ATmega328有INT0和INT1腳,ATmega2560有INT0-7腳;外部中斷是嵌入式應(yīng)用程序極為有用的資源,正確地使用外部中斷可以解放主應(yīng)用程序,使其不再需要不斷輪詢(xún)?cè)O(shè)備或狀態(tài)以決定是否采取行動(dòng)。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(3)定時(shí)器/計(jì)數(shù)器定時(shí)器/計(jì)數(shù)器0。它可以用作定時(shí)器或計(jì)數(shù)器,核心為1個(gè)8位的計(jì)數(shù)器。定時(shí)器/計(jì)數(shù)器1。它可以用作定時(shí)器或計(jì)數(shù)器,而且還有1個(gè)輸入捕獲單元,這個(gè)硬件可以非常精確地做輸入信號(hào)的時(shí)間測(cè)量;核心為1個(gè)16位的計(jì)數(shù)器。定時(shí)器/計(jì)數(shù)器2。它特殊在于能以自己的鼓點(diǎn)起舞,它的異步運(yùn)行模式能以系統(tǒng)時(shí)鐘或外部信號(hào)之外的信號(hào)源驅(qū)動(dòng);核心為1個(gè)8位的計(jì)數(shù)器。ATmega2560則增加3個(gè)16位的定時(shí)器(編號(hào)3.4.5)(4)USART
USART為通用同步、異步接收、發(fā)射器;ATmega328芯片有1個(gè)USART,而ATmega2560則會(huì)有4個(gè)USART。
(5)兩線串行接口(TWI)
即IC,IC為IC間總線,是菲利普開(kāi)發(fā)的一種通信協(xié)議,用于減少芯片間的連線;IC標(biāo)準(zhǔn)最多允許總線上最多127個(gè)設(shè)備。
(6)模擬輸入ATmega328芯片有6個(gè)輸入,而ATmega2560則會(huì)有16個(gè)輸入;ATmega328模擬輸入接口為A0A5,而ATmega2560模擬輸入接口為A0A15;模擬輸入可以測(cè)量的電壓為0~5V;ADC一旦正確配置和觸發(fā),可以模擬電壓轉(zhuǎn)化為0~1023之間的一個(gè)數(shù)值;0表示電壓是地電壓或接近地電壓;而讀到1023則表示電壓是AREF或接近AREF;這個(gè)是10比特的分辨率。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知6.存儲(chǔ)空間Arduino的存儲(chǔ)空間即是其主控芯片所集成的存儲(chǔ)空間。也可以通過(guò)使用外設(shè)芯片的方式來(lái)擴(kuò)展Arduino的存儲(chǔ)空間。ArduinoUNO的存儲(chǔ)空間分三種:Flash,容量為32KB。其中0.5KB作為BOOT區(qū)用于儲(chǔ)存引導(dǎo)程序,實(shí)現(xiàn)通過(guò)串口下載程序的功能;另外的31.5KB作為用戶(hù)儲(chǔ)存的空間。相對(duì)于現(xiàn)在動(dòng)輒幾百GB的硬盤(pán),可能覺(jué)得32KB太小了,但是在單片機(jī)上,32KB已經(jīng)可以存儲(chǔ)很大的程序了。SRAM,容量為2KB。SRAM相當(dāng)于計(jì)算機(jī)的內(nèi)存,當(dāng)CPU進(jìn)行運(yùn)算時(shí),需要在其中開(kāi)辟一定的存儲(chǔ)空間。當(dāng)Arduino斷電或復(fù)位后,其中的數(shù)據(jù)都會(huì)丟失。EEPROM,容量為1KB。EEPROM的全稱(chēng)為電可擦寫(xiě)的可編程只讀存儲(chǔ)器,是一種用戶(hù)可更改的只讀存儲(chǔ)器,其特點(diǎn)是在Arduino斷電或復(fù)位后,其中的數(shù)據(jù)不會(huì)丟失。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知7.串口ArduinoUNO有14個(gè)數(shù)字輸入/輸出端口,6個(gè)模擬輸入端口,如圖1-16所示。其中一些帶有特殊功能,這些端口如下:圖1-16ArduinoUNO14個(gè)數(shù)字輸入/輸出端口UART通信,為0(RX)和1(TX)引腳,被用于接收和發(fā)送串口數(shù)據(jù)。這兩個(gè)引腳通過(guò)連接到ATmega16U2來(lái)與計(jì)算機(jī)進(jìn)行串口通信。外部中斷,為2和3引腳,可以輸入外部中斷信號(hào)。PWM輸出,為3.5.6.9.10和11引腳,可用于輸出PWM波。SPI通信,為10(SS)、11(MOSI)、12(MISO)和13(SCK)引腳,可用于SPI通信。TWI通信,為A4(SDA)、A5(SCL)引腳和TWI接口,可用于TWI通信,兼容IIC通信。AREF,模擬輸入?yún)⒖茧妷旱妮斎攵丝凇eset,復(fù)位端口。接低電平會(huì)使Arduino復(fù)位。當(dāng)復(fù)位鍵被按下時(shí),會(huì)使該端口接到低電平,從而使Arduino復(fù)位。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知8.狀態(tài)燈ArduinoUNO帶有4個(gè)LED指示燈,如圖1-17所示,它們的作用分別是:圖1-17ArduinoUNO帶有4個(gè)LED指示燈ON,電源指示燈。當(dāng)Arduino通電時(shí),ON燈會(huì)點(diǎn)亮。TX,串口發(fā)送指示燈。當(dāng)使用USB連接到計(jì)算機(jī)且Arduino向計(jì)算機(jī)傳輸數(shù)據(jù)時(shí),TX燈會(huì)點(diǎn)亮。RX,串口接收指示燈。當(dāng)使用USB連接到計(jì)算機(jī)且Arduino接收計(jì)算機(jī)傳來(lái)的數(shù)據(jù)時(shí),RX燈會(huì)點(diǎn)亮。L,可編程控制指示燈。該LED通過(guò)特殊電路連接到Arduino的13號(hào)引腳,當(dāng)13號(hào)引腳為高電平或高阻態(tài)時(shí),該LED會(huì)點(diǎn)亮;當(dāng)為低電平時(shí),不會(huì)點(diǎn)亮。因此可以通過(guò)程序或者外部輸入信號(hào)來(lái)控制該LED的亮滅。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知9.電源ArduinoUNO有三種供電方式,如圖1-18所示:
通過(guò)USB接口供電,電壓為5V。通過(guò)DC電源輸入接口供電,電壓要求7~12V。
通過(guò)電源接口處5V或者VIN端口供電,5V端口處供電必須為5V,VIN端口處供電為7~12V。圖1-18ArduinoUNO三種供電方式項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知【任務(wù)工單頁(yè)】
任務(wù)實(shí)施:?jiǎn)纹瑱C(jī)的硬件認(rèn)知1.Arduino其實(shí)是一塊AVR的開(kāi)發(fā)板,其體系結(jié)構(gòu)為_(kāi)______指令集計(jì)算機(jī)(RISC)。2.DIP封裝(DualIn-linePackage),指采用_______形式封裝的集成電路芯片。3._______作用是CPU中的大多數(shù)算術(shù)和邏輯指令都可以在一個(gè)時(shí)鐘周期內(nèi)直接讀寫(xiě)寄存器組里的單個(gè)寄存器。4.單片機(jī)內(nèi)部有構(gòu)成一部分完整計(jì)算機(jī)的電路,包括內(nèi)存塊、_______和接口外圍設(shè)備;所以一部分低端的微處理器不能稱(chēng)呼為單片機(jī)。5.ArduinoUNO有____種供電方式。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知學(xué)習(xí)任務(wù)3單片機(jī)的軟件基礎(chǔ)認(rèn)知【任務(wù)描述】單片機(jī)是以C語(yǔ)言為基礎(chǔ)進(jìn)行編程。C語(yǔ)言具有簡(jiǎn)潔緊湊、靈活方便;運(yùn)算符豐富;數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單;執(zhí)行效率高;適用范圍廣,可移植性好等特點(diǎn)。本教材將重點(diǎn)介紹C語(yǔ)言的程序結(jié)構(gòu)、條件判斷、循環(huán)函數(shù)、算數(shù)運(yùn)算符、比較運(yùn)算符、布爾運(yùn)算符、指針運(yùn)算符、位運(yùn)算符、復(fù)合運(yùn)算符、常數(shù)變量、數(shù)據(jù)類(lèi)型、變量作用域及修飾符、數(shù)字I/O、模擬I/O、高級(jí)I/O、時(shí)間函數(shù)、數(shù)學(xué)運(yùn)算、中斷函數(shù)、通信?!緦W(xué)習(xí)目標(biāo)】1.能夠使用C語(yǔ)言編程。2.能夠在單片機(jī)上實(shí)現(xiàn)軟件控制。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知1.基于Arduino的主函數(shù)介紹
在Arduino中,setup函數(shù)和loop函數(shù)是兩個(gè)最重要的主函數(shù),下面將對(duì)這兩個(gè)函數(shù)進(jìn)行介紹。
(1)setup函數(shù)
在Arduino中程序運(yùn)行時(shí)將首先調(diào)用setup函數(shù)。用于初始化變量、設(shè)置針腳的輸出\輸入類(lèi)型、配置串口、引入類(lèi)庫(kù)文件等。每次Arduino上電或重啟后,setup函數(shù)只運(yùn)行一次。參考程序:intbuttonPin=3;voidsetup(){Serial.begin(9600);pinMode(buttonPin,INPUT);}voidloop(){//...}(2)loop函數(shù)
在setup函數(shù)中初始化和定義了變量,然后執(zhí)行l(wèi)oop函數(shù)。顧名思義,該函數(shù)在程序運(yùn)行過(guò)程中不斷的循環(huán),根據(jù)一些反饋,相應(yīng)改變執(zhí)行情況。通過(guò)該函數(shù)動(dòng)態(tài)控制Arduino主控板。參考程序:intbuttonPin=3;//setup中初始化串口和按鍵針腳.voidsetup(){beginSerial(9600);pinMode(buttonPin,INPUT);}//loop中每次都檢查按鈕,如果按鈕被按下,就發(fā)送信息到串口voidloop(){if(digitalRead(buttonPin)==HIGH)serialWrite('H');elseserialWrite('L');delay(1000);}項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知2.常數(shù)變量
(1)HIGH|LOW(引腳電壓定義)
引腳電壓定義HIGH和LOW,當(dāng)讀?。╮ead)或?qū)懭耄╳rite)數(shù)字引腳時(shí)只有兩個(gè)可能的值:HIGH和LOW。HIGH。HIGH(參考引腳)的含義取決于引腳(pin)的設(shè)置,引腳定義為INPUT或OUTPUT時(shí)含義有所不同。當(dāng)一個(gè)引腳通過(guò)pinMode被設(shè)置為INPUT,并通過(guò)digitalRead讀?。╮ead)時(shí)。如果當(dāng)前引腳的電壓大于等于3V,微控制器將會(huì)返回為HIGH。引腳也可以通過(guò)pinMode被設(shè)置為INPUT,并通過(guò)digitalWrite設(shè)置為HIGH。輸入引腳的值將被一個(gè)內(nèi)在的20K上拉電阻控制在HIGH上,除非一個(gè)外部電路將其拉低到LOW。當(dāng)一個(gè)引腳通過(guò)pinMode被設(shè)置為OUTPUT,并digitalWrite設(shè)置為HIGH時(shí),引腳的電壓應(yīng)在5V。在這種狀態(tài)下,它可以輸出電流。例如,點(diǎn)亮一個(gè)通過(guò)一串電阻接地或設(shè)置為L(zhǎng)OW的OUTPUT屬性引腳的LED。LOW。LOW的含義同樣取決于引腳設(shè)置,引腳定義為INPUT或OUTPUT時(shí)含義有所不同。當(dāng)一個(gè)引腳通過(guò)pinMode配置為INPUT,通過(guò)digitalRead設(shè)置為讀?。╮ead)時(shí),如果當(dāng)前引腳的電壓小于等于2V,微控制器將返回為L(zhǎng)OW。當(dāng)一個(gè)引腳通過(guò)pinMode配置為OUTPUT,并通過(guò)digitalWrite設(shè)置為L(zhǎng)OW時(shí),引腳為0V。在這種狀態(tài)下,它可以倒灌電流。例如,點(diǎn)亮一個(gè)通過(guò)串聯(lián)電阻連接到+5V,或到另一個(gè)引腳配置為OUTPUT、HIGH的LED。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(2)INPUT|OUTPUT(數(shù)字引腳(Digitalpins)定義)
數(shù)字引腳(Digitalpins)定義,INPUT和OUTPUT,數(shù)字引腳當(dāng)作INPUT或OUTPUT都可以。用pinMode()方法使一個(gè)數(shù)字引腳從INPUT到OUTPUT變化。引腳(Pins)配置為輸入(Inputs)。Arduino(Atmega)引腳通過(guò)pinMode()配置為輸入(INPUT)即是將其配置在一個(gè)高阻抗的狀態(tài)。配置為INPUT的引腳可以理解為引腳取樣時(shí)對(duì)電路有極小的需求,即等效于在引腳前串聯(lián)一個(gè)100兆歐姆(Megohms)的電阻。這使得它們非常利于讀取傳感器,而不是為L(zhǎng)ED供電。引腳(Pins)配置為輸出(Outputs)。引腳通過(guò)pinMode()配置為輸出(OUTPUT)即是將其配置在一個(gè)低阻抗的狀態(tài)。
這意味著它們可以為電路提供充足的電流。Atmega引腳可以向其他設(shè)備/電路提供(提供正電流positivecurrent)或倒灌(提供負(fù)電流negativecurrent)達(dá)40毫安(mA)的電流。這使得它們利于給LED供電,而不是讀取傳感器。輸出(OUTPUT)引腳被短路的接地或5V電路上會(huì)受到損壞甚至燒毀。Atmega引腳在為繼電器或電機(jī)供電時(shí),由于電流不足,將需要一些外接電路來(lái)實(shí)現(xiàn)供電。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(3)true|false(邏輯層定義)
邏輯層定義,true與false(布爾Boolean常量),在Arduino內(nèi)有兩個(gè)常量用來(lái)表示真和假:true和false。false。在這兩個(gè)常量中false更容易被定義。false被定義為0(零)。true。true通常被定義為1,這是正確的,但true具有更廣泛的定義。在布爾含義里任何非零整數(shù)為true。所以在布爾含義內(nèi)-1,2和-200都定義為ture。需要注意的是true和false常量,不同于HIGH,LOW,INPUT和OUTPUT,需要全部小寫(xiě)。integerconstants(整數(shù)常量)。整數(shù)常量是直接在程序中使用的數(shù)字,如123。默認(rèn)情況下,這些數(shù)字被視為int,但你可以通過(guò)U和L修飾符進(jìn)行更多的限制(見(jiàn)下文)。通常情況下,整數(shù)常量默認(rèn)為十進(jìn)制,但可以加上特殊前綴表示為其他進(jìn)制。不同進(jìn)制對(duì)比如表1-2所示。進(jìn)制示例數(shù)碼二進(jìn)制1111011二進(jìn)位計(jì)數(shù)制僅用兩個(gè)數(shù)碼,0和1,逢二進(jìn)一八進(jìn)制173用0,1,2,3,4,5,6,7八個(gè)數(shù)字,逢八進(jìn)1十進(jìn)制1230、1、2、3、4、5、6、7、8、9,逢十進(jìn)一十六進(jìn)制7b0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F,逢十六進(jìn)一項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知小數(shù)是十進(jìn)制數(shù)。這是數(shù)學(xué)常識(shí)。如果一個(gè)數(shù)沒(méi)有特定的前綴,則默認(rèn)為十進(jìn)制。二進(jìn)制以2為基底,只有數(shù)字0和1是有效的。示例101//和十進(jìn)制5等價(jià)(1*2^2+0*2^1+1*2^0)二進(jìn)制格式只能是8位的,即只能表示0-255之間的數(shù)。如果輸入二進(jìn)制數(shù)更方便的話,你可以用以下的方式:myInt=(B11001100*256)+B10101010;//B11001100作為高位。八進(jìn)制是以8為基底,只有0-7是有效的字符。前綴“0”(數(shù)字0)表示該值為八進(jìn)制。0101//等同于十進(jìn)制數(shù)65((1*8^2)+(0*8^1)+1)項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知3.變量作用域及修飾符
在Arduino使用的C編程語(yǔ)言的變量,有一個(gè)名為作用域(scope)
的屬性。這一點(diǎn)與類(lèi)似BASIC的語(yǔ)言形成了對(duì)比,在BASIC語(yǔ)言中所有變量都是全局(global)
變量。
在一個(gè)程序內(nèi)的全局變量是可以被所有函數(shù)所調(diào)用的。局部變量只在聲明它們的函數(shù)內(nèi)可見(jiàn)。在Arduino的環(huán)境中,任何在函數(shù)(例如,setup(),loop()等)外聲明的變量,都是全局變量。
當(dāng)程序變得更大更復(fù)雜時(shí),局部變量是一個(gè)有效確定每個(gè)函數(shù)只能訪問(wèn)其自己變量的途徑。這可以防止,當(dāng)一個(gè)函數(shù)無(wú)意中修改另一個(gè)函數(shù)使用的變量的程序錯(cuò)誤。
有時(shí)在一個(gè)for循環(huán)內(nèi)聲明并初始化一個(gè)變量也是很方便的選擇。這將創(chuàng)建一個(gè)只能從for循環(huán)的括號(hào)內(nèi)訪問(wèn)的變量。參考程序:intgPWMval;//任何函數(shù)都可以調(diào)用此變量voidsetup(){//...}voidloop(){inti;//"i"只在"loop"函數(shù)內(nèi)可用floatf;//"f"只在"loop"函數(shù)內(nèi)可用//...for(intj=0;j<100;j++){//變量j只能在循環(huán)括號(hào)內(nèi)訪問(wèn)}}項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
(1)static(靜態(tài)變量)static關(guān)鍵字用于創(chuàng)建只對(duì)某一函數(shù)可見(jiàn)的變量。然而,和局部變量不同的是,局部變量在每次調(diào)用函數(shù)時(shí)都會(huì)被創(chuàng)建和銷(xiāo)毀,靜態(tài)變量在函數(shù)調(diào)用后仍然保持著原來(lái)的數(shù)據(jù)。靜態(tài)變量只會(huì)在函數(shù)第一次調(diào)用的時(shí)候被創(chuàng)建和初始化。參考程序:/*RandomWalk*PaulBadger2007*RandomWalk
函數(shù)在兩個(gè)終點(diǎn)間隨機(jī)的上下移動(dòng)*在一個(gè)循環(huán)中最大的移動(dòng)由參數(shù)“stepsize”決定*一個(gè)靜態(tài)變量向上和向下移動(dòng)一個(gè)隨機(jī)量*這種技術(shù)也被稱(chēng)為“粉紅噪聲”或“醉步”*/#definerandomWalkLowRange-20#definerandomWalkHighRange20intstepsize;intthisTime;inttotal;voidsetup(){Serial.begin(9600);}voidloop(){//測(cè)試randomWalk
函數(shù)stepsize=5;thisTime=randomWalk(stepsize);serial.println(thisTime);delay(10);}intrandomWalk(intmoveSize){staticintplace;//在randomwalk
中存儲(chǔ)變量//聲明為靜態(tài)因此它在函數(shù)調(diào)用之間能保持?jǐn)?shù)據(jù),但其他函數(shù)無(wú)法改變它的值place=place+(random(-moveSize,
moveSize+1));if(place<randomWalkLowRange){//檢查上下限place=place+(randomWalkLowRange-place);//將數(shù)字變?yōu)檎较騷elseif(place>randomWalkHighRange){place=place-(place-randomWalkHighRange);//將數(shù)字變?yōu)樨?fù)方向}returnplace;}(2)volatilevolatile
這個(gè)關(guān)鍵字是變量修飾符,常用在變量類(lèi)型的前面,以告訴編譯器和接下來(lái)的程序怎么對(duì)待這個(gè)變量。聲明一個(gè)
volatile變量是編譯器的一個(gè)指令。編譯器是一個(gè)將你的C/C++代碼轉(zhuǎn)換成機(jī)器碼的軟件,機(jī)器碼是arduino
上的
Atmega芯片能識(shí)別的真正指令。具體來(lái)說(shuō),它指示編譯器從
RAM而非存儲(chǔ)寄存器中讀取變量,存儲(chǔ)寄存器是程序存儲(chǔ)和操作變量的一個(gè)臨時(shí)地方。在某些情況下,存儲(chǔ)在寄存器中的變量值可能是不準(zhǔn)確的。如果一個(gè)變量所在的代碼段可能會(huì)意外地導(dǎo)致變量值改變,那此變量應(yīng)聲明為
volatile,比如并行多線程等。在arduino
中,唯一可能發(fā)生這種現(xiàn)象的地方就是和中斷有關(guān)的代碼段,成為中斷服務(wù)程序。參考程序://當(dāng)中斷引腳改變狀態(tài)時(shí),開(kāi)閉LEDintpin=13;volatileintstate=LOW;voidsetup(){pinMode(pin,OUTPUT);attachInterrupt(0,blink,CHANGE);}voidloop(){digitalWrite(pin,state);}voidblink(){state=!state;}項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(3)constconst關(guān)鍵字代表常量。它是一個(gè)變量限定符,用于修改變量的性質(zhì),使其變?yōu)橹蛔x狀態(tài)。這意味著該變量,就像任何相同類(lèi)型的其他變量一樣使用,但不能改變其值。如果嘗試為一個(gè)const變量賦值,編譯時(shí)將會(huì)報(bào)錯(cuò)。const關(guān)鍵字定義的常量,遵守variablescoping管轄的其他變量的規(guī)則。這一點(diǎn)加上使用#define的缺陷,使const關(guān)鍵字成為定義常量的一個(gè)的首選方法。參考程序:constfloatpi=3.14;floatx;//....x=pi*2;//在數(shù)學(xué)表達(dá)式中使用常量不會(huì)報(bào)錯(cuò)pi=7;//錯(cuò)誤的用法-你不能修改常量值,或給常量賦值。#define或const可以使用const或#define創(chuàng)建數(shù)字或字符串常量。但arrays,只能使用const。一般const相對(duì)的#define是首選的定義常量語(yǔ)法。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知4.數(shù)字I/O(1)pinMode()pinMode()用于將指定的引腳配置成輸出或輸入。詳情請(qǐng)見(jiàn)digitalpins。pinMode()語(yǔ)法為pinMode(pin,mode),參數(shù)pin:要設(shè)置模式的引腳;參數(shù)mode:INPUT或OUTPUT,無(wú)返回。參考程序:ledPin=13//LED連接到數(shù)字腳
13voidsetup(){pinMode(ledPin,OUTPUT);//設(shè)置數(shù)字腳為輸出}voidloop(){digitalWrite(ledPin,HIGH);//點(diǎn)亮LEDdelay(1000);//等待1sdigitalWrite(ledPin,LOW);//滅掉LEDdelay(1000);//等待第二個(gè)}注意:模擬輸入腳也能當(dāng)做數(shù)字腳使用,參見(jiàn)A0,A1等。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(2)digitalWrite()
用于給一個(gè)數(shù)字引腳寫(xiě)入
HIGH或者LOW。如果一個(gè)引腳已經(jīng)使用pinMode()配置為
OUTPUT模式,其電壓將被設(shè)置為相應(yīng)的值,HIGH為5V(3.3V控制板上為3.3V),LOW為0V。如果引腳配置為
INPUT模式,使用digitalWrite()寫(xiě)入
HIGH值,將使內(nèi)部20kΩ上拉電阻(詳見(jiàn)數(shù)字引腳教程)。寫(xiě)入LOW將會(huì)禁用上拉。上拉電阻可以點(diǎn)亮一個(gè)LED讓其微微亮,如果LED工作,但是亮度很低,可能是因?yàn)檫@個(gè)原因引起的。補(bǔ)救的辦法是使用pinMode()函數(shù)設(shè)置為輸出引腳。注意:數(shù)字
13號(hào)引腳難以作為數(shù)字輸入使用,因?yàn)榇蟛糠值目刂瓢迳鲜褂昧艘活w
LED與一個(gè)電阻連接到他。如果啟動(dòng)了內(nèi)部的20K上拉電阻,他的電壓將在1.7V左右,而不是正常的5V,因?yàn)榘遢dLED串聯(lián)的電阻把他使他降了下來(lái),這意味著他返回的值總是LOW。如果必須使用數(shù)字
13號(hào)引腳的輸入模式,需要使用外部上拉下拉電阻。digitalWrite()語(yǔ)法為digitalWrite(pin,
value),參數(shù)pin:引腳編號(hào)(如1,5,10,A0,A3);參數(shù)value:HIGH或者LOW,無(wú)返回。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知參考程序:intledPin=13;//LED連接到數(shù)字13號(hào)端口voidsetup(){pinMode(ledPin,OUTPUT);//設(shè)置數(shù)字端口為輸入模式}voidloop(){digitalWrite(ledPin,HIGH);//使LED亮delay(1000);//延遲1sdigitalWrite(ledPin,LOW);//使LED滅delay(1000);//延遲1s}13號(hào)端口設(shè)置為高電平,延遲1s,然后設(shè)置為低電平。注意:模擬引腳也可以當(dāng)作數(shù)字引腳使用,使用方法是輸入端口
A0,A1,A2等。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(3)digitalRead()digitalRead()用于讀取指定引腳的值。digitalRead()語(yǔ)法為digitalRead(Pin),
參數(shù)Pin:讀取的引腳號(hào)(int),返回HIGH或LOW。參考程序:ledPin=13//LED連接到13腳intinPin=7;//按鈕連接到數(shù)字引腳7intval=0;//定義變量存以?xún)?chǔ)讀值voidsetup(){pinMode(ledPin,OUTPUT);//將13腳設(shè)置為輸出pinMode(inPin,INPUT);//將7腳設(shè)置為輸入}voidloop(){val=digitalRead(inPin);//讀取輸入腳digitalWrite(ledPin,val);//將LED值設(shè)置為按鈕的值}將13腳設(shè)置為輸入腳7腳的值。注意:如果引腳懸空,digitalRead()會(huì)返回HIGH或LOW(隨機(jī)變化)。模擬輸入腳能當(dāng)做數(shù)字腳使用,參見(jiàn)A0,A1等。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知5.模擬
I/O(1)analogReference()
analogReference()配置用于模擬輸入的基準(zhǔn)電壓(即輸入范圍的最大值)。analogReference()語(yǔ)法及參數(shù)含義見(jiàn)表1-2。analogReference()語(yǔ)法參數(shù)參數(shù)含義analogReference(type)typetype使用哪種參考類(lèi)型:DEFAULT、
INTERNAL、INTERNAL1V1、
INTERNAL2V56、EXTERNALDEFAULT:默認(rèn)5V(Arduino
板為5V)或3.3V(Arduino
板為
3.3V)為基準(zhǔn)電壓INTERNAL:在ATmega168和ATmega328上以1.1V為基準(zhǔn)電壓,以及在ATmega8上以2.56V為基準(zhǔn)電壓(ArduinoMega無(wú)此選項(xiàng))INTERNAL1V1:以1.1V為基準(zhǔn)電壓(此選項(xiàng)僅針對(duì)ArduinoMega)INTERNAL2V56:以2.56V為基準(zhǔn)電壓(此選項(xiàng)僅針對(duì)ArduinoMega)EXTERNAL:以AREF引腳(0至5V)的電壓作為基準(zhǔn)電壓
analogReference()返回?zé)o無(wú)表1-2analogReference()語(yǔ)法及參數(shù)含義注意事項(xiàng):改變基準(zhǔn)電壓后,之前從analogRead()讀取的數(shù)據(jù)可能不準(zhǔn)確。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知
警告:不要在AREF引腳上使用任何小于0V或超過(guò)5V的外部電壓。如果使用AREF引腳上的電壓作為基準(zhǔn)電壓,在調(diào)用analogRead()前必須設(shè)置參考類(lèi)型為EXTERNAL。否則,將會(huì)削短有效的基準(zhǔn)電壓(內(nèi)部產(chǎn)生)和AREF引腳,這可能會(huì)損壞Arduino板上的單片機(jī)。
另外,可以在外部基準(zhǔn)電壓和AREF引腳之間連接一個(gè)5K電阻,這樣能在外部和內(nèi)部基準(zhǔn)電壓之間切換。請(qǐng)注意,總阻值將會(huì)發(fā)生改變,因?yàn)锳REF引腳內(nèi)部有一個(gè)32K電阻。這兩個(gè)電阻都有分壓作用。所以,例如,如果輸入2.5V的電壓,最終在AREF引腳上的電壓將為2.5×32/(32+5)V=2.2V。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(2)analogRead()
analogRead()用于從指定的模擬引腳讀取數(shù)據(jù)值。Arduino
板包含一個(gè)
6通道(Mini和Nano有8個(gè)通道,Mega有16個(gè)通道),10位模擬數(shù)字轉(zhuǎn)換器。這意味著它將
0至5V之間的輸入電壓映射到
0至1023之間的整數(shù)值。這將產(chǎn)生讀數(shù)之間的關(guān)系:5V/1024單位,或0.0049V(4.9mV)每單位。輸入范圍和精度可以使用analogReference()改變。它需要大約
100μs(0.0001)來(lái)讀取模擬輸入,所以最大的閱讀速度是每s
10000次。analogRead()語(yǔ)法為analogRead(Pin),參數(shù)Pin:從輸入引腳(大部分板子從
0到5,Mini和Nano從0到7,Mega從0到15)讀取數(shù)值,返回:從
0到1023的整數(shù)值。注意事項(xiàng):如果模擬輸入引腳沒(méi)有連入電路,由analogRead()返回的值將根據(jù)多項(xiàng)因素(例如其他模擬輸入引腳,你的手靠近板子等)產(chǎn)生波動(dòng)。參考程序:intanalogPin=3;//電位器(中間的引腳)連接到模擬輸入引腳3//另外兩個(gè)引腳分別接地和+5Vintval=0;//定義變量來(lái)存儲(chǔ)讀取的數(shù)值voidsetup(){serial.begin(9600);//設(shè)置波特率(9600)}voidloop(){val=analogRead(analogPin);//從輸入引腳讀取數(shù)值serial.println(val);//顯示讀取的數(shù)值}項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(3)analogWrite()
analogWrite()用于PWM從一個(gè)引腳輸出模擬值(PWM)??捎糜谧?/p>
LED以不同的亮度點(diǎn)亮或驅(qū)動(dòng)電機(jī)以不同的速度旋轉(zhuǎn)。analogWrite()輸出結(jié)束后,該引腳將產(chǎn)生一個(gè)穩(wěn)定的特殊占空比方波,直到下次調(diào)用analogWrite()(或在同一引腳調(diào)用digitalRead()或digitalWrite())。PWM信號(hào)的頻率大約是490赫茲。在大多數(shù)arduino
板(ATmega168或ATmega328),只有引腳3,5,6,9,10和11可以實(shí)現(xiàn)該功能。在aduino
Mega上,引腳2到13可以實(shí)現(xiàn)該功能。老的Arduino
板(ATmega8)的只有引腳9.10.11可以使用analogWrite()。在使用analogWrite()前,你不需要調(diào)用pinMode()來(lái)設(shè)置引腳為輸出引腳。analogWrite
函數(shù)與模擬引腳、analogRead
函數(shù)沒(méi)有直接關(guān)系。analogWrite()語(yǔ)法為analogWrite(pin,value),參數(shù)pin:用于輸入數(shù)值的引腳;參數(shù)value:占空比,0(完全關(guān)閉)到255(完全打開(kāi))之間,無(wú)返回。說(shuō)明:引腳
5和6的PWM輸出將高于預(yù)期的占空比(輸出的數(shù)值偏高)。這是因?yàn)閙illis()和delay()功能,和PWM輸出共享相同的內(nèi)部定時(shí)器。這將導(dǎo)致大多時(shí)候處于低占空比狀態(tài)(如:0-10),并可能導(dǎo)致在數(shù)值為0時(shí),沒(méi)有完全關(guān)閉引腳5和6。通過(guò)讀取電位器的阻值控制
LED的亮度。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知參考程序:intledPin=9;//LED連接到數(shù)字引腳9intanalogPin=3;//電位器連接到模擬引腳3intval=0;//定義變量存以?xún)?chǔ)讀值voidsetup(){pinMode(ledPin,OUTPUT);//設(shè)置引腳為輸出引腳}voidloop(){val=analogRead(analogPin);//從輸入引腳讀取數(shù)值analogWrite(ledPin,val/4);//以val/4的數(shù)值點(diǎn)亮LED(因?yàn)閍nalogRead
讀取的數(shù)值從
0到1023,而analogWrite
輸出的數(shù)值從
0到255)}項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知(4)高級(jí)I/Otone()。tone()用于在一個(gè)引腳上產(chǎn)生一個(gè)特定頻率的方波(50%占空比)。持續(xù)時(shí)間可以設(shè)定,否則波形會(huì)一直產(chǎn)生直到調(diào)用noTone()函數(shù)。該引腳可以連接壓電蜂鳴器或其他喇叭播放聲音。
在同一時(shí)刻只能產(chǎn)生一個(gè)聲音。如果一個(gè)引腳已經(jīng)在播放音樂(lè),那調(diào)用
tone()將不會(huì)有任何效果。如果音樂(lè)在同一個(gè)引腳上播放,它會(huì)自動(dòng)調(diào)整頻率。
使用
tone()函數(shù)會(huì)與3腳和11腳的PWM產(chǎn)生干擾(Mega板除外)。
注意:如果你要在多個(gè)引腳上產(chǎn)生不同的音調(diào),你要在對(duì)下一個(gè)引腳使用
tone()函數(shù)前對(duì)此引腳調(diào)用noTone()函數(shù)。tone()語(yǔ)法及參數(shù)含義見(jiàn)表1-3。tone()語(yǔ)法參數(shù)參數(shù)含義tone(pin,frequency)type要產(chǎn)生聲音的引腳frequency產(chǎn)生聲音的頻率,單位
Hz,類(lèi)型unsignedinttone(pin,frequency,duration)type要產(chǎn)生聲音的引腳frequency產(chǎn)生聲音的頻率,單位
Hz,類(lèi)型unsignedintduration聲音持續(xù)的時(shí)間,單位ms(可選),類(lèi)型unsignedlong表1-3tone()語(yǔ)法及參數(shù)含義項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知noTone()。noTone()用于停止由
tone()產(chǎn)生的方波。如果沒(méi)有使用tone()將不會(huì)有效果。注意:如果你想在多個(gè)引腳上產(chǎn)生不同的聲音,你要在對(duì)下個(gè)引腳使用
tone()前對(duì)剛才的引腳調(diào)用noTone()。noTone()語(yǔ)法為noTone(pin),參數(shù)pin:所要停止產(chǎn)生聲音的引腳。shiftOut()。shiftOut()將一個(gè)數(shù)據(jù)的一個(gè)字節(jié)一位一位的移出。從最高有效位(最左邊)或最低有效位(最右邊)開(kāi)始。依次向數(shù)據(jù)腳寫(xiě)入每一位,之后時(shí)鐘腳被拉高或拉低,指示剛才的數(shù)據(jù)有效。
注意:如果所連接的設(shè)備時(shí)鐘類(lèi)型為上升沿,要確定在調(diào)用shiftOut()前時(shí)鐘腳為低電平,如調(diào)用digitalWrite(clockPin,
LOW)。這是一個(gè)軟件實(shí)現(xiàn);Arduino
提供了一個(gè)硬件實(shí)現(xiàn)的
SPI庫(kù),它速度更快但只在特定腳有效。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知shiftOut()語(yǔ)法及參數(shù)含義見(jiàn)表1-4。shiftOut()語(yǔ)法參數(shù)參數(shù)含義shiftOut(dataPin,
clockPin,
bitOrder,value)dataPin輸出每一位數(shù)據(jù)的引腳(int)clockPin時(shí)鐘腳,當(dāng)
dataPin
有值時(shí)此引腳電平變化(int)bitOrder輸出位的順序,最高位優(yōu)先或最低位優(yōu)先value要移位輸出的數(shù)據(jù)(byte)shiftOut()返回?zé)o無(wú)表1-4shiftOut()語(yǔ)法及參數(shù)含義注意:dataPin和clockPin要用pinMode()配置為輸出。shiftOut目前只能輸出1個(gè)字節(jié)(8位),所以如果輸出值大于255需要分兩步。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知//最高有效位優(yōu)先串行輸出int數(shù)據(jù)=500;//移位輸出高字節(jié)shiftOut(dataPin,
clock,MSBFIRST,(data>>8));//移位輸出低字節(jié)shiftOut(data,clock,MSBFIRST,data);//最低有效位優(yōu)先串行輸出data=500;//移位輸出低字節(jié)shiftOut(dataPin,
clock,LSBFIRST,data);//移位輸出高字節(jié)shiftOut(dataPin,
clock,LSBFIRST,(data>>8));項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知參考程序://**************************************************************////Name:shiftOut
代碼,
HelloWorld////Author:CarlynMaw,TomIgoe////Date:25Oct,2006////版本:1.0////注釋?zhuān)菏褂?4HC595移位寄存器從0到255計(jì)數(shù)//////****************************************************************//引腳連接到74HC595的ST_CPintlatchPin=8;//引腳連接到74HC595的SH_CP intclockPin=12;////引腳連接到74HC595的DSintdataPin=11;voidsetup(){//設(shè)置引腳為輸出pinMode(latchPin,OUTPUT);pinMode(clockPin,OUTPUT);pinMode(dataPin,OUTPUT);}voidloop(){//向上計(jì)數(shù)程序(J=0;J<256;J++){//傳輸數(shù)據(jù)的時(shí)候?qū)atchPin
拉低digitalWrite(latchpin,LOW);shiftOut
的(dataPin,clockPin,LSBFIRST,J);//之后將latchPin
拉高//它不需要再接受信息了digitalWrite(latchpin,HIGH);delay(1000);}}相應(yīng)電路,查看
tutorialoncontrollinga74HC595shiftregister。項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知shiftIn()。shiftIn()用于將一個(gè)數(shù)據(jù)的一個(gè)字節(jié)一位一位的移入。從最高有效位(最左邊)或最低有效位(最右邊)開(kāi)始。對(duì)于每個(gè)位,先拉高時(shí)鐘電平,再?gòu)臄?shù)據(jù)
傳輸線中讀取一位,再將時(shí)鐘線拉低。
注意:這是一個(gè)軟件實(shí)現(xiàn);Arduino
提供了一個(gè)硬件實(shí)現(xiàn)的
SPI庫(kù),它速度更快但只在特定腳有效。shiftIn()語(yǔ)法及參數(shù)含義見(jiàn)表1-5。shiftIn()語(yǔ)法參數(shù)參數(shù)含義shiftIn(dataPin,clockPin,bitOrder)dataPin輸出每一位數(shù)據(jù)的引腳(int)clockPin時(shí)鐘腳,當(dāng)
dataPin
有值時(shí)此引腳電平變化(int)bitOrder輸出位的順序,最高位優(yōu)先或最低位優(yōu)先value要移位輸出的數(shù)據(jù)(byte)表1-5
shiftIn()語(yǔ)法及參數(shù)含義項(xiàng)目1
汽車(chē)單片機(jī)基礎(chǔ)知識(shí)認(rèn)知pulseIn()。pulseIn()用于讀取一個(gè)引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會(huì)等待引腳變?yōu)?/p>
HIGH,開(kāi)始計(jì)時(shí),再等待引腳變?yōu)長(zhǎng)OW并停止計(jì)時(shí)。返回脈沖的長(zhǎng)度,單位μs。如果在指定的時(shí)間內(nèi)無(wú)脈沖函數(shù)返回。此函數(shù)的計(jì)時(shí)功能由經(jīng)驗(yàn)決定,長(zhǎng)時(shí)間的脈沖計(jì)時(shí)可能會(huì)出錯(cuò)。計(jì)時(shí)范圍從
10μs至3min(1s=1000ms=1000000μs)。pulseIn()語(yǔ)法及參數(shù)含義見(jiàn)表1-6。pulseIn()語(yǔ)法參數(shù)參數(shù)含義pulseIn(pin,value)pin要進(jìn)行脈沖計(jì)時(shí)的引腳號(hào)(int)value要讀取的脈沖類(lèi)型,HIGH或LOW(int)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版境外投資協(xié)議書(shū)
- 機(jī)電工程施工總承包資質(zhì)標(biāo)準(zhǔn)二零二五年
- 物業(yè)委托管理協(xié)議
- 2025年日用織物制品項(xiàng)目建議書(shū)
- 供電外包勞務(wù)合同樣本
- 青島版小學(xué)二年級(jí)上冊(cè)數(shù)學(xué)教學(xué)計(jì)劃
- 平面的投影-教案
- 企業(yè)門(mén)頭制作合同樣本
- 中圖版地理必修二第二章學(xué)教案
- 淘寶客服聘用合同
- 框架結(jié)構(gòu)多層廠房施工組織設(shè)計(jì)
- 配位化學(xué)教材全文
- 事業(yè)單位固定資產(chǎn)購(gòu)置流程圖
- 變壓器生產(chǎn)工藝
- 融創(chuàng)文旅集團(tuán)出差管理制度(培訓(xùn)課件)
- 基坑監(jiān)測(cè)周報(bào)
- 客戶(hù)信用等級(jí)評(píng)價(jià)表
- CCTV雨污水管道檢測(cè)缺陷內(nèi)容判斷依據(jù)判斷標(biāo)準(zhǔn)
- 《青少年管弦樂(lè)隊(duì)指南》.PPT
- 合規(guī)管理有效性評(píng)估表
- 應(yīng)急管理試題庫(kù)
評(píng)論
0/150
提交評(píng)論