Arduino編程控制與應(yīng)用 課件 能力模塊四 掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用_第1頁(yè)
Arduino編程控制與應(yīng)用 課件 能力模塊四 掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用_第2頁(yè)
Arduino編程控制與應(yīng)用 課件 能力模塊四 掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用_第3頁(yè)
Arduino編程控制與應(yīng)用 課件 能力模塊四 掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用_第4頁(yè)
Arduino編程控制與應(yīng)用 課件 能力模塊四 掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Arduino編程控制與應(yīng)用能力模塊四掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用任務(wù)一點(diǎn)亮數(shù)碼管導(dǎo)入在生活中,我們經(jīng)常使用鬧鐘來(lái)提醒我們注意各種事項(xiàng),同學(xué)們你們知道嗎,其實(shí)Arduino也可以利用led數(shù)碼管實(shí)現(xiàn)顯示時(shí)間的效果,接下來(lái)我們通過(guò)本次任務(wù)的學(xué)習(xí),點(diǎn)亮數(shù)碼管。新授Newteaching1目錄一、一位數(shù)碼管的原理與使用二、四位數(shù)碼管的原理與使用三、點(diǎn)亮數(shù)碼管使用到的語(yǔ)句四、子函數(shù)一、一位數(shù)碼管的原理與使用(一)數(shù)碼管數(shù)碼管,又稱(chēng)LED數(shù)碼管,是一種常見(jiàn)的用來(lái)顯示數(shù)字的電子元件。通常由七段發(fā)光二極管封裝在一起組成“8”字形狀,外加一個(gè)小數(shù)點(diǎn)。數(shù)碼管根據(jù)其顯示數(shù)字的位數(shù),通常有一位數(shù)碼管、二位數(shù)碼管、四位數(shù)碼管等,如圖所示。單擊此處添加文本具體內(nèi)容,簡(jiǎn)明扼要的闡述您的觀點(diǎn)。一、一位數(shù)碼管的原理與使用(二)一位數(shù)碼管的原理一位數(shù)碼只能顯示一位數(shù)字,一般分成8個(gè)字段(即8個(gè)LED),其中的7個(gè)字段可以組合顯示不同的數(shù)字,另一個(gè)字段顯示小數(shù)點(diǎn)。每個(gè)字段都是一個(gè)獨(dú)立的發(fā)光LED單元,通過(guò)控制各個(gè)發(fā)光單元的亮與滅,來(lái)顯示不同的數(shù)字。數(shù)碼管的8個(gè)LED并聯(lián)在一起,根據(jù)公共管腳的不同,分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管兩種。其區(qū)別就是公共管腳是LED燈的正極還是負(fù)極。一、一位數(shù)碼管的原理與使用(二)一位數(shù)碼管的原理共陽(yáng)數(shù)碼管:是指將每個(gè)發(fā)光單元的正極都接到一起形成公共端的數(shù)碼管(如圖所示),使用共陽(yáng)數(shù)碼管時(shí)應(yīng)將公共端COM接到電源正極,當(dāng)控制某一字段發(fā)光單元(通常為發(fā)光二極管,LED)的負(fù)極為低電平時(shí),相應(yīng)字段就點(diǎn)亮;負(fù)極為高電平時(shí),相應(yīng)字段熄滅。一、一位數(shù)碼管的原理與使用(二)一位數(shù)碼管的原理共陰數(shù)碼管:是指將所有發(fā)光單元的負(fù)極接到一起形成公共端的數(shù)碼管(如圖所示),使用共陰數(shù)碼管時(shí)應(yīng)將公共端COM接到電源負(fù)極(GND),當(dāng)控制某一字段發(fā)光二極管的正極為高電平時(shí),相應(yīng)字段就點(diǎn)亮;正極為低電平時(shí),相應(yīng)字段熄滅。一、一位數(shù)碼管的原理與使用(二)一位數(shù)碼管的原理一位數(shù)碼管通常有兩排管腳,每排5個(gè),共10個(gè)管腳。其中每排最中間的管腳是公共端COM(即3號(hào)和8號(hào)管腳內(nèi)部電路相連作為公共端),通過(guò)控制另外8個(gè)管腳電平的高低來(lái)實(shí)現(xiàn)相應(yīng)字段的控制。一位數(shù)碼管的外觀及管腳如圖所示。一、一位數(shù)碼管的原理與使用(三)一位數(shù)碼管的控制如圖所示,若想顯示數(shù)字“0”,需要點(diǎn)亮數(shù)碼管a、b、c、d、e和f共6個(gè)字段;若想要示數(shù)字“1”,需要點(diǎn)亮數(shù)碼管b和c共2個(gè)字段;若想顯示數(shù)字“2”,需要點(diǎn)亮數(shù)碼管a、b、g、e和d共5個(gè)字段。一、一位數(shù)碼管的原理與使用(三)一位數(shù)碼管的控制如此類(lèi)推,數(shù)碼管顯示數(shù)字0~9需要被點(diǎn)亮的字段以及這些字段對(duì)應(yīng)的數(shù)碼管管腳如表所示。若使用的是共陽(yáng)數(shù)碼管,要想點(diǎn)亮某個(gè)字段,需要使用digitalWrite()函數(shù)控制該字段對(duì)應(yīng)管腳為低電位;若使用的是共陰極數(shù)碼管則控制該字段對(duì)應(yīng)管腳為高電位。二、四位數(shù)碼管的原理與使用(一)四位數(shù)碼管的原理

四位數(shù)碼管可以認(rèn)為是把四個(gè)一位數(shù)碼管封裝在一起形成的。它一共有12個(gè)管腳,其中有8個(gè)是字段管腳,4個(gè)是位管腳(也可以稱(chēng)為公共端COM)。四位數(shù)碼管的控制電路如圖4-1-5所示。管腳1、2、3、4、5、7、10、11為字段管腳(又稱(chēng)段選管腳),管腳6、8、9、12為四個(gè)數(shù)碼管的位管腳(又稱(chēng)位選管腳)。四位數(shù)碼管的外觀和管腳編號(hào)如圖所示。二、二維數(shù)組(二)四位數(shù)碼管的控制

四位數(shù)碼管的控制方式主要有兩種,分別為靜態(tài)顯示和動(dòng)態(tài)顯示。靜態(tài)顯示:靜態(tài)顯示又稱(chēng)為靜態(tài)驅(qū)動(dòng),也稱(chēng)直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的特點(diǎn)是每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng)。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止,這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,編程簡(jiǎn)單,顯示亮度高,顯示便于監(jiān)測(cè)和控制。缺點(diǎn)是硬件電路比較復(fù)雜(每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線(xiàn)來(lái)保持顯示的字形碼,占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40個(gè)I/O端口來(lái)驅(qū)動(dòng)),成本較高。二、二維數(shù)組(二)四位數(shù)碼管的控制

動(dòng)態(tài)顯示:動(dòng)態(tài)顯示是將所有數(shù)碼管的8個(gè)顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線(xiàn)控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)顯示。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。二、四位數(shù)碼管的原理與使用(二)四位數(shù)碼管的控制

本書(shū)采用動(dòng)態(tài)顯示方式控制數(shù)碼管顯示,并開(kāi)發(fā)了相應(yīng)的四位數(shù)碼管擴(kuò)展板。四位數(shù)碼管擴(kuò)展板使用了UNO板上的2、3、4、5、6、7、8、9、10、11、A4、A5共12個(gè)管腳(其中A4、A5、3、2是公共端)。每位數(shù)碼管都有一個(gè)公共端,A4、A5、3、2四個(gè)管腳分別對(duì)應(yīng)四位數(shù)碼管的公共端。11、9、7、5、4、10、8、6管腳分別接了數(shù)碼管的a、b、c、d、e、f、g、D1D2,(D1D2代表數(shù)碼管中間的兩個(gè)點(diǎn))。三、點(diǎn)亮數(shù)碼管使用到的語(yǔ)句(一)digitalWrite(管腳號(hào),電位)本任務(wù)中繼續(xù)用到前面的數(shù)字輸出對(duì)應(yīng)函數(shù)“digitalWrite(管腳號(hào),電位)”,在米思齊中則對(duì)應(yīng)程序如圖所示。三、點(diǎn)亮數(shù)碼管使用到的語(yǔ)句(二)遍歷循環(huán)“for”語(yǔ)句

為了能更簡(jiǎn)便實(shí)現(xiàn)將所有輸出管腳復(fù)位為高電位,本任務(wù)中還用到遍歷循環(huán)“for”語(yǔ)句。“for”語(yǔ)句解釋?zhuān)骸癷nti=初始值”為初始表達(dá)式,“i<=目標(biāo)值”為判斷表達(dá)式,“i++”為循環(huán)表達(dá)式。先執(zhí)行“初始化表達(dá)式”,再根據(jù)“判斷表達(dá)式”的結(jié)果判斷是否執(zhí)行循環(huán),當(dāng)判斷表達(dá)式為真(true)時(shí),執(zhí)行循環(huán)中的語(yǔ)句,最后執(zhí)行“循環(huán)表達(dá)式”,并繼續(xù)返回循環(huán)的開(kāi)始進(jìn)行新一輪的循環(huán);表達(dá)式為假(false)則不執(zhí)行循環(huán),并退出for循環(huán)。四、子函數(shù)(一)子函數(shù)的定義(聲明)

子函數(shù)可以理解為是一段可以實(shí)現(xiàn)某個(gè)特定功能的程序模塊,能被其他程序調(diào)用,在實(shí)現(xiàn)某種功能后能自動(dòng)返回到調(diào)用程序去的程序。其最后一條指令一定是返回指令,故能保證重新返回到調(diào)用它的程序中去。也可調(diào)用其他子函數(shù),甚至可自身調(diào)用(如遞歸)。Arduino子函數(shù)的定義或聲明,必須在循環(huán)函數(shù)的下面。子函數(shù)聲明的一般形式為:<返回類(lèi)型><函數(shù)名>([<形參類(lèi)型1>][<形參1>],[<形參類(lèi)型2>][<形參2>],…);四、子函數(shù)(二)子函數(shù)的調(diào)用

只要定義好子函數(shù),就可以在程序中調(diào)用子函數(shù)。子函數(shù)調(diào)用的一般形式為:<函數(shù)名>([<實(shí)際參數(shù)列表>]);例如主函數(shù)中的“Refresh(500);”,就是調(diào)用了子函數(shù)Refresh。500稱(chēng)為實(shí)際參數(shù),實(shí)際參數(shù)和形式參數(shù)必須一一對(duì)應(yīng),數(shù)量應(yīng)該相同,類(lèi)型也保持一致。若定義子函數(shù)時(shí)不帶傳遞參數(shù)定義為voidRefresh(),則調(diào)用時(shí)寫(xiě)成Refresh()即可。四、子函數(shù)(三)子函數(shù)的特點(diǎn)1子函數(shù)是程序中的某部份代碼,由一個(gè)或多個(gè)語(yǔ)句塊組成。2類(lèi)似Arduino的內(nèi)建函數(shù)digitalWrite和delay,其它一些子函數(shù)可以被編寫(xiě)定義來(lái)完成一些特定的任務(wù)。3使用子函數(shù)可以按照功能實(shí)現(xiàn)對(duì)語(yǔ)句塊進(jìn)行歸類(lèi),增強(qiáng)程序可讀性,便于維護(hù)和修改。三、子函數(shù)(四)子函數(shù)的優(yōu)點(diǎn)3便于修改,可以限制改動(dòng)帶來(lái)的影響。1降低整個(gè)程序的復(fù)雜性,增強(qiáng)可讀性??梢愿倪M(jìn)性能。通過(guò)使用子函數(shù),可以只在一個(gè)地方,而不是同時(shí)幾個(gè)地方優(yōu)化代碼段。4可以避免代碼段重復(fù),使程序更小更緊湊。2任務(wù)實(shí)施2TaskImplementation一、任務(wù)準(zhǔn)備(一)軟件及硬件準(zhǔn)備序號(hào)軟件及硬件名稱(chēng)數(shù)量1ArduinoIDE/2聯(lián)網(wǎng)的電腦1臺(tái)/人3鍵盤(pán)1個(gè)/人4鼠標(biāo)1個(gè)/人5ArduinoUNO開(kāi)發(fā)板1塊/人6四位數(shù)碼管擴(kuò)展板1塊/人7USB串口線(xiàn)1根/人一、任務(wù)準(zhǔn)備(二)場(chǎng)地設(shè)備準(zhǔn)備(三)安全防護(hù)準(zhǔn)備任務(wù)實(shí)施前需要做好場(chǎng)地防護(hù)準(zhǔn)備以及檢查實(shí)訓(xùn)場(chǎng)地和設(shè)備設(shè)施是否及存在安全隱患,如不正常請(qǐng)匯報(bào)老師并進(jìn)行處理方可實(shí)施任務(wù)。11.注意Arduino開(kāi)發(fā)板與電腦的連接是否可靠;22.注意Arduino開(kāi)發(fā)板與電腦連接端口的匹配;

33.注意輸出電壓,避免開(kāi)發(fā)板被燒壞;

44.注意Arduino開(kāi)發(fā)板與四位數(shù)碼管擴(kuò)展板連接時(shí),針腳要對(duì)孔,插入時(shí)要小心,避免陣腳變歪或折斷。

二、實(shí)施步驟(一)認(rèn)識(shí)四位數(shù)碼管擴(kuò)展板

本任務(wù)中使用的四位數(shù)碼管擴(kuò)展板尺寸為68.6*53.4mm,數(shù)碼管類(lèi)型為4位共陽(yáng)數(shù)碼管,DIG代表公共端,其結(jié)構(gòu)如圖1所示,具體結(jié)構(gòu)說(shuō)明如表1所示。

二、實(shí)施步驟(一)認(rèn)識(shí)四位數(shù)碼管擴(kuò)展板

該四位數(shù)碼管擴(kuò)展板使用了UNO板上的2、3、4、5、6、7、8、9、10、11、A0、A1共12個(gè)管腳(其中A0、A1、3、2是公共端),每位數(shù)碼管都有一個(gè)公共端,A0、A1、3、2四個(gè)引腳分別對(duì)應(yīng)四位數(shù)碼管的公共端。11、9、7、5、4、10、8、6引腳分別接了數(shù)碼管的a、b、c、d、e、f、g、D1D2,(D1D2代表數(shù)碼管中間的兩個(gè)點(diǎn))。將對(duì)應(yīng)的數(shù)碼管驅(qū)動(dòng)程序通過(guò)軟件燒寫(xiě)到UNO板上通電即可點(diǎn)亮數(shù)碼管。

二、實(shí)施步驟(二)控制電路連接

步驟1:連接線(xiàn)的方頭端接口連接ArduinoUNO開(kāi)發(fā)板,另一端USB接口連接電腦。

二、實(shí)施步驟(二)控制電路連接

步驟二:四位數(shù)碼管擴(kuò)展板安裝在ArduinoUNO開(kāi)發(fā)板上。

二、實(shí)施步驟(三)控制程序編寫(xiě)與上傳

步驟1:打開(kāi)ArduinoIDE軟件,進(jìn)入界面。

二、實(shí)施步驟(三)控制程序編寫(xiě)與上傳

步驟2:在工具-端口-選擇對(duì)應(yīng)的端口。若分不清端口,先把開(kāi)發(fā)板連接上,查看端口,有COM1、COM3、COM4、COM5、COM6;斷開(kāi)開(kāi)發(fā)板連接,查看端口,有COM3、COM4、COM5、COM6;少了一個(gè)COM10端口,那么COM10就是對(duì)應(yīng)的端口。

二、實(shí)施步驟(四)點(diǎn)亮一個(gè)字段

步驟1:新建一個(gè)文檔,//后的代號(hào)可刪除;在【代碼編寫(xiě)區(qū)域】中的“voidsetup(){”下方輸入如圖所示代碼

二、實(shí)施步驟(四)點(diǎn)亮一個(gè)字段

步驟2:在【代碼編寫(xiě)區(qū)域】中的“voidloop(){”下方輸入如圖所示代碼。

二、實(shí)施步驟(四)點(diǎn)亮一個(gè)字段

步驟3:如圖所示單擊“上傳”按鈕,通過(guò)USB轉(zhuǎn)串口芯片將程序燒寫(xiě)到開(kāi)發(fā)板的主控芯片中。。

二、實(shí)施步驟(四)點(diǎn)亮一個(gè)字段

步驟4:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖4-1-18所示四位數(shù)碼管擴(kuò)展板上的第1位數(shù)碼管中的一段發(fā)光二極管被點(diǎn)亮,說(shuō)明成功點(diǎn)亮一個(gè)字段了。

二、實(shí)施步驟(四)點(diǎn)亮一個(gè)字段

步驟5:控制程序解析:在初始化函數(shù)中將3、8、2、A0、A1設(shè)置為輸出模式。在loop函數(shù)中A0設(shè)置為高電平(讓第一位的位選管腳高電平),A1、3、2、8設(shè)置為低電平(其余三位的位選管腳低電平,8號(hào)段選管腳也為低電平),所以第一位數(shù)碼管,8號(hào)管腳對(duì)應(yīng)的字段被點(diǎn)亮。程序運(yùn)行流程如圖4-1-19所示。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟1:新建一個(gè)文檔,//后的代號(hào)可刪除;在【代碼編寫(xiě)區(qū)域】中的“voidsetup(){”下方輸入如圖所示代碼。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟2:然后在【代碼編寫(xiě)區(qū)域】中的“voidloop(){”下方依次輸入“one();”、“Two();”和“Three();”。隨后輸入“voidthree()并在其下方輸入如圖所示代碼。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟3:輸入“voidtwo(){”,并在其下方輸入如圖所示代碼。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟4:輸入“voidone(){”,并在其下方輸入如圖所示代碼。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟5:輸入“voidRefresh(){”,并在其下方輸入如圖所示代碼。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟6:如圖4-1-25所示單擊“上傳”按鈕,通過(guò)USB轉(zhuǎn)串口芯片將程序燒寫(xiě)到開(kāi)發(fā)板的主控芯片中。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟7:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖4-1-26所示,四位數(shù)碼管擴(kuò)展板上的第1、2、3位數(shù)碼管分別顯示1、2、3的數(shù)字,這是許多段發(fā)光二極管被點(diǎn)亮的效果。

二、實(shí)施步驟(五)子函數(shù)與“123”

步驟8:控制程序解析:在初始化函數(shù)中將2、3、4、5、7、8、9、10、11、A0、A1設(shè)置為輸出模式,自定義4個(gè)函數(shù)分別是one、two、three、Refresh,功能分別是第一位數(shù)碼管顯示數(shù)字“1”、第二位數(shù)碼管顯示數(shù)字“2”、第三位數(shù)碼管顯示數(shù)字“3”、所有數(shù)碼管全部熄滅。在loop函數(shù)中分別調(diào)用one、two、three三個(gè)函數(shù),每調(diào)用一個(gè)函數(shù)后,都先使用Refresh函數(shù)熄滅之前被點(diǎn)亮的所有字段,然后才點(diǎn)亮自身數(shù)字需要的字段。因?yàn)槌绦蜓h(huán)速度足夠快,而人類(lèi)又有視覺(jué)暫留的效果,所以就可以看到數(shù)碼管一直穩(wěn)定顯示數(shù)字“123”。程序運(yùn)行流程如圖所示。二、實(shí)施步驟(五)子函數(shù)與“123”

隨堂討論3Practiceontheclass隨堂討論如果讓四位數(shù)碼管擴(kuò)展板上的第1、2、3位數(shù)碼管分別顯示3、2、1的數(shù)字,應(yīng)當(dāng)怎么做?請(qǐng)簡(jiǎn)要敘述出來(lái)。1.各組派代表統(tǒng)計(jì)遇到的問(wèn)題。2.各組就各自的主要問(wèn)題進(jìn)行交流,并分享解決方法。Arduino編程控制與應(yīng)用能力模塊四掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用任務(wù)二完成數(shù)字秒表的實(shí)現(xiàn)導(dǎo)入每當(dāng)有重大節(jié)日的時(shí)候,都會(huì)啟動(dòng)倒計(jì)時(shí)牌啟動(dòng)儀式,例如2009年5月1日上午,在北京天安門(mén)廣場(chǎng)東側(cè)中國(guó)國(guó)家博物館前,舉行中國(guó)2010年上海世博會(huì)倒計(jì)時(shí)一周年暨計(jì)時(shí)牌啟動(dòng)儀式,其中倒計(jì)時(shí)的功能,我們也可以利用Arduino開(kāi)發(fā)板來(lái)實(shí)現(xiàn),本次任務(wù)我們將利用Arduino編程來(lái)實(shí)現(xiàn)數(shù)字秒表的功能。新授Newteaching1目錄一、一維數(shù)組二、二維數(shù)組一、一維數(shù)組(一)數(shù)組的定義及作用數(shù)組的定義數(shù)組由若干個(gè)類(lèi)型相同的元素組成,每個(gè)元素就是一個(gè)變量,每個(gè)數(shù)組都有一個(gè)名稱(chēng),稱(chēng)為數(shù)組名。數(shù)組的作用數(shù)組在大數(shù)量處理和字符串處理中得到廣泛使用。在程序中合理地使用數(shù)組,會(huì)使程序的結(jié)構(gòu)比較整齊,而且可以把較為復(fù)雜的運(yùn)算,轉(zhuǎn)化成簡(jiǎn)單的數(shù)組來(lái)表示。一、一維數(shù)組(二)一維數(shù)組的定義一維數(shù)組是最簡(jiǎn)單的數(shù)組,其邏輯結(jié)構(gòu)是線(xiàn)性表。一維數(shù)組的數(shù)組元素只有一個(gè)下標(biāo)。在C語(yǔ)言程序中使用數(shù)組必須先進(jìn)行定義。定義一維數(shù)組的一般形式為:數(shù)據(jù)類(lèi)型數(shù)組名[整型常量表達(dá)式]其中:數(shù)據(jù)類(lèi)型是任一種基本數(shù)據(jù)類(lèi)型或構(gòu)造數(shù)據(jù)類(lèi)型。數(shù)組名是用戶(hù)定義的數(shù)組標(biāo)識(shí)符(數(shù)組名稱(chēng))。方括號(hào)中的整型常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱(chēng)為數(shù)組的長(zhǎng)度。一、一維數(shù)組(三)一維數(shù)組的初始化數(shù)組的初始化是用來(lái)實(shí)現(xiàn)對(duì)數(shù)組的每個(gè)元素賦初值的。雖然有的編譯器會(huì)自動(dòng)對(duì)數(shù)組賦初值,但為了安全起見(jiàn),建議用戶(hù)自己對(duì)數(shù)組賦初值。對(duì)一維數(shù)組初始化的一般形式為:數(shù)據(jù)類(lèi)型數(shù)組名[長(zhǎng)度]={數(shù)值1,數(shù)值2,……,數(shù)值n}。一、一維數(shù)組(四)一維數(shù)組的引用維數(shù)組的引用就是對(duì)一維數(shù)組元素的使用,數(shù)組定義好并初始化后就可以使用(或稱(chēng)為調(diào)用)。引用一維數(shù)組的一般形式為:數(shù)組名[下標(biāo)]二、二維數(shù)組(一)二維數(shù)組的定義

二維數(shù)組本質(zhì)上是以數(shù)組作為數(shù)組元素的數(shù)組,即“數(shù)組的數(shù)組”。二維數(shù)組又稱(chēng)為矩陣,通常有兩個(gè)下標(biāo)(第一個(gè)下標(biāo)表示行,第二個(gè)下表表示列),行列數(shù)相等的矩陣稱(chēng)為方陣。引用二維數(shù)組的一般形式為:數(shù)據(jù)類(lèi)型數(shù)組名[整型常量表達(dá)式][整型常量表達(dá)式]二、二維數(shù)組(二)二維數(shù)組的初始化

二維數(shù)組的初始化是用來(lái)實(shí)現(xiàn)對(duì)二維數(shù)組的每個(gè)元素賦初值,其賦值方式有多種,這里介紹常用的兩種賦值方式——分段賦值和連續(xù)賦值。二、二維數(shù)組(三)二維數(shù)組的引用

二維數(shù)組的引用就是對(duì)二維數(shù)組元素的使用,數(shù)組定義好并初始化后就可以使用(或稱(chēng)為調(diào)用)。引用二維數(shù)組的一般形式為:數(shù)組名[下標(biāo)1][下標(biāo)2]任務(wù)實(shí)施2TaskImplementation一、任務(wù)準(zhǔn)備(一)軟件及硬件準(zhǔn)備序號(hào)軟件及硬件名稱(chēng)數(shù)量1ArduinoIDE/2聯(lián)網(wǎng)的電腦1臺(tái)/人3鍵盤(pán)1個(gè)/人4鼠標(biāo)1個(gè)/人5ArduinoUNO開(kāi)發(fā)板1塊/人6四位數(shù)碼管擴(kuò)展板1塊/人7USB串口線(xiàn)1根/人一、任務(wù)準(zhǔn)備(二)場(chǎng)地設(shè)備準(zhǔn)備(三)安全防護(hù)準(zhǔn)備任務(wù)實(shí)施前需要做好場(chǎng)地防護(hù)準(zhǔn)備以及檢查實(shí)訓(xùn)場(chǎng)地和設(shè)備設(shè)施是否及存在安全隱患,如不正常請(qǐng)匯報(bào)老師并進(jìn)行處理方可實(shí)施任務(wù)。11.注意Arduino開(kāi)發(fā)板與電腦的連接是否可靠;22.注意Arduino開(kāi)發(fā)板與電腦連接端口的匹配;

33.注意輸出電壓,避免開(kāi)發(fā)板被燒壞;

44.注意Arduino開(kāi)發(fā)板與四位數(shù)碼管擴(kuò)展板連接時(shí),針腳要對(duì)孔,插入時(shí)要小心,避免陣腳變歪或折斷。

二、實(shí)施步驟(一)控制電路連接

步驟1:連接線(xiàn)的方頭端接口連接ArduinoUNO控制板,另一端USB接口連接電腦。

二、實(shí)施步驟(一)控制電路連接

步驟2:四位數(shù)碼管擴(kuò)展板安裝在Arduino開(kāi)發(fā)板上。

二、實(shí)施步驟(二)控制程序編寫(xiě)與上傳

步驟1:打開(kāi)ArduinoIDE軟件,進(jìn)入界面。

二、實(shí)施步驟(二)控制程序編寫(xiě)與上傳

步驟2:在工具-端口-選擇對(duì)應(yīng)的端口。若分不清端口,先把開(kāi)發(fā)板連接上,查看端口,有COM1、COM3、COM4、COM5、COM6;斷開(kāi)開(kāi)發(fā)板連接,查看端口,有COM3、COM4、COM5、COM6;少了一個(gè)COM10端口,那么COM10就是對(duì)應(yīng)的端口。

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

步驟1:新建一個(gè)文檔,//后的代碼可刪除;在【代碼編寫(xiě)區(qū)域】下方輸入如圖所示代碼。

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

步驟2:在【代碼編寫(xiě)區(qū)域】中的“voidsetup(){”下方輸入如圖所示代碼。

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

步驟3:再在【代碼編寫(xiě)區(qū)域】中的“voidloop(){”下方輸入如圖所示代碼。

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

步驟4:如圖所示單擊“上傳”按鈕,通過(guò)USB轉(zhuǎn)串口芯片將程序燒寫(xiě)到控制板的主控芯片中;

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

步驟5:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖所示,四位數(shù)碼管擴(kuò)展板上的第4位數(shù)碼管會(huì)出現(xiàn)9-8-7-6-5-4-3-2-1-0的倒數(shù)循環(huán)。

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

步驟6:控制程序解析:(1)首先使用宏定義#define定義數(shù)碼管的字段管腳與arduinoUNO板管腳的對(duì)應(yīng)關(guān)系,即a—11、b—9、c—7、d—5、e—4、f—10、g—8、h—6,并定義了數(shù)碼管公共端管腳與arduinoUNO板管腳的對(duì)應(yīng)關(guān)系,即DIG1—A0、DIG2—A1、DIG3—3、DIG4—2。(2)接著利用一維數(shù)組將字段對(duì)應(yīng)的arduinoUNO板管腳號(hào)定義為整型一維數(shù)組intpin[],同時(shí)將顯示0—9這10個(gè)數(shù)字對(duì)應(yīng)的管腳電平狀態(tài)定義成相對(duì)應(yīng)的整型一維數(shù)組,以方便調(diào)用。(3)利用初始化函數(shù)voidsetup將上述所有的管腳定義為輸出模式,并將DIG1、DIG2、DIG3設(shè)置為低電平,使數(shù)碼管前三位不激活顯示,將DIG4設(shè)置為高電平,激活第四位數(shù)碼管。(4)在loop函數(shù)中,利用動(dòng)態(tài)顯示技術(shù)(采用for循環(huán)結(jié)構(gòu)),調(diào)用對(duì)應(yīng)的一維數(shù)組顯示數(shù)字“9”,延時(shí)1s后,接著調(diào)用對(duì)應(yīng)一位數(shù)組顯示“8”,延時(shí)1s……,直到顯示數(shù)字“0”并延時(shí)1s后,再重新進(jìn)行l(wèi)oop循環(huán)。二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

二、實(shí)施步驟(三)一維數(shù)組與“倒數(shù)”

程序運(yùn)行流程圖二、實(shí)施步驟(四)二維數(shù)組秒表

步驟1:新建一個(gè)文檔,//后的代碼可刪除;在【代碼編寫(xiě)區(qū)域】輸入如圖所示代碼。

二、實(shí)施步驟(四)二維數(shù)組秒表

步驟2:在【代碼編寫(xiě)區(qū)域】中的“voidsetup(){”下方輸入如圖所示代碼。

二、實(shí)施步驟(四)二維數(shù)組秒表

步驟3:在【代碼編寫(xiě)區(qū)域】中的“voidloop(){”下方輸入如圖所示代碼。

二、實(shí)施步驟(四)二維數(shù)組秒表

步驟4:在【代碼編寫(xiě)區(qū)域】下方輸入“voidRefresh(intDIG,intn){”,并在其下方輸入如圖所示代碼。

二、實(shí)施步驟(四)二維數(shù)組秒表

步驟5:如圖所示單擊“上傳”按鈕,通過(guò)USB轉(zhuǎn)串口芯片將程序燒寫(xiě)到控制板的主控芯片中。

二、實(shí)施步驟(四)二維數(shù)組秒表

步驟6:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖所示,四位數(shù)碼管擴(kuò)展板上會(huì)出現(xiàn)0-9999的秒表功能,從第四位數(shù)碼管開(kāi)始計(jì)數(shù),從1開(kāi)始直到9999才歸零,歸零后又開(kāi)始新的一輪循環(huán)。

二、實(shí)施步驟(四)二維數(shù)組秒表

步驟7:控制程序解析(1)首先使用宏定義#define定義數(shù)碼管的字段管腳與arduinoUNO板管腳的對(duì)應(yīng)關(guān)系,即a—11、b—9、c—7、d—5、e—4、f—10、g—8、h—6,并定義了數(shù)碼管公共端管腳與arduinoUNO板管腳的對(duì)應(yīng)關(guān)系,即DIG1—A0、DIG2—A1、DIG3—3、DIG4—2。(2)接著利用二維數(shù)組將顯示0—9這10個(gè)數(shù)字對(duì)應(yīng)的管腳電平狀態(tài)定義成相對(duì)應(yīng)的字符型二維數(shù)組(每一行對(duì)應(yīng)一個(gè)數(shù)字的電平狀態(tài),0為高電平,1為低電平),以方便調(diào)用。(3)利用初始化函數(shù)voidsetup將上述所有的管腳定義為輸出模式。(4)在loop函數(shù)中,利用動(dòng)態(tài)顯示技術(shù)(采用嵌套的for循環(huán)結(jié)構(gòu),遍歷顯示數(shù)碼管的4位),調(diào)用自定義的子函數(shù)refresh顯示對(duì)應(yīng)的內(nèi)容。(5)定義子函數(shù)refresh點(diǎn)亮數(shù)碼管以顯示相應(yīng)內(nèi)容,該子函數(shù)帶兩個(gè)傳遞參數(shù),其中DIG為位選參數(shù)(即對(duì)應(yīng)四位數(shù)碼管的第幾位),n為段選參數(shù)(即對(duì)應(yīng)a、b、c、d、e、f、g、h的第幾段)。二、實(shí)施步驟(四)二維數(shù)組秒表

二、實(shí)施步驟(四)二維數(shù)組秒表

隨堂討論3Practiceontheclass隨堂討論二維數(shù)組的初始化方法還有哪些?請(qǐng)簡(jiǎn)要敘述出來(lái)。1.各組派代表統(tǒng)計(jì)遇到的問(wèn)題。2.各組就各自的主要問(wèn)題進(jìn)行交流,并分享解決方法。Arduino編程控制與應(yīng)用能力模塊四掌握Arduino編程語(yǔ)言的進(jìn)階應(yīng)用任務(wù)三完成點(diǎn)亮“笑臉”的實(shí)現(xiàn)導(dǎo)入在傳統(tǒng)電視LED電視中,采用發(fā)光二極管作為背光源,也可以理解為L(zhǎng)ED電視屏幕是由許多個(gè)led點(diǎn)陣顯示模塊組成,能顯示不同的色彩及亮度,才能構(gòu)成了畫(huà)面。通過(guò)前面的學(xué)習(xí),我們已經(jīng)學(xué)會(huì)了Arduino控制led燈的亮與滅,那么同學(xué)們知道如何利用Arduino在LED點(diǎn)陣顯示模塊上顯示畫(huà)面嗎?新授Newteaching1目錄一、LED點(diǎn)陣的原理三、LED點(diǎn)陣的檢測(cè)五、LED點(diǎn)陣的應(yīng)用領(lǐng)域二、LED點(diǎn)陣的控制四、微秒級(jí)的延時(shí)函數(shù)一、LED點(diǎn)陣的原理

把多個(gè)LED封裝在一起就構(gòu)成一個(gè)LED點(diǎn)陣顯示模塊,其中最典型的是8×8LED點(diǎn)陣。8×8LED點(diǎn)陣由8行8列共64個(gè)LED組成,其結(jié)構(gòu)為每一行中的LED的正極或者負(fù)極連在一塊組成矩陣。如圖所示。

一、LED點(diǎn)陣的原理

8×8LED點(diǎn)陣外觀及內(nèi)部電路結(jié)構(gòu)如圖所示。圖中字母R指代“行”(單詞Row的首字母);字母C指代“列”(單詞Column的首字母)。一、LED點(diǎn)陣的原理

國(guó)產(chǎn)點(diǎn)陣各端子對(duì)應(yīng)的名稱(chēng)一般如圖所示,對(duì)于行共陽(yáng)連接方式的點(diǎn)陣,“R5”表示該管腳控制第5行發(fā)光二極管的正極,“C8”則表示該管腳控制第8列發(fā)光二極管的負(fù)極,如此類(lèi)推。一、LED點(diǎn)陣的原理

LED點(diǎn)陣使用UNO板上的2、3、4、5、6、7、8、9、10、11、12、13、A0(14)、A1(15)、A2(16)、A3(17)共16個(gè)管腳。其中2、7、A3、5、13、A2、12、A0是連接點(diǎn)陣屏正極,管腳按R1~R8排序;6、11、10、3、A1、4、8、9是連接點(diǎn)陣屏負(fù)極,管腳按C1~C8排序。其中每個(gè)負(fù)極的管腳連接220Ω的電阻,電路原理圖如圖所示。二、LED點(diǎn)陣的控制

11.同時(shí)點(diǎn)亮第6行、第2列的LED,要給第6行的陽(yáng)極通電,第2列陰極接地。但是因?yàn)榈?行、第7列也施加了電流,所以第2行、第2列和第6行、第7列的LED也將被點(diǎn)亮(即4個(gè)LED同時(shí)被點(diǎn)亮),如圖所示。22.為了解決同時(shí)被點(diǎn)亮的問(wèn)題,采用動(dòng)態(tài)顯示技術(shù)可以解決上面所提到的顯示模塊中各LED引腳不獨(dú)立的問(wèn)題。通過(guò)使用該項(xiàng)技術(shù),我們點(diǎn)亮了單個(gè)LED而沒(méi)有使在同一行或同一列中的其他LED也被點(diǎn)亮。

3.如果要在顯示器上顯示第二步所示的圖形,則每一行將像右圖一樣被點(diǎn)亮。通過(guò)以非??斓乃俾剩ù笥?00Hz)向下掃描每一行點(diǎn)亮這行相應(yīng)列中的LED,人類(lèi)的眼睛將以靜態(tài)的方式感知這個(gè)圖像,因此在LED顯示器上看到一個(gè)“笑臉”圖像。3三、LED點(diǎn)陣的檢測(cè)

如果不確定LED點(diǎn)陣各管腳對(duì)應(yīng)的名稱(chēng),可以使用萬(wàn)用表檢測(cè)。如圖所示,第5行第8列亮燈,說(shuō)明這時(shí)候紅色表筆碰觸的管腳名稱(chēng)是R5,黑色表筆碰觸的管腳名稱(chēng)是C8。四、微秒級(jí)的延時(shí)函數(shù)

1.因?yàn)槊枯喰枰獟呙?行8列共64顆發(fā)光二極管,如果每一顆發(fā)光二極管發(fā)光持續(xù)時(shí)間1ms,會(huì)導(dǎo)致每輪間隔時(shí)間約為64ms,這時(shí)點(diǎn)陣顯示的圖像會(huì)出現(xiàn)明顯的閃爍。2.因此,設(shè)置每顆發(fā)光二極管狀態(tài)保持時(shí)間為200微秒。3.延時(shí)函數(shù)delay()是使用毫秒為單位,這里使用的是以微秒為單位的延時(shí)函數(shù)delayMicroseconds()。五、LED點(diǎn)陣的應(yīng)用領(lǐng)域STEP2STEP1LED點(diǎn)陣具有亮度高、發(fā)光均勻、可靠性好、接線(xiàn)簡(jiǎn)單、拼裝方便等優(yōu)點(diǎn),能構(gòu)成各種尺寸的顯示屏,則被廣泛應(yīng)用于大型LED智能顯示屏、智能儀器儀表和機(jī)電一體化設(shè)備的顯示屏中。隨著微電子技術(shù)、計(jì)算機(jī)技術(shù)及信息處理技術(shù)的發(fā)展,LED點(diǎn)陣顯示屏正作為一種新的傳媒工具,在越來(lái)越多的領(lǐng)域中發(fā)揮作用。任務(wù)實(shí)施2TaskImplementation一、任務(wù)準(zhǔn)備(一)軟件及硬件準(zhǔn)備序號(hào)軟件及硬件名稱(chēng)數(shù)量1ArduinoIDE/2聯(lián)網(wǎng)的電腦1臺(tái)/人3鍵盤(pán)1個(gè)/人4鼠標(biāo)1個(gè)/人5ArduinoUNO開(kāi)發(fā)板1塊/人6LED點(diǎn)陣擴(kuò)展板1塊/人7USB串口線(xiàn)1根/人一、任務(wù)準(zhǔn)備(二)場(chǎng)地設(shè)備準(zhǔn)備(三)安全防護(hù)準(zhǔn)備任務(wù)實(shí)施前需要做好場(chǎng)地防護(hù)準(zhǔn)備以及檢查實(shí)訓(xùn)場(chǎng)地和設(shè)備設(shè)施是否及存在安全隱患,如不正常請(qǐng)匯報(bào)老師并進(jìn)行處理方可實(shí)施任務(wù)。11.注意Arduino開(kāi)發(fā)板與電腦的連接是否可靠;22.注意Arduino開(kāi)發(fā)板與電腦連接端口的匹配;

33.注意輸出電壓,避免開(kāi)發(fā)板被燒壞;

44.注意Arduino開(kāi)發(fā)板與LED點(diǎn)陣擴(kuò)展板連接時(shí),針腳要對(duì)孔,插入時(shí)要小心,避免陣腳變歪或折斷。

二、實(shí)施步驟(一)認(rèn)識(shí)LED點(diǎn)陣擴(kuò)展板

LED點(diǎn)陣擴(kuò)展板:(1)尺寸:68.6*53.4mm(2)使用管腳:2、3、4、5、6、7、8、9、10、11、12、13、A0、A1、A2、A3(3)電阻數(shù)量:8

二、實(shí)施步驟(一)認(rèn)識(shí)LED點(diǎn)陣擴(kuò)展板

不同點(diǎn)陣屏封裝不同,8x8點(diǎn)陣屏由8行8列共64個(gè)LED燈組成,其內(nèi)部結(jié)構(gòu)如圖所示:

二、實(shí)施步驟(一)認(rèn)識(shí)LED點(diǎn)陣擴(kuò)展板

每個(gè)LED放置在行線(xiàn)和列線(xiàn)的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一行電平拉高,某一列電拉低,則對(duì)應(yīng)交叉點(diǎn)的LED就會(huì)點(diǎn)亮。其對(duì)應(yīng)內(nèi)部管腳定義如圖所示:比如要點(diǎn)亮第一行第二列的LED,操作是把9號(hào)引腳拉高、3號(hào)引腳拉低,每個(gè)LED的點(diǎn)亮方法同理,通過(guò)LED的組合點(diǎn)亮可以實(shí)現(xiàn)不同圖案的顯示。

二、實(shí)施步驟(一)認(rèn)識(shí)LED點(diǎn)陣擴(kuò)展板

如圖所示,S代表點(diǎn)陣屏負(fù)極,D代表點(diǎn)陣屏正極。使用說(shuō)明:LED點(diǎn)陣使用UNO板上的2、3、4、5、6、7、8、9、10、11、12、13、A0、A1、A2、A3共16個(gè)管腳,其中2、7、A3、5、1

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論