芯片IC單片機解密百科

十年專注單片機解密

單片機設計應該考慮哪些事情?

軟件所要完成的任務已在總體設計時規定,在具體軟件設計時,要結合硬件結構,進一步明確軟件所承擔的一個個任務細節,確定具體實施的方法,合理分配資源。


1程序設計技術


合理的軟件結構是設計一個性能優良的單片機應用係統軟件的基礎。在程序設計中,應培養結構化程序設計風格,各功能程序實行模塊化、子程序化。一般有以下兩種設計方法。


a.模塊程序設計


模塊程序設計是單片機應用中常用的一種程序設計技術。它是把一個較長的程序分解為若幹個功能相對獨立的較小的程序模塊,各個程序模塊分別設計、編程和調試,最後由各個調試好的模塊組成一個大的程序。


優點是單個功能明確的程序模塊的設計和調試比較方便,容易完成,一個模塊可以為多個程序所共享。其缺點是各個模塊的連接有時有一定難度。


b.自頂向下的程序設計


自頂向下程序設計時,先從主程序開始設計,從屬程序或子程序用符號來代替。主程序編好後再編製各從屬程序和子程序,最後完成整個係統軟件的設計。


優點是比較符合於人們的日常思維,設計、調試和連接同時按一個線索進行,程序錯誤可以較早的發現。缺點是上一級的程序錯誤將對整個程序產生影響,一處修改可能引起對整個程序的全麵修改。


2程序設計


在選擇好軟件結構和所采用的程序設計技術後,便可著手進行程序設計,將設計任務轉化為具體的程序。


a.建立數學模型


根據設計任務,描述出各輸入變量和各輸出變量之間的數學關係,此過程即為建立數學模型。數學模型隨係統任務的不同而不同,其正確度是係統性能好壞的決定性因素之一。


 

b.繪製程序流程圖


通常在編寫程序之前先繪製程序流程圖,以提高軟件設計的總體效率。程序流程圖以簡明直觀的方式對任務進行描述,並很容易由此編寫出程序,故對初學者來說尤為適用。

  

在設計過程中,先畫出簡單的功能性流程圖(粗框圖),然後對功能流程圖進行細化和具體化,對存儲器、寄存器、標誌位等工作單元作具體的分配和說明,將功能流程圖中每一個粗框的操作轉變為具體的存儲器單元、工作寄存器或I/O口的操作,從而給出詳細的程序流程圖(細框圖)。


c.程序的編製


在完成程序流程圖設計以後,便可以編寫程序。程序設計語言對程序設計的影響較大。匯編語言是最為常用的單片機程序語言,用匯編語言編寫程序代碼精簡,直接麵向硬件電路進行設計,速度快,但進行大量數據運算時,編寫難度將大大增加,不易閱讀和調試。在有大量數據運算時可采用C語言(如MCS-51的C51)或PL/M語言。

  

編寫程序時,應注意係統硬件資源的合理分配與使用,子程序的入/出口參數的設置與傳遞。采用合理的數據結構、控製算法,以滿足係統要求的精度。


在存儲空間分配時,應將使用頻率最高的數據緩衝器設在內部RAM;標誌應設置在片內RAM位操作區(20H~2FH)中;指定用戶堆棧區,棧區的大小應留有餘量;餘下部分作為數據緩衝區。

  

在編寫程序過程中,根據流程圖逐條用符號指令來描述,即得匯編語言源程序。應按MCS-51匯編語言的標準符號和格式書寫,在完成係統功能的同時應注意保證設計的可靠性,如數字濾波、軟件陷阱、保護等。必要時可作若幹功能性注釋,提高程序的可讀性。


3程序設計


各程序模塊編輯之後,需進行匯編或編譯、調試,當滿足設計要求後,將各程序模塊按照軟件結構設計的要求連接起來,即為軟件裝配,從而完成軟件設計。在軟件裝配時,應注意軟件接口。

單片機應用係統硬件設計應該考慮哪些問題?

(1)存儲器擴展:容量需求,在選擇單片機時就考慮到單片機的內部存儲器資源,如能滿足要求就不需要進行擴展,在必須擴展時注意存儲器的類型、容量和接口,一般盡量留有餘地,並且盡可能減少芯片的數量。選擇合適的方法、ROM和RAM的形式,RAM是否要進行掉電保護等。


(2)I/O接口的擴展:單片機應用係統在擴展I/O接口時應從體積、價格、負載能力、功能等幾個方麵考慮。應根據外部需要擴展電路的數量和所選單片機的內部資源(空閑地址線的數量)選擇合適的地址譯碼方法。


(3)輸入通道的設計:輸入通道設計包括開關量和模擬輸入通道的設計。開關量要考慮接口形式、電壓等級、隔離方式、擴展接口等。模擬量通道的設計要與信號檢測環節(傳感器、信號處理電路等)結合起來,應根據係統對速度、精度和價格等要求來選擇,同時還需要和傳感器等設備的性能相匹配,要考慮傳感器類型、傳輸信號的形式(電流還是電壓)、線性化、補償、光電隔離、信號處理方式等,還應考慮A/D轉換器的選擇(轉換精度、轉換速度、結構、功耗等)及相關電路、擴展接口,有時還涉及軟件的設計。高精度的模數轉換器價格十分昂貴,因而應盡量降低對A/D轉換器的要求,能用軟件實現的功能盡量用軟件來實現。


(4)輸出通道的設計:輸出通道設計包括開關量和模擬量輸出通道的設計。開關量要考慮功率、控製方式(繼電器、可控矽、三極管等)。模擬量輸出要考慮D/A轉換器的選擇(轉換精度、轉換速度、結構、功耗等)、輸出信號的形式(電流還是電壓)、隔離方式、擴展接口等。


(5)人機界麵的設計:人機界麵的設計包括輸入鍵盤、開關、撥碼盤、啟/停操作、複位、顯示器、打印、指示、報警等。輸入鍵盤、開關、撥碼盤應考慮類型、個數、參數及相關處理(如按鍵的去抖處理)。啟/停、複位操作要考慮方式(自動、手動)及其切換。顯示器要考慮類型(LED,LCD)、顯示信息的種類、倍數等。此外還要考慮各種人機界麵的擴展接口。


(6)通信電路的設計:單片機應用係統往往作為現場測控設備,常與上位機或同位機構成測控網絡,需要其有數據通信的能力,通常設計為RS-232C、RS-485、紅外收發等通信標準。


(7)印刷電路板的設計與製作:電路原理圖和印刷電路板的設計常采用專業設計軟件進行設計,如Protel,OrCAD等。設計印刷電路板需要有很多的技巧和經驗,設計好印刷電路板圖後應送到專業化製作廠家生產,在生產出來的印刷電路板上安裝好元件,則完成硬件設計和製作。


(8)負載容限的考慮:單片機總線的負載能力是有限的。如MCS-51的P0口的負載能力為4mA,最多驅動8個TTL電路,P1~P3口的負載能力為2mA,最多驅動4個TTL電路。若外接負載較多,則應采取總線驅動的方法提高係統的負載容限。常用驅動器有:單向驅動器74LS244,雙向驅動器74LS245等。


(9)信號邏輯電平兼容性的考慮:在所設計的電路中,可能兼有TTL和CMOS器件,也有非標準的信號電平,要設計相應的電平兼容和轉換電路。當有RS-232,RS-485接口時,還要實現電平兼容和轉換。常用的集成電路有MAX232,MAX485等。


(10)電源係統的配置:單片機應用係統一定需要電源,要考慮電源的組數、輸出功率、抗幹擾。要熟悉常用三端穩壓器(78хх係列、79хх係列)、精密電源(AD580,MC1403,CJ313/336/385,W431)的應用。


(11)抗幹擾的實施:采取必要的抗幹擾措施是保證單片機係統正常工作的重要環節。它包括芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。