❶ 單片機底層開發指的是什麼
單片機底層開發一般指利用單片機的固有資源完成的控制功能的軟硬體開發,比如通訊協議及驅動(SPI,232,485,IIC,CAN,IR等)、AD轉換、各種現場控制、各種環境狀況測控、電機控制、電磁閥、繼電器控制、鍵盤掃描、LED和LCD顯示等等。
❷ 單片機程序裡面,經常聽說底層,中間層,應用層,什麼意思 51單片機也需要這么分層嗎
一般當程序比較大、功能比較繁多,需要進行結構化程序設計的時候,才會進行分層。分層的好處是可以將應用與硬體剝離,當硬體發生變更(移植,設計更改)時只需改動底層以及少量中間層;當需求發生變更時只需改動上層以及少量中間層。
底層一般是直接訪問硬體的介面,以串口而言如寄存器操作函數;中間層一般是在底層與上層之間進行數據及信息的轉換,以串口而言如封包/拆包/消息產生/消息響應;上層一般面向應用,在很少考慮硬體實現的前提下以通用的方式實現所需的功能,以串口而言如printf。
分這么多層是為了不同程度的開發人員可以同期工作的原因。比如說,底層就僱傭一個特別熟悉晶元和硬體的人做,中間層大概要找比較熟悉應用的人來把硬體功能來做擴展,應用層就隨便抓一把人來開發了。
這樣,多個項目可以公用一個硬體層,有兩到三組中間層的支持工程師,然後每個項目各有一組應用工程師就好了。51也可以這樣做,這和效率無關,層做得好,執行效率不會影響很大,開發效率提高很多。
單片機的應用:
1,通用專用:
這是按單片機適用范圍來區分的。例如,80C51是通用型單片機,它不是為某種專用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
2,線型應用:
這是按單片機是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積。
3,控制型應用:
這是按照單片機大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是唯一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
❸ 一個單片機的程序,底層,中間層,上層。各是指什麼詳細點啦,最好能距離,比較笨,看不懂。。
一般當程序比較大、功能比較繁多,需要進行結構化程序設計的時候,才會進行分層。分層的好處是可以將應用與硬體剝離,當硬體發生變更(移植,設計更改)時只需改動底層以及少量中間層;當需求發生變更時只需改動上層以及少量中間層。
底層一般是直接訪問硬體的介面,以串口而言如寄存器操作函數;
中間層一般是在底層與上層之間進行數據及信息的轉換,以串口而言如封包/拆包/消息產生/消息響應;
上層一般面向應用,在很少考慮硬體實現的前提下以通用的方式實現所需的功能,以串口而言如printf。
❹ 單片機程序中的底層驅動程序和應用程序
驅動程序與硬體相關,編寫驅動程序要非常了解硬體,同時給應用層提供API函數介面,應用層可以調用這些介面去訪問硬體而不必了解硬體.
應用程序是根據實際應用去編寫.
比如說你有一個應用是控制每天早上六點鍾開燈.應用程序只負責在適當的時間做適當的事(到六點了,我要開燈了,按下按鍵);具體它不知道為什麼按下鍵就能開燈,因為按下鍵後開燈的事情就是驅動程序完成了.
❺ 單片機學習中,敢問各位大蝦底層匯流排驅動程序是自己寫還是『拿來主義』呢
只要有時序圖,那麼兩者基本一樣。其實沒有所謂的拿來還是使用他們的驅動,功能實現是一致的,只是說如果你寫的是上層應用層程序那麼底層程序也就不用考慮太細,直接用人家已經測試好的即可;如果你想寫底層的驅動程序,對速度又有額外的要求那麼推薦按照時序圖自己書寫。看需求,祝好~
我不知道下面的問題補充是讓我們回答什麼,見諒。
❻ 單片機程序里怎麼分層
1、最底層的是硬體層,完成埠掃描,20ms延時消抖,將埠的數據映射到一個KEY_DAT寄存器上面,KEY_DAT作為對上層驅動層的一個介面。
2、中間的一層是驅動層,驅動層只對 KEY_DAT 寄存器的數值進行操作。簡單點說,我們無論底層的硬體是怎麼接線的,在驅動層都不需要關心,只需要關心 KEY_DAT 這個寄存器的數值是什麼就可以了。這樣出來的間接效果就是「屏蔽了底層硬體的差異」,所以驅動層寫的程序就可以通用了。驅動層的另外一個功能是為了上層提供消息介面。我們用了類似window程序的消息的概念。
3、應用層。這里就是根據項目的不同分別寫按鍵功能程序,屬於最上層的程序。它使用的是驅動層提供的消息介面。在應用層寫程序的思想就是,我不管下層是怎麼工作的,我只關心按鍵消息。有按鍵消息來的時候我就執行功能,沒有消息來的時候,就什麼也不做。
代碼示例:
用一個簡單的常用的例子,說明設計思想的用法。秒錶調整時間的時候,要求按著某個按鍵不放,時間能連續的向上增加。這個東西很實用,實際的家電中用途很廣泛。問:「這東西麻煩嗎?」相信很多人肯定會說「很麻煩!!」 這不禁讓我想起開始學單片機的時候寫這種按鍵的那程序,亂七八糟的結構。如果不相信的話,可以自己用51寫一下,那樣就更加能體會本文說的分層結構的優越性。
❼ 都說從底層做起,單片機的底層是什麼
下車間,選元件,測試元件,焊接,成品測試,就是和工人一起工作唄,從基礎訓練做起。
❽ 單片機底層驅動編寫要求高嗎
其實也不高,主要需要對單片機平台熟悉、了解要驅動的對象的特性(主要是時序方面特性)。
某些情況下對資源佔用要求苛刻時,就需要盡力提高驅動效率,同時還要求介面簡單、適用廣泛——這才是高要求、高標準的驅動。
❾ 單片機的底層通訊協議是指什麼
你好,
就我個人理解,協議包括通訊方式和通訊內容兩個內容。
通訊方式有232,ttl,485,422,can等。
通訊內容需要你們自己決定,比如數據的首尾是什麼,中間每一位元組又代表什麼,是否需要校驗,校驗的方式又是什麼。你收到數據後是不是要回數據?如果出錯了要怎麼辦?
祝你生活愉快。
❿ 單片機 嵌入式 底層 從零開始學習 推薦
學習嵌入式,該學習什麼基本的知識呢?
首先C語言,這個是毋庸置疑的,不管是做嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式軟體開發的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至於如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些視頻看也好。很多人會問,C語言要學到怎麼樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念後,就該寫代碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收獲就不是你死看書能得到的。
其次,應該對操作系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關系,多看看,結合以後的項目經驗,會有更好的理解的。
還有應該學習嵌入式系統,如linux或者wince下的編程,這些對以後做應用的編程很有幫助,當然,如果做手機的話,那可以學習MTK、塞班、Android等操作系統,Android是以後發展的趨勢,現在很熱門,Android也是基於linux系統封裝的,所以建議先學習下linux。
還有,應該學習下單片機或者ARM或者MIPS,很多人說我沒有單片機的經驗,直接學ARM可以嗎?我覺得那完全沒有問題的,當然如果你學習過單片機,那最好不過了,以後學習ARM就更簡單了。
最後如果你把以上的知識都有所了解後,就該去閱讀閱讀一些優秀的代碼,比如結合arm晶元手冊學習去學習下UBOOT的源代碼,了解下最小的系統開發,那對你整個嵌入式開發的非常有幫助的,可以的話,還可以學習下linux的源代碼,當然如果你直接閱讀2.6的代碼,我想你會很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。
至於上面說的知識如何學習呢?每個人都應該去找自己最好的方法,所謂的最好的方法就是最適合自己的方法。很多人看不進書,那就去看看視頻吧。視頻也應該要選擇,不是隨便看看,應該要有所選擇,有所挑選。我也是這樣一路走過來的,不過我這人比較懶,我看不進書,一看書我就想睡覺,所以這幾年我都是看視頻過來的,現在也算學有所成,但也不敢說是高手吧。
我在網上看到,有人把自己學習嵌入式的視頻總結出來,嵌入式系列實踐和視頻教程,大家可以看看網址http://www.003r.com/embedvideo.htm
我仔細看了覺得很不錯,我本來也想整理下,可是奈何我自己的電腦硬碟空間才40G,沒有辦法,時間也是不夠,心有餘而力不足,我不是在幫他做廣告,雖然要花錢,我覺得算不錯,至少自己不用去整理和花大量的時間去找資源,當然如果網上有的下,你網速和硬碟都夠的話,我建議大家自己網上下也好。想想我自己該開始學的時候,那時視頻資源少之又少,我買書和買視頻至少花了幾千塊,但是我覺得那很值,至少我現在賺回來了很多知識。
最後,希望這篇文章對熱愛嵌入式,想致力於嵌入式開發的朋友有所幫助。送給大家一句簡單而又樸素的話,堅持就是勝利,貴在堅持,也可以看看如何堅持嵌
轉自嵌入式學習網