廣東理工學院電氣工程系 張曉亞 唐東成 任 瑾 鄧超兵 李欣雪
淺談C語言在單片機中的運用
廣東理工學院電氣工程系 張曉亞 唐東成 任 瑾 鄧超兵 李欣雪
C語言是一門高級的計算機語言,很容易被初學者讀懂,并接受。這也是工科類等非計算機專業為什么在學習程序設計的時候,大多數院校都選擇C語言程序設計為教材,并結合以軟件VC++6.0為輔上機掌握C語言知識的原因。C語言是在培養應用型人才的工科類中也是一種非常重要的語言基礎,例如在單片機和嵌入式中,C語言具有舉足輕重的作用。
C語言;單片機;工科類
隨著計算機應用的發展,單片機微型計算機在人們日常的生活中應用的也就越來越廣泛,甚至從工業到農業及第三產業都會有涉及到。所以很有必要了解單片機的控制原理及編程設計原理。
目前在單片機編程過程中主要有匯編語言和C語言兩種。但是匯編語言的編寫程序的難度要比C語言編程的難度大,不容易被學生理解和接受。運用匯編語言的前提是要對單片機的程序執行流程及內部結構工作原理都要非常熟悉,才能運用自如。另外匯編語言可移植性比較差,開發效率不高,造成了在目前很少運用匯編語言來開發產品。在教學的過程中,學生對用匯編語言來編寫單片機的項目代碼的學習積極性遠不如用用C語言編程。
C語言是面向過程的一種語言,比較符合事物發展的過程規律。C語言按照事物發展的邏輯很容易編寫代碼,并且C語言對平臺硬件的要求不高,不依賴硬件的高內存,這點和匯編語言又有很大區別。另外C語言的的軟件環境要求比較低,目前的計算機都能達到要求,學生完全可以在自己的筆記本上安裝,只要有閑暇時間都可以學習,相比較匯編語言,學生的積極性比較高,他們學習C語言的自信心也就提高了很多。另外C語言的通用性比較強,在編寫程序的過程中,實現相同的功能,完全可以編成實現程序的功能模塊,在需要用的時候直接調用即可,不需要再重新編寫源程序。
C語言被認為是使用最廣泛的可編程嵌入式處理器的語言,在工科類的學習中特別是單片機的學習過程中,C語言一般都會作為基礎專業課學習是有一定的道理。在單片機的編程學習中利用了大量的C語言現有的庫函數,并且單片機的許多工具包也都是由C語言來編寫的。針對有C語言基礎的同學,編程的基本概念知識點,數據類型,各種運算符表達式,控制結構語句,數組,輸入輸出函數及內部數據處理等等知識點均可以直接在單片機的簡單項目中使用,并加以練習,大大提高學生學習的積極性和主動性。不然針對理工科的學生,學習了C語言很難有機會把學到的知識運用到實際生活中,只能使學習變得機械乏味。當然C語言衍生的其他語言,如C++,Java,C#等,但是針對非計算機專業的工科類學生,相對來講也很難接觸,何談使用其語言做項目。并且C語言由于自身的特點,用C語言編寫單片機的程序是目前學習單片機的大勢所趨。
針對沒有C語言基礎的同學來講,一般情況下只要求理解并掌握順序結構,循環結構,選擇結構及函數的調用和數組等知識點就夠了,沒有必要要求掌握指針等概念,大大降低了學生的負擔。匯編語言可以輔助理解單片機的內部結構及內部資源。兩者結合,針對單片機的一些經典的實踐項目,如花樣流水燈,數碼管的靜態及動態掃描顯示,獨立鍵盤和矩陣鍵盤的調節數碼管的變化,音樂播放器,萬年歷及搶答器等等項目都可以在教師的講解下,讓學生理解其中的道理,自己主動編程調試完成相應的任務。這樣既調動了他們的積極性,又可以在實踐中找到他們的興趣點,為以后的工作做準備。
學好單片機最好的途徑就是動手操作,在學習過程中有些院校會配備相應的開發板,但是大多數院校需要學生通過仿真軟件來完成項目的實現。涉及到的軟件有Keil和Protues,Keil C51是一款提供51系列單片機編程,編譯,調試于一體的開發平臺。Keil的界面比較友好,使用比較方便易懂,功能比較全,里面幾乎包含了目前流行的各大廠家生產的單片機芯片,在編程調試時各個芯片的端口及串行口通信所有的信息都可以通過調試調用相應的按鈕都可以實時觀測到程序運行的過程。并且Keil中C程序,可以通過調試隨時修改,重新進行編譯,通過查看仿真結果確定是否成功,效果非常好。Protues軟件也是目前運用比較廣泛的仿真軟件,特別是針對工科類的學生,在學習很多專業課以后,很難有機會真正把上課所學的知識點實際操作運用,該軟件彌補了這個缺陷,可以把工科類所學的專業課相應的知識點通過仿真觀察到相應的效果。除此之外,就是可以由Protues得到由單片機開發的項目原理圖,不需要實際當中的電路板,它可以識別由C語言在Keil軟件中編寫的程序,檢測學生自己編寫的程序是否達到自己預期的目標。
在教學的過程中,無論是C語言還是單片機,經常跟學生說∶:只要你寫的程序合乎你自己邏輯,寫的合情合理,那么你寫的程序肯定沒問題,即便是有問題,在Keil編程軟件中耐心調試,最終一定會達到你要的效果。他們大多數都愿意主動編寫一些程序代碼來實現他們想要的效果。
學習是一個循序漸進的過程,最為重要的是讓學生看到自己從書本上所學的知識點是有用的,可以用到實際當中。單片機的出現讓C語言有了實踐性的意義,加上Keil和Protues兩個軟件的結合,可以使學生有了相對獨立的編程思想,不再是以老師為主。在上機實踐的時候,一旦有問題出現,教師不再像以前一味的去代替學生調試程序,找錯誤的地方,這樣下去只能使學生形成惰性,況且在編程的過程中一個微不足道的細節可能會導致整個程序編譯不成功,有時候老師也會苦惱的。在用單片機完成實際項目的時候,學生學習的積極性被帶動起來,他們遇到問題會主動的彼此討論,查閱資料,真正的從“要我學”變成了“我要學”。另外就是在用Keil軟件編寫單片機代碼的時候,很多同學普遍出現的一個問題是看不懂程序在編譯以后出現的錯誤提示,本質原因就是英語基礎不到位。針對這個問題,最好的解決辦法就是在學生親自動手實際操作以后出現問題了,把提示的信息單獨拿出來給大家翻譯講解,并告訴其解決辦法。還有就是學生常犯的另外一個錯就是想當然,不注意邏輯上的銜接問題,程序運行的結果達不到效果。這就需要在教學的過程中,加強學生的練習,多列舉一些經典的例子。讓學生通過現象看本質,明白其中的道理,使他們知其然,也要知其所以然,讓他們在每次上課都有所收獲,有所感悟。
C語言對初學者而言是全新概念,針對非計算機專業的學生可能會遇到一切阻礙,主要是在書本上學到的知識看不到它的使用價值。單片機的出現讓學生感受到C語言的作用,我們日常生活中接觸到的電子類產品完全可以用C語言編程實現其控制,這也揭開了現代科技神秘的面紗,讓學生充分感受C語言的魅力。
[1]張德偉.單片機課程教學模式的探索與實踐[J].中國科技,2007(6): 268-270.
[2]裴霞.C語言課程的教與學改革初探[J].赤峰學院學報,2014(7): 253-264.
[3]胡建波.何守亮.單片機原理與應用[M].2015(10).
[4]程傳鵬.基于大學生心理特點的C語言教學方法[J].計算機教育,2012(1):68-71.
張曉亞(1987—),女,河南漯河人,碩士研究生,助教,研究方向:過程工業的故障診斷。