『壹』 單片機的應用有哪些
電子秤
8.家用電器:微波爐,電視機,錄像機,音響設備,游戲機等。
『貳』 單片機的內部組成結構
單片機的內部組成結構如下:
運算器:用於實現算術和邏輯運算。計算機的運算和處理都在這里進行。
控制器:是計算機的控制指揮部件,使計算機各部份能自動協調的工作。
存儲器:用於存放程序和數據;(又分為內存儲器和外存儲器,內存儲器就如我們電腦的硬碟,外存儲器就如我們的U盤)。
輸入設備:用於將程序和數據輸入到計算機(例如我們電腦的鍵盤、掃描儀)。
輸出設備:輸出設備用於把計算機數據計算或加工的結果以用戶需要的形式顯示或保存(例如我們的列印機)。
單片機硬體特徵
(1)單片機的體積比較小, 內部晶元作為計算機系統,其結構簡單,但是功能完善,使用起來十分方便,可以模塊化應用。
(2)單片機有著較高的集成度,可靠性比較強,即使單片機處於長時間的工作也不會存在故障問題。
(3) 單片機在應用時低電壓、低能耗,是人們在日常生活中的首要選擇, 為生產與研發提供便利。
(4)單片機對數據的處理能力和運算能力較強,可以在各種環境中應用,且有著較強的控制能力。
『叄』 怎麼設計一個多機通信系統(單片機)
簡單說明用一個主機串口實現上述要求的思路:
從機地址分別為01和02
從機的串口相同引腳相互並聯作為一個串口連接於主機串口,注意接線正確。
主機命令:地址號 + 命令字元串
從機命令:地址號 + 命令字元串
然後在各自收發代碼中利用地址號來區別命令執行
其它請參閱如下網址本人的答復:
http://..com/question/12535506.html
http://..com/question/12522809.html
http://..com/question/11725744.html
http://..com/question/11040704.html
http://..com/question/10941227.html
補充:
串列通訊的基本知識
每台計算機都提供了一個或多個串列埠。它們被依次命名為:COM1、COM2 等等。在標準的 PC 中,滑鼠通常被連接到 COM1 埠。數據機可能連接到 COM2,掃描儀被連接到 COM3,等等。串列埠提供了計算機與這些外部串列設備之間的數據傳輸通道。
串列埠的本質功能是作為 CPU 和串列設備間的編碼轉換器。當數據從 CPU 經過串列埠發送出去時,位元組數據被轉換為串列的位。在接收數據時,串列的位將被轉換為位元組數據。
我的理解:串列口數據通信的實質是ASCII(美國標准信息交換碼)的傳輸。你可理解是傳輸ASCII碼,而實際傳輸的是ASCII碼(其二進制形式,8位組成一位元組)。它又可看成是8位二進制數,例字元A 其二進製表示為 01000001,MSCOMM發送時完全按照此二進制信號發送,由低位至高位傳輸。又能理解為10進制的64。在計算機內通常以16進製表示為41。由2個8位二進制數據組成16位二進制數,通常用於數據的二進制通信。你的程序代碼採用以文本方式取回數據,這是在MSCOMM控制項內部進行解決,而無須VB編程員來處理。
見MSCOMM控制項的:
InputMode 常數
常數 值 描述
comInputModeText 0 (預設)通過 Input 屬性以文本方式取回數據。
comInputModeBinary 1 通過 Input 屬性以二進制方式檢取回數據。
以下是由MICROSOFT提供的關於串列通訊和MSCOMM控制項的一些說明,可能對你答辯有用,供參考。
串列通訊的基本知識
每台計算機都提供了一個或多個串列埠。它們被依次命名為:COM1、COM2 等等。在標準的 PC 中,滑鼠通常被連接到 COM1 埠。數據機可能連接到 COM2,掃描儀被連接到 COM3,等等。串列埠提供了計算機與這些外部串列設備之間的數據傳輸通道。
串列埠的本質功能是作為 CPU 和串列設備間的編碼轉換器。當數據從 CPU 經過串列埠發送出去時,位元組數據被轉換為串列的位。在接收數據時,串列的位將被轉換為位元組數據。
要完成數據的傳輸,還需要進一步一個解釋層。在操作系統一邊,Windows 使用了通訊驅動程序 Comm.drv,以便使用標準的 Windows API 函數發送和接收數據。驅動程序通常由串列設備製造商提供,以便將其硬體與 Windows 連接。在使用 Communications 控制項時,實際上使用了 API 函數,API 函數將被 Comm.drv 解釋並傳輸給設備驅動程序。
作為程序員,只需關心如何與 Windows 打交道。作為 Visual Basic 程序員,只需要關心 Communications 控制項提供的對 Windows 通訊驅動程序的 API 函數的介面。換句話說,只需要設置和監視 Communications 控制項的屬性和事件。
建立串列埠連接
使用 Communications 控制項的第一步是建立與串列埠的連接。下表列出了用於建立串列埠連接的屬性:
屬性 描述
CommPort 設置或返回通訊埠號。
Settings 以字元串形式設置或返回波特率、奇偶校驗、數據位和停止位。
PortOpen 設置或返回通訊埠的狀態。以及打開和關閉埠。
打開串列埠
要打開串列埠,可以使用 CommPort、PortOpen 和 Settings 屬性。例如:
'打開串列埠
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
CommPort 屬性確定打開哪個串列埠。假如 COM2 上連接有一個數據機,則在上面的例子中需要將值設置為 2 (COM2) 才能連接到該數據機。CommPort 屬性值可以設置為 1 到 16 之間的任何值(預設值為 1),然而,如果將該值設置為系統中並不存在的 COM 埠,將會產生錯誤。
Settings 屬性可以用來指定波特率、奇偶校驗、數據位數和停止位數。按照預設規定,波特率被設置為 9600。奇偶校驗設置為了進行數據校驗。這通常是不用的,並設置為"N"。數據位數指定了代表一個數據塊的比特數。停止位指出了何時接收到一個完整數據塊。
在指定了要打開的埠,以及如何進行數據通訊之後,就可以使用 PortOpen 屬性建立連接了。它是一個布爾值,即取值范圍為 True 或 False。然而,如果埠無效,或者 CommPort 屬性設置有誤,或者該設備不支持指定的設置,就會產生錯誤;即使沒有產生錯誤,外部設備也不能正常工作。將 PortOpen 屬性設置為 False 即可關閉該埠。
緩沖區內存分配
InBufferSize 和 OutBufferSize 屬性指定了為接收和發送緩沖區分配的內存數量。按照預設規定,它們被分別設置為上圖所示的值。這兩個值設置得越大,應用程序中可用的內存就越少。然而,如果緩沖區太小,就要冒緩沖區溢出的風險,除非採用握手信號。
注意 鑒於現在大多數微機可用的內存量,由於有更多的可用資源,緩沖區內存分配已不那麼至關緊要了。換言之,可以把緩沖區的值設得高一些而不影響應用程序的性能。
RThreshold 和 SThreshold 屬性
RThreshold 和 SThreshold 屬性,表示在 OnComm 事件發生之前,接收緩沖區或發送緩沖區中可以接收的字元數。OnComm 事件被用來監視和響應通訊狀態的變化。如果將每個屬性的值都設置為零 (0),就可以避免發生 OnComm 事件。如果將該值設置為非零的值(比如 1),那麼每當緩沖區中接收到一個字元時,就會產生 OnComm 事件。
Output 屬性被用來向發送緩沖區發出命令和數據。
與 Input 屬性類似,數據可以以文本或二進制格式發送。Output 屬性必須用字元串變體型發送文本,用 Byte 數組變體型發送二進制數據。
可用 Output 屬性發送命令、文字字元串或 Byte 數組數據。
MSComm 控制項
MSComm 控制項通過串列埠傳輸和接收數據,為應用程序提供串列通訊功能。
語法
MSComm
說明
MSComm 控制項提供下列兩種處理通訊的方式:
事件驅動通訊是處理串列埠交互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個字元到達或一個變化發生時。在這些情況下,可以利用 MSComm 控制項的 OnComm 事件捕獲並處理這些通訊事件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。
在程序的每個關鍵功能之後,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應用程序較小,並且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字元都產生事件,因為唯一等待接收的字元是數據機的"確定"響應。
每個使用的 MSComm 控制項對應著一個串列埠。如果應用程序需要訪問多個串列埠,必須使用多個 MSComm 控制項。可以在 Windows"控制面板"中改變埠地址和中斷地址。
盡管 MSComm 控制項有很多重要的屬性,但首先必須熟悉幾個屬性。
屬性 描述
CommPort 設置並返回通訊埠號。
Settings 以字元串的形式設置並返回波特率、奇偶校驗、數據位、停止位。
PortOpen 設置並返回通訊埠的狀態。也可以打開和關閉埠。
Input 從接收緩沖區返回和刪除字元。
Output 向傳輸緩沖區寫一個字元串。
OnComm 事件
無論何時當 CommEvent 屬性的值變化時,就產生 OnComm 事件,標志發生了一個通訊事件或一個錯誤。
語法
Private Sub object_OnComm ()
OnComm 事件語法包括下列部分:
部分 描述
object 對象表達式,其值是"應用於"列表中的對象。
說明
CommEvent 屬性包含實際錯誤或產生 OnComm 事件的數碼。注意,設置 Rthreshold 或 Sthreshold 屬性為 0,分別使捕獲 comEvReceive 和 comEvSend 事件無效。
MSComm 控制項常數
Handshake 常數
常數 值 描述
comNone 0 無握手。
comXonXoff 1 XOn/Xoff 握手。
comRTS 2 Request-to-send/clear-to-send 握手。
comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可。
OnComm 常數
常數 值 描述
comEvSend 1 發送事件。
comEvReceive 2 接收事件。
comEvCTS 3 clear-to-send 線變化。
comEvDSR 4 data-set ready 線變化。
comEvCD 5 carrier detect 線變化。
comEvRing 6 振鈴檢測。
comEvEOF 7 文件結束。
Error 常數
常數 值 描述
comEventBreak 1001 接收到中斷信號
comEventCTSTO 1002 Clear-to-send 超時
comEventDSRTO 1003 Data-set ready 超時
comEventFrame 1004 幀錯誤
comEventOverrun 1006 埠超速
comEventCDTO 1007 Carrier detect 超時
comEventRxOver 1008 接收緩沖區溢出
comEventRxParity 1009 Parity 錯誤
comEventTxFull 1010 傳輸緩沖區滿
comEventDCB 1011 檢索埠 設備控制塊 (DCB) 時的意外錯誤
InputMode 常數
常數 值 描述
comInputModeText 0 (預設)通過 Input 屬性以文本方式取回數據。
comInputModeBinary 1 通過 Input 屬性以二進制方式檢取回數據。
Output 屬性
往傳輸緩沖區寫數據流。該屬性在設計時無效,在運行時為只讀。
語法
object.Output [ = value ]
Output 屬性語法包括下列部分:
部分 描述
object 對象表達式,其值是"應用於"列表中的對象。
value 要寫到傳輸緩沖區中的一個字元串。
說明
Output 屬性可以傳輸文本數據或二進制數據。用 Output 屬性傳輸文本數據,必須定義一個包含一個字元串的 Variant。發送二進制數據,必須傳遞一個包含位元組數組的 Variant 到 Output 屬性。
正常情況下,如果發送一個 ANSI 字元串到應用程序,可以以文本數據的形式發送。如果發送包含嵌入控制字元、Null 字元等等的數據,要以二進制形式發送。
數據類型
Variant
『肆』 單片機的原理
單片機你在網上搜一下吧
如果想入門 最好去圖書館借點書看,比較難理解 祝好運了!!
我給你提供以下資料 是網路上找的。
概述
單片機是指一個集成在一塊晶元上的完整計算機系統。盡管它的大部分功能集成在一塊小晶元上,但是它具有一個完整計算機所需要的大部分部件:CPU、內存、內部和外部匯流排系統,目前大部分還會具有外存。同時集成諸如通訊介面、定時器,實時時鍾等外圍設備。而現在最強大的單片機系統甚至可以將聲音、圖像、網路、復雜的輸入輸出系統集成在一塊晶元上。
目錄[隱藏]
單片機介紹
單片機的應用領域
學習應用六大重要部分
單片機學習
常用單片機晶元簡介
從無線電世界到單片機世界
單片機攻擊技術
單片機侵入型攻擊的一般過程
單片機也被稱為微控制器(Microcontroller),是因為它最早被用在工業控制領域。單片機由晶元內僅有CPU的專用處理器發展而來。最早的設計理念是通過將大量外圍設備和CPU集成在一個晶元中,使計算機系統更小,更容易集成進復雜的而對體積要求嚴格的控制設備當中。INTEL的Z80是最早按照這種思想設計出的處理器,從此以後,單片機和專用處理器的發展便分道揚鑣。
早期的單片機都是8位或4位的。其中最成功的是INTEL的8031,因為簡單可靠而性能不錯獲得了很大的好評。此後在8031上發展出了MCS51系列單片機系統。基於這一系統的單片機系統直到現在還在廣泛使用。隨著工業控制領域要求的提高,開始出現了16位單片機,但因為性價比不理想並未得到很廣泛的應用。90年代後隨著消費電子產品大發展,單片機技術得到了巨大的提高。隨著INTEL i960系列特別是後來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,並且進入主流市場。而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。目前,高端的32位單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系統。
單片機比專用處理器更適合應用於嵌入式系統,因此它得到了最多的應用。事實上單片機是世界上數量最多的計算機。現代人類生活中所用的幾乎每件電子和機械產品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及滑鼠等電腦配件中都配有1-2部單片機。而個人電腦中也會有為數不少的單片機在工作。汽車上一般配備40多部單片機,復雜的工業控制系統上甚至可能有數百台單片機在同時工作!單片機的數量不僅遠超過PC機和其他計算的綜合,甚至比人類的數量還要多。
[編輯本段]單片機介紹
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
單片機內部也用和電腦功能類似的模塊,比如CPU,內存,並行匯流排,還有和硬碟作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復雜的工作足矣了。我們現在用的全自動滾筒洗衣機、排煙罩、VCD等等的家電裡面都可以看到它的身影!......它主要是作為控制部分的核心部件。
它是一種在線式實時控制計算機,在線式就是現場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區別。
單片機是靠程序的,並且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發的74系列,或者60年代的CD4000系列這些純硬體來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現高智能,高效率,以及高可靠性!
由於單片機對成本是敏感的,所以目前占統治地位的軟體還是最低級匯編語言,它是除了二進制機器碼以上最低級的語言了,既然這么低級為什麼還要用呢?很多高級的語言已經達到了可視化編程的水平為什麼不用呢?原因很簡單,就是單片機沒有家用計算機那樣的CPU,也沒有像硬碟那樣的海量存儲設備。一個可視化高級語言編寫的小程序裡面即使只有一個按鈕,也會達到幾十K的尺寸!對於家用PC的硬碟來講沒什麼,可是對於單片機來講是不能接受的。 單片機在硬體資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟體拿到家用PC上來運行,家用PC的也是承受不了的。
可以說,二十世紀跨越了三個「電」的時代,即電氣時代、電子時代和現已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數人卻不怎麼熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的「肚子」里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了。現在,這種單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。各種產品一旦用上了單片機,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞——「智能型」,如智能型洗衣機等。現在有些工廠的技術人員或其它業余電子開發者搞出來的某些產品,不是電路太復雜,就是功能太簡單且極易被仿製。究其原因,可能就卡在產品未使用單片機或其它可編程邏輯器件上。
單片機歷史
單片機誕生於20世紀70年代末,經歷了SCM、MCU、SoC三大階段。
1.SCM即單片微型計算機(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態嵌入式系統的最佳體系結構。「創新模式」獲得成功,奠定了SCM與通用計算機完全不同的發展道路。在開創嵌入式系統獨立發展道路上,Intel公司功不可沒。
2.MCU即微控制器(Micro Controller Unit)階段,主要的技術發展方向是:不斷擴展滿足嵌入式應用時,對象系統要求的各種外圍電路與介面電路,突顯其對象的智能化控制能力。它所涉及的領域都與對象系統相關,因此,發展MCU的重任不可避免地落在電氣、電子技術廠家。從這一角度來看,Intel逐漸淡出MCU的發展也有其客觀因素。在發展MCU方面,最著名的廠家當數Philips公司。
Philips公司以其在嵌入式應用方面的巨大優勢,將MCS-51從單片微型計算機迅速發展到微控制器。因此,當我們回顧嵌入式系統發展道路時,不要忘記Intel和Philips的歷史功績。
3.單片機是嵌入式系統的獨立發展之路,向MCU階段發展的重要因素,就是尋求應用系統在晶元上的最大化解決;因此,專用單片機的發展自然形成了SoC化趨勢。隨著微電子技術、IC設計、EDA工具的發展,基於SoC的單片機應用系統設計會有較大的發展。因此,對單片機的理解可以從單片微型計算機、單片微控制器延伸到單片應用系統。
[編輯本段]單片機的應用領域
目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網路通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程式控制玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫療器械了。因此,單片機的學習、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。
單片機廣泛應用於儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程式控制制等領域,大致可分如下幾個范疇:
1.在智能儀器儀表上的應用
單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用於儀器儀表中,結合不同類型的感測器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。採用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起採用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)。
2.在工業控制中的應用
用單片機可以構成形式多樣的控制系統、數據採集系統。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統,與計算機聯網構成二級控制系統等。
3.在家用電器中的應用
可以這樣說,現在的家用電器基本上都採用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。
4.在計算機網路和通信領域中的應用
現代的單片機普遍具備通信介面,可以很方便地與計算機進行數據通信,為在計算機網路和通信設備間的應用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智能控制,從手機,電話機、小型程式控制交換機、樓宇自動通信呼叫系統、列車無線通信、再到日常工作中隨處可見的行動電話,集群移動通信,無線電對講機等。
5.單片機在醫用設備領域中的應用
單片機在醫用設備中的用途亦相當廣泛,例如醫用呼吸機,各種分析儀,監護儀,超聲診斷設備及病床呼叫系統等等。
6.在各種大型電器中的模塊化應用
某些專用單片機設計用於實現特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。如音樂集成單片機,看似簡單的功能,微縮在純電子晶元中(有別於磁帶機的原理),就需要復雜的類似於計算機的原理。如:音樂信號以數字的形式存於存儲器中(類似於ROM),由微控制器讀出,轉化為模擬音樂電信號(類似於音效卡)。
在大型電路中,這種模塊化應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便於更換。
7.單片機在汽車設備領域中的應用
單片機在汽車電子中的應用非常廣泛,例如汽車中的發動機控制器,基於CAN匯流排的汽車發動機智能電子控制器,GPS導航系統,abs防抱死系統,制動系統等等。
此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。
[編輯本段]學習應用六大重要部分
單片機學習應用的六大重要部分
一、匯流排:我們知道,一個電路總是由元器件通過電線連接而成的,在模擬電路中,連線並不成為一個問題,因為各器件間一般是串列關系,各器件之間的連線並不很多,但計算機電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協調,所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨連線,則線的數量將多得驚人,所以在微處理機中引入了匯流排的概念,各個器件共同享用連線,所有器件的8根數據線全部接到8根公用的線上,即相當於各個器件並聯起來,但僅這樣還不行,如果有兩個器件同時送出數據,一個為0,一個為1,那麼,接收方接收到的究竟是什麼呢?這種情況是不允許的,所以要通過控制線進行控制,使器件分時工作,任何時候只能有一個器件發送數據(可以有多個器件同時接收)。器件的數據線也就被稱為數據匯流排,器件所有的控制線被稱為控制匯流排。在單片機內部或者外部存儲器及其它器件中有存儲單元,這些存儲單元要被分配地址,才能使用,分配地址當然也是以電信號的形式給出的,由於存儲單元比較多,所以,用於地址分配的線也較多,這些線被稱為地址匯流排。
二、數據、地址、指令:之所以將這三者放在一起,是因為這三者的本質都是一樣的——數字,或者說都是一串『0』和『1』組成的序列。換言之,地址、指令也都是數據。指令:由單片機晶元的設計者規定的一種數字,它與我們常用的指令助記符有著嚴格的一一對應關系,不可以由單片機的開發者更改。地址:是尋找單片機內部、外部的存儲單元、輸入輸出口的依據,內部單元的地址值已由晶元設計者規定好,不可更改,外部的單元可以由單片機開發者自行決定,但有一些地址單元是一定要有的(詳見程序的執行過程)。數據:這是由微處理機處理的對象,在各種不同的應用電路中各不相同,一般而言,被處理的數據可能有這么幾種情況:
1•地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
2•方式字或控制字(如MOV TMOD,#3),3即是控制字。
3•常數(如MOV TH0,#10H)10H即定時常數。
4•實際輸出值(如P1口接彩燈,要燈全亮,則執行指令:MOV P1,#0FFH,要燈全暗,則執行指令:MOV P1,#00H)這里0FFH和00H都是實際輸出值。又如用於LED的字形碼,也是實際輸出的值。
理解了地址、指令的本質,就不難理解程序運行過程中為什麼會跑飛,會把數據當成指令來執行了。
三、P0口、P2口和P3的第二功能用法:初學時往往對P0口、P2口和P3口的第二功能用法迷惑不解,認為第二功能和原功能之間要有一個切換的過程,或者說要有一條指令,事實上,各埠的第二功能完全是自動的,不需要用指令來轉換。如P3.6、P3.7分別是WR、RD信號,當微片理機外接RAM或有外部I/O口時,它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機一執行到MOVX指令,就會有相應的信號從P3.6或P3.7送出,不需要事先用指令說明。事實上『不能作為通用I/O口使用』也並不是『不能』而是(使用者)『不會』將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,並且當單片機執行到這條指令時,也會使P3.7變為高電平,但使用者不會這么去做,因為這通常會導致系統的崩潰。
四、程序的執行過程: 單片機在通電復位後8051內的程序計數器(PC)中的值為『0000』,所以程序總是從『0000』單元開始執行,也就是說:在系統的ROM中一定要存在『0000』這個單元,並且在『0000』單元中存放的一定是一條指令。
五、堆棧: 堆棧是一個區域,是用來存放數據的,這個區域本身沒有任何特殊之處,就是內部RAM的一部份,特殊的是它存放和取用數據的方式,即所謂的『先進後出,後進先出』,並且堆棧有特殊的數據傳輸指令,即『PUSH』和『POP』,有一個特殊的專為其服務的單元,即堆棧指針SP,每當執一次PUSH指令時,SP就(在原來值的基礎上)自動加1,每當執行一次POP指令,SP就(在原來值的基礎上)自動減1。由於SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設置在規定的內存單元中,如在程序開始時,用一條MOV SP,#5FH指令,就時把堆棧設置在從內存單元60H開始的單元中。一般程序的開頭總有這么一條設置堆棧指針的指令,因為開機時,SP的初始值為07H,這樣就使堆棧從08H單元開始往後,而08H到1FH這個區域正是8031的第二、三、四工作寄存器區,經常要被使用,這會造成數據的混亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習慣問題。當設置好堆棧區後,並不意味著該區域成為一種專用內存,它還是可以象普通內存區域一樣使用,只是一般情況下編程者不會把它當成普通內存用了。
六、單片機的開發過程: 這里所說的開發過程並不是一般書中所說的從任務分析開始,我們假設已設計並製作好硬體,下面就是編寫軟體的工作。在編寫軟體之前,首先要確定一些常數、地址,事實上這些常數、地址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好後,其地址也就被確定了,當器件的功能被確定下來後,其控制字也就被確定了。然後用文本編輯器(如EDIT、CCED等)編寫軟體,編寫好後,用編譯器對源程序文件編譯,查錯,直到沒有語法錯誤,除了極簡單的程序外,一般應用模擬機對軟體進行調試,直到程序運行正確為止。運行正確後,就可以寫片(將程序固化在EPROM中)。在源程序被編譯後,生成了擴展名為HEX的目標文件,一般編程器能夠識別這種格式的文件,只要將此文件調入即可寫片。在此,為使大家對整個過程有個認識,舉一例說明:
單片機試驗板ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設堆棧
LOOP:
NOP
LJMP LOOP ;循環
END ;結束
[編輯本段]單片機學習
目前,很多人對匯編語言並不認可。可以說,掌握用C語言單片機編程很重要,可以大大提高開發的效率。不過初學者可以不了解單片機的匯編語言,但一定要了解單片機具體性能和特點,不然在單片機領域是比較致命的。如果不考慮單片機硬體資源,在KEIL中用C胡亂編程,結果只能是出了問題無法解決!可以肯定的說,最好的C語言單片機工程師都是從匯編走出來的編程者因為單片機的C語言雖然是高級語言,但是它不同於台式機個人電腦上的VC++什麼的單片機的硬體資源不是非常強大,不同於我們用VC、VB等高級語言在台式PC上寫程序畢竟台式電腦的硬體非常強大,所以才可以不考慮硬體資源的問題。還有就是在單片機編程中C語言雖然編程方便,便於人們閱讀,但是在執行效率上是要比匯編語言低10%到20%,所以用什麼語言編寫程序是要看具體用在什麼場合下。總是來說做單片機編程要靈活使用匯編語言與C語言,讓單片機的強大功能以最高是效率展示給用戶。
以8051單片機為例講解單片機的引腳及相關功能;
《單片機引腳圖》
40個引腳按引腳功能大致可分為4個種類:電源、時鍾、控制和I/O引腳。
⒈ 電源:
⑴ VCC - 晶元電源,接+5V;
⑵ VSS - 接地端;
註:用萬用表測試單片機引腳電壓一般為0v或者5v,這是標準的TTL電平。但有時候在單片機程序正在工作時候測試結果並不是這個值而是介於0v-5v之間,其實這是萬用表的響應速度沒這么快而已,在某一個瞬間單片機引腳電壓仍保持在0v或者5v。
⒉ 時鍾:XTAL1、XTAL2 - 晶體振盪電路反相輸入端和輸出端。
⒊ 控制線:控制線共有4根,
⑴ ALE/PROG:地址鎖存允許/片內EPROM編程脈沖
① ALE功能:用來鎖存P0口送出的低8位地址
② PROG功能:片內有EPROM的晶元,在EPROM編程期間,此引腳輸入編程脈沖。
⑵ PSEN:外ROM讀選通信號。
⑶ RST/VPD:復位/備用電源。
① RST(Reset)功能:復位信號輸入端。
② VPD功能:在Vcc掉電情況下,接備用電源。
⑷ EA/Vpp:內外ROM選擇/片內EPROM編程電源。
① EA功能:內外ROM選擇端。
② Vpp功能:片內有EPROM的晶元,在EPROM編程期間,施加編程電源Vpp。
⒋ I/O線
80C51共有4個8位並行I/O埠:P0、P1、P2、P3口,共32個引腳。
P3口還具有第二功能,用於特殊信號輸入輸出和控制信號(屬控制匯流排)
5. P3口第二功能
P30 RXD 串列輸入口
P31 TXD 串列輸出口
P32 INT0 外部中斷0(低電平有效)
P33 INT1 外部中斷1(低電平有效)
P34 T0 定時計數器0
P35 T1 定時計數器1
P36 WR 外部數據存儲器寫選通(低電平有效)
P37 RD 外部數據存儲器讀選通(低電平有效)
[編輯本段]常用單片機晶元簡介
STC單片機
STC公司的單片機主要是基於8051內核,是新一代增強型單片機,指令代碼完全兼容傳統8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強.
PIC單片機:
是MICROCHIP公司的產品,其突出的特點是體積小,功耗低,精簡指令集,抗干擾性好,可靠性高,有較強的模擬介面,代碼保密性好,大部分晶元有其兼容的FLASH程序存儲器的晶元.
EMC單片機:
是台灣義隆公司的產品,有很大一部分與PIC 8位單片機兼容,且相兼容產品的資源相對比PIC的多,價格便宜,有很多系列可選,但抗干擾較差.
ATMEL單片機(51單片機):
ATMEl公司的8位單片機有AT89、AT90兩個系列,AT89系列是8位Flash單片機,與8051系列單片機相兼容,靜態時鍾模式;AT90系列單片機是增強RISC結構、全靜態工作方式、內載在線可編程Flash的單片機,也叫AVR單片機.
PHLIPIS 51PLC系列單片機(51單片機):
PHILIPS公司的單片機是基於80C51內核的單片機,嵌入了掉電檢測、模擬以及片內RC振盪器等功能,這使51LPC在高集成度、低成本、低功耗的應用設計中可以滿足多方面的性能要求.
HOLTEK單片機:
台灣盛揚半導體的單片機,價格便宜,種類較多,但抗干擾較差,適用於消費類產品.
TI公司單片機(51單片機):
德州儀器提供了TMS370和MSP430兩大系列通用單片機.TMS370系列單片機是8位CMOS單片機,具有多種存儲模式、多種外圍介面模式,適用於復雜的實時控制場合;MSP430系列單片機是一種超低功耗、功能集成度較高的16位低功耗單片機,特別適用於要求功耗低的場合
松翰單片機(SONIX):
是台灣松翰公司的單片,大多為8位機,有一部分與PIC 8位單片機兼容,價格便宜,系統時鍾分頻可選項較多,有PMW ADC 內振 內部雜訊濾波。缺點RAM空間過小,抗干擾較好。
[編輯本段]從無線電世界到單片機世界
現代計算機技術的產業革命,將世界經濟從資本經濟帶入到知識經濟時代。在電子世界領域,從20世紀中的無線電時代也進入到21世紀以計算機技術為中心的智能化現代電子系統時代。現代電子系統的基本核心是嵌入式計算機系統(簡稱嵌入式系統),而單片機是最典型、最廣泛、最普及的嵌入式系統。
『伍』 浠涔堝彨鍗曠墖鏈
鍗曠墖鏈猴紙Microcontroller錛夋槸涓縐嶅皬鍨嬬殑璁$畻鏈虹郴緇燂紝瀹冮泦鎴愪簡澶勭悊鍣ㄣ佸瓨鍌ㄥ櫒銆佽緭鍏ヨ緭鍑烘帴鍙e拰瀹氭椂鍣ㄧ瓑鍩烘湰鍔熻兘妯″潡錛屼互瀹炵幇鎺у埗浠誨姟鐨勬墽琛屻
鍗曠墖鏈洪氬父闆嗘垚鍦ㄥ祵鍏ュ紡緋葷粺涓錛屽彲瀹屾垚鏁版嵁閲囬泦銆佹帶鍒躲侀氫俊銆佸拰淇″彿澶勭悊絳夊姛鑳斤紝騫跺叿鏈変綆鍔熻椼侀珮闆嗘垚搴﹀拰鎴愭湰鐩稿硅緝浣庣殑浼樼偣銆
6銆佷氦閫氳繍杈擄細鍗曠墖鏈哄彲浠ュ簲鐢ㄤ簬浜ら氳繍杈撻嗗煙錛屼緥濡傛櫤鑳戒氦閫氫俊鍙風伅銆佹櫤鑳藉叕浜よ濺鍗鏄熷畾浣嶃佷氦閫氭憚鍍忓ご絳夛紝瀹炵幇浜ら氭祦閲忕殑鎺у埗鍜屽畨鍏ㄧ$悊銆
7銆侀噾鋙嶆敮浠橈細鍗曠墖鏈鴻繕鍙浠ョ敤浜庨噾鋙嶆敮浠樿懼囦腑錛屼緥濡侫TM鏈恆丳OS鏈恆佹櫤鑳借嚜鍔╂敮浠樼粓絝絳夛紝浠ュ疄鐜伴珮鏁堛佸畨鍏ㄧ殑鏀浠樻搷浣溿
鍗曠墖鏈哄叿鏈夊姛鑳藉己澶с佸彲闈犳ч珮銆佸姛鑰椾綆銆佷綋縐灝忋佹垚鏈浣庡粔絳変紭鐐癸紝鍗曠墖鏈哄湪宸ョ▼鎶鏈銆佺數瀛愬晢鍔°佸ū涔愩侀噾鋙嶃佸尰鐤椼佸伐涓氳嚜鍔ㄥ寲絳夐嗗煙閮芥湁鐫騫挎硾鐨勫簲鐢ㄣ
『陸』 求助:51單片機能與條形碼掃描儀如何連接
一般可以串口通信。需要根據條形碼機的使用說明進行開發,滿足通信協議得要求。
『柒』 單片機系統的硬體主要由哪些功能部件組成
單片機系統的硬體由單片機晶元和外部設備組成c
單片機晶元則包含微處理器(CPU)、存儲器(存放程序指令或數據的ROM、RAM等),
輸入/輸出口(I/O口)及其他功能部件如定時/計數器、中斷系統等,它們通過地址匯流排(AB)、數據匯流排(DB)和控制匯流排(CB)連接起來。
外部設備即單片機系統的輸入/輸出設備,簡稱I/O設備。輸入設備是輸入原始數據、
程序和控制命令的部件,『如鍵盤、滑鼠、掃描儀、攝像機等。輸出設備是輸出計算機數據信息處理的結果和計算機工作狀態信息的部件,如屏幕顯示器、列印機、1,ED數碼管顯示器繪圖儀等。但輸入輸出設備一般不能與CPU直接相連,而是通過某種電路完成定址、數據緩沖、輸入輸出控制、功率驅動、A/D、D/A等功能,這種電路稱為I/O介面電路,如8255、8155、8279、0809、0832等晶元。