• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Arduino單片機(jī)項目的C語言程序設(shè)計教學(xué)

      2017-07-12 07:42:07鄧云朱海燕
      廣西教育·C版 2017年5期
      關(guān)鍵詞:項目教學(xué)

      鄧云+朱海燕

      【摘 要】本文提出結(jié)合電類專業(yè)的特點,引入Arduino單片機(jī)項目作為主線,開展C語言程序設(shè)計教學(xué),調(diào)動學(xué)生學(xué)習(xí)積極性,提高教學(xué)成效。

      【關(guān)鍵詞】C語言 項目教學(xué) 單片機(jī)項目

      【中圖分類號】G 【文獻(xiàn)標(biāo)識碼】A

      【文章編號】0450-9889(2017)05C-0158-03

      一直以來,傳統(tǒng)C語言程序設(shè)計教學(xué)主要是以語法、語句和結(jié)構(gòu)為中心,以數(shù)據(jù)類型、變量、運(yùn)算符、數(shù)組、指針和函數(shù)等為基本知識點展開。這樣的教學(xué)模式雖然可以很好地按照教材逐一講授知識內(nèi)容,但是也容易使學(xué)生陷入知識細(xì)節(jié),而忽視C語言程序的具體應(yīng)用。雖然學(xué)生通過不斷地學(xué)習(xí)基礎(chǔ)知識和練習(xí)經(jīng)典算法,能夠閱讀、修改、編寫簡單C語言程序,但是學(xué)生的抽象思維、自主創(chuàng)新意識、解決實際問題能力難以得到全面培養(yǎng)。另外,由于高職學(xué)生的計算機(jī)基礎(chǔ)、邏輯思維、英語基礎(chǔ)和數(shù)學(xué)運(yùn)算等綜合能力都較為薄弱,這些因素也影響了學(xué)生學(xué)習(xí)C語言程序設(shè)計的興趣。

      因此,為了提升學(xué)生閱讀、編寫和調(diào)試程序的能力,激發(fā)學(xué)生自主學(xué)習(xí)C語言程序設(shè)計的興趣,結(jié)合電類專業(yè)人才培養(yǎng)目標(biāo),提出以單片機(jī)項目為載體的C語言程序設(shè)計教學(xué)模式,通過實驗現(xiàn)象啟發(fā)學(xué)生思考目標(biāo)實現(xiàn)方法,在實驗過程中引入重點理論知識,讓學(xué)生帶著興趣和目標(biāo)進(jìn)行C語言單片機(jī)項目學(xué)習(xí)。

      一、引入單片機(jī)項目驅(qū)動C語言程序設(shè)計教學(xué)

      首先讓學(xué)生體驗C語言編程控制單片機(jī)樂趣,然后,通過不同的項目引入C語言程序的結(jié)構(gòu)、語法、語句等相關(guān)知識內(nèi)容。例如,通過典型的跑馬燈項目引入for循環(huán)語句,通過數(shù)碼管倒計時顯示引入一維數(shù)組,通過八路搶答器引入if、switch選擇語句。利用單片機(jī)項目直觀可控的特點,以實用、夠用為導(dǎo)向,構(gòu)建適合高職學(xué)生特點的C語言單片機(jī)項目框架,具體的教學(xué)項目框架如圖1所示。

      (一)引入簡單易學(xué)的Arduino單片機(jī)實訓(xùn)平臺

      由于51系列單片機(jī)價格低廉,且配套教學(xué)資源豐富,傳統(tǒng)單片機(jī)教學(xué)一般都是采用51系列單片機(jī),但是,51單片機(jī)最大的問題就是需要使用者掌握其內(nèi)部結(jié)構(gòu)、寄存器、I/O設(shè)備等諸多底層硬件結(jié)構(gòu),然后才能開展C語言程序設(shè)計教學(xué),過多的底層硬件結(jié)構(gòu)會增加學(xué)生學(xué)習(xí)單片機(jī)編程的難度,而Arduino平臺則繞開了單片機(jī)底層硬件結(jié)構(gòu),僅需少量指令即可開始程序設(shè)計,其自帶庫函數(shù)也已包含許多常用I/O設(shè)備驅(qū)動,在此基礎(chǔ)上進(jìn)行二次開發(fā),很容易完成功能多樣的作品。

      Arduino平臺的軟硬件完全開源,許多常用子函數(shù)已經(jīng)封裝成為庫函數(shù),在此基礎(chǔ)上進(jìn)行程序編寫,可以大大縮短軟件開發(fā)周期,提升編程效率。

      例如,編寫一個毫秒級的延時函數(shù),使用51單片機(jī)編寫則需要多行代碼才可實現(xiàn),具體延時函數(shù)如下:

      void delay_ms(uchar t)

      { uchar i,k;

      while(t--)

      { for(i=1;i<130;i++)

      for(k=1;k<130;k++) ;}

      }

      但是,采用Arduino單片機(jī)只需調(diào)用一個毫秒級延時函數(shù),即編寫以下一條代碼:

      delay(n); // 括號中的n表示延時長度,單位為ms。

      一個同樣功能的延時函數(shù),51單片機(jī)需要多行代碼,而Arduino單片機(jī)僅需一個函數(shù)調(diào)用,這種把過程集合化、函數(shù)化的過程省去了繁瑣的細(xì)節(jié),既簡化了編程工作量,又讓學(xué)生更容易理解和接受。

      (二)單片機(jī)控制LED閃爍,學(xué)習(xí)while循環(huán)語句

      單片機(jī)控制一個LED燈閃爍項目的程序和硬件電路都比較簡單,很適合作為C語言單片機(jī)教學(xué)的入門實驗,LED燈閃爍流程圖及主要對應(yīng)代碼如圖2所示。通過觀察LED燈閃爍實驗現(xiàn)象,啟發(fā)學(xué)生思考實現(xiàn)LED燈閃爍的分解步驟,結(jié)合C語言程序代碼,學(xué)生可以直觀了解C語言程序控制指令在LED燈上所呈現(xiàn)的對應(yīng)關(guān)系。

      在此項目驅(qū)動之下,學(xué)生更加容易理解while循環(huán)語句的使用方法,同時,也能啟發(fā)學(xué)生思考項目中其它C語言程序的知識要點:

      1.Arduino單片機(jī)C語言認(rèn)知。單片機(jī)C語言程序的結(jié)構(gòu)是由setup()初始化函數(shù)和Loop()主函數(shù)構(gòu)成,初始化函數(shù)主要完成單片機(jī)I/O口的功能設(shè)定,例如,pinMode(i,OUTPUT),表示第i個引腳為低阻抗輸出模式;Loop()函數(shù)則是一個程序里面的主函數(shù),編程者的所有想法可以通過C語言控制單片機(jī)具體實施。

      2.變量及函數(shù)調(diào)用。通過觀察LED燈閃爍的快慢,深入學(xué)習(xí)延時函數(shù)delay(n)的使用方法,其中n為參數(shù)傳遞,控制延時長度,單位是毫秒,調(diào)整變量n即可改變LED的閃爍速度。

      3.賦值及輸出控制。digitalWrite(ledpin,HIGH)語句表示ledpin引腳輸出高電平,單片機(jī)所有數(shù)字引腳有兩種狀態(tài),分別為高電平HIGH和低電平LOW,其狀態(tài)的改變由關(guān)鍵詞digitalWrite進(jìn)行控制。

      4.順序結(jié)構(gòu)及循環(huán)結(jié)構(gòu)。C語言程序一般默認(rèn)是按照順序結(jié)構(gòu)執(zhí)行代碼指令,但是,在執(zhí)行重復(fù)且有規(guī)律事件的時候需用循環(huán)控制結(jié)構(gòu),LED燈閃爍就是一個不斷重復(fù)亮滅的過程,因此,while語句或for語句都可以實現(xiàn)循環(huán)控制功能。

      (三)開關(guān)控制LED燈,學(xué)習(xí)if選擇語句

      外部開關(guān)控制LED燈的亮滅,實驗現(xiàn)象為:閉合開關(guān)SW則LED燈亮,斷開開關(guān)SW則 LED燈熄滅。通過此項目可以引導(dǎo)學(xué)生掌握單片機(jī)I/O口狀態(tài)的讀取方法,以及重點使用if語句進(jìn)行邏輯狀態(tài)判別,程序關(guān)鍵代碼如下:

      k=digitalRead(SW); //讀取數(shù)字腳0口的狀態(tài),需要digitalRead( )語句才能得到引腳的狀態(tài)。

      if(k==0) //判斷開關(guān)的狀態(tài),按下為0,放開為1。

      digitalWrite(ledpin,HIGH); //寫ledpin狀態(tài),HIGH驅(qū)動燈亮。

      else

      digitalWrite(ledpin,LOW); //寫ledpin狀態(tài),LOW則燈滅。

      在此基礎(chǔ)上再進(jìn)行功能深入拓展,把一些實際生活經(jīng)驗引入程序設(shè)計。例如,當(dāng)開關(guān)斷開后,LED燈需要延時一段時間再熄滅,這樣的邏輯思維可以很好解決晚上關(guān)燈后不需要摸黑上床睡覺的問題,以此類推,啟發(fā)學(xué)生思考其它類型用到開關(guān)輸入量的地方,還有銀行ATM的按鍵、食堂刷卡機(jī)等生活實例,這樣就能很好激發(fā)學(xué)生的自主探索精神和學(xué)習(xí)熱情。

      (四)單片機(jī)控制LED流水燈,學(xué)習(xí)for循環(huán)語句

      在第一個LED燈閃爍項目的基礎(chǔ)上,增加LED燈的數(shù)量,讓LED燈呈現(xiàn)流水效果,利用Arduino單片機(jī)的數(shù)字IO口D0至D7分別控制八個LED燈,LED流水燈的硬件電路如圖3所示,關(guān)鍵語句如下:

      for(i=0;i<8;i++) //控制8個燈從左到右輪流亮滅,實現(xiàn)視覺流水效果。

      結(jié)合實驗現(xiàn)象,引導(dǎo)學(xué)生思考for循環(huán)語句的用法,重點掌握語句中循環(huán)變量初值的設(shè)定、循環(huán)次數(shù)、結(jié)束條件,以及循環(huán)內(nèi)容的分解步驟。借助LED燈輪流點亮的過程,可以讓學(xué)生很好理解延時變量長度對應(yīng)控制LED流水速度,循環(huán)次數(shù)對應(yīng)控制參與循環(huán)LED個數(shù),這種直接讓程序語句關(guān)聯(lián)實驗現(xiàn)象的教學(xué)方法,能更加直觀有效幫助學(xué)生掌握for語句的使用方法。在八路LED流水燈的基礎(chǔ)上,還可以引導(dǎo)學(xué)生繼續(xù)增加LED燈的數(shù)量,制作心形LED流水燈,進(jìn)一步激發(fā)學(xué)生自主創(chuàng)新思維,編寫更加豐富多彩的LED流水效果。

      (五)控制數(shù)碼管顯示,學(xué)習(xí)一維數(shù)組

      通過控制一個數(shù)碼管顯示一位數(shù)字,引入七段數(shù)碼管顯示驅(qū)動方式,然后進(jìn)一步學(xué)習(xí)顯示數(shù)字“0”到“9”的方法,并且把驅(qū)動數(shù)碼管顯示的編碼進(jìn)行歸納形成一個組,自然引入“一維數(shù)組”概念。驅(qū)動一位數(shù)碼管顯示的硬件電路如圖4所示,其中單片機(jī)的數(shù)字腳D0至D6分別接到七數(shù)碼管的a至g引腳。

      數(shù)字“0”到“9”的一維數(shù)組編碼定義為:char table []={0x40,0xf9,0xa4,0x30,0x19,0x92,0x02,0xf8,0x00,0x10},分別將數(shù)組中的編碼通過八位并行輸出方式驅(qū)動七段數(shù)碼管,即可顯示“0”至“9”之間的數(shù)字,C語言的輸出表達(dá)方式為:PORTD=table[i];在顯示固定單個數(shù)字的基礎(chǔ)之上,還可以結(jié)合for循環(huán)語句和delay(n)延時函數(shù),實現(xiàn)數(shù)字“0”至“9”之間循環(huán)動態(tài)顯示。

      在完成數(shù)碼顯示基本功能之后,繼續(xù)沿用該硬件電路,引導(dǎo)學(xué)生修改程序代碼,設(shè)計一個“九秒倒計時器”,并且使用定時器取代delay()延時函數(shù),讓學(xué)生在清楚項目要求和實驗結(jié)果的前提之下,運(yùn)用C語言編寫定時中斷函數(shù)。

      結(jié)合實際生活,在原有硬件電路基礎(chǔ)之上,增加一定數(shù)量的按鍵開關(guān),即可變成一個多路搶答器,啟發(fā)學(xué)生思考如何檢測鍵盤輸入、數(shù)據(jù)處理、結(jié)果顯示及鎖定,在完成邏輯分析之后,再具體引入端口狀態(tài)讀取函數(shù)digitalRead()、是否有按鍵搶答判別語句if()、結(jié)果顯示語句PORTD=table[i]、狀態(tài)鎖定使用循環(huán)語句while()等關(guān)鍵C語言知識,通過搶答器項目的學(xué)習(xí),能夠幫助學(xué)生直觀認(rèn)識C語言的更多用途,激發(fā)學(xué)生繼續(xù)深入C語言程序設(shè)計。

      (六)控制LED點陣顯示,學(xué)習(xí)二維數(shù)組

      類比日常生活,點陣顯示廣告屏在街上隨處可見,深入分析點陣屏顯示原理,可以把大型屏幕可以分解成多個16×16或8×8的小模塊,結(jié)合點陣顯示現(xiàn)象引入“二維數(shù)組”,讓學(xué)生根據(jù)現(xiàn)象聯(lián)系C語言程序運(yùn)用場合,這樣的項目導(dǎo)入方式能夠有效提高學(xué)習(xí)針對性。通過進(jìn)一步分析點陣顯示過程,可以明確點陣顯示需要行列同步配合、延時長度合適才能正常工作,該項目重點訓(xùn)練了如何從二維數(shù)組里調(diào)取行和列的信息,以及合理控制延時函數(shù)的方法,結(jié)合C語言程序綜合運(yùn)用了逐行動態(tài)掃描技術(shù)。經(jīng)過點陣顯示控制項目的學(xué)習(xí),學(xué)生能夠掌握C語言控制一個靜態(tài)字的顯示方法,同時,引導(dǎo)學(xué)生思考如何實現(xiàn)動態(tài)顯示多個文字,讓學(xué)生自主思考C語言程序更豐富的應(yīng)用范圍。

      (七)設(shè)計簡易數(shù)字溫度計,學(xué)習(xí)數(shù)據(jù)處理及函數(shù)調(diào)用

      溫度是日常生活中經(jīng)常接觸的一個物理對象,冰箱、空調(diào)和電磁爐等家電都需用到溫度測量與控制,因此,利用單片機(jī)設(shè)計一個簡易數(shù)字溫度計能夠接近實際生活,比較容易吸引學(xué)生參與項目設(shè)計與制作。

      由于溫度為連續(xù)變化的模擬量,需要經(jīng)過模數(shù)轉(zhuǎn)換之后才能送入單片機(jī)進(jìn)行數(shù)據(jù)處理,而Arduino單片機(jī)集成有十位模數(shù)轉(zhuǎn)換功能,即溫度模擬量對應(yīng)0~1023之間的數(shù)字量。因此,簡易的數(shù)字溫度計的設(shè)計思路是:首先進(jìn)行溫度模擬量到數(shù)字量的轉(zhuǎn)換,然后將AD轉(zhuǎn)換結(jié)果進(jìn)行換算處理,最后將處理后的實際溫度值送入LCD液晶顯示。

      簡易數(shù)字溫度計的設(shè)計流程圖及其主要程序代碼如圖5所示,通過簡易數(shù)字溫度計項目的學(xué)習(xí),學(xué)生能夠掌握參數(shù)傳遞、返回值、函數(shù)調(diào)用和數(shù)據(jù)運(yùn)算等C語言相關(guān)知識。

      (八)設(shè)計無弦電子琴,綜合運(yùn)用C語言程序設(shè)計

      電子琴已然成為了人們喜愛的一種演奏樂器,通過單片機(jī)也可以設(shè)計一種無弦電子琴,一段樂曲是由許多不同的音階構(gòu)成,每一個音階對應(yīng)著一個獨有的頻率點,因此,只需要將不同的頻率點進(jìn)行有規(guī)律的組合,就可以譜寫一段有趣的音樂。利用單片機(jī)定時器產(chǎn)生不同頻率的方波是一件非常容易實現(xiàn)的事,前提是需要把某一首歌曲的音階所對應(yīng)的頻率點弄清楚即可,電子琴的按鍵將由光電傳感器替代,即光電管感應(yīng)器輸出高低電平作為音符的按鍵,每一個按鍵對應(yīng)一個音階,單片機(jī)只需檢測I/O口的高低電平即可判斷是否有鍵按下,然后,輸出特定頻率的方波驅(qū)動揚(yáng)聲器發(fā)出對應(yīng)的音階。

      現(xiàn)以八度中音音符為例,音符與頻率關(guān)系的相關(guān)計算數(shù)值如表1所示,單片機(jī)定時器TIMER產(chǎn)生各中音的定時長度根據(jù)表1數(shù)據(jù)即可完成設(shè)定,將全部中音音符建立成一個表格,單片機(jī)通過查表方式可以快速獲取與音符頻率相對應(yīng)的定時值。

      電子琴項目具有較強(qiáng)的互動性,學(xué)生通過體驗無弦彈奏的樂趣,進(jìn)而激發(fā)學(xué)生設(shè)計、制作單片機(jī)電子琴的興趣,培養(yǎng)學(xué)生運(yùn)用C語言程序控制硬件電路的能力。

      二、結(jié)束語

      本文針對C語言程序設(shè)計在應(yīng)用電子技術(shù)專業(yè)課程教學(xué)中所存在的問題,提出了以單片機(jī)為載體的項目式教學(xué)法,把C語言程序設(shè)計的重點知識融入相關(guān)子項目,讓學(xué)生帶著興趣和目標(biāo)進(jìn)行課程學(xué)習(xí),通過項目設(shè)計與制作提高學(xué)生編寫、調(diào)試C程序的能力,經(jīng)過兩個學(xué)期的實踐教學(xué),學(xué)生編程技能得到有效提高,教學(xué)效果有了明顯改善,基本實現(xiàn)預(yù)期教學(xué)目標(biāo)。

      【參考文獻(xiàn)】

      [1]孫慧.在電子類專業(yè)中開展 C 語言教學(xué)改革的實踐探索[J].技術(shù)與市場,2014(12)

      [2]盧敏.基于 PI 能力培養(yǎng)的 C 語言教學(xué)改革研究與實踐[J].軟件導(dǎo)刊(教育技術(shù)),2014(11)

      [3]黃建燈.《C 語言程序設(shè)計》教學(xué)改革探討[J].電子世界,2012(12)

      [4]莫建平,潘曉明.基于C語言的單片機(jī)課程教學(xué)改革探論[J].柳州師專學(xué)報,2014(4)

      [5]譚浩強(qiáng).C語言程序設(shè)計教程(第三版)[M].北京:清華大學(xué)出版社,2013

      【作者簡介】鄧 云(1983— ),男,廣西全州人,碩士,廣西職業(yè)技術(shù)學(xué)院講師,研究方向:電子技術(shù)。

      (責(zé)編 丁 夢)

      猜你喜歡
      項目教學(xué)
      提高機(jī)械原理教學(xué)質(zhì)量的幾點思考
      價值工程(2016年30期)2016-11-24 16:42:50
      基于能力本位下旅游管理專業(yè)項目教學(xué)模式的研究
      淺談電氣自動化專業(yè)課程的一體化改革
      職業(yè)(2016年11期)2016-11-23 20:37:42
      對數(shù)控加工課程教學(xué)方法的幾點認(rèn)識
      商情(2016年39期)2016-11-21 09:52:03
      引企進(jìn)校實施項目教學(xué)新載體
      金屬材料類工程教育人才培養(yǎng)初探
      價值工程(2016年29期)2016-11-14 03:12:05
      以就業(yè)為導(dǎo)向,高職教育中《兒童常見病護(hù)理》課程教法的實踐與研究
      人間(2016年28期)2016-11-10 23:17:11
      職業(yè)教育院校如何開展PHOTOSHOP課程教學(xué)
      基于項目教學(xué)的高校服裝設(shè)計教學(xué)現(xiàn)狀及對策
      戲劇之家(2016年19期)2016-10-31 19:41:17
      基于多元智能理論的高職項目教學(xué)分組學(xué)習(xí)探討
      職業(yè)(2016年10期)2016-10-20 22:01:04
      荣成市| 扶风县| 南靖县| 太康县| 高陵县| 教育| 尼勒克县| 商南县| 健康| 英德市| 广南县| 策勒县| 山东省| 桃源县| 阿巴嘎旗| 阳原县| 大名县| 交城县| 北安市| 虹口区| 崇礼县| 龙川县| 唐河县| 兴业县| 石城县| 铁力市| 颍上县| 宜川县| 松阳县| 磐石市| 白城市| 江都市| 松阳县| 义马市| 新安县| 恭城| 扶沟县| 耒阳市| 宁强县| 屯留县| 乳山市|