張婧婧
(新疆農業(yè)大學 計算機與信息工程學院,新疆 烏魯木齊 830052)
C 語言是一門通用、面向過程的計算機程序設計語言。Proteus軟件是一款蘊含巨大的教學資源,用于模擬各類電路、微控系統(tǒng)、單片機及嵌入式系統(tǒng)設計的EDA仿真平臺。在Proteus軟件中演繹C語言教學專題無疑是程序設計類課程的一種全新嘗試。架構于硬件仿真平臺之上的語言類課程教學,旨在為學習者還原課程的真實應用情景,為教學者瞄準學以致用的教學目標[1]。
首先,作為教學助手,Proteus軟件的教學應用前景廣闊,支持C語言和匯編語言的編程[2]。就微程序控制技術而言,基于C語言的程序設計更受青睞,因此用于情景式教學的原型案例資源豐富,易于為C語言教學設計者提供各類專題及教學素材。
其次,應用Proteus仿真平臺開展C語言程序設計致力于豐富初學者的編程體驗。例如,電路的仿真過程通常融入功能模塊設計,嚴密的邏輯推理能夠強化初學者對C語言各類程序結構(分支、循環(huán)、遞歸等)的理解和運用;定義仿真電路的輸入、輸出部分,如按鍵、指示燈的設置,數碼管、傳感器的應用等能夠大幅提升初學者對各類變量、數組、指針、作用域規(guī)則等概念的認識和把握;仿真電路追求硬件功能的完整性,往往包含輸入、存儲、控制、顯示等模塊,在此基礎上的編程能夠加深初學者對C程序完整性設計的理解;在仿真電路的運行過程中,豐富的虛擬資源和形象的仿真效果能夠讓編程、調試過程更加直觀、生動,且Proteus仿真軟件簡單易學、容易上手,適于初學者的實踐和體驗。
最后,仿真模型能夠為教學設計者提供生動的教學場景,優(yōu)化教學資源。以簡易交通燈的C語言設計為例,在授課過程中,教學者可以借助仿真電路展現動態(tài)的程序設計過程(即紅、黃、綠燈的閃爍),如圖1所示。其中,憑借程序的隱蔽性和仿真的靈活性,教學互動過程將更具吸引力和趣味性,另外仿真平臺還支持C程序運行過程的反復推理和演繹,使學習者自覺融入其情景設計中。
此外,鑒于微控制器的程序存儲及運算能力有限,系統(tǒng)的硬件仿真將有助于促進設計者對C程序算法[3]在時間和空間上優(yōu)劣與否進行思考,進而對程序算法提出更精細的要求,這對提高C語言程序設計質量具有重要意義。
更值得一提的是,C語言作為微控系統(tǒng)、單片機及嵌入式系統(tǒng)設計的首選編程語言,在相應課程開課過程中沒有分配獨立課時,通常以自學為主。對電子類及相關專業(yè)的初學者而言,在C語言課程入門階段就接觸硬件仿真,對其將來的專業(yè)學習意義非凡。

圖1 交通燈系統(tǒng)的仿真電路
基于Proteus的仿真平臺進行C語言課程的教學嘗試,其教學重點和難點在于如何忽略硬件對程序設計的“干擾”,為硬件“零”基礎的學習者提供“無障礙”的虛擬平臺,進而在系統(tǒng)仿真中體會C語言編程的內涵和魅力。以單片機的仿真模型為例,筆者將C語言案例教學設計的具體內容解析如下,供相關教學設計者參考。
基于硬件設計平臺,C語言教學應甄選硬件簡潔、情景直觀的系統(tǒng)作為原型案例。多模式的花樣流水燈的電路設計簡單,無需對硬件進行深度學習,如圖2所示。多路按鍵、多路LED燈、一位數碼管電路將分別指向分支語句、循環(huán)語句及數組的運用,同時LED燈、數碼管的顯示過程還伴隨著延時子程序的反復調用,屬于復合結構程序設計的原型案例,符合C語言教學用例的綜合評判。
C語言遵循結構化程序設計的規(guī)則[4],利用仿真平臺進行的C程序結構分析無疑彰顯了仿真教學模式的天然優(yōu)勢。對初學者而言,較之其他開發(fā)工具,基于仿真模型的設計更容易分化程序結構和構思編程策略,如圖3所示。
圖3中,(a)和(b)兩幅仿真圖分別模擬按鍵發(fā)音和一位計數器的設計。在按鍵發(fā)音電路中,判斷按鍵是否按下,否則將執(zhí)行相應的代碼是C語言中典型的多分支語句,可采用if…else結構或switch…case結構完成;在一位計數器的電路中,數碼管將會在0~9 之間循環(huán)顯示,且譯碼過程通常采用數組查詢方式,因此編程時需要定義數組且構造循環(huán)結構,亦屬于C程序設計的典型應用。
基于仿真平臺中的C程序設計與標準C語言設計運行著不同的指令集[5],如果仿真案例僅以專題形式講授,教學設計者就必須為初學者厘清二者的區(qū)別和一致性。以單片機仿真設計為例,其C51的編程與標準C的編程在語法規(guī)定、程序結構、編程技巧方面高度一致,但在數據類型、變量存儲模式、輸入輸出處理、函數等方面有一定的區(qū)別。例如,標準C中的頭文件是stdio.h,在單片機C51中的頭文件為reg51.h或reg52.h;再如常用函數printf在標準C中用于輸出字符至屏幕,而單片機中則輸出到串口等。
對各專業(yè)的初學者而言,不同指令集下編程必定會增加學習的難度。為了避免學習者的抵觸情緒,教學中應該為其配套相應的指令使用指南,梳理并解析兩類指令系統(tǒng)的區(qū)別與一致性。

圖2 多模式的花樣流水燈的仿真電路

圖3 各類典型的程序結構案例
就C語言的教學目標而言,學習者針對程序中結構和算法的設計遠遠重要于對某類定義、數據處理模式的掌握。本著這一原則,教學實踐環(huán)節(jié)中,設計者還需要儲備仿真案例的程序模板,旨在跳過部分硬件驅動和數據處理模式的編程,同時弱化不同指令之間的區(qū)別,為初學者呈現與標準C語言近乎“無差別”的仿真設計平臺。
以水量檢測系統(tǒng)[6]為例,其程序模板如下:


基于硬件仿真平臺的C語言課程教學目前正處于課改的規(guī)劃和資源整合階段,尚無成熟的教材和豐富的教學資料,因此為教學設計相應配套實驗教材,是實施課程教學計劃的重要環(huán)節(jié)[7]。根據案例的選取和知識點的銜接,設計難度相當、知識點匹配的實驗項目無疑是對教學設計者的客觀要求。值得注意的是,在項目的設計階段,還需同時儲備程序模板和指令解析指南,供學習者在實踐過程中參考。
與C語言編譯器的功能不同,Proteus仿真軟件支持Keil C編譯器編譯的.HEX文件[8],并用于程序的加載和運行,為此,針對Keil C編譯器的使用及Proteus仿真軟件的運行編寫一部基本操作指南,即能幫助學習者在課程實踐中解決各類仿真操作的問題。
(1)課程知識點的銜接處理。在標準C語言的教學中,初學者很容易適應該課程“從易到難”的教學進度和“由淺入深”的推演原則;而在Proteus的硬件仿真平臺中,如何循序漸進地分解程序設計的知識點,并進行硬件設計“不留痕跡”的銜接處理,對教學設計者提出很大的挑戰(zhàn)。
(2)軟、硬件的配套設計。為防止基于硬件仿真的C語言教學過程本末倒置,電路仿真適于選取硬件結構簡單、程序算法復雜的案例進行,這與程控系統(tǒng)設計的實際情況相互矛盾,因此在案例設計中,為了選取仿真電路和軟件設計都難度適宜的項目,設計者還需在仿真資源、程序模板、操作指南、指令解析等教學資料的準備中權衡內容,匹配素材。
基于仿真軟件的C語言課程教學屬于“軟”件“硬”學的課程改革和嘗試,一經實施,定會與標準C語言的教學內容之間展開博弈,在教學目標、授課內容、實踐方式上都表現出很大的差異。該模式能否對C語言教學產生深遠影響還需要各種實施數據和分析,但能夠預見此方式更貼合“應用型”人才培養(yǎng)目標,尤其作為通識教育的語言類課程,C語言的仿真教學將比傳統(tǒng)教學形式更具吸引力。
[1]張婧婧, 李勇偉. 電子類仿真軟件應用的教學之道[J]. 計算機教育, 2016(7): 126-129.
[2]蘇變玲, 朱志平, 袁衛(wèi). 基于Proteus的單片機仿真教學的研究[J]. 實驗室研究與探索, 2009(4): 75-78.
[3]魯強, 李效戀, 王智廣. 程序算法識別研究綜述[J]. 計算機應用, 2012, 32(10): 2863-2868.
[4]汪紅兵, 姚琳, 武航星, 等. C語言程序設計課程中的計算思維探析[J]. 中國大學教學, 2014(9): 59-62.
[5]王恒廠, 周燕飛.由C語言程序格式解析宏程序[J]. 現代制造工程, 2008(5): 126-128.
[6]任洪娥, 孫麗萍, 韓麗萍, 等. 智能霍爾效應水流量測試儀[J]. 東北林業(yè)大學學報, 1996(3): 99-102.
[7]陳婷. C語言程序設計實驗教學改革探究[J]. 實驗技術與管理, 2010, 27(10): 182-184.
[8]鄧力. 基于Keil時序邏輯和Proteus的電路仿真[J]. 實驗室研究與探索, 2017, 36(1): 80-83.