下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于Arduino單片機(jī)項(xiàng)目的C語(yǔ)言程序設(shè)計(jì)教學(xué)基于Arduino單片機(jī)工程的C語(yǔ)言程序設(shè)計(jì)教學(xué)
【中圖分類號(hào)】G【文獻(xiàn)標(biāo)識(shí)碼】A
【文章編號(hào)】0450-9889〔2022〕05C-0158-03
一直以來,傳統(tǒng)C語(yǔ)言程序設(shè)計(jì)教學(xué)主要是以語(yǔ)法、語(yǔ)句和結(jié)構(gòu)為中心,以數(shù)據(jù)類型、變量、運(yùn)算符、數(shù)組、指針和函數(shù)等為根本知識(shí)點(diǎn)展開。這樣的教學(xué)模式雖然可以很好地按照教材逐一講授知識(shí)內(nèi)容,但是也容易使學(xué)生陷入知識(shí)細(xì)節(jié),而無視C語(yǔ)言程序的具體應(yīng)用。雖然學(xué)生通過不斷地學(xué)習(xí)根底知識(shí)和練習(xí)經(jīng)典算法,能夠閱讀、修改、編寫簡(jiǎn)單C語(yǔ)言程序,但是學(xué)生的抽象思《S、自主創(chuàng)新意識(shí)、解決實(shí)際問題能力難以得到全面培養(yǎng)。另外,由于高職學(xué)生的計(jì)算機(jī)根底、邏輯思維、英語(yǔ)根底和數(shù)學(xué)運(yùn)算等綜合能力都較為單薄,這些因素也影響了學(xué)生學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的興趣。
因此,為了提升學(xué)生閱讀、編寫和調(diào)試程序的能力,激發(fā)學(xué)生自主學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的興趣,結(jié)合電類專業(yè)人才培養(yǎng)目標(biāo),提出以單片機(jī)工程為載體的C語(yǔ)言程序設(shè)計(jì)教學(xué)模式,通過實(shí)驗(yàn)現(xiàn)象啟發(fā)學(xué)生思考目標(biāo)實(shí)現(xiàn)辦法,在實(shí)驗(yàn)過程中引入重點(diǎn)理論知識(shí),讓學(xué)生帶領(lǐng)興趣和目標(biāo)進(jìn)行C語(yǔ)言單片機(jī)工程學(xué)習(xí)。
一、引入單片機(jī)工程驅(qū)動(dòng)C語(yǔ)言程序設(shè)計(jì)教學(xué)
首先讓學(xué)生體驗(yàn)C語(yǔ)言編程控制單片機(jī)樂趣,然后,通過不同的工程引入C語(yǔ)言程序的結(jié)構(gòu)、語(yǔ)法、語(yǔ)句等相關(guān)知識(shí)內(nèi)容。示例,通過典型的跑馬燈工程引入for循環(huán)語(yǔ)句,通過數(shù)碼管倒計(jì)時(shí)顯示引入一維數(shù)組,通過八路搶答器引入if、switch選擇語(yǔ)句。利用單片機(jī)工程直觀可控的特點(diǎn),以實(shí)用、夠用為導(dǎo)向,構(gòu)建適合高職學(xué)生特點(diǎn)的C語(yǔ)言單片機(jī)工程框架,具體的教學(xué)工程框架如圖1所示。
〔一〕引入簡(jiǎn)單易學(xué)的Arduino單片機(jī)實(shí)訓(xùn)平臺(tái)
由于51系列單片機(jī)價(jià)格低廉,且配套教學(xué)資源豐盛,傳統(tǒng)單片機(jī)教學(xué)一般都是采用51系列單片機(jī),但是,51單片機(jī)最大的問題就是需要使用者掌握其內(nèi)部結(jié)構(gòu)、存放器、I/O設(shè)備等諸多底層硬件結(jié)構(gòu),然后才能發(fā)展C語(yǔ)言程序設(shè)計(jì)教學(xué),過多的底層硬件結(jié)構(gòu)會(huì)增加學(xué)生學(xué)習(xí)單片機(jī)編程的難度,而Arduino平臺(tái)那么繞開了單片機(jī)底層硬件結(jié)構(gòu),僅需少量指令即可開始程序設(shè)計(jì),其自帶庫(kù)函數(shù)也已包含許多常用I/O設(shè)備驅(qū)動(dòng),在此根底上進(jìn)行二次開發(fā),很容易完成功能多樣的作品。
Arduino平臺(tái)的軟硬件完全開源,許多常用子函數(shù)已經(jīng)封裝成為庫(kù)函數(shù),在此根底上進(jìn)行程序編寫,可以大大縮短軟件開發(fā)周期,提升編程效率。
示例,編寫一個(gè)毫秒級(jí)的延時(shí)函數(shù),使用51單片機(jī)編寫那么需要多行代碼才可實(shí)現(xiàn),具體延時(shí)函數(shù)如下:
voiddelay_ms〔uchart〕
{uchari,k;
while〔t--〕
{for〔i=1;ifor〔k=1;k}
但是,采用Arduino單片機(jī)只需調(diào)用一個(gè)毫秒級(jí)延時(shí)函數(shù),即編寫下列一條代碼:
delay〔n〕;//括號(hào)中的n表示延時(shí)長(zhǎng)度,單位為ms。
一個(gè)同樣功能的延時(shí)函數(shù),51單片機(jī)需要多行代碼,而Arduino單片機(jī)僅需一個(gè)函數(shù)調(diào)用,這種把過程匯合化、函數(shù)化的過程省去了繁瑣的細(xì)節(jié),既簡(jiǎn)化了編程工作量,又讓學(xué)生更容易理解和接受。
〔二〕單片機(jī)控制LED閃爍,學(xué)習(xí)while循環(huán)語(yǔ)句
單片機(jī)控制一個(gè)LED燈閃爍工程的程序和硬件電路都比擬簡(jiǎn)單,很適合作為C語(yǔ)言單片機(jī)教學(xué)的入門實(shí)驗(yàn),LED燈閃爍流程圖及主要對(duì)應(yīng)代碼如圖2所示。通過察看LED燈閃爍實(shí)驗(yàn)現(xiàn)象,啟發(fā)學(xué)生思考實(shí)現(xiàn)LED燈閃爍的分解步驟,結(jié)合C語(yǔ)言程序代碼,學(xué)生可以直觀了解C語(yǔ)言程序控制指令在LED燈上所呈現(xiàn)的對(duì)應(yīng)關(guān)系。
在此工程驅(qū)動(dòng)之下,學(xué)生更加容易理解while循環(huán)語(yǔ)句的使用辦法,同時(shí),也能啟發(fā)學(xué)生思考工程中其它C語(yǔ)言程序的知識(shí)要點(diǎn):
1.Arduino單片機(jī)C語(yǔ)言認(rèn)知。單片機(jī)C語(yǔ)言程序的結(jié)構(gòu)是由setup〔〕初始化函數(shù)和Loop〔〕主函數(shù)構(gòu)成,初始化函數(shù)主要完成單片機(jī)I/O口的功能設(shè)定,示例,pinMode〔i,OUTPUT〕,表示第i個(gè)引腳為低阻抗輸出模式;Loop〔〕函數(shù)那么是一個(gè)程序里面的主函數(shù),編程者的所有想法可以通過C語(yǔ)言控制單片機(jī)具體實(shí)施。
2.變量及函數(shù)調(diào)用。通過察看LED燈閃爍的快慢,深入學(xué)習(xí)延時(shí)函數(shù)delay〔n〕的使用辦法,其中n為參數(shù)傳遞,控制延時(shí)長(zhǎng)度,單位是毫秒,調(diào)整變量n即可改變LED的閃爍速度。
3.賦值及輸出控制。digitalWrite〔ledpin,HIGH〕語(yǔ)句表示ledpin引腳輸出高電平,單片機(jī)所有數(shù)字引腳有兩種狀態(tài),分別為高電平HIGH和低電平LOW,其狀態(tài)的改變由關(guān)鍵詞digitalWrite進(jìn)行控制。
4.順序結(jié)構(gòu)及循環(huán)結(jié)構(gòu)。C語(yǔ)言程序一般默認(rèn)是按照順序結(jié)構(gòu)執(zhí)行代碼指令,但是,在執(zhí)行重復(fù)且有規(guī)律事件的時(shí)候需用循環(huán)控制結(jié)構(gòu),LED燈閃爍就是一個(gè)不斷重復(fù)亮滅的過程,因此,while語(yǔ)句或for語(yǔ)句都可以實(shí)現(xiàn)循環(huán)控制功能。
〔三〕開關(guān)控制LED燈,學(xué)習(xí)if選擇語(yǔ)句外部開關(guān)控制LED燈的亮滅,實(shí)驗(yàn)現(xiàn)象為:閉合開關(guān)SW那么LED燈亮,斷開開關(guān)SW那么LED燈熄滅。通過此工程可以引導(dǎo)學(xué)生掌握單片機(jī)I/O口狀態(tài)的讀取辦法,以及重點(diǎn)使用if語(yǔ)句進(jìn)行邏輯狀態(tài)判別,程序關(guān)鍵代碼如下:
k=digitalRead〔SW〕;//讀取數(shù)字腳0口的狀態(tài),需要digitalRead〔〕語(yǔ)句才能得到引腳的狀態(tài)。
if〔k==0〕//判斷開關(guān)的狀態(tài),按下為0,放開為1。
digitalWrite〔ledpin,HIGH〕;//寫ledpin狀態(tài),HIGH驅(qū)動(dòng)燈亮。
else
digitalWrite〔ledpin,LOW〕;//寫ledpin狀態(tài),LOW那么燈滅。
在此基《A上再進(jìn)行功能深入拓展,把一些實(shí)際生活經(jīng)驗(yàn)引入程序設(shè)計(jì)。示例,當(dāng)開關(guān)斷開后,LED燈需要延時(shí)一段時(shí)間再熄滅,這樣的邏輯思維可以很好解決晚上關(guān)燈后不需要摸黑上床睡覺的問題,以此類推,啟發(fā)學(xué)生思考其它類型用到開關(guān)輸入量的地方,還有銀行ATM的按鍵、食堂刷卡機(jī)等生活實(shí)例,這樣就能很好激發(fā)學(xué)生的自主探索精神和學(xué)習(xí)熱情。
〔四〕單片機(jī)控制LED流水燈,學(xué)習(xí)for循環(huán)語(yǔ)句
在第一個(gè)LED燈閃爍工程的根底上,增加LED燈的數(shù)量,讓LED燈呈現(xiàn)流水效果,利用Arduino單片機(jī)的數(shù)字IO口D0至D7分別控制八個(gè)LED燈,LED流水燈的硬件電路如圖3所示,關(guān)鍵語(yǔ)句如下:
for〔i=0;i結(jié)合實(shí)驗(yàn)現(xiàn)象,引導(dǎo)學(xué)生思考for循環(huán)語(yǔ)句的用法,重點(diǎn)掌握語(yǔ)句中循環(huán)變量初值的設(shè)定、循環(huán)次數(shù)、結(jié)束條件,以及循環(huán)內(nèi)容的分解步驟。借助LED燈輪流點(diǎn)亮的過程,可以讓學(xué)生很好理解延時(shí)變量長(zhǎng)度對(duì)應(yīng)控制LED流水速度,循環(huán)次數(shù)對(duì)應(yīng)控制參與循環(huán)LED個(gè)數(shù),這種直接讓程序語(yǔ)句關(guān)聯(lián)實(shí)驗(yàn)現(xiàn)象的教學(xué)辦法,能更加直觀有效幫忙學(xué)生掌握for語(yǔ)句的使用辦法。在八路LED流水燈的根底上,還可以引導(dǎo)學(xué)生繼續(xù)增加LED燈的數(shù)量,制作心形LED流水燈,進(jìn)一步激發(fā)學(xué)生自主創(chuàng)新思維,編寫更加豐盛多彩的LED流水效果。
〔五〕控制數(shù)碼管顯示,學(xué)習(xí)一維數(shù)組
通過控制一個(gè)數(shù)碼管顯示一位數(shù)字,引入七段數(shù)碼管顯示驅(qū)動(dòng)方式,然后進(jìn)一步學(xué)習(xí)顯示數(shù)字“0〞到“9〞的辦法,并且把驅(qū)動(dòng)數(shù)碼管顯示的編碼進(jìn)行歸納形成一個(gè)組,自然引入“一維數(shù)組〞概念。驅(qū)動(dòng)一位數(shù)碼管顯示的硬件電路如圖4所示,其中單片機(jī)的數(shù)字腳D0至D6分別接到七數(shù)碼管的a至g引腳。
數(shù)字“0〞到“9〞的一維數(shù)組編碼定義為:chartable[]={0x40,0xf9,0xa4,0x30,0x19,0x92,0x02,0xf8,0x00,0x10},分別將數(shù)組中的編碼通過八位并行輸出方式驅(qū)動(dòng)七段數(shù)碼管,即可顯示“0〞至“9〞之間的數(shù)字,C語(yǔ)言的輸出敘述方式為:PORTD=table[i];在顯示固定單個(gè)數(shù)字的根底之上,還可以結(jié)合for循環(huán)語(yǔ)句和delay〔n〕延時(shí)函數(shù),實(shí)現(xiàn)數(shù)字“0〞至“9〞之間循環(huán)動(dòng)態(tài)顯示。
在完成數(shù)碼顯示根本功能之后,繼續(xù)沿用該硬件電路,引導(dǎo)學(xué)生修改程序代碼,設(shè)計(jì)一個(gè)“九秒倒計(jì)時(shí)器〞,并且使用定時(shí)器取代delay〔〕延時(shí)函數(shù),讓學(xué)生在分明工程要求和實(shí)驗(yàn)結(jié)果的前提之下,運(yùn)用C語(yǔ)言編寫定時(shí)中斷函數(shù)。
結(jié)合實(shí)際生活,在原有硬件電路根底之上,增加一定數(shù)量的按鍵開關(guān),即可變成一個(gè)多路搶答器,啟發(fā)學(xué)生思考如何檢測(cè)鍵盤輸入、數(shù)據(jù)處理、結(jié)果顯示及鎖定,在完成邏輯分析之后,再具體引入端口狀態(tài)讀取函數(shù)digitalRead〔〕、是否有按鍵搶答判別語(yǔ)句if〔〕、結(jié)果顯示語(yǔ)句PORTD=table[i]、狀態(tài)鎖定使用循環(huán)語(yǔ)句while〔〕等關(guān)鍵C語(yǔ)言知識(shí),通過搶答器工程的學(xué)習(xí),能夠幫忙學(xué)生直觀認(rèn)識(shí)C語(yǔ)言的更多用途,激發(fā)學(xué)生繼續(xù)深入C語(yǔ)言程序設(shè)計(jì)。
〔六〕控制LED點(diǎn)陣顯示,學(xué)習(xí)二維數(shù)組
類比日常生活,點(diǎn)陣顯示廣告屏在街上隨處可見,深入分析點(diǎn)陣屏顯示原理,可以把大型屏幕可以分解成多個(gè)16×16或8×8的小模塊,結(jié)合點(diǎn)陣顯示現(xiàn)象引入“二維數(shù)組〞,讓學(xué)生根據(jù)現(xiàn)象聯(lián)系C語(yǔ)言程序運(yùn)用場(chǎng)合,這樣的工程導(dǎo)入方式能夠有效提高學(xué)習(xí)針對(duì)性。通過進(jìn)一步分析點(diǎn)陣顯示過程,可以明確點(diǎn)陣顯示需要行列同步配合、延時(shí)長(zhǎng)度適宜才能正常工作,該工程重點(diǎn)訓(xùn)練了如何從二維數(shù)組里調(diào)取行和列的信息,以及合理控制延時(shí)函數(shù)的辦法,結(jié)合C語(yǔ)言程序綜合運(yùn)用了逐行動(dòng)態(tài)掃描技術(shù)。經(jīng)過點(diǎn)陣顯示控制工程的學(xué)習(xí),學(xué)生能夠掌握C語(yǔ)言控制一個(gè)靜態(tài)字的顯示辦法,同時(shí),引導(dǎo)學(xué)生思考如何實(shí)現(xiàn)動(dòng)態(tài)顯示多個(gè)文字,讓學(xué)生自主思考C語(yǔ)言程序更豐盛的應(yīng)用范圍。
〔七〕設(shè)計(jì)簡(jiǎn)易數(shù)字溫度計(jì),學(xué)習(xí)數(shù)據(jù)處理及函數(shù)調(diào)用
溫度是日常生活中經(jīng)常接觸的一個(gè)物理對(duì)象,冰箱、空調(diào)和電磁爐等家電都需用到溫度測(cè)量與控制,因此,利用單片機(jī)設(shè)計(jì)一個(gè)簡(jiǎn)易數(shù)字溫度計(jì)能夠接近實(shí)際生活,比擬容易吸引學(xué)生參與工程設(shè)計(jì)與制作。
由于溫度為連續(xù)變化的模擬量,需要經(jīng)過模數(shù)轉(zhuǎn)換之后才能送入單片機(jī)進(jìn)行數(shù)據(jù)處理,而Arduino單片機(jī)集成有十位模數(shù)轉(zhuǎn)換功能,即溫度模擬量對(duì)應(yīng)0~1023之間的數(shù)字量。因此,簡(jiǎn)易的數(shù)字溫度計(jì)的設(shè)計(jì)思路是:首先進(jìn)行溫度模擬量到數(shù)字量的轉(zhuǎn)換,然后將AD轉(zhuǎn)換結(jié)果進(jìn)行換算處理,最后將處理后的實(shí)際溫度值送入LCD液晶顯示。
簡(jiǎn)易數(shù)字溫度計(jì)的設(shè)計(jì)流程圖及其主要程序代碼如圖5所示,通過簡(jiǎn)易數(shù)字溫度計(jì)工程的學(xué)習(xí),學(xué)生能夠掌握參數(shù)傳遞、返回值、函數(shù)調(diào)用和數(shù)據(jù)運(yùn)算等C語(yǔ)言相關(guān)知識(shí)?!舶恕吃O(shè)計(jì)無弦電子琴,綜合運(yùn)用C語(yǔ)言程序設(shè)計(jì)
電子琴已然成為了人們喜愛的一種演奏樂器,通過單片機(jī)也可以設(shè)計(jì)一種無弦電子琴,一段樂曲是由許多不同的音階構(gòu)成,每一個(gè)音階對(duì)應(yīng)著一個(gè)獨(dú)有的頻率點(diǎn),因此,只需要將不同的頻率點(diǎn)進(jìn)行有規(guī)律的組合,就可以譜寫一段有趣的音樂。利用單片機(jī)定時(shí)器產(chǎn)生不同頻率的方波是一件非常容易實(shí)現(xiàn)的事,前提是需要把某一首歌曲的音階所對(duì)應(yīng)的頻率點(diǎn)弄分明即可,電子琴的按鍵將由光電傳感器替代,即光電管感應(yīng)器輸出上下電平作為音符的按鍵,每一個(gè)按鍵對(duì)應(yīng)一個(gè)音階,單片機(jī)只需檢測(cè)I/O口的上下電平即可判斷是否有鍵按下,然后,輸出特定頻率的方波驅(qū)動(dòng)揚(yáng)聲器發(fā)出對(duì)應(yīng)的音階。
現(xiàn)以八度中音音符為例,音符與頻率關(guān)系的相關(guān)計(jì)算數(shù)值如表1所示,單片機(jī)定時(shí)器TIMER產(chǎn)生各中音的定時(shí)長(zhǎng)度根據(jù)表1數(shù)據(jù)即可完成設(shè)定,將全部中音音符建立成一個(gè)表格,單片機(jī)通過查表方式可以快速獲取與音符頻率相對(duì)應(yīng)的定時(shí)值。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保合作協(xié)議
- 智能景區(qū)信息發(fā)布平臺(tái)搭建合作協(xié)議
- 領(lǐng)隊(duì)聘用合同
- 物流服務(wù)損壞免責(zé)協(xié)議書
- 汽車零部件采購(gòu)供應(yīng)合同
- 人工智能醫(yī)療診斷合同
- 鞋業(yè)生產(chǎn)加工合同
- 環(huán)保產(chǎn)業(yè)園區(qū)招商引資項(xiàng)目合同書
- 個(gè)人的簡(jiǎn)單借款合同
- 戶外運(yùn)動(dòng)安全參與免責(zé)聲明協(xié)議
- 小學(xué)六年級(jí)數(shù)學(xué)奧數(shù)題100題附答案(完整版)
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試參考試題庫(kù)(含答案)
- 英漢互譯單詞練習(xí)打印紙
- 2023湖北武漢華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員24人筆試參考題庫(kù)(共500題)答案詳解版
- 一氯二氟甲烷安全技術(shù)說明書MSDS
- 母嬰護(hù)理員題庫(kù)
- 老年人預(yù)防及控制養(yǎng)老機(jī)構(gòu)院內(nèi)感染院內(nèi)感染基本知識(shí)
- SWITCH暗黑破壞神3超級(jí)金手指修改 版本號(hào):2.7.6.90885
- 2023高考語(yǔ)文全國(guó)甲卷詩(shī)歌閱讀題晁補(bǔ)之《臨江仙 身外閑愁空滿眼》講評(píng)課件
- 物流簽收回執(zhí)單
- 鋼結(jié)構(gòu)廠房造價(jià)指標(biāo)
評(píng)論
0/150
提交評(píng)論