呂鑣
(云南省電子信息高級技工學(xué)校,云南 昆明 663714)
學(xué)習(xí)需要有一個好的開始,良好的開始方能讓學(xué)習(xí)事半功倍。在單片機(jī)應(yīng)用技術(shù)學(xué)習(xí)的初期,采用項目學(xué)習(xí)法,通過創(chuàng)設(shè)不同階段項目任務(wù),逐漸深入學(xué)習(xí)相關(guān)技術(shù),最終實現(xiàn)對整個技術(shù)的深入認(rèn)知以及良好應(yīng)用。在學(xué)習(xí)的初期,便可以從簡單的單片機(jī)任務(wù)入手,通過更為簡單基礎(chǔ)的項目形式,了解單片機(jī)的大概應(yīng)用流程。
比如,用LED 發(fā)光二極管的控制進(jìn)行編程設(shè)計,其主要設(shè)計目標(biāo)為利用開關(guān)來控制LED發(fā)光二極管做出相應(yīng)的開關(guān)動作,具體的程序編寫流程如下:
創(chuàng)設(shè)一個專門的工程文件:單機(jī)菜單[Project]—[New Project……],而后,在彈出的“Create New Project”對話框中,選擇便于取用的保存路徑,并輸入相應(yīng)的文件名,在輸入文件名時,不需要額外輸入擴(kuò)展名。完成后,便可單擊保存按鈕,單擊保存按鈕后,系統(tǒng)會彈出第二個對話框,在該對話框中,需要選擇相應(yīng)的CPU 型號,在選擇對應(yīng)的CPU 型號后,即可單擊確認(rèn),工程文件創(chuàng)設(shè)完成。
工程的設(shè)置:在系統(tǒng)中,找到“Target1(目標(biāo))”選項,右鍵單擊該選項,在彈出菜單欄中選擇“Options for Target‘target1’”選項,并在彈出的對話框中對“Output”頁面進(jìn)行設(shè)置,并在其中選擇“Create HEX File”生成數(shù)列可執(zhí)行相關(guān)動作的代碼文件
建立并保存源文件:在系統(tǒng)中,找到菜單選項[File]—[New]單擊,而后便可在項目窗口的右側(cè),彈出一個新建文本編輯窗口。在該窗口內(nèi),找到菜單選項[File]—[Save]單擊,而后在彈出的對話框當(dāng)中,在文件名位置輸入相應(yīng)的文件名,并且在輸入文件名時,要確保其擁有爭取的擴(kuò)展名,確認(rèn)文件名無誤后,單擊保存。
添加源文件到工程中:在系統(tǒng)中的源程序組上單擊右鍵,并在彈出的快捷菜單欄中選擇“Add Files to Group‘Source Group1’”選項,隨之彈出對話框,在對話框中找到“l(fā)ed.c”選中。
在程序的輸入窗口里輸入相關(guān)程序,而后保存。
程序編譯:在系統(tǒng)中選擇菜單[Project]—[Build target]對當(dāng)前的程序進(jìn)行連接,并產(chǎn)生相應(yīng)的目標(biāo)代碼。隨后使用串行口ISP 下載線,將該程序下載至指定位置。而后,便可以為整個系統(tǒng)通電,如若系統(tǒng)能夠正常運作,通信效果正常,便可以將整個程序?qū)懭氲絾纹瑱C(jī)的程序存儲器當(dāng)中。
在單片機(jī)的學(xué)習(xí)過程中,其重點應(yīng)當(dāng)放在電路以及編程方法方面,在學(xué)習(xí)流程的初期,不妨直接將他人的程序代碼進(jìn)行使用,并且在一整個流程當(dāng)中,總結(jié)程序代碼的編程規(guī)律,并學(xué)習(xí)其中的程序思路,找出其中值得學(xué)習(xí)的部分,將其融入自己的知識儲備之中,應(yīng)用于日后自己的程序編碼[1]。在學(xué)習(xí)的過程中,就需要結(jié)合相關(guān)任務(wù),進(jìn)行實踐,將知識點應(yīng)用于實踐活動當(dāng)中,在任務(wù)當(dāng)中應(yīng)用到的知識點,將其進(jìn)行深入研究,如若暫時未應(yīng)用到,則將其進(jìn)行標(biāo)記,暫時跨過這部分內(nèi)容,并且確保在后續(xù)的實踐過程中,有應(yīng)用到這一部分知識點時,能夠第一時間找到相應(yīng)的知識點內(nèi)容。
比如,流水燈程序的代碼:
#include
Int main(void) {unsigned int i; P2=0xfe;while(1)
{for(i=0;i<30000;i++);P2=_crol_(pr,1);}
可以從上述代碼中看出,流水燈程序的代碼同二極管控制的代碼之間存在一定的相似性,即使在代碼之中,兩者都會應(yīng)用到單片機(jī)的頭文件。在整個程序的代碼當(dāng)中,都應(yīng)用到的主函數(shù),并且為了實現(xiàn)某一動作,嵌套了死循環(huán)函數(shù)。與二極管控制代碼不同的是,流水燈的代碼之中,多出部分內(nèi)部函數(shù)頭文件,并且對復(fù)合整型變量進(jìn)行了定義,并在其中引入了for 循環(huán)的延時函數(shù)。在該代碼之中,提到了秒刪電路的制作,并應(yīng)用到了定時器中斷,在學(xué)習(xí)的初期,可以暫放這一部分的內(nèi)容,而在應(yīng)用到定時器中斷時,便可再去翻閱定時器相關(guān)的學(xué)習(xí)內(nèi)容[2]。通過這樣的一個過程,將學(xué)習(xí)內(nèi)容進(jìn)行碎片化,并且跟隨自己的實踐活動,對各知識點進(jìn)行重組,用到了再去學(xué)習(xí),通過實踐的方式,加強(qiáng)對某一知識點的印象,并且確保所有理論知識的學(xué)習(xí)都能夠循序漸進(jìn)地展開。
在對單片機(jī)應(yīng)用技術(shù)的學(xué)習(xí)初期,部分內(nèi)容可能過于復(fù)雜,學(xué)習(xí)難度較大,在學(xué)習(xí)的過程中,可以先將教師講解的重要部分以及教材中的相關(guān)程序進(jìn)行抄寫或者記錄,并且仔細(xì)分析每一句代碼所能夠承擔(dān)的功能以及呈現(xiàn)出來的效果,能夠達(dá)到什么樣的動作目的,在運行后,不同的代碼所呈現(xiàn)出來的效果。比如,在編寫單片機(jī)驅(qū)動電量發(fā)光耳機(jī)管程序的過程中,就可以通過位操作法,在整個程序當(dāng)中,對某位引腳進(jìn)行賦值。
#include
Main() {d1=0;d2=1;p1_2=0;while(1);}
在此程序中,通過相關(guān)動作,能夠?qū)崿F(xiàn)發(fā)光二極管的D1,D3 亮,d2 不亮的情況。在進(jìn)行編碼的過程中,除了頭文件程序以外,皆可以用兩種方法對引腳名稱進(jìn)行定義,第一種是通過名稱P1 定義引腳名,第二種則是通過已有名稱來定義新名稱。在這一過程中,需要區(qū)分兩者之間的區(qū)別,在明確分辨程序后,再由資金重寫一遍,在重寫的過程中,找出自己的問題,并且加以優(yōu)化。直到能夠自己順利寫出代碼位置。
如何通過編碼的方式,實現(xiàn)對某一程序的控制,并且按照自身的要求,做出規(guī)定的動作,這是在完成項目任務(wù)時的唯一目標(biāo),也是編碼的主要思路。用單片機(jī)一位I/O 口去控制發(fā)光的二極管做出相關(guān)動作。LED 的整個工作流程為:點亮;延時;熄滅;延時;點亮;延時……以該過程進(jìn)行循環(huán),進(jìn)而呈現(xiàn)出而機(jī)關(guān)閃爍的效果。在進(jìn)行編程的過程中,其硬件電路相對簡單,以亞龍YL-236 單片機(jī)控制功能為例。在程序設(shè)計中,其需要展開的操作難度并不高,通過流程圖對程序完成設(shè)計,并且在電量法官二極管程序的基礎(chǔ)上,融入一定的延時功能。
編程方法如:#include
Void main() {unsigned int i;While(1)
{led=0;for(i=0;i,50000;i++); led=1;for(i=0;i,50000;i++);
便可以實現(xiàn)二極管閃爍的效果。此能夠有效實現(xiàn)二極管閃現(xiàn),其主要運用了for 循環(huán)演示的方法,利用相關(guān)理論知識,則可以考慮,通過不同的代碼變化,是否能夠?qū)崿F(xiàn)不同的閃爍效果以及延時時長。而對不同代碼的設(shè)計以及編寫,便是自主編碼的過程,實現(xiàn)對整個程序的創(chuàng)造,進(jìn)而將相關(guān)的理論知識融入自身的知識儲備當(dāng)中,應(yīng)用于代碼編程當(dāng)中。
綜上所述,單片機(jī)應(yīng)用技術(shù)的學(xué)習(xí)需要循序漸進(jìn)地展開,并且在學(xué)習(xí)的過程中,學(xué)會舉一反三,以他人的代碼為例,逐漸開發(fā)屬于自己的代碼,并且保障程序的正常運營,以實現(xiàn)相關(guān)理論知識的有效應(yīng)用,提高自身編寫代碼的水平以及效率。