□黎民山
單片機(jī)教學(xué)是高校教育中具有較強(qiáng)理論性及實(shí)踐性的課程,作為專業(yè)核心課程之一的單片機(jī)教學(xué)必須以應(yīng)用與實(shí)踐為主,設(shè)計(jì)方法以及流程圖編程模式以單片機(jī)軟件運(yùn)行環(huán)境為主,針對圖形化開發(fā)平臺的優(yōu)勢,從硬件操作為基礎(chǔ)、軟件系統(tǒng)開發(fā)為主,為單片機(jī)教學(xué)以及實(shí)際應(yīng)用提供有效的參考價(jià)值,促進(jìn)學(xué)生能力的提升與軟件模擬以及仿真教學(xué)、網(wǎng)絡(luò)虛擬實(shí)驗(yàn)室等入手,采用形象化的模塊,自頂向下設(shè)計(jì)流程,完成流程圖設(shè)計(jì),實(shí)現(xiàn)單片機(jī)軟件程序編寫與流程圖模塊的連接,運(yùn)用EAD軟件完成程序流程圖設(shè)計(jì),重點(diǎn)尋求問題解決方法以開發(fā)出具有較強(qiáng)實(shí)用性的產(chǎn)品,實(shí)現(xiàn)單片機(jī)系統(tǒng)開發(fā)的專業(yè)化處理,提高學(xué)生的設(shè)計(jì)能力以及實(shí)踐能力。一、單片機(jī)軟件系統(tǒng)開發(fā)的原理及流程圖
(一)流程圖與單片機(jī)系統(tǒng)軟件開發(fā)。流程圖是采用軟硬件一體化編程的主要軟件,以通過C語言、匯編等基礎(chǔ)編程程序,借助QT跨平臺搭建可視化、簡單移植的流程圖操作界面,改變傳統(tǒng)對語法以及句法的編程,以可視化模塊的形式完成編程操作,從框架界面中將編譯軟件安裝在功能編輯盒中,再利用外部燒錄軟件就可以直觀化監(jiān)視整個(gè)編譯過程,促進(jìn)平臺搭建以及解決編程問題。故而采用流程圖模塊化編程,可以降低對編輯者的專業(yè)基礎(chǔ)要求,直接從軟件開發(fā)方向以及系統(tǒng)功能拓展等入手,以圖形化編輯為主完成軟件程序編輯,節(jié)省程序開發(fā)時(shí)間以及解決復(fù)雜、繁瑣的編程問題,有效提高學(xué)生單片機(jī)系統(tǒng)軟件開發(fā)的效果以及積極性。以嵌入式流程圖開發(fā)平臺手段,從單片機(jī)的軟件系統(tǒng)現(xiàn)狀等為主,自頂向下設(shè)計(jì)流程,從而完成從程序編寫,注重于捋清程序邏輯關(guān)系,從而提高對學(xué)生創(chuàng)造力的要求,實(shí)現(xiàn)立足學(xué)生創(chuàng)新能力以及實(shí)踐能力為主的教學(xué)模式構(gòu)建?;诂F(xiàn)階段高校在電子信息以及自動化等開設(shè)單片機(jī)課程,針對電子系統(tǒng)進(jìn)行使用技能以及開發(fā)技能的完善,可有效引導(dǎo)學(xué)生將所學(xué)知識進(jìn)行銜接與融通。
(二)基于流程圖開發(fā)單片機(jī)軟件的主要工作原理。單片機(jī)程序是利用專用編程器進(jìn)行代碼以及功能開發(fā)等等,依據(jù)單片機(jī)現(xiàn)場使用的標(biāo)準(zhǔn)而言,程序更新不能用編程器完成,為解決內(nèi)部存在的各種程序問題,利用流程圖可以完成解決方法、思路以及算法的計(jì)算,利用圖形符號以及有向線段等實(shí)現(xiàn)程序設(shè)計(jì),因此在編程功能開發(fā)中,首先需要根據(jù)編程引導(dǎo)程序預(yù)寫,然后以新的應(yīng)用程序?qū)?yīng)的機(jī)器碼將引導(dǎo)程序預(yù)寫寫入引導(dǎo)程序。基于整體流程圖構(gòu)建而言,將單片機(jī)的整體程序劃分為幾個(gè)主要功能模塊,針對每個(gè)功能完成基本的流程圖繪制后,利用形態(tài)符號表示處理方式,改變利用語言以及句法進(jìn)行編程的繁瑣模式,直接為程序編寫提供引導(dǎo)功能。因此系統(tǒng)對圖形以及符號等進(jìn)行相應(yīng)的改造,以完成程序編寫。首先在模塊操作中,系統(tǒng)設(shè)計(jì)是利用模塊庫,以顯示模塊、判斷模塊以及傳感器模塊等,根據(jù)子模塊的各項(xiàng)處理方式描述,例如次數(shù)循環(huán)。用循環(huán)以及條件判斷等,都有對應(yīng)的子模塊,主要模塊組織結(jié)構(gòu)必須進(jìn)行整體調(diào)整,以功能拓展方向以及單機(jī)片的應(yīng)用環(huán)境為主,針對性進(jìn)行功能,結(jié)構(gòu)優(yōu)化,確保單機(jī)片的程序結(jié)構(gòu)以及系統(tǒng)運(yùn)行機(jī)制優(yōu)良。不同模塊之間有類似于C語言以及Mat-lab軟件、Phython等工具箱,通過仿真模塊的子函數(shù)模塊,通過模塊重組實(shí)現(xiàn)函數(shù)調(diào)用,各個(gè)模塊之間的屬性以及函數(shù)代表通過組合以及編造后,以改變模塊功能的形式在屬性設(shè)置中利用不同的數(shù)字輸入,滿足設(shè)計(jì)者對延時(shí)時(shí)間的需求。最重要的是系統(tǒng)中有相應(yīng)的開放庫,能夠隨時(shí)增加所需的模塊,因此在系統(tǒng)設(shè)計(jì)中可以滿足學(xué)生的個(gè)性化需求,按照自身設(shè)計(jì)方向的需求,從不同角度完成單片機(jī)系統(tǒng)的開發(fā)。不過目前系統(tǒng)只能用C51進(jìn)行模塊編寫,因?yàn)镃51具有局部變量以及全局變量兩種屬性,滿足模塊的獨(dú)立性要求,滿足不同層次模塊參數(shù)傳遞以及相互影響的要求,只要學(xué)生完成設(shè)計(jì)思路、理清程序關(guān)系,進(jìn)行模塊連接就可以完成程序代碼輸入,符合課時(shí)以及教學(xué)要求。
(一)系統(tǒng)開發(fā)函數(shù)操作?;诹鞒虉D完成單片機(jī)軟件系統(tǒng)開發(fā),主要是能通過流程圖與C51源程序?qū)嵤┺D(zhuǎn)換,以根據(jù)嵌入式系統(tǒng)平臺為主,從內(nèi)部編程開始以類似PLC的梯形圖以及指令表,根據(jù)不同模塊之間的處理方式、函數(shù)以及邏輯關(guān)系,在模塊銜接后完成自動轉(zhuǎn)換,以便于提高編程效率。源程序也是可以進(jìn)行修改的,為提高流程圖的編程效果,通常將源程序修改作為補(bǔ)充手段,依據(jù)C51程序基本原理,可從函數(shù)集合以及符號選用等為主,以主函數(shù)以及處理方式的確定,凸顯程序流程圖的對應(yīng)關(guān)系,以簡化軟件轉(zhuǎn)換的復(fù)雜程度,直接根據(jù)基本控制結(jié)構(gòu)、順序、分支以及循環(huán)等組合、嵌套等完成結(jié)構(gòu)化程序的流程圖編寫,再依據(jù)對應(yīng)源程序,將函數(shù)按照流程圖順序等完成函數(shù)調(diào)用以及主函數(shù)聲明。其中順序結(jié)構(gòu)中,根據(jù)流程圖的模塊調(diào)入順序添加子函數(shù);分支及循環(huán)則是根據(jù)模塊中的模塊選用,軟件設(shè)計(jì)區(qū)為主進(jìn)行模塊判斷,確定模塊適用于分支、循環(huán)模塊的區(qū)域內(nèi)、區(qū)域外,分支結(jié)構(gòu)中由于分支模塊區(qū)域內(nèi)的邏輯順序,選擇不同的連接方式,連接在分支模塊區(qū)域內(nèi)的模塊,子函數(shù)則是出于分支函數(shù)中,若連接中模塊區(qū)域外則是出于分支函數(shù)以外,所以在分支結(jié)構(gòu)中,必須要在操作前明確各個(gè)模塊間的組合與連接方式,以實(shí)現(xiàn)各個(gè)小模塊的函數(shù)調(diào)用以及分支模塊構(gòu)建;循環(huán)模塊的函數(shù)調(diào)用以及分支模塊類似,都是根據(jù)模塊的循環(huán)流程,進(jìn)行子函數(shù)調(diào)用,實(shí)時(shí)將相應(yīng)的流程圖轉(zhuǎn)變?yōu)镃51源程序,目前在單片機(jī)軟件系統(tǒng)開發(fā)中,僅局限于轉(zhuǎn)換利用系統(tǒng),進(jìn)行模塊構(gòu)造完成程序流程圖,實(shí)現(xiàn)單片機(jī)的系統(tǒng)設(shè)計(jì)。
(二)軟件更新操作。單片機(jī)軟件更新系統(tǒng)、硬件拓展等等,都是利用產(chǎn)品的初期研發(fā)為基礎(chǔ),基于單片機(jī)的運(yùn)行環(huán)境以及系統(tǒng)操作結(jié)構(gòu),依照軟件系統(tǒng)升級的要求,基于功能拓展以及安全等級升級等,利用程序流程圖進(jìn)行功能編程,比如以G28射出成型機(jī)械手臂控制器的操作而言來實(shí)現(xiàn)軟件系統(tǒng)更新,主要是將控制器進(jìn)行編程處理,單片機(jī)選用C8051F020,具有IAP功能,所以在軟件更新中,主要是利用單片機(jī)系統(tǒng)的功能拓展為主,借助源系統(tǒng)的核心單片機(jī)的三引腳擴(kuò)展后通過SD卡的SPI接口,構(gòu)建流程圖操作界面,直接在界面上根據(jù)系統(tǒng)模塊進(jìn)行編程,按照C51源程序的對應(yīng)關(guān)系,設(shè)計(jì)不同的流程結(jié)構(gòu),采用相應(yīng)的流程處理方式,在操作界面完成新功能編程,控制機(jī)械手臂完成設(shè)定的動作,從而配合機(jī)械生產(chǎn)要求進(jìn)行實(shí)際應(yīng)用,所以在界面設(shè)置以及系統(tǒng)處理中,參數(shù)設(shè)定要根據(jù)實(shí)際單片機(jī)的應(yīng)用場景及生產(chǎn)需求,根據(jù)系統(tǒng)的初步構(gòu)建,設(shè)定相應(yīng)參數(shù)進(jìn)行測試,確定統(tǒng)一產(chǎn)品的控制闡述,直接將軟件更新編程通過SD卡以SPI接口加載到控制器中,可以避免直接變成操作,而是通過流程圖完成程序編輯后直接使用,快速又方便。編程過程以及編程方式就可以由編程者自己選擇,在程序設(shè)計(jì)前,先進(jìn)行程序編程模塊確定,明確系統(tǒng)升級,更新方向,將編程好的程序另存到SD卡中以便于完成產(chǎn)品的直接升級,避免在產(chǎn)品系統(tǒng)上進(jìn)行處理,直接完成更新,一方面省去中間編程環(huán)節(jié),另一方面縮減產(chǎn)品的升級時(shí)間,不影響實(shí)際工作,確保單機(jī)片升級環(huán)境,條件以及系統(tǒng)運(yùn)行的有效發(fā)展,靈活應(yīng)對各種操作。
(三)系統(tǒng)測試。系統(tǒng)初步構(gòu)建的系統(tǒng)測試,以8個(gè)LED燈的閃爍的程序流程圖為主,根據(jù)循環(huán)模塊、發(fā)送模塊以及發(fā)送模塊等,從源程序C51對應(yīng)轉(zhuǎn)換關(guān)系進(jìn)行程序代碼的檢測,從keil軟件、編譯后以proteus軟件為主、Phython、Mat-lab軟件通過下載或者是軟件網(wǎng)絡(luò)連接,進(jìn)行LED燈的電路圖測試,表示程序正確性以LED燈閃及滅為主,進(jìn)行程序模塊運(yùn)行機(jī)制的檢測,從而對軟件系統(tǒng)進(jìn)行開發(fā)以及流程處理,根據(jù)日光照射時(shí)的LED燈亮顏色以及顯示屏的顯示信息以及日光遮住時(shí),以紅綠燈、黑白天的顯示、蜂鳴器為主,確定測試結(jié)果。根據(jù)結(jié)果顯示的流程圖可以實(shí)現(xiàn)單片機(jī)軟件系統(tǒng)開發(fā)的功能拓展要求,依據(jù)程序新建、打開以運(yùn)行、編譯等等,可以實(shí)現(xiàn)控件之間的正常運(yùn)轉(zhuǎn),使用中也不會出現(xiàn)BUG,根據(jù)測試結(jié)果完成系統(tǒng)反饋。
本文根據(jù)流程圖編程的單片機(jī)軟件開發(fā)系統(tǒng)為主,依據(jù)系統(tǒng)的開放性以及流程圖編程的優(yōu)勢、特點(diǎn)等,從功能模塊的封裝、程序流程圖的搭建以及編譯、流程圖模塊的深入開發(fā)為主,豐富軟件的功能以及實(shí)用性,針對復(fù)雜功能通過模塊順序以及結(jié)構(gòu)、控制界面等等,依照C51源程序的對應(yīng)情況,實(shí)現(xiàn)軟件程序代碼的自動生成,在高校單片機(jī)教學(xué)中,可以依據(jù)現(xiàn)有的技術(shù)以及實(shí)驗(yàn)室,進(jìn)行軟件代碼編程及程序設(shè)計(jì)。