汪運松
(安徽三聯(lián)學(xué)院,安徽 合肥 230000)
縱觀國內(nèi)外的科技發(fā)展現(xiàn)狀,4G 的普及、5G 的開發(fā)、云計算也運用于各行各業(yè)。 因此,學(xué)習(xí)單片機編程不僅是響應(yīng)中國科技創(chuàng)新的國策,更是與國際接軌。在此背景下,傳統(tǒng)的學(xué)校教育已經(jīng)遠遠不能滿足時代發(fā)展的需求,教育應(yīng)當(dāng)配合智能化、數(shù)據(jù)化的時代發(fā)展趨勢。 其中,尤為重要的就是對編程的需求,在美國、英國等發(fā)達國家,必學(xué)教育就包含編程學(xué)習(xí)。 再觀察中國的教育現(xiàn)狀,傳統(tǒng)的教育模式仍舊在課堂上占很大比例,更加側(cè)重于理論,對編程的創(chuàng)新與實踐仍舊欠缺。 而本機構(gòu)在此基礎(chǔ)上創(chuàng)辦,旨在開發(fā)孩子們的興趣愛好,讓理論與實踐結(jié)合,讓學(xué)生對科技有一個更加深刻且清晰的認識。 學(xué)生學(xué)習(xí)單片機編程教育不意味著將來就要從事此行業(yè)。 本機構(gòu)只是為學(xué)習(xí)編程的人提供一個平臺,培養(yǎng)學(xué)生的動手、動腦能力,讓其能跟上時代發(fā)展的節(jié)奏不至于和時代脫軌,也讓學(xué)生從小就有一個科教強國、科技興國的理念。
自科技改革以來,中國的重工業(yè)得到了高速發(fā)展,同時為適應(yīng)工業(yè)自動化的需求對硬件的要求也越來越高。 因此,為符合中國當(dāng)前的市場發(fā)展趨勢,單片機迎來了一個百舸爭流、千帆競發(fā)的時代。 然而,當(dāng)下中國的單片機技術(shù)較發(fā)達國家還有明顯差距,編程語言作為單片機的核心更是舉足輕重。 暫且不提最先開始編程教育的美國,便是與中國接壤的越南也早已引入編程教育。 為了未來國家信息技術(shù)的發(fā)展,也為了不被國際發(fā)展淘汰,針對編程教育的改革將是大勢所趨。從時代發(fā)展的節(jié)奏來看,編程教育將會在未來的高校教育中占據(jù)一席之地。 目前,中國的浙江等地也考慮在高考科目中納入編程技術(shù)。 固然中國已經(jīng)開始在國內(nèi)傳揚編程教育,也有很多孩子開始系統(tǒng)地接觸單片機,但是對比發(fā)達國家將少兒編程作為必修課來說,中國的單片機編程教育仍然任重而道遠。 因此,為了普及單片機教育,關(guān)于編程教育的課外輔導(dǎo)機構(gòu)就由此應(yīng)運而生[1]。
目前,市面上通用的高級語言包括C 語言。 C 語言編譯簡單,功能全面,操作方便,是一種比較容易上手的編程語言。 編程語言能夠和計算機、單片機溝通,實現(xiàn)人機交流,是為人類服務(wù)的語言。 對編程語言的系統(tǒng)學(xué)習(xí)后,學(xué)生將能夠更加深入地理解單片機。 初學(xué)者需要一個操作簡單、功能簡明的C 語言運行環(huán)境,可使用手機在線編譯器。 若需要更好的體驗,學(xué)習(xí)者也可在PC 端安裝Dev C++,在此基礎(chǔ)上便可開始系統(tǒng)地學(xué)習(xí)C 語言。 學(xué)生在熟練掌握C 語言之后,可更深入地學(xué)習(xí)有關(guān)結(jié)構(gòu)體和位操作運算的C 程序知識,可在相關(guān)網(wǎng)站查詢對應(yīng)的資料。 然而,這只是最基礎(chǔ)的研究結(jié)構(gòu),深入學(xué)習(xí)單片機語言僅依賴入門學(xué)習(xí)只是杯水車薪。 學(xué)習(xí)者依據(jù)入門知識可以滿足對硬件進行自由控制的操作,即實現(xiàn)機器智能化,但這是由于程序事先已有程序員完善過,可直接靈活運用。 因此,程序的靈活性還取決于編寫者對所掌握程序的熟練程度[2]。
以下是關(guān)于C 語言學(xué)習(xí)的幾點建議:
(1) 明確學(xué)習(xí)目標(biāo)和將來發(fā)展方向,鎖定一門語言,保持興趣,通過不懈努力,必然有所收獲。
(2) 初學(xué)者無須看太多的書和資料,選取適合的且易理解的書即可,再進行基礎(chǔ)系統(tǒng)化的學(xué)習(xí)。
(3) 書讀百遍其義自見,學(xué)生無須死記語法和糾結(jié)語法。 學(xué)習(xí)時最重要的便是解決問題的思路和編程的思維。
(4) 多思考、多讀源代碼。 網(wǎng)站上的程序雖不可直接應(yīng)用,但學(xué)生可仿照,最終找到適合的編程模式。
(5) 當(dāng)學(xué)習(xí)進入枯燥乏味的階段時,學(xué)生應(yīng)嘗試編譯與日常生活相關(guān)的程序來保持對編程的興趣。
(6) 多實踐,多寫代碼,這點至關(guān)重要。 學(xué)生可自行找題目練習(xí),輔以參考資料學(xué)習(xí)。 真正的天才都是從永無止境的練習(xí)中脫穎而出的。
總之,作者的研究有一定的貢獻但是非常有限,如果想要了解更多在英留學(xué)生的網(wǎng)絡(luò)購物行為,還需要進一步深入研究。那些想要吸引更多留學(xué)生消費者的網(wǎng)絡(luò)零售商和電商公司應(yīng)該對在英留學(xué)生的消費行為和特點進行深入的研究和探析。
學(xué)生在C 語言學(xué)習(xí)入門之后即可學(xué)習(xí)單片機。 上文中講述的編程的相關(guān)學(xué)習(xí)路線基于51 單片機學(xué)習(xí)。選擇51 單片機進行學(xué)習(xí)的主要原因有兩點:(1)相對其他單片機來說,51 單片機是最簡單、最基礎(chǔ)的那一批單片機。 (2)51 單片機歷史悠久,其應(yīng)用市場廣泛,學(xué)習(xí)資源較多。
學(xué)習(xí)者需要在電腦PC 端下載單片機編程軟件Keil,以前期學(xué)習(xí)的C 語言為基礎(chǔ),并利用C 語言在Keil 軟件上進行編程開發(fā)。 在硬件方面,學(xué)習(xí)者可以網(wǎng)購一個51 開發(fā)板及其數(shù)據(jù)線和一些簡單模塊(如LCD1602、電機模塊等)進行邊學(xué)習(xí)、邊實操,進一步提升自己的技能。
有些學(xué)習(xí)者對于開發(fā)板上的一些特殊功能區(qū)域沒有概念,不理解其作用,因此更難理解其功能。 初學(xué)者可以選擇跳過此部分內(nèi)容,因為此部分已經(jīng)涉及“進階”與“熟練”的學(xué)習(xí)階段。 初學(xué)者不理解入門教育里涵蓋的“燒錄程序”“蜂鳴器”“點陣”“按鍵模塊”等相關(guān)操作步驟或者單片機外設(shè)名詞,可以在熟悉路線圖的步驟前,查閱這類知識[3]。
進階部分重點為中斷和定時計數(shù)器。 學(xué)習(xí)至此,學(xué)習(xí)者需要花足夠多的時間去思考中斷的概念、中斷被開發(fā)出來的原因以及遇到何種問題用中斷最合適。定時計數(shù)器作為關(guān)鍵的功能之一。 單片機的核心定時計數(shù)器包含了定時和計數(shù)兩種功能,其中定時主要針對單片機的內(nèi)部時鐘。 計數(shù)是對外部脈沖進行計數(shù)。
當(dāng)開發(fā)水平到達一定的階段時,學(xué)習(xí)者可以將51單片機運用到自己的生活中。 學(xué)習(xí)者在掌握串口通信、IIC 總線等一些通信協(xié)議內(nèi)容后,就會認識生活中復(fù)雜的電器的接口,并且明白其作用。 數(shù)模轉(zhuǎn)化知識需要一定的時間實踐并理解。 通過對以上內(nèi)容學(xué)習(xí)之后,學(xué)習(xí)者可以嘗試自己動手制作一個最小系統(tǒng),訓(xùn)練一些綜合性的單片機開發(fā)題目以檢驗自己的學(xué)習(xí)效果。 學(xué)習(xí)者可以練習(xí)往年電子競賽的控制類型題目。總而言之,實操練習(xí)是提高單片機技能的必然之路[4]。
通過以上對C 語言的學(xué)習(xí)和單片機的入門之后,學(xué)習(xí)者可進一步學(xué)習(xí)編程,即利用編程開發(fā)一些簡單的實戰(zhàn)項目。 學(xué)習(xí)者動手開發(fā)基于編程的小項目,一方面既可以提高編程技術(shù),另一方面也可以充分培養(yǎng)對編程的學(xué)習(xí)興趣,體驗自己開發(fā)出的實物所帶來的成就感。 對于編程的進階開發(fā)項目,智能小車是一個不錯的選擇。 在小車之外,學(xué)習(xí)者可以外加許多相應(yīng)的模塊,實現(xiàn)不同的小車效果。 基于編程的智能避障小車是本次的實物開發(fā)案例中比較有代表性的編程開發(fā)的進階項目。
基于編程的智能避障小車項目采用兩個電機連接車輪外加一個萬向輪連接小車底盤即可搭建一個簡易小車(見圖1),用主控模塊的編程來實現(xiàn)對電機模塊、超聲波模塊的控制(見圖2)。 設(shè)計者采用12 V 的電源給電機驅(qū)動模塊L293D 供電,采用L298N 控制電機正反轉(zhuǎn)并輸出5 V 給單片機供電。 超聲波模塊采用性能更加穩(wěn)定、測量精度更加精確的HC-SR04 模塊、單片機最小系統(tǒng)和12 V 鋰電池。 設(shè)計者將所有模塊用膠槍固定于小車底盤上。 設(shè)計者選擇單片機對電機模塊、超聲波模塊、電機驅(qū)動模塊進行控制并用杜邦線連接各個模塊,搭建好項目的硬件。
圖1 智能避障小車實物
圖2 控制芯片
智能避障小車的軟件調(diào)試,分為程序編寫與實物調(diào)試部分。 對于程序編寫,設(shè)計者應(yīng)基于智能避障小車的總設(shè)計流程,并結(jié)合項目所要實現(xiàn)的功能進行分模塊編寫程序。 根據(jù)總設(shè)計的模塊,設(shè)計者可將程序的編寫分為電機模塊和超聲波模塊,利用超聲波模塊獲取與障礙物的距離,以決定電機的運動狀況。
設(shè)計者根據(jù)小車功能使用Keil 軟件進行程序編寫,以實現(xiàn)小車避障功能。 電機控制的程序代碼分成多個子函數(shù),分別包含小車的前進函數(shù)、剎車函數(shù)、左轉(zhuǎn)函數(shù)和右轉(zhuǎn)函數(shù)。 當(dāng)小車在不同的運動情況下,設(shè)計者調(diào)用不同的函數(shù)實現(xiàn)對小車的控制。
下面所示為智能小車中超聲波模塊測量的距離計算函數(shù)。
在超聲波測量距離的計算函數(shù)程序代碼中,設(shè)計者將對超聲波模塊所捕獲的時間帶入計算,通過一定的計算公式實現(xiàn)對距離的測量。 當(dāng)距離超出測量的范圍時,設(shè)計者通過取余運算可以測量出正確的距離。
對于實物調(diào)試部分,設(shè)計者在編寫完軟件控制程序后,將其下載到51 開發(fā)板中進行實物測試。 設(shè)計者根據(jù)小車在實物測試中的速度、遇到障礙物轉(zhuǎn)向時的靈敏度等對最初距離設(shè)定值,讓電機的轉(zhuǎn)速進行不斷的變化,直到達到理想的效果。
編程的教育本著一種創(chuàng)新的學(xué)習(xí)教育模式。 學(xué)習(xí)者先學(xué)習(xí)C 語言,再逐漸過渡到編程開發(fā)階段。 該方案結(jié)合了理論和實操訓(xùn)練,通過實操訓(xùn)練查找問題,鞏固理論的學(xué)習(xí),讓枯燥的理論學(xué)習(xí)變得更加有趣,使學(xué)生更加喜愛該種教育模式,更加愿意學(xué)習(xí)單片機開發(fā)。
本文介紹了從基礎(chǔ)小白到編程實訓(xùn)開發(fā)的路線。學(xué)習(xí)者首先學(xué)習(xí)C 語言打好基礎(chǔ),然后從C 語言向編程小白過渡。 學(xué)習(xí)者可通過使用編程將多個模塊結(jié)合起來完成進階項目,從而提升技術(shù),提高學(xué)習(xí)興趣。