郭兆正,尹作友
(渤海大學 工學院,遼寧 錦州 121013)
現在研究單片機課程教學的方法很多,但無論哪種教學方法都是為了讓學生理解和掌握真正的系統(tǒng)設計知識,所以無論如何學生都要親手去做系統(tǒng)的硬件和軟件設計,那么掌握軟硬件系統(tǒng)設計的方法和規(guī)律就變得極其重要。
在參加一些科研項目時,經常會發(fā)現一些技術高手,他們的硬軟件設計速度很快,經驗很豐富,技術很熟練,系統(tǒng)設計能力令人羨慕和欽佩。經過分析并與他們探討發(fā)現:他們平時在長時間的設計工作中積累了大量的硬件和軟件模塊,一些硬件模塊可直接用于新系統(tǒng)的硬件設計,軟件模塊幾乎不用改寫即可直接移植于新程序中。只有新設計和使用的模塊才能花費他們一些時間,一旦設計成功,新模塊又被收入模塊庫。由此可知,單片機系統(tǒng)設計人員一定要建立好自己的模塊庫,在設計中最大限度的實現軟硬件移植,節(jié)省開發(fā)時間,提高開發(fā)效率。作為單片機課程的教師也要把這種模塊化設計思想和方法講授給學生,讓學生掌握這種實用的系統(tǒng)設計方法。
如何建立硬件和軟件模塊庫需要遵循一定的規(guī)律,在長期的教學與科研中總結出如下的一些思想和方法。
任何復雜電路系統(tǒng)都是由具有完整基本功能的功能模塊電路組成。如黑白電視機,其中的電子器件有幾百個,但都由阻抗匹配器、高頻頭、中放、檢波、視放及顯像管電路、伴音中放及鑒頻、低放、電源、AGC電路、同步分離、幀掃描、鑒相器及行振蕩、行推動及輸出等功能模塊電路組成。
單片機應用系統(tǒng)也是如此,一般有CPU系統(tǒng)、存儲器、各種輸入輸出接口等。這些輸入輸出接口模塊有的集成在單片機內部,有的需要外部擴展。隨著應用系統(tǒng)功能的不同,呈現多樣性的特點。再加上各種輸入、輸出信號變換和調理電路,電源轉換電路等,組成了各種各樣功能復雜的應用系統(tǒng)。
既然這些復雜的電路系統(tǒng)都可以分解為多個單一的功能模塊電路,學習單片機系統(tǒng)設計就可以從功能模塊電路入手。在教學、科研過程中,要不斷收集遇到的各種硬件功能模塊電路,弄清它們的工作原理、性能及特性、特定的功能及使用方法,把系統(tǒng)化整為零,建立起自己的硬件模塊庫。在設計一個新的單片機應用系統(tǒng)時,要根據系統(tǒng)要求的功能和性能,選擇、設計滿足要求的功能模塊電路,按照一定的規(guī)律,將它們恰當地組合成單片機應用系統(tǒng),合零為整,完成硬件系統(tǒng)設計。
以這樣的模塊化設計思想做基礎,在教學過程中,指導學生學會搜集、分析別人的設計案例、論文和相關書籍中的功能模塊電路,不斷地充實自己的功能模塊電路庫,日積月累,學生就會覺得自己的單片機系統(tǒng)設計能力越來越強。
在系統(tǒng)硬件設計過程中,功能模塊電路不能隨意選擇,具體的注意事項如下。
葉靄玲說,白麗筠是個大美人嘛,追她的人不要太多喔。你看到她騎電動車可真稀罕。要不是到半邊街那條狹窄的老街去,她在大馬路上總是開寶馬的。
1.2.1 根據系統(tǒng)的功能和使用環(huán)境選擇模塊
系統(tǒng)設計時,要分析系統(tǒng)的功能要求,還要考慮系統(tǒng)在什么環(huán)境下工作,需不需要防潮、振、熱、冷等惡劣環(huán)境,芯片選擇軍用、工業(yè)級還是民用的。通過綜合考慮這些因素,確定合適的硬件模塊。
1.2.2 根據系統(tǒng)要求的性能指標選擇模塊
同樣功能的電路模塊,應用場合可能不一樣,精度、速度、功耗、體積、重量、價格、可靠性等性能指標也可能不一樣。如測溫電路,鉑電阻和熱敏電阻及熱電偶電路的測溫性能就很不同,選擇時要注意這些性能的區(qū)別。
1.2.3 注意各個功能模塊電路的耦合方式和接口方式
數字信號接口一般有并行、串行接口方式,開關量接口要考慮電平是否與CPU一致、驅動能力如何,從抗干擾的角度要考慮它們是否需要隔離。模擬信號的耦合方式一般有直接、阻容和變壓器3種耦合方式。必須考慮信號幅度、頻率、濾波、輸入輸出阻抗及驅動能力等因素,保證耦合后信號真實可用。
1.2.4 注意各個功能模塊之間的干擾
模塊之間的干擾主要是指高頻信號的竄擾、地線上的信號干擾、熱源的干擾及輸入輸出之間的竄擾。為了更好的提高系統(tǒng)的抗干擾能力,首先選擇抗干擾性能好的模塊提高抗干擾能力,其次增加各種濾波及隔離電路減少干擾,最后合理布局制板,讓容易受干擾的部分遠離發(fā)出干擾的部件,讓模擬部分和數字部分單點共地,讓怕熱的部分遠離發(fā)熱的功率電路等。
在軟件設計過程中,往往將一個大規(guī)模的程序劃分成若干個容易理解、大小適當、功能明確、具有一定獨立性的的程序段去編寫,或者是將那些重復使用的程序段進行獨立設計,這樣劃分的程序段被稱為程序模塊。
這樣做的優(yōu)點如下:各模塊相對獨立、功能單一、結構清晰、接口簡單;便于調試、連接,控制了程序設計的復雜性;縮短了開發(fā)周期;避免程序開發(fā)的重復勞動;易于維護、功能擴充和程序移植;可以實現自頂向下的程序設計等。
在進行模塊分解時,各模塊功能盡可能專一,聯系盡可能簡單,使模塊獨立性強,容易設計、維護、修改和移植,使程序有很好的可維護性和可擴展性,提高程序設計的效率和質量。
完整的軟件含有的功能模塊較多,如何降低功能函數之間聯系的復雜性,使調用關系簡化對提高程序的可移植性很重要??梢圆捎密浖謱拥乃枷?,將軟件模塊劃分為應用函數層、功能函數層、硬件隔離層和硬件驅動層4個層次。從前至后每一層只能調用后一層的函數,不允許跨層調用.前兩層屬于硬件無關層,不用考慮硬件,可以編寫成不同的單片機都可以移植使用的模塊。最后一層是硬件驅動層,程序移植時中,只改變此層的編寫即可。硬件隔離層用于消除硬件差別。這符合結構化程序設計按層次結構組織各模塊的原則,能做到自頂向下地將一個大程序逐層分解。得到程序的模塊層次結構,而后再進一步把每個模塊分解為具體的執(zhí)行模塊或執(zhí)行步驟。
各種單片機都有自己的匯編語言,但匯編語言缺乏通用性,需要編程人員必須對計算機硬件有相當深入的了解,并且程序不易模塊化,不易移植,所以不利于模塊化程序設計。
C語言是一種編譯型程序設計語言,它兼顧了高級語言、匯編語言的特點。有功能豐富的庫函數、運算速度快、編譯效率高、有良好的可移植性,可以直接實現對系統(tǒng)硬件的控制,支持自頂向下結構化程序設計技術 。C語言程序具有完善的模塊程序結構,從而為軟件開發(fā)中采用模塊化程序設計方法提供了有力的保障。C語言具有高級語言的可讀性好的特點,便于改進和擴充,容易開發(fā)研制出規(guī)模大、性能完備的系統(tǒng)。因此,使用C語言進行程序設計已成為軟件開發(fā)的一個主流。
在近年單片機教學和指導學生參加電子設計競賽的培訓中,逐步采用并總結單片機教學經驗,在教學案例中采用模塊化軟硬件設計教學方法,取得了事半功倍的教學效果。
從2005年參加全國大學生電子設計競賽開始,筆者指導的學生多次獲得了遼寧賽區(qū)一、二、三等獎。在近幾年的學生就業(yè)中,大部分電子專業(yè)的學生都找到了合適的工作,還有一些畢業(yè)生應聘去了電子技術開發(fā)類的公司從事嵌入式系統(tǒng)開發(fā)工作,提高很快,成為一些項目的核心開發(fā)人員。
[1]陳海松,何惠琴,劉麗莎.單片機應用技術項目化教程[M].北京:電子工業(yè)出版社,2012:1-323.
[2]王曉娜,宋世德,王彥霞.單片機實驗教學方法的研究[J].實驗科學與技術,2012,10(1):69-73.
[3]秦宏,張玉梅,周騰蛟,等.以“模塊-綜合”架構構建電力、能源類電子系列課程體系[J].沈陽師范大學學報:自然科學版,2011,29(4):581-585.
[4]吳麗娟,申海,張浩華.C語言課程設計教學模式的探索與實踐[J].沈陽師范大學學報:自然科學版,2012,30(1):122-125.
[5]陳向奎,李元臣.單片機教學改革的思考與探索[J].洛陽師范學院學報,2012,31(5):84-86.
[6]任斌,賴樹明.單片機教學方法探析[J].東莞理工學院學報,2007,14(2):49-52.
[7]姜寧,樊延虎.單片機教學改革與實踐[J].延安大學學報:自然科學版,2011,30(1):45-46.
[8]潘言全.單片機教學改革的思考[J].湖北師范學院學報:自然科學版,2007,27(1):113-115.
[9]謝楷,趙建.MSP430系列單片機系統(tǒng)工程設計與實踐[M].北京:機械工業(yè)出版社,2009:1-280.
[10]謝維成,楊加國.單片機原理與應用及C51程序設計[M].北京:清華大學出版社,2009:67-322.
[11]譚浩強.C程序設計[M].北京:清華大學出版社,1991:101-251.
[12]馬長林,陳怡,程利民.單片機實踐應用與技術[M].北京:清華大學出版社,2008:1-275.