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